From 87b96e4c68edec74b1eb50d2f443d7f2f2b57dd9 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 12:48:50 +0900 Subject: [PATCH 001/182] =?UTF-8?q?pnpm=20=E5=8C=96=E3=81=AB=E5=90=91?= =?UTF-8?q?=E3=81=91=E3=81=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 8882 ------------------------------------------- pnpm-lock.yaml | 4233 +++++++++++++++++++++ pnpm-workspace.yaml | 2 + 3 files changed, 4235 insertions(+), 8882 deletions(-) delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 83c3ee09..00000000 --- a/package-lock.json +++ /dev/null @@ -1,8882 +0,0 @@ -{ - "name": "sora-js-sdk", - "version": "2023.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "sora-js-sdk", - "version": "2023.1.0", - "license": "Apache-2.0", - "workspaces": [ - "packages/go-wasm", - "packages/e2ee", - "packages/sdk" - ], - "devDependencies": { - "serve": "14.2.0", - "typedoc": "0.24.7" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz", - "integrity": "sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.5.tgz", - "integrity": "sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.5", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/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/@babel/core/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/@babel/generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz", - "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz", - "integrity": "sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.5", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/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/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz", - "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.5.tgz", - "integrity": "sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", - "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "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": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "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.22.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz", - "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==", - "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-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.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.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz", - "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/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/@babel/traverse/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/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "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/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.2", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz", - "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "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/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@istanbuljs/load-nyc-config/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/@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": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/console/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/@jest/console/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/@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/core/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/@jest/core/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/@jest/core/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/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/create-cache-key-function": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", - "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/environment/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/@jest/environment/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/@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", - "dev": true, - "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/fake-timers/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/@jest/fake-timers/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/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals/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/@jest/globals/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/@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.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/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters/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/@jest/reporters/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/@jest/reporters/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/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.25.16" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-result/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/@jest/test-result/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/@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/transform/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/@jest/transform/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/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "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/@jest/types/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/@jest/types/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/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "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/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/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/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.0.tgz", - "integrity": "sha512-hoho2Kay9TZrLu0bnDsTTCaj4Npa+THk9snajP/XDNb9a9mmjTjh52EQM9sKl3HD1LsnihX7js+eA2sd2uKAhw==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.2.tgz", - "integrity": "sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", - "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.1.tgz", - "integrity": "sha512-Ioir+x5Bejv72Lx2Zbz3/qGg7tvGbxQZALCLoJaGrkNXak/19+vKgKYJYM3i/fJxvsb23I9FuFQ8CUBEfsmBRg==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", - "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@shiguredo/lyra-wasm": { - "version": "2023.1.0", - "resolved": "https://registry.npmjs.org/@shiguredo/lyra-wasm/-/lyra-wasm-2023.1.0.tgz", - "integrity": "sha512-RVOyPYrZMCHYb5QM6S8BTAOnGHiqYpoBOG8+9uct4gg1ut9IK8LsVgwv5Q+/t+hWZeRhuyYNXt1PhBUm1cJZzg==", - "dev": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.1.0.tgz", - "integrity": "sha512-w1qd368vtrwttm1PRJWPW1QHlbmHrVDGs1eBH/jZvRPUFS4MNXV9Q33EQdjOdeAxZ7O8+3wM7zxztm2nfUSyKw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sora/e2ee": { - "resolved": "packages/e2ee", - "link": true - }, - "node_modules/@sora/go-wasm": { - "resolved": "packages/go-wasm", - "link": true - }, - "node_modules/@sora/sdk": { - "resolved": "packages/sdk", - "link": true - }, - "node_modules/@swc/core": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.59.tgz", - "integrity": "sha512-ZBw31zd2E5SXiodwGvjQdx5ZC90b2uyX/i2LeMMs8LKfXD86pfOfQac+JVrnyEKDhASXj9icgsF9NXBhaMr3Kw==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.59", - "@swc/core-darwin-x64": "1.3.59", - "@swc/core-linux-arm-gnueabihf": "1.3.59", - "@swc/core-linux-arm64-gnu": "1.3.59", - "@swc/core-linux-arm64-musl": "1.3.59", - "@swc/core-linux-x64-gnu": "1.3.59", - "@swc/core-linux-x64-musl": "1.3.59", - "@swc/core-win32-arm64-msvc": "1.3.59", - "@swc/core-win32-ia32-msvc": "1.3.59", - "@swc/core-win32-x64-msvc": "1.3.59" - }, - "peerDependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.59.tgz", - "integrity": "sha512-AnqWFBgEKHP0jb4iZqx7eVQT9/rX45+DE4Ox7GpwCahUKxxrsDLyXzKhwLwQuAjUvtu5JcSB77szKpPGDM49fQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.59.tgz", - "integrity": "sha512-iqDs+yii9mOsmpJez82SEi4d4prWDRlapHxKnDVJ0x1AqRo41vIq8t3fujrvCHYU5VQgOYGh4ooXQpaP2H3B2A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.59.tgz", - "integrity": "sha512-PB0PP+SgkCSd/kYmltnPiGv42cOSaih1OjXCEjxvNwUFEmWqluW6uGdWaNiR1LoYMxhcHZTc336jL2+O3l6p0Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.59.tgz", - "integrity": "sha512-Ol/JPszWZ+OZ44FOdJe35TfJ1ckG4pYaisZJ4E7PzfwfVe2ygX85C5WWR4e5L0Y1zFvzpcI7gdyC2wzcXk4Cig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.59.tgz", - "integrity": "sha512-PtTTtGbj9GiY5gJdoSFL2A0vL6BRaS1haAhp6g3hZvLDkTTg+rJURmzwBMMjaQlnGC62x/lLf6MoszHG/05//Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.59.tgz", - "integrity": "sha512-XBW9AGi0YsIN76IfesnDSBn/5sjR69J75KUNte8sH6seYlHJ0/kblqUMbUcfr0CiGoJadbzAZeKZZmfN7EsHpg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.59.tgz", - "integrity": "sha512-Cy5E939SdWPQ34cg6UABNO0RyEe0FuWqzZ/GLKtK11Ir4fjttVlucZiY59uQNyUVUc8T2qE0VBFCyD/zYGuHtg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.59.tgz", - "integrity": "sha512-z5ZJxizRvRoSAaevRIi3YjQh74OFWEIhonSDWNdqDL7RbjEivcatYcG7OikH6s+rtPhOcwNm3PbGV2Prcgh/gg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.59.tgz", - "integrity": "sha512-vxpsn+hrKAhi5YusQfB/JXUJJVX40rIRE/L49ilBEqdbH8Khkoego6AD+2vWqTdJcUHo1WiAIAEZ0rTsjyorLQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.59", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.59.tgz", - "integrity": "sha512-Ris/cJbURylcLwqz4RZUUBCEGsuaIHOJsvf69W5pGKHKBryVoOTNhBKpo3Km2hoAi5qFQ/ou0trAT4hBsVPZvQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/jest": { - "version": "0.2.26", - "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.26.tgz", - "integrity": "sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==", - "dev": true, - "dependencies": { - "@jest/create-cache-key-function": "^27.4.2", - "jsonc-parser": "^3.2.0" - }, - "engines": { - "npm": ">= 7.0.0" - }, - "peerDependencies": { - "@swc/core": "*" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "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.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "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": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "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/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "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/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz", - "integrity": "sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/type-utils": "5.59.6", - "@typescript-eslint/utils": "5.59.6", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.6.tgz", - "integrity": "sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/typescript-estree": "5.59.6", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/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/@typescript-eslint/scope-manager": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz", - "integrity": "sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/visitor-keys": "5.59.6" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz", - "integrity": "sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.6", - "@typescript-eslint/utils": "5.59.6", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/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/@typescript-eslint/types": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.6.tgz", - "integrity": "sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz", - "integrity": "sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/visitor-keys": "5.59.6", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.6.tgz", - "integrity": "sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.6", - "@typescript-eslint/types": "5.59.6", - "@typescript-eslint/typescript-estree": "5.59.6", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.6", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz", - "integrity": "sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.6", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@zeit/schemas": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.29.0.tgz", - "integrity": "sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", - "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "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/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/agent-base/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/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/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-align/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/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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-escapes/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/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz", - "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==", - "dev": true - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "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/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "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-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/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/babel-jest/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/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.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": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.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/boxen": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", - "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "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/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001504", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001504.tgz", - "integrity": "sha512-5uo7eoOp2mKbWyfMXnGO9rJWOGU8duvzEiYITW+wivukL7yHH4gX9yuRaobu6El4jPxo6jKZfG+N6fB621GD/Q==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", - "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/chalk-template/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/chalk-template/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.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clipboardy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", - "dev": true, - "dependencies": { - "arch": "^2.2.0", - "execa": "^5.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/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/cliui/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/cliui/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/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/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/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "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/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "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.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "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/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "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.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", - "dev": true, - "dependencies": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/del/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/del/node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "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" - } - }, - "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": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.434", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.434.tgz", - "integrity": "sha512-5Gvm09UZTQRaWrimRtWRO5rvaX6Kpk5WHAPKDa7A4Gj6NIPuJ8w8WNpnxCXdd+CJJt6RBU6tUw0KyULoW6XuHw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/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/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.41.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz", - "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.41.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz", - "integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/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/eslint/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/eslint/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/eslint/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/eslint/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/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "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/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": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", - "dev": true, - "dependencies": { - "punycode": "^1.3.2" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fflate": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", - "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==" - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.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": "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/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "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==", - "dev": true, - "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", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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==", - "dev": true - }, - "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-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-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/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "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==", - "dev": true, - "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/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "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": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/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/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/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/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.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "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": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "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-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-port-reachable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", - "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/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/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.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/istanbul-lib-source-maps/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/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", - "import-local": "^3.0.2", - "jest-cli": "^29.5.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.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": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-circus/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/jest-circus/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/jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-cli/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/jest-cli/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/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config/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/jest-config/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/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/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/jest-diff/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/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-each/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/jest-each/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/jest-environment-jsdom": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz", - "integrity": "sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-jsdom/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/jest-environment-jsdom/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/jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node/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/jest-environment-node/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/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-haste-map/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/jest-haste-map/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/jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/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/jest-matcher-utils/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/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-message-util/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/jest-message-util/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/jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-mock/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/jest-mock/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/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve/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/jest-resolve/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/jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner/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/jest-runner/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/jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime/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/jest-runtime/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/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.5.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-snapshot/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/jest-snapshot/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/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-util/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/jest-util/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/jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.5.0", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "leven": "^3.1.0", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/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/jest-validate/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/jest-validate/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/jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.5.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watcher/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/jest-watcher/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/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/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/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest/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/jest/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/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/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "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-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-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "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/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "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.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "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/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "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-dir/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/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "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/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "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, - "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==", - "dev": true, - "dependencies": { - "mime-db": "1.52.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/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.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", - "dev": true - }, - "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/nwsapi": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz", - "integrity": "sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==", - "dev": true - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "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.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/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/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.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/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "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": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, - "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-to-regexp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", - "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "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/pkg-dir/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/pkg-dir/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/pkg-dir/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/pkg-dir/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/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "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/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.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/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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/range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", - "dev": true, - "dependencies": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", - "dev": true, - "dependencies": { - "rc": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "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-cwd/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/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "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/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.22.1.tgz", - "integrity": "sha512-ZI+GSAqOkCyTtJPlwyPOaYKa0RqvztN4miRVusVJseMj6BIBT2f6pFeK90IdJsQ86FLMYkxju2whuck3yKPE4Q==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-delete": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-delete/-/rollup-plugin-delete-2.0.0.tgz", - "integrity": "sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==", - "dev": true, - "dependencies": { - "del": "^5.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "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" - } - ], - "dependencies": { - "queue-microtask": "^1.2.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/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": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/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/semver/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/serve": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.0.tgz", - "integrity": "sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==", - "dev": true, - "dependencies": { - "@zeit/schemas": "2.29.0", - "ajv": "8.11.0", - "arg": "5.0.2", - "boxen": "7.0.0", - "chalk": "5.0.1", - "chalk-template": "0.4.0", - "clipboardy": "3.0.0", - "compression": "1.7.4", - "is-port-reachable": "4.0.0", - "serve-handler": "6.1.5", - "update-check": "1.5.4" - }, - "bin": { - "serve": "build/main.js" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/serve-handler": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", - "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", - "dev": true, - "dependencies": { - "bytes": "3.0.0", - "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", - "mime-types": "2.1.18", - "minimatch": "3.1.2", - "path-is-inside": "1.0.2", - "path-to-regexp": "2.2.1", - "range-parser": "1.2.0" - } - }, - "node_modules/serve-handler/node_modules/mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-handler/node_modules/mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", - "dev": true, - "dependencies": { - "mime-db": "~1.33.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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/shiki": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.2.tgz", - "integrity": "sha512-ltSZlSLOuSY0M0Y75KA+ieRaZ0Trf5Wl3gutE7jzLuIcWxLp5i/uEnLoQWNvgKXQ5OMpGkJnVMRLAuzjc0LJ2A==", - "dev": true, - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/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/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-length/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/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/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/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "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": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "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.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/tr46/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "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": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedoc": { - "version": "0.24.7", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.7.tgz", - "integrity": "sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==", - "dev": true, - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.3.0", - "minimatch": "^9.0.0", - "shiki": "^0.14.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-check": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", - "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", - "dev": true, - "dependencies": { - "registry-auth-token": "3.3.2", - "registry-url": "3.1.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "dev": true - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "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/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.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": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "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/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": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/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/yargs/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/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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" - } - }, - "packages/e2ee": { - "name": "@sora/e2ee", - "version": "2021.1.0", - "license": "Apache-2.0", - "dependencies": { - "@sora/go-wasm": "^2021.1.0" - }, - "devDependencies": { - "@rollup/plugin-node-resolve": "15.0.2", - "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.1", - "@typescript-eslint/eslint-plugin": "5.59.6", - "@typescript-eslint/parser": "5.59.6", - "eslint": "8.41.0", - "eslint-config-prettier": "8.8.0", - "eslint-plugin-prettier": "4.2.1", - "prettier": "2.8.8", - "rollup": "3.22.1", - "typescript": "5.0.4" - } - }, - "packages/go-wasm": { - "name": "@sora/go-wasm", - "version": "2021.1.0" - }, - "packages/sdk": { - "name": "@sora/sdk", - "dependencies": { - "@sora/e2ee": "^2021.1.0", - "fflate": "0.7.4" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "25.0.0", - "@rollup/plugin-node-resolve": "15.0.2", - "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.1", - "@shiguredo/lyra-wasm": "2023.1.0", - "@swc/core": "1.3.59", - "@swc/jest": "0.2.26", - "@types/jest": "29.5.1", - "@typescript-eslint/eslint-plugin": "5.59.6", - "@typescript-eslint/parser": "5.59.6", - "eslint": "8.41.0", - "eslint-config-prettier": "8.8.0", - "eslint-plugin-prettier": "4.2.1", - "jest": "29.5.0", - "jest-environment-jsdom": "29.5.0", - "prettier": "2.8.8", - "rollup": "3.22.1", - "rollup-plugin-delete": "2.0.0", - "typescript": "5.0.4" - } - } - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..dae5d42d --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4233 @@ +lockfileVersion: '6.1' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +overrides: + get-pkg-repo: 5.0.0 + +importers: + + .: + devDependencies: + serve: + specifier: 14.2.0 + version: 14.2.0 + typedoc: + specifier: 0.24.7 + version: 0.24.7(typescript@5.0.4) + + packages/e2ee: + dependencies: + '@sora/go-wasm': + specifier: ^2021.1.0 + version: link:../go-wasm + devDependencies: + '@rollup/plugin-node-resolve': + specifier: 15.0.2 + version: 15.0.2(rollup@3.22.1) + '@rollup/plugin-replace': + specifier: 5.0.2 + version: 5.0.2(rollup@3.22.1) + '@rollup/plugin-typescript': + specifier: 11.1.1 + version: 11.1.1(rollup@3.22.1)(typescript@5.0.4) + '@typescript-eslint/eslint-plugin': + specifier: 5.59.6 + version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: 5.59.6 + version: 5.59.6(eslint@8.41.0)(typescript@5.0.4) + eslint: + specifier: 8.41.0 + version: 8.41.0 + eslint-config-prettier: + specifier: 8.8.0 + version: 8.8.0(eslint@8.41.0) + eslint-plugin-prettier: + specifier: 4.2.1 + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8) + prettier: + specifier: 2.8.8 + version: 2.8.8 + rollup: + specifier: 3.22.1 + version: 3.22.1 + typescript: + specifier: 5.0.4 + version: 5.0.4 + + packages/go-wasm: {} + + packages/sdk: + dependencies: + '@sora/e2ee': + specifier: ^2021.1.0 + version: link:../e2ee + fflate: + specifier: 0.7.4 + version: 0.7.4 + devDependencies: + '@rollup/plugin-commonjs': + specifier: 25.0.0 + version: 25.0.0(rollup@3.22.1) + '@rollup/plugin-node-resolve': + specifier: 15.0.2 + version: 15.0.2(rollup@3.22.1) + '@rollup/plugin-replace': + specifier: 5.0.2 + version: 5.0.2(rollup@3.22.1) + '@rollup/plugin-typescript': + specifier: 11.1.1 + version: 11.1.1(rollup@3.22.1)(typescript@5.0.4) + '@shiguredo/lyra-wasm': + specifier: 2023.1.0 + version: 2023.1.0 + '@swc/core': + specifier: 1.3.59 + version: 1.3.59 + '@swc/jest': + specifier: 0.2.26 + version: 0.2.26(@swc/core@1.3.59) + '@types/jest': + specifier: 29.5.1 + version: 29.5.1 + '@typescript-eslint/eslint-plugin': + specifier: 5.59.6 + version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/parser': + specifier: 5.59.6 + version: 5.59.6(eslint@8.41.0)(typescript@5.0.4) + eslint: + specifier: 8.41.0 + version: 8.41.0 + eslint-config-prettier: + specifier: 8.8.0 + version: 8.8.0(eslint@8.41.0) + eslint-plugin-prettier: + specifier: 4.2.1 + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8) + jest: + specifier: 29.5.0 + version: 29.5.0 + jest-environment-jsdom: + specifier: 29.5.0 + version: 29.5.0 + prettier: + specifier: 2.8.8 + version: 2.8.8 + rollup: + specifier: 3.22.1 + version: 3.22.1 + rollup-plugin-delete: + specifier: 2.0.0 + version: 2.0.0 + typescript: + specifier: 5.0.4 + version: 5.0.4 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.5 + dev: true + + /@babel/compat-data@7.22.5: + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.22.5: + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-module-transforms@7.22.5: + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-split-export-declaration@7.22.5: + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.22.5: + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@babel/traverse@7.22.5: + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.41.0: + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@20.3.2) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/create-cache-key-function@27.5.1: + resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + dev: true + + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + jest-mock: 29.5.0 + dev: true + + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + dev: true + + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.3.2 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 20.3.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.24 + dev: true + + /@jest/source-map@29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.22.5 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.3.2 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + dev: true + + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.3.2 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@rollup/plugin-commonjs@25.0.0(rollup@3.22.1): + resolution: {integrity: sha512-hoho2Kay9TZrLu0bnDsTTCaj4Npa+THk9snajP/XDNb9a9mmjTjh52EQM9sKl3HD1LsnihX7js+eA2sd2uKAhw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 3.22.1 + dev: true + + /@rollup/plugin-node-resolve@15.0.2(rollup@3.22.1): + resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.2 + rollup: 3.22.1 + dev: true + + /@rollup/plugin-replace@5.0.2(rollup@3.22.1): + resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + magic-string: 0.27.0 + rollup: 3.22.1 + dev: true + + /@rollup/plugin-typescript@11.1.1(rollup@3.22.1)(typescript@5.0.4): + resolution: {integrity: sha512-Ioir+x5Bejv72Lx2Zbz3/qGg7tvGbxQZALCLoJaGrkNXak/19+vKgKYJYM3i/fJxvsb23I9FuFQ8CUBEfsmBRg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + resolve: 1.22.2 + rollup: 3.22.1 + typescript: 5.0.4 + dev: true + + /@rollup/pluginutils@5.0.2(rollup@3.22.1): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.22.1 + dev: true + + /@shiguredo/lyra-wasm@2023.1.0: + resolution: {integrity: sha512-RVOyPYrZMCHYb5QM6S8BTAOnGHiqYpoBOG8+9uct4gg1ut9IK8LsVgwv5Q+/t+hWZeRhuyYNXt1PhBUm1cJZzg==} + dev: true + + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@swc/core-darwin-arm64@1.3.59: + resolution: {integrity: sha512-AnqWFBgEKHP0jb4iZqx7eVQT9/rX45+DE4Ox7GpwCahUKxxrsDLyXzKhwLwQuAjUvtu5JcSB77szKpPGDM49fQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64@1.3.59: + resolution: {integrity: sha512-iqDs+yii9mOsmpJez82SEi4d4prWDRlapHxKnDVJ0x1AqRo41vIq8t3fujrvCHYU5VQgOYGh4ooXQpaP2H3B2A==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf@1.3.59: + resolution: {integrity: sha512-PB0PP+SgkCSd/kYmltnPiGv42cOSaih1OjXCEjxvNwUFEmWqluW6uGdWaNiR1LoYMxhcHZTc336jL2+O3l6p0Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu@1.3.59: + resolution: {integrity: sha512-Ol/JPszWZ+OZ44FOdJe35TfJ1ckG4pYaisZJ4E7PzfwfVe2ygX85C5WWR4e5L0Y1zFvzpcI7gdyC2wzcXk4Cig==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.3.59: + resolution: {integrity: sha512-PtTTtGbj9GiY5gJdoSFL2A0vL6BRaS1haAhp6g3hZvLDkTTg+rJURmzwBMMjaQlnGC62x/lLf6MoszHG/05//Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu@1.3.59: + resolution: {integrity: sha512-XBW9AGi0YsIN76IfesnDSBn/5sjR69J75KUNte8sH6seYlHJ0/kblqUMbUcfr0CiGoJadbzAZeKZZmfN7EsHpg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl@1.3.59: + resolution: {integrity: sha512-Cy5E939SdWPQ34cg6UABNO0RyEe0FuWqzZ/GLKtK11Ir4fjttVlucZiY59uQNyUVUc8T2qE0VBFCyD/zYGuHtg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc@1.3.59: + resolution: {integrity: sha512-z5ZJxizRvRoSAaevRIi3YjQh74OFWEIhonSDWNdqDL7RbjEivcatYcG7OikH6s+rtPhOcwNm3PbGV2Prcgh/gg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc@1.3.59: + resolution: {integrity: sha512-vxpsn+hrKAhi5YusQfB/JXUJJVX40rIRE/L49ilBEqdbH8Khkoego6AD+2vWqTdJcUHo1WiAIAEZ0rTsjyorLQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc@1.3.59: + resolution: {integrity: sha512-Ris/cJbURylcLwqz4RZUUBCEGsuaIHOJsvf69W5pGKHKBryVoOTNhBKpo3Km2hoAi5qFQ/ou0trAT4hBsVPZvQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core@1.3.59: + resolution: {integrity: sha512-ZBw31zd2E5SXiodwGvjQdx5ZC90b2uyX/i2LeMMs8LKfXD86pfOfQac+JVrnyEKDhASXj9icgsF9NXBhaMr3Kw==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.59 + '@swc/core-darwin-x64': 1.3.59 + '@swc/core-linux-arm-gnueabihf': 1.3.59 + '@swc/core-linux-arm64-gnu': 1.3.59 + '@swc/core-linux-arm64-musl': 1.3.59 + '@swc/core-linux-x64-gnu': 1.3.59 + '@swc/core-linux-x64-musl': 1.3.59 + '@swc/core-win32-arm64-msvc': 1.3.59 + '@swc/core-win32-ia32-msvc': 1.3.59 + '@swc/core-win32-x64-msvc': 1.3.59 + dev: true + + /@swc/jest@0.2.26(@swc/core@1.3.59): + resolution: {integrity: sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' + dependencies: + '@jest/create-cache-key-function': 27.5.1 + '@swc/core': 1.3.59 + jsonc-parser: 3.2.0 + dev: true + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@types/babel__core@7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + dependencies: + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@types/babel__traverse@7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: true + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.3.2 + dev: true + + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 20.3.2 + dev: true + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest@29.5.1: + resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} + dependencies: + expect: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 20.3.2 + '@types/tough-cookie': 4.0.2 + parse5: 7.1.2 + dev: true + + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + dev: true + + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + + /@types/node@20.3.2: + resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} + dev: true + + /@types/prettier@2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + dev: true + + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + dev: true + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/tough-cookie@4.0.2: + resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + dev: true + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs@16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/type-utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.41.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.3 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.59.6(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.41.0 + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.59.6: + resolution: {integrity: sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 + dev: true + + /@typescript-eslint/type-utils@5.59.6(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) + '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + debug: 4.3.4 + eslint: 8.41.0 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.59.6: + resolution: {integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.59.6(typescript@5.0.4): + resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/visitor-keys': 5.59.6 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.3 + tsutils: 3.21.0(typescript@5.0.4) + typescript: 5.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.59.6(eslint@8.41.0)(typescript@5.0.4): + resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.6 + '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) + eslint: 8.41.0 + eslint-scope: 5.1.1 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.59.6: + resolution: {integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.6 + eslint-visitor-keys: 3.4.1 + dev: true + + /@zeit/schemas@2.29.0: + resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} + dev: true + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.9.0 + acorn-walk: 8.2.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.9.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.9.0 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.9.0: + resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-sequence-parser@1.1.0: + resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: true + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /babel-jest@29.5.0(@babel/core@7.22.5): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.22.5 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0(@babel/core@7.22.5) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.5): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.5 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /boxen@7.0.0: + resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} + engines: {node: '>=14.16'} + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.0.1 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001509 + electron-to-chromium: 1.4.445 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11(browserslist@4.21.9) + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: true + + /caniuse-lite@1.0.30001509: + resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} + dev: true + + /chalk-template@0.4.0: + resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} + engines: {node: '>=12'} + dependencies: + chalk: 4.1.2 + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.0.1: + resolution: {integrity: sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: true + + /clipboardy@3.0.0: + resolution: {integrity: sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + arch: 2.2.0 + execa: 5.1.1 + is-wsl: 2.2.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /content-disposition@0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /del@5.1.0: + resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} + engines: {node: '>=8'} + dependencies: + globby: 10.0.2 + graceful-fs: 4.2.11 + is-glob: 4.0.3 + is-path-cwd: 2.2.0 + is-path-inside: 3.0.3 + p-map: 3.0.0 + rimraf: 3.0.2 + slash: 3.0.0 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.445: + resolution: {integrity: sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /escodegen@2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-config-prettier@8.8.0(eslint@8.41.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.41.0 + dev: true + + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.41.0 + eslint-config-prettier: 8.8.0(eslint@8.41.0) + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.41.0 + '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + graphemer: 1.4.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.9.0 + acorn-jsx: 5.3.2(acorn@8.9.0) + eslint-visitor-keys: 3.4.1 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fflate@0.7.4: + resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + dev: false + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-port-reachable@4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 1.0.1 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.22.5 + '@babel/parser': 7.22.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /jest-changed-files@29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@29.5.0: + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@20.3.2) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config@29.5.0(@types/node@20.3.2): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.22.5 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + babel-jest: 29.5.0(@babel/core@7.22.5) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-docblock@29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-jsdom@29.5.0: + resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/jsdom': 20.0.1 + '@types/node': 20.3.2 + jest-mock: 29.5.0 + jest-util: 29.5.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /jest-get-type@29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 20.3.2 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.5 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /jest-regex-util@29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.20.1 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true + + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.3.2 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.3.2 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.5.0: + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.9.0 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.5 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.3 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.13.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: true + + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.33.0: + resolution: {integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==} + engines: {node: '>= 0.6'} + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.18: + resolution: {integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.33.0 + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.2: + resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.12: + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nwsapi@2.2.5: + resolution: {integrity: sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==} + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.22.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-to-regexp@2.2.1: + resolution: {integrity: sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-format@29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + + /querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /range-parser@1.2.0: + resolution: {integrity: sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==} + engines: {node: '>= 0.6'} + dev: true + + /rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /registry-auth-token@3.3.2: + resolution: {integrity: sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==} + dependencies: + rc: 1.2.8 + safe-buffer: 5.2.1 + dev: true + + /registry-url@3.1.0: + resolution: {integrity: sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==} + engines: {node: '>=0.10.0'} + dependencies: + rc: 1.2.8 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup-plugin-delete@2.0.0: + resolution: {integrity: sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==} + engines: {node: '>=10'} + dependencies: + del: 5.1.0 + dev: true + + /rollup@3.22.1: + resolution: {integrity: sha512-ZI+GSAqOkCyTtJPlwyPOaYKa0RqvztN4miRVusVJseMj6BIBT2f6pFeK90IdJsQ86FLMYkxju2whuck3yKPE4Q==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /semver@6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + dev: true + + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /serve-handler@6.1.5: + resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} + dependencies: + bytes: 3.0.0 + content-disposition: 0.5.2 + fast-url-parser: 1.1.3 + mime-types: 2.1.18 + minimatch: 3.1.2 + path-is-inside: 1.0.2 + path-to-regexp: 2.2.1 + range-parser: 1.2.0 + dev: true + + /serve@14.2.0: + resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} + engines: {node: '>= 14'} + hasBin: true + dependencies: + '@zeit/schemas': 2.29.0 + ajv: 8.11.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.7.4 + is-port-reachable: 4.0.0 + serve-handler: 6.1.5 + update-check: 1.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shiki@0.14.3: + resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + dependencies: + ansi-sequence-parser: 1.1.0 + jsonc-parser: 3.2.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tsutils@3.21.0(typescript@5.0.4): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.0.4 + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: true + + /typedoc@0.24.7(typescript@5.0.4): + resolution: {integrity: sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==} + engines: {node: '>= 14.14'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.2 + shiki: 0.14.3 + typescript: 5.0.4 + dev: true + + /typescript@5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} + hasBin: true + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.9 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /update-check@1.5.4: + resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /v8-to-istanbul@9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + + /w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: true + + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..dee51e92 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "packages/*" From 35b7e97fedbdc4576b982b372e838f67b455b56f Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:05:37 +0900 Subject: [PATCH 002/182] =?UTF-8?q?pnpm=20=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 8 ++++---- packages/e2ee/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 8b5f29e8..08540111 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,10 @@ "module": "dist/sora.mjs", "types": "dist/sora.d.ts", "scripts": { - "build": "npm run build --workspaces", - "lint": "npm run lint --workspaces", - "fmt": "npm run fmt --workspaces", - "test": "npm run test --workspaces", + "build": "pnpm -r --filter=./packages/* build", + "lint": "pnpm -r --filter=./packages/* lint", + "fmt": "pnpm -r --filter=./packages/* fmt", + "test": "pnpm -r --filter=./packages/* test", "start": "npx serve -S -l 8080 ./example", "doc": "npx typedoc", "release:canary": "./scripts/release_canary.sh" diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 94b0ccce..2ac26571 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -8,7 +8,7 @@ "module": "dist/sora_e2ee.mjs", "types": "dist/sora_e2ee.d.ts", "scripts": { - "build": "npm run build:worker && npm run build:development", + "build": "pnpm run build:worker && pnpm run build:development", "build:development": "NODE_ENV=development rollup -c rollup.config.mjs --bundleConfigAsCjs", "build:worker": "npx tsc --project tsconfig.worker.json", "fmt": "prettier --write src", From 9a683c1ff8d529ada4a19f261415141721eeb09c Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:07:12 +0900 Subject: [PATCH 003/182] =?UTF-8?q?GitHub=20Actions=20=E3=82=82=20pnpm=20?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index d6aab3a4..dc0def24 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -3,29 +3,29 @@ name: test on: push: paths-ignore: - - '**.md' - - 'LICENSE' - - 'NOTICE' + - "**.md" + - "LICENSE" + - "NOTICE" jobs: test: runs-on: ubuntu-latest strategy: matrix: - node: ['16', '18', '20'] + node: ["16", "18", "20"] steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} cache: npm - - run: npm --version - - run: npm install - - run: npm run build -w packages/e2ee - - run: npm run build -w packages/sdk - - run: npm run lint -w packages/e2ee - - run: npm run lint -w packages/sdk - - run: npm run test -w packages/sdk + - run: pnpm --version + - run: pnpm install + - run: pnpm -r --filter=./packages/e2ee build + - run: pnpm -r --filter=./packages/sdk build + - run: pnpm -r --filter=./packages/e2ee lint + - run: pnpm -r --filter=./packages/sdk lint + - run: pnpm -r --filter=./packages/sdk test - run: git diff --stat --exit-code - name: Slack Notification if: failure() From 9af92b78dbb08d70878aba1a1859e8fd75574ace Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:08:48 +0900 Subject: [PATCH 004/182] =?UTF-8?q?pnpm/action-setup=20=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index dc0def24..636011ee 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,7 +18,9 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - cache: npm + - uses: pnpm/action-setup@v2 + with: + version: 8 - run: pnpm --version - run: pnpm install - run: pnpm -r --filter=./packages/e2ee build From 11dd070522666937fa0959aea6a9c228c259119f Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:10:26 +0900 Subject: [PATCH 005/182] =?UTF-8?q?=E4=B8=80=E3=81=A4=E4=B8=80=E3=81=A4?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E3=81=97=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 636011ee..ab6c2903 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -23,11 +23,9 @@ jobs: version: 8 - run: pnpm --version - run: pnpm install - - run: pnpm -r --filter=./packages/e2ee build - - run: pnpm -r --filter=./packages/sdk build - - run: pnpm -r --filter=./packages/e2ee lint - - run: pnpm -r --filter=./packages/sdk lint - - run: pnpm -r --filter=./packages/sdk test + - run: pnpm run build + - run: pnpm run lint + - run: pnpm run test - run: git diff --stat --exit-code - name: Slack Notification if: failure() From b5556c35211ad3140cf7730369951cc7da89478c Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:15:52 +0900 Subject: [PATCH 006/182] =?UTF-8?q?npx=20=E6=92=B2=E6=BB=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 08540111..cd058259 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "lint": "pnpm -r --filter=./packages/* lint", "fmt": "pnpm -r --filter=./packages/* fmt", "test": "pnpm -r --filter=./packages/* test", - "start": "npx serve -S -l 8080 ./example", + "start": "serve -S -l 8080 ./example", "doc": "npx typedoc", "release:canary": "./scripts/release_canary.sh" }, From 0323b79e469272ea37489fd7d9c0a01205c50bb2 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:16:18 +0900 Subject: [PATCH 007/182] =?UTF-8?q?npx=20=E6=92=B2=E6=BB=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd058259..455e65d8 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "fmt": "pnpm -r --filter=./packages/* fmt", "test": "pnpm -r --filter=./packages/* test", "start": "serve -S -l 8080 ./example", - "doc": "npx typedoc", + "doc": "typedoc", "release:canary": "./scripts/release_canary.sh" }, "repository": { From 111b97ca62f1d2dbf90d49148c44b5cbcb4eb8ae Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:18:25 +0900 Subject: [PATCH 008/182] =?UTF-8?q?npx=20=E6=92=B2=E6=BB=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/e2ee/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 2ac26571..9622004e 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -10,7 +10,7 @@ "scripts": { "build": "pnpm run build:worker && pnpm run build:development", "build:development": "NODE_ENV=development rollup -c rollup.config.mjs --bundleConfigAsCjs", - "build:worker": "npx tsc --project tsconfig.worker.json", + "build:worker": "tsc --project tsconfig.worker.json", "fmt": "prettier --write src", "lint": "eslint --ext .ts ./src", "test": "echo \"no test\"" From 73e6184ea7e5c845f5593399cefe0f8d40db7854 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:23:37 +0900 Subject: [PATCH 009/182] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E8=A8=AD?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E5=89=8A=E9=99=A4=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/package.json b/package.json index 455e65d8..af6ee67e 100644 --- a/package.json +++ b/package.json @@ -33,10 +33,5 @@ }, "resolutions": { "get-pkg-repo": "5.0.0" - }, - "workspaces": [ - "packages/go-wasm", - "packages/e2ee", - "packages/sdk" - ] + } } \ No newline at end of file From 2b0df443cdf5469a12e85301d7ec2c71b3c50608 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:24:20 +0900 Subject: [PATCH 010/182] =?UTF-8?q?issues=20=E3=81=8B=E3=82=89=20discord?= =?UTF-8?q?=20=E3=81=B8=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index af6ee67e..e314b99b 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "author": "Shiguredo Inc.", "license": "Apache-2.0", "bugs": { - "url": "https://github.com/shiguredo/sora-js-sdk/issues" + "url": "https://discord.gg/shiguredo" }, "homepage": "https://github.com/shiguredo/sora-js-sdk#readme", "files": [ From 93af9f1be9360beac196c8db63b9347da6c02991 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:29:19 +0900 Subject: [PATCH 011/182] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 079e4b05..5f3722ab 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,11 @@ ## develop +- [CHANGE] pnpm 化 + + - npx 利用をやめる + - @voluntas + ## 2023.1.0 **2023-06-20** From b5aa629a5147859131d03bb425d3883d8eb49fa8 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:30:26 +0900 Subject: [PATCH 012/182] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3?= =?UTF-8?q?=E3=83=88=E3=81=AF=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 588 +++++++++++++++++++++++++++-------------------------- 1 file changed, 300 insertions(+), 288 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 5f3722ab..871b02cc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,18 +1,17 @@ # 変更履歴 - UPDATE - - 下位互換がある変更 + - 下位互換がある変更 - ADD - - 下位互換がある追加 + - 下位互換がある追加 - CHANGE - - 下位互換のない変更 + - 下位互換のない変更 - FIX - - バグ修正 + - バグ修正 ## develop - [CHANGE] pnpm 化 - - npx 利用をやめる - @voluntas @@ -21,701 +20,714 @@ **2023-06-20** - [ADD] 接続オプションとしてビデオコーデック用パラメータの送信を追加 - - `ConnectionOptions` 型に `videoVP9Params` `videoH264Params` `videoAV1Params` フィールドを追加 - - @tnamao + - `ConnectionOptions` 型に `videoVP9Params` `videoH264Params` `videoAV1Params` フィールドを追加 + - @tnamao - [ADD] GitHub Actions に Node.js 20 を追加する - - @voluntas + - @voluntas - [UPDATE] TypeScript を 5 系に上げる - - @voluntas + - @voluntas - [UPDATE] 接続オプションで転送フィルターを指定できるようにする - - `ConnectionOptions` 型に `forwardingFilter` フィールドを追加 - - @sile + - `ConnectionOptions` 型に `forwardingFilter` フィールドを追加 + - @sile - [UPDATE] SDP の再利用に対応する - - 主に Lyra 周りで同じ mid の使い回しを考慮していないところがあったのを修正 - - @sile + - 主に Lyra 周りで同じ mid の使い回しを考慮していないところがあったのを修正 + - @sile - [UPDATE] オファー SDP のメディアポートに 0 を指定することで古いトランシーバーを解放できるようにする - - Firefox は 0 ポートを指定するとエラーになるので SDK 側で従来の 9 に置換している - - @sile + - Firefox は 0 ポートを指定するとエラーになるので SDK 側で従来の 9 に置換している + - @sile - [UPDATE] .github 以下に renovate.json を移動する - - @voluntas + - @voluntas - [UPDATE] Safari / Mobile Safari で Lyra コーデックを使用可能にする - - これらのブラウザでは WebRTC Encoded Transform を使うようにする - - @sile + - これらのブラウザでは WebRTC Encoded Transform を使うようにする + - @sile - [UPDATE] @shiguredo/lyra-wasm を 2023.1.0 に更新する - - Web Worker 対応と Mobile Safari 対応の取り込み - - @sile + - Web Worker 対応と Mobile Safari 対応の取り込み + - @sile - [CHANGE] .prettierrc を統一する - - @voluntas + - @voluntas - [CHANGE] サンプルのチャネル ID を sora に変更する - - @voluntas + - @voluntas ## 2022.3.3 - [FIX] npm 最新バージョンへのリリースミスを修正 - - @voluntas + - @voluntas ## 2022.3.2 - [FIX] ミュート状態で接続すると、replace(Video|Audio)Track しても画像・音声データが送信されないのを修正 - - @melpon + - @melpon ## 2022.3.1 - [FIX] e2ee が有効で無い場合の判定は null かどうかに修正する - - @voluntas + - @voluntas ## 2022.3.0 - [UPDATE] E2EE 有効時に Lyra コーデックを使用可能にする - - @sile + - @sile ## 2022.2.0 - [ADD] audioCodecType に "LYRA" を追加 - - 注意: 現時点では Lyra コーデックと E2EE の併用はできず、両方が指定された場合には E2EE が優先される - - @sile + - 注意: 現時点では Lyra コーデックと E2EE の併用はできず、両方が指定された場合には E2EE が優先される + - @sile - [ADD] Sora.initLyra() 関数を追加 - - Lyra でエンコードされた音声を送信ないし受信する場合には、事前にこの関数を呼び出しておく必要がある - - wasm やモデルファイルのダウンロードは実際に必要になったタイミングで遅延して行われる - - @sile + - Lyra でエンコードされた音声を送信ないし受信する場合には、事前にこの関数を呼び出しておく必要がある + - wasm やモデルファイルのダウンロードは実際に必要になったタイミングで遅延して行われる + - @sile - [ADD] ConnectOptions に audioLyraParamsUsedtx を追加 - - @sile + - @sile - [ADD] ConnectOptions に audioLyraParamsBitrate を追加 - - @sile + - @sile - [ADD] audio_streaming_language_code を追加 - - @melpon + - @melpon - [CHANGE] ts-jest を @swc/jest に変更する - - @voluntas + - @voluntas - [CHANGE] サンプルの sora-e2ee-wasm のダウンロード先を変更する - - @voluntas + - @voluntas - [CHANGE] sora.min.js を削除する - - @yuitowest + - @yuitowest - [FIX] 廃止になった opus_params の clock_rate を削除する - - @voluntas + - @voluntas ## 2022.1.0 - [CHANGE] 切断処理時に MediaStream の停止処理をしないように変更する - - @yuitowest + - @yuitowest - [CHANGE] ConnectionOptions からシグナリング type: connect メッセージを生成する仕組みを変更する - - multistream オプションが false の場合、シグナリングメッセージに multistream: false を含めるように変更する - - spotlight オプションは multistream: true の場合のみシグナリングメッセージに含まれていたが、multistream フラグに関係なく含まれるように変更する - - spotlightFocusRid オプションは spotlight: true の場合のみシグナリングメッセージに含まれていたが、spotlight フラグに関係なく含まれるように変更する - - spotlightUnfocusRid オプションは spotlight: true の場合のみシグナリングメッセージに含まれていたが、spotlight フラグに関係なく含まれるように変更する - - spotlightNumber オプションは spotlight: true の場合のみシグナリングメッセージに含まれていたが、spotlight フラグに関係なく含まれるように変更する - - simulcastRid オプションは simulcast: true の場合のみシグナリングメッセージに含まれていたが、simulcast フラグに関係なく含まれるように変更する - - @yuitowest + - multistream オプションが false の場合、シグナリングメッセージに multistream: false を含めるように変更する + - spotlight オプションは multistream: true の場合のみシグナリングメッセージに含まれていたが、multistream フラグに関係なく含まれるように変更する + - spotlightFocusRid オプションは spotlight: true の場合のみシグナリングメッセージに含まれていたが、spotlight フラグに関係なく含まれるように変更する + - spotlightUnfocusRid オプションは spotlight: true の場合のみシグナリングメッセージに含まれていたが、spotlight フラグに関係なく含まれるように変更する + - spotlightNumber オプションは spotlight: true の場合のみシグナリングメッセージに含まれていたが、spotlight フラグに関係なく含まれるように変更する + - simulcastRid オプションは simulcast: true の場合のみシグナリングメッセージに含まれていたが、simulcast フラグに関係なく含まれるように変更する + - @yuitowest - [ADD] sendrecv オブジェクトのオプションに bundle_id を追加する - - @yuitowest + - @yuitowest - [UPDATE] sendrecv API を使用して接続する場合に multistream option の初期値が true になるよう修正する - - @yuitowest + - @yuitowest - [UPDATE] sendrecv API を使用して multistream: false で接続した場合、Sora との接続前に例外が発生するように修正する - - @yuitowest + - @yuitowest - [UPDATE] パッケージを更新する - - fflate "0.7.1" -> "0.7.2" - - typescript "4.4.3" -> "4.5.4" - - @yuitowest + - fflate "0.7.1" -> "0.7.2" + - typescript "4.4.3" -> "4.5.4" + - @yuitowest - [CHANGE] connectedSignalingUrl は現在接続中の WebSocket の URL ではなく type offer メッセージを受信した URL を返すようにする - - ignoreDisconnectWebSocket を使用して WebSocket を切断した場合にも URL を返すように修正する - - @yuitowest + - ignoreDisconnectWebSocket を使用して WebSocket を切断した場合にも URL を返すように修正する + - @yuitowest - [UPDATE] SendRecv オブジェクト に contactSignalingUrl プロパティを追加する - - @yuitowest + - @yuitowest ## 2021.2.3 + - [FIX] メッセージング機能で文字列データが送信されてきた場合にそのまま message callback に渡していた問題を修正する - - @yuitowest + - @yuitowest ## 2021.2.2 + - [FIX] fflate package のバージョンを 0.7.1 から 0.7.3 に更新する - - 0.7.3 https://github.com/101arrowz/fflate/blob/master/CHANGELOG.md#073 - - 0.7.2 https://github.com/101arrowz/fflate/blob/master/CHANGELOG.md#072 - - @yuitowest + - 0.7.3 https://github.com/101arrowz/fflate/blob/master/CHANGELOG.md#073 + - 0.7.2 https://github.com/101arrowz/fflate/blob/master/CHANGELOG.md#072 + - @yuitowest ## 2021.2.1 + - [FIX] type redirect 時のシグナリングで接続エラーになった場合、例外が発火しなかった問題を修正する - - @yuitowest + - @yuitowest ## 2021.2.0 + - [UPDATE] simulcast 時の transceiver 判定条件に offer.mids.video での分岐を追加する - - @yuitowest + - @yuitowest - [UPDATE] 複数パッケージの管理を lerna から npm workspace に変更する - - @yuitowest + - @yuitowest - [ADD] DataChannel メッセージング機能を追加する - - sendrecv オブジェクトのオプションに datachannels を追加する - - sendrecv オブジェクトに sendMessage API を追加する - - sendrecv オブジェクトに datachannels プロパティを追加する - - on callback に "message" を追加する - - on callback に "datachannel" を追加する - - @yuitowest + - sendrecv オブジェクトのオプションに datachannels を追加する + - sendrecv オブジェクトに sendMessage API を追加する + - sendrecv オブジェクトに datachannels プロパティを追加する + - on callback に "message" を追加する + - on callback に "datachannel" を追加する + - @yuitowest - [CHANGE] 複数 Signaling URL への接続に対応する - - Connection オブジェクト第一引数の type を `string` から `string | string[]` に変更する - - Connection オブジェクト signalingUrl プロパティの戻り値の type を `string` から `string | string[]` に変更する - - SendRecv オブジェクト signalingUrl プロパティの戻り値の type を `string` から `string | string[]` に変更する - - Connection オブジェクトに signalingUrlCandidates プロパティを追加する - - SendRecv オブジェクト に signalingUrlCandidates プロパティを追加する - - SendRecv オブジェクト に connectedSignalingUrl プロパティを追加する - - SendRecv オブジェクト に signalingCandidateTimeout オプションを追加する - - @yuitowest + - Connection オブジェクト第一引数の type を `string` から `string | string[]` に変更する + - Connection オブジェクト signalingUrl プロパティの戻り値の type を `string` から `string | string[]` に変更する + - SendRecv オブジェクト signalingUrl プロパティの戻り値の type を `string` から `string | string[]` に変更する + - Connection オブジェクトに signalingUrlCandidates プロパティを追加する + - SendRecv オブジェクト に signalingUrlCandidates プロパティを追加する + - SendRecv オブジェクト に connectedSignalingUrl プロパティを追加する + - SendRecv オブジェクト に signalingCandidateTimeout オプションを追加する + - @yuitowest - [UPDATE] type redirect 対応を追加する - - @yuitowest + - @yuitowest - [CHANGE] spotlight_legacy 対応を削除する - - ConnectionOptions の spotlight オプションの型を boolean のみに変更する + - ConnectionOptions の spotlight オプションの型を boolean のみに変更する ## 2021.1.7 + - [ADD] SoraCloseEvent 関連の type を export する - - @yuitowest + - @yuitowest ## 2021.1.6 + - [FIX] timeline ログに re-answer のログが出力されていなかったので修正する - - @yuitowest + - @yuitowest - [UPDATE] timeline ログの ontrack ログに詳細情報を追加する - - @yuitowest + - @yuitowest ## 2021.1.5 + - [FIX] dataChannelSignaling false の場合に Disconnect API 経由で切断すると disconnect callback が発火しない問題を修正する - - @yuitowest + - @yuitowest - [UPDATE] 非同期で disconnect を複数回呼んだ場合の処理を修正する - - @yuitowest + - @yuitowest ## 2021.1.4 + - [FIX] DataChannel 切断のタイムアウト処理中に WebSocket が切断すると Uncaught (in promise) が発生する問題を修正する - - @yuitowest + - @yuitowest - [UPDATE] 切断処理中の WebSocket の onclose タイムラインログに code と reason を入れるようにする - - @yuitowest + - @yuitowest ## 2021.1.3 + - [FIX] DataChannel 切断処理を修正する - - 切断タイムアウト処理時にすでに DataChannel の readyState が "closed" 状態であれば onclose を待たないように修正する - - @yuitowest + - 切断タイムアウト処理時にすでに DataChannel の readyState が "closed" 状態であれば onclose を待たないように修正する + - @yuitowest ## 2021.1.2 + - [CHANGE] disconnect API を修正する - - type: disconnect メッセージに reason を追加するように修正する - - @yuitowest + - type: disconnect メッセージに reason を追加するように修正する + - @yuitowest - [CHANGE] disconnect callback を修正する - - disconnect callback が受け取る event を CloseEvent から SoraCloseEvent に変更する - - disconnect callback が受け取る event の type は "close" のみから "normal" か "abend" のどちらかが返るように変更する - - disconnect callback が受け取る event の code, reason は undefined のパターンを追加する - - disconnect callback が受け取る event に title を追加する - - disconnect callback が受け取る event に params を追加する - - @yuitowest + - disconnect callback が受け取る event を CloseEvent から SoraCloseEvent に変更する + - disconnect callback が受け取る event の type は "close" のみから "normal" か "abend" のどちらかが返るように変更する + - disconnect callback が受け取る event の code, reason は undefined のパターンを追加する + - disconnect callback が受け取る event に title を追加する + - disconnect callback が受け取る event に params を追加する + - @yuitowest - [CHANGE] connect signaling 時の意図しない WebSocket の切断時のメッセージを統一する - - "Signaling failed. {reason}" に統一する - - @yuitowest + - "Signaling failed. {reason}" に統一する + - @yuitowest - [CHANGE] timeline callback Event の property を変更する - - transportType を logType に変更する - - @yuitowest + - transportType を logType に変更する + - @yuitowest - [CHANGE] signaling callback Event の property を変更する - - transportType は必須項目にする - - @yuitowest + - transportType は必須項目にする + - @yuitowest - [UPDATE] PeerConnecion の状態が不正な場合に切断処理に入るようにする - - PeerConnecion connectionState が "failed" になった場合は切断する - - PeerConnecion connectionState が undefined の場合 iceConnectionState が "disconnect" になって1000ms変化がない場合は切断する - - @yuitowest + - PeerConnecion connectionState が "failed" になった場合は切断する + - PeerConnecion connectionState が undefined の場合 iceConnectionState が "disconnect" になって 1000ms 変化がない場合は切断する + - @yuitowest - [UPDATE] 型を export する - - @yuitowest + - @yuitowest ## 2021.1.1 - [FIX] 接続処理が途中で失敗した場合の timeline ログに connected のログが出力されていた問題を修正する - - @yuitowest + - @yuitowest ## 2021.1.0 - [CHANGE] fflate を導入して DataChannel zlib 対応を追加する - - @yuitowest + - @yuitowest - [ADD] get audio, get video を追加して接続がそれぞれに対応しているかを返すようにする - - @yuitowest + - @yuitowest - [ADD] stopAudioTrack, stopVideoTrack, replaceAudioTrack, replaceVideoTrack を追加する - - @yuitowest + - @yuitowest - [CHANGE] timeout option を connectionTimeout option に名前を変更する - - timeout option を使用している場合は deprecated warning が出るように変更 - - @yuitowest + - timeout option を使用している場合は deprecated warning が出るように変更 + - @yuitowest - [CHANGE] Notify callback, Push callback の第二引数に TransportType を追加する - - @yuitowest + - @yuitowest - [CHANGE] role から upstream と downstream を削除する - - @voluntas + - @voluntas - [CHANGE] publisher と subscriber を削除する - - @voluntas + - @voluntas - [CHANGE] helper メソッドを追加 - - @yuitowest + - @yuitowest - [CHANGE] シグナリングメッセージに型定義を追加 - - @yuitowest + - @yuitowest - [CHANGE] 型定義の修正 - - Callbacks の各 callback 型定義を Function から適切なものに修正する - - on メソッドに渡す第2引数の型定義を適切なものに修正する - - trace メソッドに渡す第3引数の型定義をanyからunknownに変更する - - @yuitowest + - Callbacks の各 callback 型定義を Function から適切なものに修正する + - on メソッドに渡す第 2 引数の型定義を適切なものに修正する + - trace メソッドに渡す第 3 引数の型定義を any から unknown に変更する + - @yuitowest - [CHANGE] packages 以下の npm-client を yarn にする - - @yuitowest + - @yuitowest - [ADD] packages:upgrade コマンドを追加する - - @yuitowest + - @yuitowest - [ADD] Switch DataChannel を実装する - - ConnectionOptions に dataChannelSignaling を追加する - - ConnectionOptions に ignoreDisconnectWebSocket を追加する - - @yuitowest + - ConnectionOptions に dataChannelSignaling を追加する + - ConnectionOptions に ignoreDisconnectWebSocket を追加する + - @yuitowest - [ADD] ConnectionOptions に spotlightFocusRid / spotlightUnfocusRid を追加する - - @yuitowest + - @yuitowest - [UPDATE] パッケージを更新する - - typescript を3系から4系に変更 - - @yuitowest + - typescript を 3 系から 4 系に変更 + - @yuitowest - [UPDATE] サイマルキャストのサンプルを low / middle / high から r0 / r1 / r2 へ変更する - - @voluntas + - @voluntas ## 2020.6.2 + - [FIX] simulcast が使用できるかどうかの判定を修正する - - UserAgent を用いた判定から RTCRtpSender.getCapabilities を用いた判定に変更 - - @yuitowest + - UserAgent を用いた判定から RTCRtpSender.getCapabilities を用いた判定に変更 + - @yuitowest ## 2020.6.1 - [FIX] simulcast 時に setParameters するための RTCRtpTransceiver 検索条件を変更する - - getUserMedia constraints の audio/video と Sora signaling の audio/video が一致しなかった場合に `DOMException: Read-only field modified in setParameters().` が発生する - - encodings が readonly な RTCRtpSender を持つ RTCRtpTransceiver を検索条件から除外して対応 - - @yuitowest + - getUserMedia constraints の audio/video と Sora signaling の audio/video が一致しなかった場合に `DOMException: Read-only field modified in setParameters().` が発生する + - encodings が readonly な RTCRtpSender を持つ RTCRtpTransceiver を検索条件から除外して対応 + - @yuitowest ## 2020.6.0 + - [UPDATE] e2ee 処理で signaling notify 時に metadata / authn_metadata どちらでも動作するように修正する - - @yuitowest + - @yuitowest - [UPDATE] connect 時の例外に code と reason を含めるようにする - - WebSocket の onclose が発火した場合のみ Error オブジェクトに close event の code と reason を含める - - @yuitowest + - WebSocket の onclose が発火した場合のみ Error オブジェクトに close event の code と reason を含める + - @yuitowest - [FIX] type offer 時に受け取った encodings を type update 時にも setParametes するように修正する - - @yuitowest + - @yuitowest ## 2020.5.0 - [UPDATE] clientId option に空文字列を渡せるように修正する - - @yuitowest + - @yuitowest - [CHANGE] オプションの e2ee を boolean のみに変更する - - @yuitowest + - @yuitowest - [UPDATE] sora-e2ee パッケージを内包するように変更する - - lerna を使って複数 package を管理するようにする - - sdk package を作成して既存コードを sdk package 内へ移動する - - e2ee package を作成して sora-e2ee コードを移植する - - go-wasm package を作成して wasm_exec.js コードを内包する - - @yuitowest + - lerna を使って複数 package を管理するようにする + - sdk package を作成して既存コードを sdk package 内へ移動する + - e2ee package を作成して sora-e2ee コードを移植する + - go-wasm package を作成して wasm_exec.js コードを内包する + - @yuitowest - [CHANGE] simulcastQuality を simulcastRid に変更する - - @voluntas + - @voluntas - [CHANGE] simulcast を bool のみに変更する - - @voluntas + - @voluntas - [CHANGE] simulcast_rid を追加する - - @voluntas + - @voluntas ## 2020.4.2 - [FIX] metadata に直接 undefined を渡せるように修正する - - @yuitowest + - @yuitowest ## 2020.4.1 - [FIX] timeout option を設定時に特定の条件で正しく動かない問題を修正する - - peerconnection connectionState が undefined の場合に timeout error が強制的に発動してしまう - - peerconnection 接続前に timeout の時間に到達した場合 timeout error が発動しない - - @yuitowest + - peerconnection connectionState が undefined の場合に timeout error が強制的に発動してしまう + - peerconnection 接続前に timeout の時間に到達した場合 timeout error が発動しない + - @yuitowest ## 2020.4.0 - [CHANGE] signaling 時に処理に失敗した場合の reject の引数を CloseEvent オブジェクトから Error オブジェクトに変更する - - @yuitowest + - @yuitowest - [CHANGE] connect() のタイムアウト処理にデフォルト値を設定する - - 60000 ms でタイムアウトするように設定する - - @yuitowest + - 60000 ms でタイムアウトするように設定する + - @yuitowest - [UPDATE] connect() 実行時に PeerConnection connectionState が 'connected' になったら処理が完了するように変更する - - @yuitowest + - @yuitowest - [UPDATE] disconnect 処理を修正する - - websocket で type: "disconnect" を send するように変更する - - websocket の readyState の監視をやめる - - peerConnection の 切断監視を signalingState から connectionState に変更する - - @yuitowest + - websocket で type: "disconnect" を send するように変更する + - websocket の readyState の監視をやめる + - peerConnection の 切断監視を signalingState から connectionState に変更する + - @yuitowest - [UPDATE] sora-e2ee のバージョンを 2020.3.0 に更新する - - @yuitowest + - @yuitowest - [FIX] `package.json` に定義されている `module` の向き先を `dist/sora.mjs` に変更し、対象ファイルがビルドされるよう Rollup の設定を追加する - - https://github.com/shiguredo/sora-js-sdk/pull/44 - - @rosylilly + - https://github.com/shiguredo/sora-js-sdk/pull/44 + - @rosylilly - [UPDATE] simulcast で active パラメーターを有効にするための実装を追加する - - @yuitowest + - @yuitowest ## 2020.3.0 - [UPDATE] Safari 14 以降で Simulcast が使えるように変更 - - @yuitowest + - @yuitowest ## 2020.2.0 - [UPDATE] sora-e2ee を 2020.2.0 に上げる - - @voluntas + - @voluntas - [FIX] disconnect() を複数回実行した場合に例外が発生しないようにする - - @yuitowest + - @yuitowest - [UPDATE] 新スポットライトに対応する - - ConnectionOptions に spotlightNumber を追加する - - ConnectionOptions の spotlight に boolean を受け取れるよう修正する - - @yuitowest + - ConnectionOptions に spotlightNumber を追加する + - ConnectionOptions の spotlight に boolean を受け取れるよう修正する + - @yuitowest ## 2020.1.5 - [FIX] metadata が undefined の場合以外は signaling connect message に metadata を含めるように変更 - - @yuitowest + - @yuitowest ## 2020.1.4 - [UPDATE] type.ts にある type Json のインデックスシグネチャに undefined を許可する - - @yuitowest + - @yuitowest ## 2020.1.3 - [CHANGE] type.ts にある Audio, Video をそれぞれ SignalingAudio, SignalingVideo に名前変更する - - @yuitowest + - @yuitowest - [ADD] SoraConnection の型定義を export する - - @yuitowest + - @yuitowest - [ADD] sendrecv, sendonly, recvonly の引数に渡す options に signalingNotifyMetadata を追加する - - @yuitowest + - @yuitowest ## 2020.1.2 - [FIX] sendrecv, sendonly, recvonly の引数に渡す metadata の型を Json に変更 - - @yuitowest + - @yuitowest - [FIX] authMetadata の型を Json に変更 - - @yuitowest + - @yuitowest ## 2020.1.1 - [UPDATE] type export を追加 - - AudioCodecType, Callbacks, ConnectionBase, ConnectionOptions, ConnectionPublisher, ConnectionSubscriber, Role, SimulcastQuality, VideoCodecType の型定義を export する - - @yuitowest + - AudioCodecType, Callbacks, ConnectionBase, ConnectionOptions, ConnectionPublisher, ConnectionSubscriber, Role, SimulcastQuality, VideoCodecType の型定義を export する + - @yuitowest ## 2020.1 - [UPDATE] E2EE 対応 - - @yuitowest + - @yuitowest - [UPDATE] TypeScript 化 - - @yuitowest + - @yuitowest - [UPDATE] async / await 化 - - @yuitowest + - @yuitowest - [ADD] Sora から `type: ping` が送られてきた際に `stats: true` だった場合 `type: pong` 送信時に `stats` に getStats の結果を入れる - - @yuitowest @voluntas + - @yuitowest @voluntas - [CHANGE] @deprecated メッセージを追加する - - publisher/subscriber を使用している場合に warning を出すように変更する - - addstream/removestream を使用している場合に warning を出すように変更する - - debug: true 時に disconnect の MediaStream close 処理で warning を出すように変更する - - @yuitowest + - publisher/subscriber を使用している場合に warning を出すように変更する + - addstream/removestream を使用している場合に warning を出すように変更する + - debug: true 時に disconnect の MediaStream close 処理で warning を出すように変更する + - @yuitowest - [CHANGE] property 名の変更とアクセス制限の追加する - - `_pc` を `pc` に名前変更する - - `_ws` を `ws` に名前変更してアクセス制限を protected に変更する - - `_callbacks` を `callbacks` に名前変更してアクセス制限を protected に変更 - - @yuitowest + - `_pc` を `pc` に名前変更する + - `_ws` を `ws` に名前変更してアクセス制限を protected に変更する + - `_callbacks` を `callbacks` に名前変更してアクセス制限を protected に変更 + - @yuitowest - [CHANGE] method 名の変更とアクセス制限の追加する - - _ がついているメソッド名から _ を削除してアクセス制限を追加する - - @yuitowest + - _ がついているメソッド名から _ を削除してアクセス制限を追加する + - @yuitowest ## 1.16.0 - [UPDATE] サンプルで利用する role を新しいものに変更する - - @voluntas + - @voluntas - [ADD] タイムアウトを指定可能にする - - デフォルトではタイムアウトは有効にはなっていない - - @yuitowest + - デフォルトではタイムアウトは有効にはなっていない + - @yuitowest - [ADD] 新しい role である sendrecv / sendonly / sendrecv を利用できるようにする - - @voluntas + - @voluntas - [ADD] サンプルに multsitream_sendonly.html を追加する - - @voluntas + - @voluntas - [CHANGE] サンプルの multistream.html を multistream_sendrecv.html に変更する - - @voluntas + - @voluntas - [CHANGE] サンプルの multistream_down.html を multistream_recvonly.html に変更する - - @voluntas + - @voluntas - [CHANGE] サンプルの spotlight.html を spotlight_sendrecv.html に変更する - - @voluntas + - @voluntas - [CHANGE] サンプルの spotlight_down.html を spotlight_recvonly.html に変更する - - @voluntas + - @voluntas - [CHANGE] サンプルの updown.html を sendonly_recvonly.html に変更する - - @voluntas + - @voluntas - [CHANGE] sdk_version と sdk_type を廃止し sora_client を追加 - - @voluntas + - @voluntas - [CHANGE] user_agent を廃止し sora_client を追加 - - @voluntas + - @voluntas - [FIX] README から simulcast_rid を削除する - - @voluntas + - @voluntas ## 1.15.0 - [UPDATE] タスクランナーを webpack から rollupjs に変更 - - @yuitowest + - @yuitowest - [UPDATE] babel core を 6 から 7 へアップデート - - @yuitowest + - @yuitowest - [ADD] multistream + simulcast に対応する - - @yuitowest + - @yuitowest - [ADD] opus params 関連のオプションを追加する - - @yuitowest + - @yuitowest - [CHANGE] Plan B のコードをすべて削除する - [CHANGE] ssrc group simulcast のコードをすべて削除する - - @yuitowest + - @yuitowest - [CHANGE] signaling message 作成時のチェックを修正 - - role が 'upstream' または 'downstream' でない場合はエラーになるように修正 - - channelId が null または undefined な場合はエラーになるように修正 - - metadata が null または undefined な場合は signaling message に metadata を含めないように修正 - - @yuitowest + - role が 'upstream' または 'downstream' でない場合はエラーになるように修正 + - channelId が null または undefined な場合はエラーになるように修正 + - metadata が null または undefined な場合は signaling message に metadata を含めないように修正 + - @yuitowest ## 1.14.0 - [UPDATE] rid ベース simulcast で replaceTrack を使用しないで addTrack のみで実装する - - @yuitowest + - @yuitowest - [FIX] rid ベース simulcast で音声がでない問題を修正 - - @yuitowest + - @yuitowest ## 1.13.0 - [ADD] rid ベース simulcast への対応 - - firefox と safari では利用できないようにする - - @yuitowest + - firefox と safari では利用できないようにする + - @yuitowest - [CHANGE] userAgent を user_agent に変更する - - @yuitowest + - @yuitowest ## 1.12.0 - [UPDATE] example の整理 - - @yuitowest + - @yuitowest - [UPDATE] development build 時に sora-js-sdk の version に '-dev' をつけるようにする - - @yuitowest + - @yuitowest - [ADD] Signaling Option に client_id を追加する - - @yuitowest + - @yuitowest ## 1.11.0 - [UPDATE] Safari の Unified Plan, Plan B 両方に対応する - - @yuitowest + - @yuitowest - [UPDATE] Simulcast option が使えるブラウザ判定を変更する - - @yuitowest + - @yuitowest ## 1.10.2 - [FIX] direction を {direciton: ''} 形式に変更する - - @yuitowest + - @yuitowest ## 1.10.1 - [UPDATE] Firefox の Media Panel addon の Media-Webrtc が動作するよう RTCPeerConnection の変数格納を削除する - - @yuitowest + - @yuitowest - [ADD] ConnectionOptions の新しいプロパティに型を追加する - - @exKAZUu + + - @exKAZUu - [FIX] setDirection を direction に変更する - - Safari Technology Preview 73 への対応 - - @yuitowest + - Safari Technology Preview 73 への対応 + - @yuitowest ## 1.10.0 - [UPDATE] simulcast, simulcastQuality オプションを追加 - - @yuitowest + - @yuitowest ## 1.9.3 - [FIX] Single Stream の subscriber で on('addstream', callback) が発火しない問題を修正する - - @yuitowest + - @yuitowest ## 1.9.2 - [UPDATE] package json の文言修正 - - @yuitowest + - @yuitowest ## 1.9.1 - [UPDATE] Unified Plan の適応を Chrome M71 以降のバージョンに変更する - - @yuitowest + - @yuitowest ## 1.9.0 - [ADD] Chrome M68 以降のバージョンの動作変更 - - RTCPeerConnection の config に sdpSemantics: 'unified-plan' を追加 - - signaling message に plan_b: true オプションを渡さないように修正 - - @yuitowest + - RTCPeerConnection の config に sdpSemantics: 'unified-plan' を追加 + - signaling message に plan_b: true オプションを渡さないように修正 + - @yuitowest - [CHANGE] snapshot 関連を削除 - - @yuitowest + - @yuitowest - [FIX] ontrack で stream が取得できなかった場合のエラーを修正する - - @yuitowest + - @yuitowest ## 1.8.2 - [CHANGE] vad を spotlight に変更する - - @yuitowest + - @yuitowest ## 1.8.1 - [FIX] addTransceiver を使うのは safari の場合だけにする - - @yuitowest + - @yuitowest - [FIX] pc が null の場合は reject するように修正する - - @yuitowest + - @yuitowest ## 1.8.0 - [UPDATE] signaling connect 時のパラメータに vad を追加する - - @yuitowest + - @yuitowest - [ADD] auth metadata を参照できるように修正する - - @yuitowest + - @yuitowest ## 1.7.7 - [UPDATE] example を修正する - - @yuitowest + - @yuitowest - [FIX] disconnect 時に Safari では PeerConnection Closing Error が出る問題を修正する - - @yuitowest + - @yuitowest - [FIX] subscriber multistream 時に Chrome では remoteClientIds が更新されていなかった問題を修正する - - @yuitowest + - @yuitowest - [FIX] disconnect 時に remote 接続の clientId リストを初期化するように修正する - - @yuitowest + - @yuitowest - [FIX] disconnect 時に peerConnection の oniceconnectionstatechange を初期化するように修正する - - @yuitowest + - @yuitowest ## 1.7.6 - [FIX] multistream subscriber 利用時に ontrack が video でしか発火しなかったのを修正する - - @yuitowest + - @yuitowest - [FIX] multistream subscriber 利用時に onremovestream を ontrack の動作に合わせる - - @yuitowest + - @yuitowest ## 1.7.5 - [CHANGE] offer 作成用の peerConnection を close するように修正する - - @yuitowest + - @yuitowest ## 1.7.4 - [UPDATE] signaling connect 時のパラメータに UserAgent を追加する - - @yuitowest + - @yuitowest - [CHANGE] publisher, subscriber の引数の options に渡したオブジェクトの value 値が null の場合は処理しないように修正する - - @yuitowest + - @yuitowest ## 1.7.3 - [UPDATE] Firefox で icecandidate に時間がかかる問題を修正する - - @yuitowest + - @yuitowest ## 1.7.2 - [UPDATE] 最新の Edge に対応する - [FIX] signaling offer 時の message に config が含まれていない場合の処理を追加する - - @yuitowest + - @yuitowest ## 1.7.1 - [UPDATE] signaling connect 時のパラメータに sdp を追加する - - @yuitowest + - @yuitowest ## 1.7.0 - [ADD] event type に log を追加する - [FIX] disconnect を同時に複数回呼ぶとエラーになる問題を修正する - - @yuitowest + - @yuitowest ## 1.6.1 - [ADD] RTCPeerConnection の引数に MediaConstraints を渡せるようにする - - @yuitowest + - @yuitowest ## 1.6.0 - [ADD] Publisher と Subscriber の options に AudioBitRate を追加する - - @yuitowest + - @yuitowest ## 1.5.0 - [UPDATE] パッケージの更新 - - @yuitowest + - @yuitowest - [CHANGE] Signaling 時の WebSocket onerror では reject しないようにする - - @yuitowest + - @yuitowest ## 1.4.1 - [FIX] Signaling message の metadata が旧仕様(access_token)のままだったので修正する - - @yuitowest + - @yuitowest ## 1.4.0 - [ADD] Signaling notify 用の callback を追加できるように変更する - - @yuitowest + - @yuitowest ## 1.3.0 - [UPDATE] Safari に対応する - - @yuitowest + - @yuitowest ## 1.2.0 - [ADD] Subscriber の multistream に対応する - - @yuitowest + - @yuitowest - [CHANGE] iceServers が指定されていない場合に 'stun:stun.l.google.com:19302' を使用していたのをやめる - - @yuitowest + - @yuitowest ## 1.1.0 - [UPDATE] Microsoft Edge に対応する - - @yuitowest + - @yuitowest ## 1.0.0 - [CHANGE] PeerConnection まで含めた処理を SDK で実行するように変更する - - @yuitowest + - @yuitowest - [CHANGE] multistream をパラメーターに追加する - - @yuitowest + - @yuitowest - [CHANGE] videoSnapshot をパラメーターに追加する - - @yuitowest + - @yuitowest - [CHANGE] videoBitRate をパラメーターに追加する - - @yuitowest + - @yuitowest - [CHANGE] audioCodecType をパラメーターに追加する - - @yuitowest + - @yuitowest - [CHANGE] codecType を videoCodecType に変更する - - @yuitowest + - @yuitowest ## 0.5.0 - [UPDATE] シグナリングメッセージのキー名を変更する - - @yuitowest + - @yuitowest - [CHANGE] codecType のチェックをしないようにする - - @yuitowest + - @yuitowest ## 0.4.2 - [UPDATE] ドキュメントを修正する - - @yuitowest + - @yuitowest ## 0.4.1 - [UPDATE] ドキュメントを修正する - - @yuitowest + - @yuitowest ## 0.4.0 - [UPDATE] codecType が選択できるように修正する - - @yuitowest + - @yuitowest - [UPDATE] パッケージの更新 - - @yuitowest + - @yuitowest - [UPDATE] ビルドの仕組みを変更する - - @yuitowest + - @yuitowest ## 0.3.2 - [UPDATE] パッケージの更新 - - @yuitowest + - @yuitowest ## 0.3.1 - [UPDATE] signaling 時に WS が切断した場合、ステータスコードが 440x だったら Promise.reject するように変更する - - @yuitowest + - @yuitowest ## 0.3.0 - [ADD] disconnect を追加する - - @yuitowest + - @yuitowest ## 0.2.0 - [CHANGE] constructor の引数に URL 文字列を受け取る用に修正する - - @yuitowest + - @yuitowest - [CHANGE] package name を sora.js から sora-js-sdk に変更する - - @yuitowest + - @yuitowest - [CHANGE] Promise 化する - - @yuitowest + - @yuitowest - [FIX] PeerConnection Object が GC の対象にならないように修正する - - @yuitowest + - @yuitowest ## 0.1.0 From 8de514ddc35c9e4721d6f86426c976200190f3b4 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:30:43 +0900 Subject: [PATCH 013/182] =?UTF-8?q?=E5=BE=8C=E6=96=B9=E4=BA=92=E6=8F=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 871b02cc..df6c7149 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,11 +1,11 @@ # 変更履歴 - UPDATE - - 下位互換がある変更 + - 後方互換がある変更 - ADD - - 下位互換がある追加 + - 後方互換がある追加 - CHANGE - - 下位互換のない変更 + - 後方互換のない変更 - FIX - バグ修正 From 76b3cace025ba66a57f9ae3961b6770e75efcdc4 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 29 Jun 2023 13:39:28 +0900 Subject: [PATCH 014/182] 2023.2.0-canary.0 --- dist/sora.js | 6 +++--- dist/sora.mjs | 6 +++--- package.json | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/sora.js b/dist/sora.js index 0d5108da..332fc8da 100644 --- a/dist/sora.js +++ b/dist/sora.js @@ -1,7 +1,7 @@ /** * sora-js-sdk * WebRTC SFU Sora JavaScript SDK - * @version: 2023.1.0 + * @version: 2023.2.0-canary.0 * @author: Shiguredo Inc. * @license: Apache-2.0 **/ @@ -2264,7 +2264,7 @@ } const message = { type: 'connect', - sora_client: 'Sora JavaScript SDK 2023.1.0', + sora_client: 'Sora JavaScript SDK 2023.2.0-canary.0', environment: window.navigator.userAgent, role: role, channel_id: channelId, @@ -5240,7 +5240,7 @@ * @public */ version: function () { - return '2023.1.0'; + return '2023.2.0-canary.0'; }, /** * WebRTC のユーティリティ関数群 diff --git a/dist/sora.mjs b/dist/sora.mjs index b90fa7c1..5d1b39da 100644 --- a/dist/sora.mjs +++ b/dist/sora.mjs @@ -1,7 +1,7 @@ /** * sora-js-sdk * WebRTC SFU Sora JavaScript SDK - * @version: 2023.1.0 + * @version: 2023.2.0-canary.0 * @author: Shiguredo Inc. * @license: Apache-2.0 **/ @@ -2258,7 +2258,7 @@ function createSignalingMessage(offerSDP, role, channelId, metadata, options, re } const message = { type: 'connect', - sora_client: 'Sora JavaScript SDK 2023.1.0', + sora_client: 'Sora JavaScript SDK 2023.2.0-canary.0', environment: window.navigator.userAgent, role: role, channel_id: channelId, @@ -5234,7 +5234,7 @@ var sora = { * @public */ version: function () { - return '2023.1.0'; + return '2023.2.0-canary.0'; }, /** * WebRTC のユーティリティ関数群 diff --git a/package.json b/package.json index e314b99b..4d797d31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.1.0", + "version": "2023.2.0-canary.0", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -34,4 +34,4 @@ "resolutions": { "get-pkg-repo": "5.0.0" } -} \ No newline at end of file +} From 65dcc753e355804ce7775f001c9b0435e489410f Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 13:38:01 +0900 Subject: [PATCH 015/182] =?UTF-8?q?packageManager=20=E7=99=BB=E9=8C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4d797d31..c1a4d76b 100644 --- a/package.json +++ b/package.json @@ -33,5 +33,9 @@ }, "resolutions": { "get-pkg-repo": "5.0.0" + }, + "packageManager": "pnpm@8.6.5", + "engines": { + "node": ">=16.20.0" } -} +} \ No newline at end of file From 8adf5cbc4b64943f5aa7dbc5febb64962647c055 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 13:38:20 +0900 Subject: [PATCH 016/182] =?UTF-8?q?=E3=82=B3=E3=82=B9=E3=83=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/renovate.json | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index bf8f045e..6a47a97f 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -8,28 +8,47 @@ ":prConcurrentLimit10", "group:recommended", "group:allNonMajor", - "schedule:weekly", + "schedule:weekly" ], "dependencyDashboard": false, "packageRules": [ { - "matchUpdateTypes": ["minor", "patch", "pin", "digest"], + "matchUpdateTypes": [ + "minor", + "patch", + "pin", + "digest" + ], "platformAutomerge": true, "automerge": true }, { - "matchUpdateTypes": ["minor", "patch", "pin", "digest"], - "matchPackagePatterns": ["eslint"], + "matchUpdateTypes": [ + "minor", + "patch", + "pin", + "digest" + ], + "matchPackagePatterns": [ + "eslint" + ], "groupName": "eslint", "platformAutomerge": true, "automerge": true }, { - "matchUpdateTypes": ["minor", "patch", "pin", "digest"], - "matchPackagePatterns": ["rollup"], + "matchUpdateTypes": [ + "minor", + "patch", + "pin", + "digest" + ], + "matchPackagePatterns": [ + "rollup" + ], "groupName": "rollup", "platformAutomerge": true, "automerge": true } ] -} +} \ No newline at end of file From a3c6d17acd02937291b1e6b4800feee892f63ef1 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 13:45:03 +0900 Subject: [PATCH 017/182] pnpm up --latest --- DEVELOPMENT.md | 33 ++++++++++++++++++--------------- package.json | 2 +- pnpm-lock.yaml | 20 +++++++++++++------- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index c42e3d80..ea6b3145 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -5,11 +5,11 @@ ## 開発環境 - Node.js - - v16.13.0 以上 + - v16.13.0 以上 - npm - - v8.1.0 以上 + - v8.1.0 以上 - npm install - - これで事前に利用するライブラリをインストールする + - これで事前に利用するライブラリをインストールする ## 開発準備 @@ -19,24 +19,27 @@ - `npm run start` でローカルサーバを起動する ## 開発 + sora-js-sdk のトップディレクトリでコマンドを実行することによりビルドやフォーマットを行う -- `npm run build` packages 以下をビルドする -- `npm run lint` packages 以下のコードに lint を実行する -- `npm run fmt` packages 以下のコードに formatter を実行する -- `npm run test` packages 以下のテストを実行する +- `pnpm run build` packages 以下をビルドする +- `pnpm run lint` packages 以下のコードに lint を実行する +- `pnpm run fmt` packages 以下のコードに formatter を実行する +- `pnpm run test` packages 以下のテストを実行する ## パッケージ更新 + sora-js-sdk の package 更新 -- `npx ncu -u` を実行する -- `npm update` を実行する + +- `pnpm up` を実行する sora-js-sdk/packages の package 更新 -- `npx --workspaces ncu -u` を実行する -- `npm update` を実行する -- `npm run build` を実行する -- `npm run lint` を実行する -- `npm run test` を実行する + +- `pnpm update` を実行する +- `pnpm run build` を実行する +- `pnpm run lint` を実行する +- `pnpm run test` を実行する ## ドキュメント作成 -- `npm run doc` を実行する + +- `pnpm run doc` を実行する diff --git a/package.json b/package.json index c1a4d76b..902d96c7 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ ], "devDependencies": { "serve": "14.2.0", - "typedoc": "0.24.7" + "typedoc": "0.24.8" }, "resolutions": { "get-pkg-repo": "5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dae5d42d..394ed09a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -15,8 +15,8 @@ importers: specifier: 14.2.0 version: 14.2.0 typedoc: - specifier: 0.24.7 - version: 0.24.7(typescript@5.0.4) + specifier: 0.24.8 + version: 0.24.8(typescript@5.1.6) packages/e2ee: dependencies: @@ -4008,18 +4008,18 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.24.7(typescript@5.0.4): - resolution: {integrity: sha512-zzfKDFIZADA+XRIp2rMzLe9xZ6pt12yQOhCr7cD7/PBTjhPmMyMvGrkZ2lPNJitg3Hj1SeiYFNzCsSDrlpxpKw==} + /typedoc@0.24.8(typescript@5.1.6): + resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x dependencies: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.2 shiki: 0.14.3 - typescript: 5.0.4 + typescript: 5.1.6 dev: true /typescript@5.0.4: @@ -4028,6 +4028,12 @@ packages: hasBin: true dev: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} From 9f71f2b10a367753358dd7654bf8daf3d65f5e0e Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 13:47:03 +0900 Subject: [PATCH 018/182] =?UTF-8?q?=E3=83=AA=E3=83=AA=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E3=82=92=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RELEASE.md | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index fe5d1a6f..f9af861f 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,25 +1,34 @@ # リリース -**この資料は時雨堂社内向けです** - ## リリース環境 - Node.js - - v16.13.0 以上 -- npm - - v8.1.0 以上 -- npm install - - これで事前に利用するライブラリをインストールする + - v16.20.0 以上 +- pnpm + - v8.6.5 以上 +- pnpm install + - これで事前に利用するライブラリをインストールする + +## canary リリース手順 +- pnpm run lint を実行する +- pnpm run test を実行する +- pnpm run release:canary を実行する + - Next version を確認する + - git commit をするか聞かれるので確認して yes を選択する + - git tag をするか聞かれるので確認して yes を選択する +- git push -u origin develop +- git push origin `` +- pnpm publish --tag canary を実行する ## リリース手順 - 動作確認: - git clean -ffdx を実行する - - npm install を実行する - - npm run build を実行する - - npm run lint を実行する - - npm run test を実行する + - pnpm install を実行する + - pnpm run build を実行する + - pnpm run lint を実行する + - pnpm run test を実行する - https://shiguredo.github.io/sora-js-sdk/check.html で各ブラウザ・デバイスでの挙動を確認する - バージョン更新: - git flow release start `` で開始する @@ -31,17 +40,5 @@ - git push origin `` - リリース: - GitHub Releases にリリースを作成する - - npm publish を実行する (事前に `npm publish --dry-run` を実行して変なところがないかを軽く確認する) + - pnpm publish を実行する (事前に `pnpm publish --dry-run` を実行して変なところがないかを軽く確認する) - sora-js-sdk のドキュメントリポジトリ(private)のリリースノートを更新する - -## canary リリース手順 - -- npm run lint を実行する -- npm run test を実行する -- npm run release:canary を実行する - - Next version を確認する - - git commit をするか聞かれるので確認して yes を選択する - - git tag をするか聞かれるので確認して yes を選択する -- git push -u origin develop -- git push origin `` -- npm publish --tag canary を実行する From 9e8c8618d8e422cacef86a6ff47eb3003fb17d09 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 18:14:11 +0900 Subject: [PATCH 019/182] =?UTF-8?q?pnpm=20=E3=81=AE=20cache=20=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-pages.yml | 13 ++++++++----- .github/workflows/test.yaml | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 8a421dad..81fc1bf7 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -3,7 +3,7 @@ name: GitHub Pages Deploy # Controls when the workflow will run on: push: - branches: [ "develop" ] + branches: ["develop"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: @@ -16,10 +16,13 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: - node-version: '18' - cache: npm - - run: npm install - - run: npm run build + node-version: "20" + cache: "pnpm" + - uses: pnpm/action-setup@v2 + with: + version: 8 + - run: pnpm install + - run: pnpm run build - name: Prepare static files run: | mkdir _site/ diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ab6c2903..e93319e9 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,6 +18,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} + cache: "pnpm" - uses: pnpm/action-setup@v2 with: version: 8 From b511d66cfa8137591d674adb9667f067b890022d Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 18:15:54 +0900 Subject: [PATCH 020/182] =?UTF-8?q?cache=20=E3=82=84=E3=82=81=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-pages.yml | 1 - .github/workflows/test.yaml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 81fc1bf7..269adeb6 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -17,7 +17,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: "20" - cache: "pnpm" - uses: pnpm/action-setup@v2 with: version: 8 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e93319e9..ab6c2903 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,7 +18,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - cache: "pnpm" - uses: pnpm/action-setup@v2 with: version: 8 From cf146b6729b61c538cbfaad38eff992e004221ed Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 18:22:49 +0900 Subject: [PATCH 021/182] =?UTF-8?q?cache-dependency-path=20=E3=82=92?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-pages.yml | 2 ++ .github/workflows/test.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 269adeb6..211e768b 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -17,6 +17,8 @@ jobs: - uses: actions/setup-node@v3 with: node-version: "20" + cache: "pnpm" + cache-dependency-path: pnpm-lock.yaml - uses: pnpm/action-setup@v2 with: version: 8 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ab6c2903..6a97adb1 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,6 +18,8 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} + cache: "pnpm" + cache-dependency-path: pnpm-lock.yaml - uses: pnpm/action-setup@v2 with: version: 8 From 0be830009ead7ac8bb9d8df5e038a64523245a72 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 30 Jun 2023 18:23:34 +0900 Subject: [PATCH 022/182] =?UTF-8?q?Revert=20"cache-dependency-path=20?= =?UTF-8?q?=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=99=E3=82=8B"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit cf146b6729b61c538cbfaad38eff992e004221ed. --- .github/workflows/deploy-pages.yml | 2 -- .github/workflows/test.yaml | 2 -- 2 files changed, 4 deletions(-) diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 211e768b..269adeb6 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -17,8 +17,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: "20" - cache: "pnpm" - cache-dependency-path: pnpm-lock.yaml - uses: pnpm/action-setup@v2 with: version: 8 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 6a97adb1..ab6c2903 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,8 +18,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} - cache: "pnpm" - cache-dependency-path: pnpm-lock.yaml - uses: pnpm/action-setup@v2 with: version: 8 From c8b3b87f0d4eef89ac15262c613ac1981ed6834b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 15:13:12 +0000 Subject: [PATCH 023/182] Update rollup --- packages/e2ee/package.json | 6 +-- packages/sdk/package.json | 8 ++-- pnpm-lock.yaml | 82 ++++++++++++++++++-------------------- 3 files changed, 45 insertions(+), 51 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 9622004e..154b0c16 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -16,16 +16,16 @@ "test": "echo \"no test\"" }, "devDependencies": { - "@rollup/plugin-node-resolve": "15.0.2", + "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.1", + "@rollup/plugin-typescript": "11.1.2", "@typescript-eslint/eslint-plugin": "5.59.6", "@typescript-eslint/parser": "5.59.6", "eslint": "8.41.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", "prettier": "2.8.8", - "rollup": "3.22.1", + "rollup": "3.26.0", "typescript": "5.0.4" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1afdb393..c89b47c9 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -8,10 +8,10 @@ "test": "jest --detectOpenHandles --forceExit" }, "devDependencies": { - "@rollup/plugin-commonjs": "25.0.0", - "@rollup/plugin-node-resolve": "15.0.2", + "@rollup/plugin-commonjs": "25.0.2", + "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.1", + "@rollup/plugin-typescript": "11.1.2", "@shiguredo/lyra-wasm": "2023.1.0", "@swc/core": "1.3.59", "@swc/jest": "0.2.26", @@ -24,7 +24,7 @@ "jest": "29.5.0", "jest-environment-jsdom": "29.5.0", "prettier": "2.8.8", - "rollup": "3.22.1", + "rollup": "3.26.0", "rollup-plugin-delete": "2.0.0", "typescript": "5.0.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 394ed09a..dc3b95aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 14.2.0 typedoc: specifier: 0.24.8 - version: 0.24.8(typescript@5.1.6) + version: 0.24.8(typescript@5.0.4) packages/e2ee: dependencies: @@ -25,14 +25,14 @@ importers: version: link:../go-wasm devDependencies: '@rollup/plugin-node-resolve': - specifier: 15.0.2 - version: 15.0.2(rollup@3.22.1) + specifier: 15.1.0 + version: 15.1.0(rollup@3.26.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.22.1) + version: 5.0.2(rollup@3.26.0) '@rollup/plugin-typescript': - specifier: 11.1.1 - version: 11.1.1(rollup@3.22.1)(typescript@5.0.4) + specifier: 11.1.2 + version: 11.1.2(rollup@3.26.0)(typescript@5.0.4) '@typescript-eslint/eslint-plugin': specifier: 5.59.6 version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) @@ -52,8 +52,8 @@ importers: specifier: 2.8.8 version: 2.8.8 rollup: - specifier: 3.22.1 - version: 3.22.1 + specifier: 3.26.0 + version: 3.26.0 typescript: specifier: 5.0.4 version: 5.0.4 @@ -70,17 +70,17 @@ importers: version: 0.7.4 devDependencies: '@rollup/plugin-commonjs': - specifier: 25.0.0 - version: 25.0.0(rollup@3.22.1) + specifier: 25.0.2 + version: 25.0.2(rollup@3.26.0) '@rollup/plugin-node-resolve': - specifier: 15.0.2 - version: 15.0.2(rollup@3.22.1) + specifier: 15.1.0 + version: 15.1.0(rollup@3.26.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.22.1) + version: 5.0.2(rollup@3.26.0) '@rollup/plugin-typescript': - specifier: 11.1.1 - version: 11.1.1(rollup@3.22.1)(typescript@5.0.4) + specifier: 11.1.2 + version: 11.1.2(rollup@3.26.0)(typescript@5.0.4) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -118,8 +118,8 @@ importers: specifier: 2.8.8 version: 2.8.8 rollup: - specifier: 3.22.1 - version: 3.22.1 + specifier: 3.26.0 + version: 3.26.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -834,8 +834,8 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.0(rollup@3.22.1): - resolution: {integrity: sha512-hoho2Kay9TZrLu0bnDsTTCaj4Npa+THk9snajP/XDNb9a9mmjTjh52EQM9sKl3HD1LsnihX7js+eA2sd2uKAhw==} + /@rollup/plugin-commonjs@25.0.2(rollup@3.26.0): + resolution: {integrity: sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.68.0||^3.0.0 @@ -843,17 +843,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.22.1 + rollup: 3.26.0 dev: true - /@rollup/plugin-node-resolve@15.0.2(rollup@3.22.1): - resolution: {integrity: sha512-Y35fRGUjC3FaurG722uhUuG8YHOJRJQbI6/CkbRkdPotSpDj9NtIN85z1zrcyDcCQIW4qp5mgG72U+gJ0TAFEg==} + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.0): + resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 @@ -861,16 +861,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.22.1 + rollup: 3.26.0 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.22.1): + /@rollup/plugin-replace@5.0.2(rollup@3.26.0): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -879,13 +879,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) magic-string: 0.27.0 - rollup: 3.22.1 + rollup: 3.26.0 dev: true - /@rollup/plugin-typescript@11.1.1(rollup@3.22.1)(typescript@5.0.4): - resolution: {integrity: sha512-Ioir+x5Bejv72Lx2Zbz3/qGg7tvGbxQZALCLoJaGrkNXak/19+vKgKYJYM3i/fJxvsb23I9FuFQ8CUBEfsmBRg==} + /@rollup/plugin-typescript@11.1.2(rollup@3.26.0)(typescript@5.0.4): + resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0 @@ -897,13 +897,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.22.1) + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) resolve: 1.22.2 - rollup: 3.22.1 + rollup: 3.26.0 typescript: 5.0.4 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.22.1): + /@rollup/pluginutils@5.0.2(rollup@3.26.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -915,7 +915,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.22.1 + rollup: 3.26.0 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -3688,8 +3688,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.22.1: - resolution: {integrity: sha512-ZI+GSAqOkCyTtJPlwyPOaYKa0RqvztN4miRVusVJseMj6BIBT2f6pFeK90IdJsQ86FLMYkxju2whuck3yKPE4Q==} + /rollup@3.26.0: + resolution: {integrity: sha512-YzJH0eunH2hr3knvF3i6IkLO/jTjAEwU4HoMUbQl4//Tnl3ou0e7P5SjxdDr8HQJdeUJShlbEHXrrnEHy1l7Yg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -4008,7 +4008,7 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.24.8(typescript@5.1.6): + /typedoc@0.24.8(typescript@5.0.4): resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true @@ -4019,7 +4019,7 @@ packages: marked: 4.3.0 minimatch: 9.0.2 shiki: 0.14.3 - typescript: 5.1.6 + typescript: 5.0.4 dev: true /typescript@5.0.4: @@ -4028,12 +4028,6 @@ packages: hasBin: true dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} From 111e6102258130161f6962c61e48ce6978051044 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 19:51:22 +0000 Subject: [PATCH 024/182] Update eslint --- packages/e2ee/package.json | 6 +- packages/sdk/package.json | 6 +- pnpm-lock.yaml | 148 ++++++++++++++++++------------------- 3 files changed, 80 insertions(+), 80 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 154b0c16..cfe6e00b 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,9 +19,9 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "@typescript-eslint/eslint-plugin": "5.59.6", - "@typescript-eslint/parser": "5.59.6", - "eslint": "8.41.0", + "@typescript-eslint/eslint-plugin": "5.60.1", + "@typescript-eslint/parser": "5.60.1", + "eslint": "8.44.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", "prettier": "2.8.8", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c89b47c9..6db3addf 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -16,9 +16,9 @@ "@swc/core": "1.3.59", "@swc/jest": "0.2.26", "@types/jest": "29.5.1", - "@typescript-eslint/eslint-plugin": "5.59.6", - "@typescript-eslint/parser": "5.59.6", - "eslint": "8.41.0", + "@typescript-eslint/eslint-plugin": "5.60.1", + "@typescript-eslint/parser": "5.60.1", + "eslint": "8.44.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", "jest": "29.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc3b95aa..89cb3a7f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,20 +34,20 @@ importers: specifier: 11.1.2 version: 11.1.2(rollup@3.26.0)(typescript@5.0.4) '@typescript-eslint/eslint-plugin': - specifier: 5.59.6 - version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) + specifier: 5.60.1 + version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: 5.59.6 - version: 5.59.6(eslint@8.41.0)(typescript@5.0.4) + specifier: 5.60.1 + version: 5.60.1(eslint@8.44.0)(typescript@5.0.4) eslint: - specifier: 8.41.0 - version: 8.41.0 + specifier: 8.44.0 + version: 8.44.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.41.0) + version: 8.8.0(eslint@8.44.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8) prettier: specifier: 2.8.8 version: 2.8.8 @@ -94,20 +94,20 @@ importers: specifier: 29.5.1 version: 29.5.1 '@typescript-eslint/eslint-plugin': - specifier: 5.59.6 - version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) + specifier: 5.60.1 + version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.0.4) '@typescript-eslint/parser': - specifier: 5.59.6 - version: 5.59.6(eslint@8.41.0)(typescript@5.0.4) + specifier: 5.60.1 + version: 5.60.1(eslint@8.44.0)(typescript@5.0.4) eslint: - specifier: 8.41.0 - version: 8.41.0 + specifier: 8.44.0 + version: 8.44.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.41.0) + version: 8.8.0(eslint@8.44.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8) jest: specifier: 29.5.0 version: 29.5.0 @@ -475,13 +475,13 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.41.0 + eslint: 8.44.0 eslint-visitor-keys: 3.4.1 dev: true @@ -490,13 +490,13 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint/eslintrc@2.1.0: + resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.2 + espree: 9.6.0 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -507,8 +507,8 @@ packages: - supports-color dev: true - /@eslint/js@8.41.0: - resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + /@eslint/js@8.44.0: + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -1191,8 +1191,8 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} + /@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.0.4): + resolution: {integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -1203,12 +1203,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.6(eslint@8.41.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.59.6 - '@typescript-eslint/type-utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.60.1 + '@typescript-eslint/type-utils': 5.60.1(eslint@8.44.0)(typescript@5.0.4) + '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.41.0 + eslint: 8.44.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -1219,8 +1219,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.59.6(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==} + /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.0.4): + resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1229,26 +1229,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.6 - '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) + '@typescript-eslint/scope-manager': 5.60.1 + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.0.4) debug: 4.3.4 - eslint: 8.41.0 + eslint: 8.44.0 typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.6: - resolution: {integrity: sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==} + /@typescript-eslint/scope-manager@5.60.1: + resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/visitor-keys': 5.59.6 + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/visitor-keys': 5.60.1 dev: true - /@typescript-eslint/type-utils@5.59.6(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==} + /@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@5.0.4): + resolution: {integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -1257,23 +1257,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.6(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.0.4) + '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.0.4) debug: 4.3.4 - eslint: 8.41.0 + eslint: 8.44.0 tsutils: 3.21.0(typescript@5.0.4) typescript: 5.0.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.6: - resolution: {integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==} + /@typescript-eslint/types@5.60.1: + resolution: {integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.6(typescript@5.0.4): - resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==} + /@typescript-eslint/typescript-estree@5.60.1(typescript@5.0.4): + resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -1281,8 +1281,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/visitor-keys': 5.59.6 + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/visitor-keys': 5.60.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1293,19 +1293,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.59.6(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==} + /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.0.4): + resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.6 - '@typescript-eslint/types': 5.59.6 - '@typescript-eslint/typescript-estree': 5.59.6(typescript@5.0.4) - eslint: 8.41.0 + '@typescript-eslint/scope-manager': 5.60.1 + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.0.4) + eslint: 8.44.0 eslint-scope: 5.1.1 semver: 7.5.3 transitivePeerDependencies: @@ -1313,11 +1313,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.6: - resolution: {integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==} + /@typescript-eslint/visitor-keys@5.60.1: + resolution: {integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.59.6 + '@typescript-eslint/types': 5.60.1 eslint-visitor-keys: 3.4.1 dev: true @@ -1993,16 +1993,16 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@8.8.0(eslint@8.41.0): + /eslint-config-prettier@8.8.0(eslint@8.44.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.41.0 + eslint: 8.44.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -2013,8 +2013,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.41.0 - eslint-config-prettier: 8.8.0(eslint@8.41.0) + eslint: 8.44.0 + eslint-config-prettier: 8.8.0(eslint@8.44.0) prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true @@ -2040,15 +2040,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.41.0: - resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + /eslint@8.44.0: + resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.41.0 + '@eslint/eslintrc': 2.1.0 + '@eslint/js': 8.44.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -2060,7 +2060,7 @@ packages: escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + espree: 9.6.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -2088,8 +2088,8 @@ packages: - supports-color dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.0: + resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.9.0 From 02e8d07f1bd650239814f4e08c63575ccf51a365 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 3 Jul 2023 10:55:21 +0900 Subject: [PATCH 025/182] =?UTF-8?q?=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E4=B8=8A=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/sora.js | 228 +++++++++++++++++++--------------- dist/sora.mjs | 228 +++++++++++++++++++--------------- packages/sdk/package.json | 10 +- pnpm-lock.yaml | 254 +++++++++++++++++++++++++++++--------- 4 files changed, 466 insertions(+), 254 deletions(-) diff --git a/dist/sora.js b/dist/sora.js index 332fc8da..10376720 100644 --- a/dist/sora.js +++ b/dist/sora.js @@ -1406,11 +1406,10 @@ // is better for memory in most engines (I *think*). // aliases for shorter compressed code (most minifers don't do this) - var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array; + var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; // fixed length extra bits var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]); // fixed distance extra bits - // see fleb note var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]); // code length index map var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); @@ -1421,26 +1420,26 @@ b[i] = start += 1 << eb[i - 1]; } // numbers here are at max 18 bits - var r = new u32(b[30]); + var r = new i32(b[30]); for (var i = 1; i < 30; ++i) { for (var j = b[i]; j < b[i + 1]; ++j) { r[j] = ((j - b[i]) << 5) | i; } } - return [b, r]; + return { b: b, r: r }; }; - var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1]; + var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; // we can ignore the fact that the other numbers are wrong; they never happen anyway fl[28] = 258, revfl[258] = 28; - var _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1]; + var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r; // map of value to reverse (assuming 16 bits) var rev = new u16(32768); for (var i = 0; i < 32768; ++i) { // reverse table algorithm from SO - var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1); - x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2); - x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4); - rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1; + var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1); + x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2); + x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4); + rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1; } // create huffman tree from u8 "map": index -> code length for code index // mb (max bits) must be at most 15 @@ -1458,7 +1457,7 @@ } // u16 "map": index -> minimum code for bit length = index var le = new u16(mb); - for (i = 0; i < mb; ++i) { + for (i = 1; i < mb; ++i) { le[i] = (le[i - 1] + l[i - 1]) << 1; } var co; @@ -1479,7 +1478,7 @@ // m is end value for (var m = v | ((1 << r_1) - 1); v <= m; ++v) { // every 16 bit value starting with the code yields the same result - co[rev[v] >>> rvb] = sv; + co[rev[v] >> rvb] = sv; } } } @@ -1488,7 +1487,7 @@ co = new u16(s); for (i = 0; i < s; ++i) { if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]); + co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]); } } } @@ -1541,7 +1540,7 @@ if (e == null || e > v.length) e = v.length; // can't use .constructor in case user-supplied - var n = new (v.BYTES_PER_ELEMENT == 2 ? u16 : v.BYTES_PER_ELEMENT == 4 ? u32 : u8)(e - s); + var n = new u8(e - s); n.set(v.subarray(s, e)); return n; }; @@ -1573,17 +1572,15 @@ return e; }; // expands raw DEFLATE data - var inflt = function (dat, buf, st) { - // source length - var sl = dat.length; - if (!sl || (st && st.f && !st.l)) + var inflt = function (dat, st, buf, dict) { + // source length dict length + var sl = dat.length, dl = dict ? dict.length : 0; + if (!sl || st.f && !st.l) return buf || new u8(0); // have to estimate size - var noBuf = !buf || st; + var noBuf = !buf || st.i != 2; // no state - var noSt = !st || st.i; - if (!st) - st = {}; + var noSt = st.i; // Assumes roughly 33% compression ratio average if (!buf) buf = new u8(sl * 3); @@ -1651,7 +1648,7 @@ // bits read pos += r & 15; // symbol - var s = r >>> 4; + var s = r >> 4; // code length to copy if (s < 16) { ldt[i++] = s; @@ -1687,14 +1684,14 @@ } } // Make sure the buffer can hold this + the largest possible addition - // Maximum chunk size (practically, theoretically infinite) is 2^17; + // Maximum chunk size (practically, theoretically infinite) is 2^17 if (noBuf) cbuf(bt + 131072); var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; var lpos = pos; for (;; lpos = pos) { // bits read, code - var c = lm[bits16(dat, pos) & lms], sym = c >>> 4; + var c = lm[bits16(dat, pos) & lms], sym = c >> 4; pos += c & 15; if (pos > tbts) { if (noSt) @@ -1719,14 +1716,14 @@ pos += b; } // dist - var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4; + var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; if (!d) err(3); pos += d & 15; var dt = fd[dsym]; if (dsym > 3) { var b = fdeb[dsym]; - dt += bits16(dat, pos) & ((1 << b) - 1), pos += b; + dt += bits16(dat, pos) & (1 << b) - 1, pos += b; } if (pos > tbts) { if (noSt) @@ -1736,6 +1733,13 @@ if (noBuf) cbuf(bt + 131072); var end = bt + add; + if (bt < dt) { + var shift = dl - dt, dend = Math.min(dt, end); + if (shift + bt < 0) + err(3); + for (; bt < dend; ++bt) + buf[bt] = dict[shift + bt]; + } for (; bt < end; bt += 4) { buf[bt] = buf[bt - dt]; buf[bt + 1] = buf[bt + 1 - dt]; @@ -1756,15 +1760,15 @@ v <<= p & 7; var o = (p / 8) | 0; d[o] |= v; - d[o + 1] |= v >>> 8; + d[o + 1] |= v >> 8; }; // starting at p, write the minimum number of bits (>8) that can hold v to d var wbits16 = function (d, p, v) { v <<= p & 7; var o = (p / 8) | 0; d[o] |= v; - d[o + 1] |= v >>> 8; - d[o + 2] |= v >>> 16; + d[o + 1] |= v >> 8; + d[o + 2] |= v >> 16; }; // creates code lengths from a frequency table var hTree = function (d, mb) { @@ -1777,11 +1781,11 @@ var s = t.length; var t2 = t.slice(); if (!s) - return [et, 0]; + return { t: et, l: 0 }; if (s == 1) { var v = new u8(t[0].s + 1); v[t[0].s] = 1; - return [v, 1]; + return { t: v, l: 1 }; } t.sort(function (a, b) { return a.f - b.f; }); // after i2 reaches last ind, will be stopped @@ -1825,7 +1829,7 @@ else break; } - dt >>>= lft; + dt >>= lft; while (dt > 0) { var i2_2 = t2[i].s; if (tr[i2_2] < mb) @@ -1842,7 +1846,7 @@ } mbt = mb; } - return [new u8(tr), mbt]; + return { t: new u8(tr), l: mbt }; }; // get the max length and assign length codes var ln = function (n, l, d) { @@ -1885,7 +1889,7 @@ cln = c[i]; } } - return [cl.subarray(0, cli), s]; + return { c: cl.subarray(0, cli), n: s }; }; // calculate the length of output from tree, code lengths var clen = function (cf, cl) { @@ -1901,7 +1905,7 @@ var s = dat.length; var o = shft(pos + 2); out[o] = s & 255; - out[o + 1] = s >>> 8; + out[o + 1] = s >> 8; out[o + 2] = out[o] ^ 255; out[o + 3] = out[o + 1] ^ 255; for (var i = 0; i < s; ++i) @@ -1912,23 +1916,23 @@ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { wbits(out, p++, final); ++lf[256]; - var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1]; - var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1]; - var _c = lc(dlt), lclt = _c[0], nlc = _c[1]; - var _d = lc(ddt), lcdt = _d[0], ndc = _d[1]; + var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l; + var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l; + var _c = lc(dlt), lclt = _c.c, nlc = _c.n; + var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; var lcfreq = new u16(19); for (var i = 0; i < lclt.length; ++i) - lcfreq[lclt[i] & 31]++; + ++lcfreq[lclt[i] & 31]; for (var i = 0; i < lcdt.length; ++i) - lcfreq[lcdt[i] & 31]++; - var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1]; + ++lcfreq[lcdt[i] & 31]; + var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; var nlcc = 19; for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) ; var flen = (bl + 5) << 3; var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]); - if (flen <= ftlen && flen <= dtlen) + var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; + if (bs >= 0 && flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl)); var lm, ll, dm, dl; wbits(out, p, 1 + (dtlen < ftlen)), p += 2; @@ -1949,7 +1953,7 @@ var len = clct[i] & 31; wbits(out, p, llm[len]), p += lct[len]; if (len > 15) - wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12; + wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12; } } } @@ -1957,63 +1961,55 @@ lm = flm, ll = flt, dm = fdm, dl = fdt; } for (var i = 0; i < li; ++i) { - if (syms[i] > 255) { - var len = (syms[i] >>> 18) & 31; + var sym = syms[i]; + if (sym > 255) { + var len = (sym >> 18) & 31; wbits16(out, p, lm[len + 257]), p += ll[len + 257]; if (len > 7) - wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len]; - var dst = syms[i] & 31; + wbits(out, p, (sym >> 23) & 31), p += fleb[len]; + var dst = sym & 31; wbits16(out, p, dm[dst]), p += dl[dst]; if (dst > 3) - wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst]; + wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst]; } else { - wbits16(out, p, lm[syms[i]]), p += ll[syms[i]]; + wbits16(out, p, lm[sym]), p += ll[sym]; } } wbits16(out, p, lm[256]); return p + ll[256]; }; // deflate options (nice << 13) | chain - var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); + var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); // empty var et = /*#__PURE__*/ new u8(0); // compresses data into a raw DEFLATE buffer - var dflt = function (dat, lvl, plvl, pre, post, lst) { - var s = dat.length; + var dflt = function (dat, lvl, plvl, pre, post, st) { + var s = st.z || dat.length; var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post); // writing to this writes to the output buffer var w = o.subarray(pre, o.length - post); - var pos = 0; - if (!lvl || s < 8) { - for (var i = 0; i <= s; i += 65535) { - // end - var e = i + 65535; - if (e >= s) { - // write final block - w[pos >> 3] = lst; - } - pos = wfblk(w, pos + 1, dat.subarray(i, e)); - } - } - else { + var lst = st.l; + var pos = (st.r || 0) & 7; + if (lvl) { + if (pos) + w[0] = st.r >> 3; var opt = deo[lvl - 1]; - var n = opt >>> 13, c = opt & 8191; + var n = opt >> 13, c = opt & 8191; var msk_1 = (1 << plvl) - 1; // prev 2-byte val map curr 2-byte val map - var prev = new u16(32768), head = new u16(msk_1 + 1); + var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1); var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; }; // 24576 is an arbitrary number of maximum symbols per block // 424 buffer for last block - var syms = new u32(25000); + var syms = new i32(25000); // length/literal freq distance freq var lf = new u16(288), df = new u16(32); - // l/lcnt exbits index l/lind waitdx bitpos - var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0; - for (; i < s; ++i) { + // l/lcnt exbits index l/lind waitdx blkpos + var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; + for (; i + 2 < s; ++i) { // hash value - // deopt when i > s - 3 - at end, deopt acceptable var hv = hsh(i); // index mod 32768 previous index mod var imod = i & 32767, pimod = head[hv]; @@ -2024,7 +2020,7 @@ if (wi <= i) { // bytes remaining var rem = s - i; - if ((lc_1 > 7000 || li > 24576) && rem > 423) { + if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) { pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); li = lc_1 = eb = 0, bs = i; for (var j = 0; j < 286; ++j) @@ -2033,7 +2029,7 @@ df[j] = 0; } // len dist chain - var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767; + var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767; if (rem > 2 && hv == hsh(i - dif)) { var maxn = Math.min(n, rem) - 1; var maxd = Math.min(32767, i); @@ -2056,9 +2052,9 @@ var mmd = Math.min(dif, nl - 2); var md = 0; for (var j = 0; j < mmd; ++j) { - var ti = (i - dif + j + 32768) & 32767; + var ti = i - dif + j & 32767; var pti = prev[ti]; - var cd = (ti - pti + 32768) & 32767; + var cd = ti - pti & 32767; if (cd > md) md = cd, pimod = ti; } @@ -2066,12 +2062,12 @@ } // check the previous match imod = pimod, pimod = prev[imod]; - dif += (imod - pimod + 32768) & 32767; + dif += imod - pimod & 32767; } } // d will be nonzero only when a match was found if (d) { - // store both dist and len data in one Uint32 + // store both dist and len data in one int32 // Make sure this is recognized as a len/dist with 28th bit (2^28) syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d]; var lin = revfl[l] & 31, din = revfd[d] & 31; @@ -2087,14 +2083,34 @@ } } } + for (i = Math.max(i, wi); i < s; ++i) { + syms[li++] = dat[i]; + ++lf[dat[i]]; + } pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - // this is the easiest way to avoid needing to maintain state - if (!lst && pos & 7) - pos = wfblk(w, pos + 1, et); + if (!lst) { + st.r = (pos & 7) | w[(pos / 8) | 0] << 3; + // shft(pos) now 1 less if pos & 7 != 0 + pos -= 7; + st.h = head, st.p = prev, st.i = i, st.w = wi; + } + } + else { + for (var i = st.w || 0; i < s + lst; i += 65535) { + // end + var e = i + 65535; + if (e >= s) { + // write final block + w[(pos / 8) | 0] = lst; + e = s; + } + pos = wfblk(w, pos + 1, dat.subarray(i, e)); + } + st.i = s; } return slc(o, 0, pre + shft(pos) + post); }; - // Alder32 + // Adler32 var adler = function () { var a = 1, b = 0; return { @@ -2112,13 +2128,24 @@ }, d: function () { a %= 65521, b %= 65521; - return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8); + return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8); } }; }; // deflate with opts var dopt = function (dat, opt, pre, post, st) { - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st); + if (!st) { + st = { l: 1 }; + if (opt.dictionary) { + var dict = opt.dictionary.subarray(-32768); + var newDat = new u8(dict.length + dat.length); + newDat.set(dict); + newDat.set(dat, dict.length); + dat = newDat; + st.w = dict.length; + } + } + return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, st); }; // write bytes var wbytes = function (d, b, v) { @@ -2128,14 +2155,21 @@ // zlib header var zlh = function (c, o) { var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; - c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1); + c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32); + c[1] |= 31 - ((c[0] << 8) | c[1]) % 31; + if (o.dictionary) { + var h = adler(); + h.p(o.dictionary); + wbytes(c, 2, h.d()); + } }; - // zlib valid - var zlv = function (d) { - if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) + // zlib start + var zls = function (d, dict) { + if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) err(6, 'invalid zlib data'); - if (d[1] & 32) - err(6, 'invalid zlib data: preset dictionaries not supported'); + if ((d[1] >> 5 & 1) == +!dict) + err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary'); + return (d[1] >> 3 & 4) + 2; }; /** * Compress data with Zlib @@ -2148,17 +2182,17 @@ opts = {}; var a = adler(); a.p(data); - var d = dopt(data, opts, 2, 4); + var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4); return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d; } /** * Expands Zlib data * @param data The data to decompress - * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length. + * @param opts The decompression options * @returns The decompressed version of the data */ - function unzlibSync(data, out) { - return inflt((zlv(data), data.subarray(2, -4)), out); + function unzlibSync(data, opts) { + return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); } // text decoder var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder(); diff --git a/dist/sora.mjs b/dist/sora.mjs index 5d1b39da..a9118c6f 100644 --- a/dist/sora.mjs +++ b/dist/sora.mjs @@ -1400,11 +1400,10 @@ class LyraState { // is better for memory in most engines (I *think*). // aliases for shorter compressed code (most minifers don't do this) -var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array; +var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; // fixed length extra bits var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]); // fixed distance extra bits -// see fleb note var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]); // code length index map var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); @@ -1415,26 +1414,26 @@ var freb = function (eb, start) { b[i] = start += 1 << eb[i - 1]; } // numbers here are at max 18 bits - var r = new u32(b[30]); + var r = new i32(b[30]); for (var i = 1; i < 30; ++i) { for (var j = b[i]; j < b[i + 1]; ++j) { r[j] = ((j - b[i]) << 5) | i; } } - return [b, r]; + return { b: b, r: r }; }; -var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1]; +var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; // we can ignore the fact that the other numbers are wrong; they never happen anyway fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1]; +var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r; // map of value to reverse (assuming 16 bits) var rev = new u16(32768); for (var i = 0; i < 32768; ++i) { // reverse table algorithm from SO - var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1); - x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2); - x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4); - rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1; + var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1); + x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2); + x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4); + rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1; } // create huffman tree from u8 "map": index -> code length for code index // mb (max bits) must be at most 15 @@ -1452,7 +1451,7 @@ var hMap = (function (cd, mb, r) { } // u16 "map": index -> minimum code for bit length = index var le = new u16(mb); - for (i = 0; i < mb; ++i) { + for (i = 1; i < mb; ++i) { le[i] = (le[i - 1] + l[i - 1]) << 1; } var co; @@ -1473,7 +1472,7 @@ var hMap = (function (cd, mb, r) { // m is end value for (var m = v | ((1 << r_1) - 1); v <= m; ++v) { // every 16 bit value starting with the code yields the same result - co[rev[v] >>> rvb] = sv; + co[rev[v] >> rvb] = sv; } } } @@ -1482,7 +1481,7 @@ var hMap = (function (cd, mb, r) { co = new u16(s); for (i = 0; i < s; ++i) { if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]); + co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]); } } } @@ -1535,7 +1534,7 @@ var slc = function (v, s, e) { if (e == null || e > v.length) e = v.length; // can't use .constructor in case user-supplied - var n = new (v.BYTES_PER_ELEMENT == 2 ? u16 : v.BYTES_PER_ELEMENT == 4 ? u32 : u8)(e - s); + var n = new u8(e - s); n.set(v.subarray(s, e)); return n; }; @@ -1567,17 +1566,15 @@ var err = function (ind, msg, nt) { return e; }; // expands raw DEFLATE data -var inflt = function (dat, buf, st) { - // source length - var sl = dat.length; - if (!sl || (st && st.f && !st.l)) +var inflt = function (dat, st, buf, dict) { + // source length dict length + var sl = dat.length, dl = dict ? dict.length : 0; + if (!sl || st.f && !st.l) return buf || new u8(0); // have to estimate size - var noBuf = !buf || st; + var noBuf = !buf || st.i != 2; // no state - var noSt = !st || st.i; - if (!st) - st = {}; + var noSt = st.i; // Assumes roughly 33% compression ratio average if (!buf) buf = new u8(sl * 3); @@ -1645,7 +1642,7 @@ var inflt = function (dat, buf, st) { // bits read pos += r & 15; // symbol - var s = r >>> 4; + var s = r >> 4; // code length to copy if (s < 16) { ldt[i++] = s; @@ -1681,14 +1678,14 @@ var inflt = function (dat, buf, st) { } } // Make sure the buffer can hold this + the largest possible addition - // Maximum chunk size (practically, theoretically infinite) is 2^17; + // Maximum chunk size (practically, theoretically infinite) is 2^17 if (noBuf) cbuf(bt + 131072); var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; var lpos = pos; for (;; lpos = pos) { // bits read, code - var c = lm[bits16(dat, pos) & lms], sym = c >>> 4; + var c = lm[bits16(dat, pos) & lms], sym = c >> 4; pos += c & 15; if (pos > tbts) { if (noSt) @@ -1713,14 +1710,14 @@ var inflt = function (dat, buf, st) { pos += b; } // dist - var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4; + var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; if (!d) err(3); pos += d & 15; var dt = fd[dsym]; if (dsym > 3) { var b = fdeb[dsym]; - dt += bits16(dat, pos) & ((1 << b) - 1), pos += b; + dt += bits16(dat, pos) & (1 << b) - 1, pos += b; } if (pos > tbts) { if (noSt) @@ -1730,6 +1727,13 @@ var inflt = function (dat, buf, st) { if (noBuf) cbuf(bt + 131072); var end = bt + add; + if (bt < dt) { + var shift = dl - dt, dend = Math.min(dt, end); + if (shift + bt < 0) + err(3); + for (; bt < dend; ++bt) + buf[bt] = dict[shift + bt]; + } for (; bt < end; bt += 4) { buf[bt] = buf[bt - dt]; buf[bt + 1] = buf[bt + 1 - dt]; @@ -1750,15 +1754,15 @@ var wbits = function (d, p, v) { v <<= p & 7; var o = (p / 8) | 0; d[o] |= v; - d[o + 1] |= v >>> 8; + d[o + 1] |= v >> 8; }; // starting at p, write the minimum number of bits (>8) that can hold v to d var wbits16 = function (d, p, v) { v <<= p & 7; var o = (p / 8) | 0; d[o] |= v; - d[o + 1] |= v >>> 8; - d[o + 2] |= v >>> 16; + d[o + 1] |= v >> 8; + d[o + 2] |= v >> 16; }; // creates code lengths from a frequency table var hTree = function (d, mb) { @@ -1771,11 +1775,11 @@ var hTree = function (d, mb) { var s = t.length; var t2 = t.slice(); if (!s) - return [et, 0]; + return { t: et, l: 0 }; if (s == 1) { var v = new u8(t[0].s + 1); v[t[0].s] = 1; - return [v, 1]; + return { t: v, l: 1 }; } t.sort(function (a, b) { return a.f - b.f; }); // after i2 reaches last ind, will be stopped @@ -1819,7 +1823,7 @@ var hTree = function (d, mb) { else break; } - dt >>>= lft; + dt >>= lft; while (dt > 0) { var i2_2 = t2[i].s; if (tr[i2_2] < mb) @@ -1836,7 +1840,7 @@ var hTree = function (d, mb) { } mbt = mb; } - return [new u8(tr), mbt]; + return { t: new u8(tr), l: mbt }; }; // get the max length and assign length codes var ln = function (n, l, d) { @@ -1879,7 +1883,7 @@ var lc = function (c) { cln = c[i]; } } - return [cl.subarray(0, cli), s]; + return { c: cl.subarray(0, cli), n: s }; }; // calculate the length of output from tree, code lengths var clen = function (cf, cl) { @@ -1895,7 +1899,7 @@ var wfblk = function (out, pos, dat) { var s = dat.length; var o = shft(pos + 2); out[o] = s & 255; - out[o + 1] = s >>> 8; + out[o + 1] = s >> 8; out[o + 2] = out[o] ^ 255; out[o + 3] = out[o + 1] ^ 255; for (var i = 0; i < s; ++i) @@ -1906,23 +1910,23 @@ var wfblk = function (out, pos, dat) { var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { wbits(out, p++, final); ++lf[256]; - var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1]; - var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1]; - var _c = lc(dlt), lclt = _c[0], nlc = _c[1]; - var _d = lc(ddt), lcdt = _d[0], ndc = _d[1]; + var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l; + var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l; + var _c = lc(dlt), lclt = _c.c, nlc = _c.n; + var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; var lcfreq = new u16(19); for (var i = 0; i < lclt.length; ++i) - lcfreq[lclt[i] & 31]++; + ++lcfreq[lclt[i] & 31]; for (var i = 0; i < lcdt.length; ++i) - lcfreq[lcdt[i] & 31]++; - var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1]; + ++lcfreq[lcdt[i] & 31]; + var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; var nlcc = 19; for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) ; var flen = (bl + 5) << 3; var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]); - if (flen <= ftlen && flen <= dtlen) + var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; + if (bs >= 0 && flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl)); var lm, ll, dm, dl; wbits(out, p, 1 + (dtlen < ftlen)), p += 2; @@ -1943,7 +1947,7 @@ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { var len = clct[i] & 31; wbits(out, p, llm[len]), p += lct[len]; if (len > 15) - wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12; + wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12; } } } @@ -1951,63 +1955,55 @@ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { lm = flm, ll = flt, dm = fdm, dl = fdt; } for (var i = 0; i < li; ++i) { - if (syms[i] > 255) { - var len = (syms[i] >>> 18) & 31; + var sym = syms[i]; + if (sym > 255) { + var len = (sym >> 18) & 31; wbits16(out, p, lm[len + 257]), p += ll[len + 257]; if (len > 7) - wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len]; - var dst = syms[i] & 31; + wbits(out, p, (sym >> 23) & 31), p += fleb[len]; + var dst = sym & 31; wbits16(out, p, dm[dst]), p += dl[dst]; if (dst > 3) - wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst]; + wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst]; } else { - wbits16(out, p, lm[syms[i]]), p += ll[syms[i]]; + wbits16(out, p, lm[sym]), p += ll[sym]; } } wbits16(out, p, lm[256]); return p + ll[256]; }; // deflate options (nice << 13) | chain -var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); +var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); // empty var et = /*#__PURE__*/ new u8(0); // compresses data into a raw DEFLATE buffer -var dflt = function (dat, lvl, plvl, pre, post, lst) { - var s = dat.length; +var dflt = function (dat, lvl, plvl, pre, post, st) { + var s = st.z || dat.length; var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post); // writing to this writes to the output buffer var w = o.subarray(pre, o.length - post); - var pos = 0; - if (!lvl || s < 8) { - for (var i = 0; i <= s; i += 65535) { - // end - var e = i + 65535; - if (e >= s) { - // write final block - w[pos >> 3] = lst; - } - pos = wfblk(w, pos + 1, dat.subarray(i, e)); - } - } - else { + var lst = st.l; + var pos = (st.r || 0) & 7; + if (lvl) { + if (pos) + w[0] = st.r >> 3; var opt = deo[lvl - 1]; - var n = opt >>> 13, c = opt & 8191; + var n = opt >> 13, c = opt & 8191; var msk_1 = (1 << plvl) - 1; // prev 2-byte val map curr 2-byte val map - var prev = new u16(32768), head = new u16(msk_1 + 1); + var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1); var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; }; // 24576 is an arbitrary number of maximum symbols per block // 424 buffer for last block - var syms = new u32(25000); + var syms = new i32(25000); // length/literal freq distance freq var lf = new u16(288), df = new u16(32); - // l/lcnt exbits index l/lind waitdx bitpos - var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0; - for (; i < s; ++i) { + // l/lcnt exbits index l/lind waitdx blkpos + var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; + for (; i + 2 < s; ++i) { // hash value - // deopt when i > s - 3 - at end, deopt acceptable var hv = hsh(i); // index mod 32768 previous index mod var imod = i & 32767, pimod = head[hv]; @@ -2018,7 +2014,7 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) { if (wi <= i) { // bytes remaining var rem = s - i; - if ((lc_1 > 7000 || li > 24576) && rem > 423) { + if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) { pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); li = lc_1 = eb = 0, bs = i; for (var j = 0; j < 286; ++j) @@ -2027,7 +2023,7 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) { df[j] = 0; } // len dist chain - var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767; + var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767; if (rem > 2 && hv == hsh(i - dif)) { var maxn = Math.min(n, rem) - 1; var maxd = Math.min(32767, i); @@ -2050,9 +2046,9 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) { var mmd = Math.min(dif, nl - 2); var md = 0; for (var j = 0; j < mmd; ++j) { - var ti = (i - dif + j + 32768) & 32767; + var ti = i - dif + j & 32767; var pti = prev[ti]; - var cd = (ti - pti + 32768) & 32767; + var cd = ti - pti & 32767; if (cd > md) md = cd, pimod = ti; } @@ -2060,12 +2056,12 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) { } // check the previous match imod = pimod, pimod = prev[imod]; - dif += (imod - pimod + 32768) & 32767; + dif += imod - pimod & 32767; } } // d will be nonzero only when a match was found if (d) { - // store both dist and len data in one Uint32 + // store both dist and len data in one int32 // Make sure this is recognized as a len/dist with 28th bit (2^28) syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d]; var lin = revfl[l] & 31, din = revfd[d] & 31; @@ -2081,14 +2077,34 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) { } } } + for (i = Math.max(i, wi); i < s; ++i) { + syms[li++] = dat[i]; + ++lf[dat[i]]; + } pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - // this is the easiest way to avoid needing to maintain state - if (!lst && pos & 7) - pos = wfblk(w, pos + 1, et); + if (!lst) { + st.r = (pos & 7) | w[(pos / 8) | 0] << 3; + // shft(pos) now 1 less if pos & 7 != 0 + pos -= 7; + st.h = head, st.p = prev, st.i = i, st.w = wi; + } + } + else { + for (var i = st.w || 0; i < s + lst; i += 65535) { + // end + var e = i + 65535; + if (e >= s) { + // write final block + w[(pos / 8) | 0] = lst; + e = s; + } + pos = wfblk(w, pos + 1, dat.subarray(i, e)); + } + st.i = s; } return slc(o, 0, pre + shft(pos) + post); }; -// Alder32 +// Adler32 var adler = function () { var a = 1, b = 0; return { @@ -2106,13 +2122,24 @@ var adler = function () { }, d: function () { a %= 65521, b %= 65521; - return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8); + return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8); } }; }; // deflate with opts var dopt = function (dat, opt, pre, post, st) { - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st); + if (!st) { + st = { l: 1 }; + if (opt.dictionary) { + var dict = opt.dictionary.subarray(-32768); + var newDat = new u8(dict.length + dat.length); + newDat.set(dict); + newDat.set(dat, dict.length); + dat = newDat; + st.w = dict.length; + } + } + return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, st); }; // write bytes var wbytes = function (d, b, v) { @@ -2122,14 +2149,21 @@ var wbytes = function (d, b, v) { // zlib header var zlh = function (c, o) { var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; - c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1); + c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32); + c[1] |= 31 - ((c[0] << 8) | c[1]) % 31; + if (o.dictionary) { + var h = adler(); + h.p(o.dictionary); + wbytes(c, 2, h.d()); + } }; -// zlib valid -var zlv = function (d) { - if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) +// zlib start +var zls = function (d, dict) { + if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) err(6, 'invalid zlib data'); - if (d[1] & 32) - err(6, 'invalid zlib data: preset dictionaries not supported'); + if ((d[1] >> 5 & 1) == +!dict) + err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary'); + return (d[1] >> 3 & 4) + 2; }; /** * Compress data with Zlib @@ -2142,17 +2176,17 @@ function zlibSync(data, opts) { opts = {}; var a = adler(); a.p(data); - var d = dopt(data, opts, 2, 4); + var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4); return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d; } /** * Expands Zlib data * @param data The data to decompress - * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length. + * @param opts The decompression options * @returns The decompressed version of the data */ -function unzlibSync(data, out) { - return inflt((zlv(data), data.subarray(2, -4)), out); +function unzlibSync(data, opts) { + return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); } // text decoder var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder(); diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 6db3addf..b82979bb 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -13,9 +13,9 @@ "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", "@shiguredo/lyra-wasm": "2023.1.0", - "@swc/core": "1.3.59", + "@swc/core": "1.3.67", "@swc/jest": "0.2.26", - "@types/jest": "29.5.1", + "@types/jest": "29.5.2", "@typescript-eslint/eslint-plugin": "5.60.1", "@typescript-eslint/parser": "5.60.1", "eslint": "8.44.0", @@ -26,10 +26,10 @@ "prettier": "2.8.8", "rollup": "3.26.0", "rollup-plugin-delete": "2.0.0", - "typescript": "5.0.4" + "typescript": "5.1.6" }, "dependencies": { "@sora/e2ee": "^2021.1.0", - "fflate": "0.7.4" + "fflate": "0.8.0" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89cb3a7f..c2e97843 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 14.2.0 typedoc: specifier: 0.24.8 - version: 0.24.8(typescript@5.0.4) + version: 0.24.8(typescript@5.1.6) packages/e2ee: dependencies: @@ -66,8 +66,8 @@ importers: specifier: ^2021.1.0 version: link:../e2ee fflate: - specifier: 0.7.4 - version: 0.7.4 + specifier: 0.8.0 + version: 0.8.0 devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.2 @@ -80,25 +80,25 @@ importers: version: 5.0.2(rollup@3.26.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.0)(typescript@5.0.4) + version: 11.1.2(rollup@3.26.0)(typescript@5.1.6) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 '@swc/core': - specifier: 1.3.59 - version: 1.3.59 + specifier: 1.3.67 + version: 1.3.67 '@swc/jest': specifier: 0.2.26 - version: 0.2.26(@swc/core@1.3.59) + version: 0.2.26(@swc/core@1.3.67) '@types/jest': - specifier: 29.5.1 - version: 29.5.1 + specifier: 29.5.2 + version: 29.5.2 '@typescript-eslint/eslint-plugin': specifier: 5.60.1 - version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.0.4) + version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: 5.60.1 - version: 5.60.1(eslint@8.44.0)(typescript@5.0.4) + version: 5.60.1(eslint@8.44.0)(typescript@5.1.6) eslint: specifier: 8.44.0 version: 8.44.0 @@ -124,8 +124,8 @@ importers: specifier: 2.0.0 version: 2.0.0 typescript: - specifier: 5.0.4 - version: 5.0.4 + specifier: 5.1.6 + version: 5.1.6 packages: @@ -903,6 +903,25 @@ packages: typescript: 5.0.4 dev: true + /@rollup/plugin-typescript@11.1.2(rollup@3.26.0)(typescript@5.1.6): + resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.14.0||^3.0.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + rollup: + optional: true + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + resolve: 1.22.2 + rollup: 3.26.0 + typescript: 5.1.6 + dev: true + /@rollup/pluginutils@5.0.2(rollup@3.26.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} @@ -938,8 +957,8 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@swc/core-darwin-arm64@1.3.59: - resolution: {integrity: sha512-AnqWFBgEKHP0jb4iZqx7eVQT9/rX45+DE4Ox7GpwCahUKxxrsDLyXzKhwLwQuAjUvtu5JcSB77szKpPGDM49fQ==} + /@swc/core-darwin-arm64@1.3.67: + resolution: {integrity: sha512-zCT2mCkOBVNf5uJDcQ3A9KDoO1OEaGdfjsRTZTo7sejDd9AXLfJg+xgyCBBrK2jNS/uWcT21IvSv3LqKp4K8pA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -947,8 +966,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.59: - resolution: {integrity: sha512-iqDs+yii9mOsmpJez82SEi4d4prWDRlapHxKnDVJ0x1AqRo41vIq8t3fujrvCHYU5VQgOYGh4ooXQpaP2H3B2A==} + /@swc/core-darwin-x64@1.3.67: + resolution: {integrity: sha512-hXTVsfTatPEec5gFVyjGj3NccKZsYj/OXyHn6XA+l3Q76lZzGm2ISHdku//XNwXu8OmJ0HhS7LPsC4XXwxXQhg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -956,8 +975,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.59: - resolution: {integrity: sha512-PB0PP+SgkCSd/kYmltnPiGv42cOSaih1OjXCEjxvNwUFEmWqluW6uGdWaNiR1LoYMxhcHZTc336jL2+O3l6p0Q==} + /@swc/core-linux-arm-gnueabihf@1.3.67: + resolution: {integrity: sha512-l8AKL0RkDL5FRTeWMmjoz9zvAc37amxC+0rheaNwE+gZya7ObyNjnIYz5FwN+3y+z6JFU7LS2x/5f6iwruv6pg==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -965,8 +984,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.59: - resolution: {integrity: sha512-Ol/JPszWZ+OZ44FOdJe35TfJ1ckG4pYaisZJ4E7PzfwfVe2ygX85C5WWR4e5L0Y1zFvzpcI7gdyC2wzcXk4Cig==} + /@swc/core-linux-arm64-gnu@1.3.67: + resolution: {integrity: sha512-S8zOB1AXEpb7kmtgMaFNeLAj01VOky4B0RNZ+uJWigdrDiFT67FeZzNHUNmNSOU0QM79G+Lie/xD/beqEw0vDg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -974,8 +993,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.59: - resolution: {integrity: sha512-PtTTtGbj9GiY5gJdoSFL2A0vL6BRaS1haAhp6g3hZvLDkTTg+rJURmzwBMMjaQlnGC62x/lLf6MoszHG/05//Q==} + /@swc/core-linux-arm64-musl@1.3.67: + resolution: {integrity: sha512-Fex8J8ASrt13pmOr2xWh41tEeKWwXYGk3sV8L/aGHiYtIJEUi2f+RtMx3jp7LIdOD8pQptor7i5WBlfR9jhp8A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -983,8 +1002,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.59: - resolution: {integrity: sha512-XBW9AGi0YsIN76IfesnDSBn/5sjR69J75KUNte8sH6seYlHJ0/kblqUMbUcfr0CiGoJadbzAZeKZZmfN7EsHpg==} + /@swc/core-linux-x64-gnu@1.3.67: + resolution: {integrity: sha512-9bz9/bMphrv5vDg0os/d8ve0QgFpDzJgZgHUaHiGwcmfnlgdOSAaYJLIvWdcGTjZuQeV4L0m+iru357D9TXEzA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -992,8 +1011,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.59: - resolution: {integrity: sha512-Cy5E939SdWPQ34cg6UABNO0RyEe0FuWqzZ/GLKtK11Ir4fjttVlucZiY59uQNyUVUc8T2qE0VBFCyD/zYGuHtg==} + /@swc/core-linux-x64-musl@1.3.67: + resolution: {integrity: sha512-ED0H6oLvQmhgo9zs8usmEA/lcZPGTu7K9og9K871b7HhHX0h/R+Xg2pb5KD7S/GyUHpfuopxjVROm+h6X1jMUA==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -1001,8 +1020,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.59: - resolution: {integrity: sha512-z5ZJxizRvRoSAaevRIi3YjQh74OFWEIhonSDWNdqDL7RbjEivcatYcG7OikH6s+rtPhOcwNm3PbGV2Prcgh/gg==} + /@swc/core-win32-arm64-msvc@1.3.67: + resolution: {integrity: sha512-J1yFDLgPFeRtA8t5E159OXX+ww1gbkFg70yr4OP7EsOkOD1uMkuTf9yK/woHfsaVJlUYjJHzw7MkUIEgQBucqQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -1010,8 +1029,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.59: - resolution: {integrity: sha512-vxpsn+hrKAhi5YusQfB/JXUJJVX40rIRE/L49ilBEqdbH8Khkoego6AD+2vWqTdJcUHo1WiAIAEZ0rTsjyorLQ==} + /@swc/core-win32-ia32-msvc@1.3.67: + resolution: {integrity: sha512-bK11/KtasewqHxzkjKUBXRE9MSAidbZCxrgJUd49bItG2N/DHxkwMYu8Xkh5VDHdTYWv/2idYtf/VM9Yi+53qw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -1019,8 +1038,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.59: - resolution: {integrity: sha512-Ris/cJbURylcLwqz4RZUUBCEGsuaIHOJsvf69W5pGKHKBryVoOTNhBKpo3Km2hoAi5qFQ/ou0trAT4hBsVPZvQ==} + /@swc/core-win32-x64-msvc@1.3.67: + resolution: {integrity: sha512-GxzUU3+NA3cPcYxCxtfSQIS2ySD7Z8IZmKTVaWA9GOUQbKLyCE8H5js31u39+0op/1gNgxOgYFDoj2lUyvLCqw==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -1028,8 +1047,8 @@ packages: dev: true optional: true - /@swc/core@1.3.59: - resolution: {integrity: sha512-ZBw31zd2E5SXiodwGvjQdx5ZC90b2uyX/i2LeMMs8LKfXD86pfOfQac+JVrnyEKDhASXj9icgsF9NXBhaMr3Kw==} + /@swc/core@1.3.67: + resolution: {integrity: sha512-9DROjzfAEt0xt0CDkOYsWpkUPyne8fl5ggWGon049678BOM7p0R0dmaalZGAsKatG5vYP1IWSKWsKhJIubDCsQ==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -1038,26 +1057,26 @@ packages: '@swc/helpers': optional: true optionalDependencies: - '@swc/core-darwin-arm64': 1.3.59 - '@swc/core-darwin-x64': 1.3.59 - '@swc/core-linux-arm-gnueabihf': 1.3.59 - '@swc/core-linux-arm64-gnu': 1.3.59 - '@swc/core-linux-arm64-musl': 1.3.59 - '@swc/core-linux-x64-gnu': 1.3.59 - '@swc/core-linux-x64-musl': 1.3.59 - '@swc/core-win32-arm64-msvc': 1.3.59 - '@swc/core-win32-ia32-msvc': 1.3.59 - '@swc/core-win32-x64-msvc': 1.3.59 - dev: true - - /@swc/jest@0.2.26(@swc/core@1.3.59): + '@swc/core-darwin-arm64': 1.3.67 + '@swc/core-darwin-x64': 1.3.67 + '@swc/core-linux-arm-gnueabihf': 1.3.67 + '@swc/core-linux-arm64-gnu': 1.3.67 + '@swc/core-linux-arm64-musl': 1.3.67 + '@swc/core-linux-x64-gnu': 1.3.67 + '@swc/core-linux-x64-musl': 1.3.67 + '@swc/core-win32-arm64-msvc': 1.3.67 + '@swc/core-win32-ia32-msvc': 1.3.67 + '@swc/core-win32-x64-msvc': 1.3.67 + dev: true + + /@swc/jest@0.2.26(@swc/core@1.3.67): resolution: {integrity: sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.59 + '@swc/core': 1.3.67 jsonc-parser: 3.2.0 dev: true @@ -1128,8 +1147,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@29.5.1: - resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} + /@types/jest@29.5.2: + resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 @@ -1219,6 +1238,34 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.60.1 + '@typescript-eslint/type-utils': 5.60.1(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.44.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.3 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.0.4): resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1239,6 +1286,26 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.60.1 + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.44.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager@5.60.1: resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1267,6 +1334,26 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) + '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.44.0 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types@5.60.1: resolution: {integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1293,6 +1380,27 @@ packages: - supports-color dev: true + /@typescript-eslint/typescript-estree@5.60.1(typescript@5.1.6): + resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/visitor-keys': 5.60.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.3 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.0.4): resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1313,6 +1421,26 @@ packages: - typescript dev: true + /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.60.1 + '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) + eslint: 8.44.0 + eslint-scope: 5.1.1 + semver: 7.5.3 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys@5.60.1: resolution: {integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2212,8 +2340,8 @@ packages: bser: 2.1.1 dev: true - /fflate@0.7.4: - resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} + /fflate@0.8.0: + resolution: {integrity: sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==} dev: false /file-entry-cache@6.0.1: @@ -3974,6 +4102,16 @@ packages: typescript: 5.0.4 dev: true + /tsutils@3.21.0(typescript@5.1.6): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.6 + dev: true + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -4008,7 +4146,7 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.24.8(typescript@5.0.4): + /typedoc@0.24.8(typescript@5.1.6): resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true @@ -4019,7 +4157,7 @@ packages: marked: 4.3.0 minimatch: 9.0.2 shiki: 0.14.3 - typescript: 5.0.4 + typescript: 5.1.6 dev: true /typescript@5.0.4: @@ -4028,6 +4166,12 @@ packages: hasBin: true dev: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} From 11753a106d833f35ba01c41d72cfd931301a7ca6 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 3 Jul 2023 10:56:50 +0900 Subject: [PATCH 026/182] pnpm -r up --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 120 +++++++++++++------------------------ 3 files changed, 43 insertions(+), 81 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index cfe6e00b..e27fd764 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -29,6 +29,6 @@ "typescript": "5.0.4" }, "dependencies": { - "@sora/go-wasm": "^2021.1.0" + "@sora/go-wasm": "workspace:^" } } \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index b82979bb..c415d755 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -29,7 +29,7 @@ "typescript": "5.1.6" }, "dependencies": { - "@sora/e2ee": "^2021.1.0", + "@sora/e2ee": "workspace:^", "fflate": "0.8.0" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c2e97843..61ad5eaa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: packages/e2ee: dependencies: '@sora/go-wasm': - specifier: ^2021.1.0 + specifier: workspace:^ version: link:../go-wasm devDependencies: '@rollup/plugin-node-resolve': @@ -63,7 +63,7 @@ importers: packages/sdk: dependencies: '@sora/e2ee': - specifier: ^2021.1.0 + specifier: workspace:^ version: link:../e2ee fflate: specifier: 0.8.0 @@ -553,7 +553,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 chalk: 4.1.2 jest-message-util: 29.5.0 jest-util: 29.5.0 @@ -574,14 +574,14 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@20.3.2) + jest-config: 29.5.0(@types/node@20.3.3) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -615,7 +615,7 @@ packages: dependencies: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 jest-mock: 29.5.0 dev: true @@ -642,7 +642,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 jest-message-util: 29.5.0 jest-mock: 29.5.0 jest-util: 29.5.0 @@ -675,7 +675,7 @@ packages: '@jest/transform': 29.5.0 '@jest/types': 29.5.0 '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.3.2 + '@types/node': 20.3.3 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -762,7 +762,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 + '@types/node': 20.3.3 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -774,7 +774,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 + '@types/node': 20.3.3 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -1122,13 +1122,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.3.2 + '@types/node': 20.3.3 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.3.2 + '@types/node': 20.3.3 dev: true /@types/istanbul-lib-coverage@2.0.4: @@ -1157,7 +1157,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.3.2 + '@types/node': 20.3.3 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -1170,8 +1170,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.3.2: - resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} + /@types/node@20.3.3: + resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==} dev: true /@types/prettier@2.7.3: @@ -1727,8 +1727,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001509 - electron-to-chromium: 1.4.445 + caniuse-lite: 1.0.30001510 + electron-to-chromium: 1.4.447 node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true @@ -1773,8 +1773,8 @@ packages: engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001509: - resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} + /caniuse-lite@1.0.30001510: + resolution: {integrity: sha512-z35lD6xjHklPNgjW4P68R30Er5OCIZE0C1bUf8IMXSh34WJYXfIy+GxIEraQXYJ2dvTU8TumjYAeLrPhpMlsuw==} dev: true /chalk-template@0.4.0: @@ -2060,8 +2060,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.445: - resolution: {integrity: sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==} + /electron-to-chromium@1.4.447: + resolution: {integrity: sha512-sxX0LXh+uL41hSJsujAN86PjhrV/6c79XmpY0TvjZStV6VxIgarf8SRkUoUTuYmFcZQTemsoqo8qXOGw5npWfw==} dev: true /emittery@0.13.1: @@ -2108,15 +2108,14 @@ packages: engines: {node: '>=10'} dev: true - /escodegen@2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 - optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 dev: true @@ -2303,8 +2302,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2486,7 +2485,7 @@ packages: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.0 glob: 7.2.3 ignore: 5.2.4 merge2: 1.4.1 @@ -2499,7 +2498,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.0 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -2782,7 +2781,7 @@ packages: '@jest/expect': 29.5.0 '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -2819,7 +2818,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.3.2) + jest-config: 29.5.0(@types/node@20.3.3) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -2830,7 +2829,7 @@ packages: - ts-node dev: true - /jest-config@29.5.0(@types/node@20.3.2): + /jest-config@29.5.0(@types/node@20.3.3): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2845,7 +2844,7 @@ packages: '@babel/core': 7.22.5 '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 babel-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 ci-info: 3.8.0 @@ -2910,7 +2909,7 @@ packages: '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 '@types/jsdom': 20.0.1 - '@types/node': 20.3.2 + '@types/node': 20.3.3 jest-mock: 29.5.0 jest-util: 29.5.0 jsdom: 20.0.3 @@ -2927,7 +2926,7 @@ packages: '@jest/environment': 29.5.0 '@jest/fake-timers': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 jest-mock: 29.5.0 jest-util: 29.5.0 dev: true @@ -2943,7 +2942,7 @@ packages: dependencies: '@jest/types': 29.5.0 '@types/graceful-fs': 4.1.6 - '@types/node': 20.3.2 + '@types/node': 20.3.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -2994,7 +2993,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 jest-util: 29.5.0 dev: true @@ -3049,7 +3048,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -3080,7 +3079,7 @@ packages: '@jest/test-result': 29.5.0 '@jest/transform': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.1 @@ -3135,7 +3134,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -3160,7 +3159,7 @@ packages: dependencies: '@jest/test-result': 29.5.0 '@jest/types': 29.5.0 - '@types/node': 20.3.2 + '@types/node': 20.3.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -3172,7 +3171,7 @@ packages: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.3.2 + '@types/node': 20.3.3 jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -3234,7 +3233,7 @@ packages: data-urls: 3.0.2 decimal.js: 10.4.3 domexception: 4.0.0 - escodegen: 2.0.0 + escodegen: 2.1.0 form-data: 4.0.0 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 @@ -3300,14 +3299,6 @@ packages: engines: {node: '>=6'} dev: true - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3514,18 +3505,6 @@ packages: mimic-fn: 2.1.0 dev: true - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -3654,11 +3633,6 @@ packages: find-up: 4.1.0 dev: true - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - dev: true - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4112,13 +4086,6 @@ packages: typescript: 5.1.6 dev: true - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -4283,11 +4250,6 @@ packages: string-width: 5.1.2 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} From dea6f93e42b243c239b6aba428c53a50a7bbc6b0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 01:57:44 +0000 Subject: [PATCH 027/182] Update dependency typescript to v5.1.6 --- packages/e2ee/package.json | 2 +- pnpm-lock.yaml | 154 ++----------------------------------- 2 files changed, 6 insertions(+), 150 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index e27fd764..8ea463eb 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -26,7 +26,7 @@ "eslint-plugin-prettier": "4.2.1", "prettier": "2.8.8", "rollup": "3.26.0", - "typescript": "5.0.4" + "typescript": "5.1.6" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 61ad5eaa..f140b750 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,13 +32,13 @@ importers: version: 5.0.2(rollup@3.26.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.0)(typescript@5.0.4) + version: 11.1.2(rollup@3.26.0)(typescript@5.1.6) '@typescript-eslint/eslint-plugin': specifier: 5.60.1 - version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.0.4) + version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: 5.60.1 - version: 5.60.1(eslint@8.44.0)(typescript@5.0.4) + version: 5.60.1(eslint@8.44.0)(typescript@5.1.6) eslint: specifier: 8.44.0 version: 8.44.0 @@ -55,8 +55,8 @@ importers: specifier: 3.26.0 version: 3.26.0 typescript: - specifier: 5.0.4 - version: 5.0.4 + specifier: 5.1.6 + version: 5.1.6 packages/go-wasm: {} @@ -884,25 +884,6 @@ packages: rollup: 3.26.0 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.26.0)(typescript@5.0.4): - resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.0) - resolve: 1.22.2 - rollup: 3.26.0 - typescript: 5.0.4 - dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.26.0)(typescript@5.1.6): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} @@ -1210,34 +1191,6 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/type-utils': 5.60.1(eslint@8.44.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.44.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.3 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1266,26 +1219,6 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.44.0 - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1314,26 +1247,6 @@ packages: '@typescript-eslint/visitor-keys': 5.60.1 dev: true - /@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.0.4) - '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.0.4) - debug: 4.3.4 - eslint: 8.44.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1359,27 +1272,6 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.60.1(typescript@5.0.4): - resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.3 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/typescript-estree@5.60.1(typescript@5.1.6): resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1401,26 +1293,6 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.0.4): - resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.0.4) - eslint: 8.44.0 - eslint-scope: 5.1.1 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.1.6): resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4066,16 +3938,6 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils@3.21.0(typescript@5.0.4): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.0.4 - dev: true - /tsutils@3.21.0(typescript@5.1.6): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -4127,12 +3989,6 @@ packages: typescript: 5.1.6 dev: true - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} - hasBin: true - dev: true - /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} From 91250d8dcd30240f5f186543e40952a642df4fa0 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 4 Jul 2023 12:09:49 +0900 Subject: [PATCH 028/182] =?UTF-8?q?jest=20=E3=81=8B=E3=82=89=20vitest=20?= =?UTF-8?q?=E3=81=B8=E7=A7=BB=E8=A1=8C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/jest.config.js | 187 --- packages/sdk/package.json | 11 +- packages/sdk/tests/utils.test.ts | 982 +++++++------ packages/sdk/vitest.config.ts | 7 + pnpm-lock.yaml | 2203 +++++++----------------------- vitest.workspace.ts | 5 + 6 files changed, 1131 insertions(+), 2264 deletions(-) delete mode 100644 packages/sdk/jest.config.js create mode 100644 packages/sdk/vitest.config.ts create mode 100644 vitest.workspace.ts diff --git a/packages/sdk/jest.config.js b/packages/sdk/jest.config.js deleted file mode 100644 index 4a85a189..00000000 --- a/packages/sdk/jest.config.js +++ /dev/null @@ -1,187 +0,0 @@ -// For a detailed explanation regarding each configuration property, visit: -// https://jestjs.io/docs/en/configuration.html -const path = require('path'); - -module.exports = { - // All imported modules in your tests should be mocked automatically - // automock: false, - - // Stop running tests after `n` failures - // bail: 0, - - // Respect "browser" field in package.json when resolving modules - // browser: false, - - // The directory where Jest should store its cached dependency information - // cacheDirectory: "/private/var/folders/50/9h_5zvjd3g9df35kzszzw8840000gn/T/jest_dx", - - // Automatically clear mock calls and instances between every test - // clearMocks: true, - - // Indicates whether the coverage information should be collected while executing the test - // collectCoverage: false, - - // An array of glob patterns indicating a set of files for which coverage information should be collected - // collectCoverageFrom: undefined, - - // The directory where Jest should output its coverage files - // coverageDirectory: undefined, - - // An array of regexp pattern strings used to skip coverage collection - // coveragePathIgnorePatterns: [ - // "/node_modules/" - // ], - - // A list of reporter names that Jest uses when writing coverage reports - // coverageReporters: [ - // "json", - // "text", - // "lcov", - // "clover" - // ], - - // An object that configures minimum threshold enforcement for coverage results - // coverageThreshold: undefined, - - // A path to a custom dependency extractor - // dependencyExtractor: undefined, - - // Make calling deprecated APIs throw helpful error messages - // errorOnDeprecated: false, - - // Force coverage collection from ignored files using an array of glob patterns - // forceCoverageMatch: [], - - // A path to a module which exports an async function that is triggered once before all test suites - // globalSetup: undefined, - - // A path to a module which exports an async function that is triggered once after all test suites - // globalTeardown: undefined, - - // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. - // maxWorkers: "50%", - - // An array of directory names to be searched recursively up from the requiring module's location - // moduleDirectories: [ - // "node_modules" - // ], - - // An array of file extensions your modules use - // moduleFileExtensions: [ - // "js", - // "json", - // "jsx", - // "ts", - // "tsx", - // "node" - // ], - - // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module - // moduleNameMapper: {}, - - // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader - // modulePathIgnorePatterns: [], - - // Activates notifications for test results - // notify: false, - - // An enum that specifies notification mode. Requires { notify: true } - // notifyMode: "failure-change", - - // A preset that is used as a base for Jest's configuration - // preset: undefined, - - // Run tests from one or more projects - // projects: undefined, - - // Use this configuration option to add custom reporters to Jest - // reporters: undefined, - - // Automatically reset mock state between every test - // resetMocks: false, - - // Reset the module registry before running each individual test - // resetModules: false, - - // A path to a custom resolver - // resolver: undefined, - - // Automatically restore mock state between every test - // restoreMocks: false, - - // The root directory that Jest should scan for tests and modules within - rootDir: __dirname, - - // A list of paths to directories that Jest should use to search for files in - // roots: [ - // "" - // ], - - // Allows you to use a custom runner instead of Jest's default test runner - // runner: "jest-runner", - - // The paths to modules that run some code to configure or set up the testing environment before each test - // setupFiles: [], - - // A list of paths to modules that run some code to configure or set up the testing framework before each test - // setupFilesAfterEnv: [], - - // A list of paths to snapshot serializer modules Jest should use for snapshot testing - // snapshotSerializers: [], - - // The test environment that will be used for testing - testEnvironment: "jest-environment-jsdom", - - // Options that will be passed to the testEnvironment - // testEnvironmentOptions: {}, - - // Adds a location field to test results - // testLocationInResults: false, - - // The glob patterns Jest uses to detect test files - testMatch: [ - "**/tests/**/*.test.ts" - ], - - // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped - // testPathIgnorePatterns: [ - // "/node_modules/" - // ], - - // The regexp pattern or array of patterns that Jest uses to detect test files - // testRegex: [], - - // This option allows the use of a custom results processor - // testResultsProcessor: undefined, - - // This option allows use of a custom test runner - // testRunner: "jasmine2", - - // This option sets the URL for the jsdom environment. It is reflected in properties such as location.href - // testURL: "http://localhost", - - // Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout" - // timers: "real", - - // A map from regular expressions to paths to transformers - transform: { - "^.+\\.ts$": ["@swc/jest"] - }, - - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - // transformIgnorePatterns: [ - // "/node_modules/" - // ], - - // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them - // unmockedModulePathPatterns: undefined, - - // Indicates whether each individual test should be reported during the run - // verbose: undefined, - - // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode - // watchPathIgnorePatterns: [], - - // Whether to use watchman for file crawling - // watchman: true, -}; diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1afdb393..d40f24bb 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -5,7 +5,7 @@ "watch": "rollup -c -w", "lint": "eslint --ext .ts ./src", "fmt": "prettier --write src", - "test": "jest --detectOpenHandles --forceExit" + "test": "vitest" }, "devDependencies": { "@rollup/plugin-commonjs": "25.0.0", @@ -14,22 +14,21 @@ "@rollup/plugin-typescript": "11.1.1", "@shiguredo/lyra-wasm": "2023.1.0", "@swc/core": "1.3.59", - "@swc/jest": "0.2.26", "@types/jest": "29.5.1", "@typescript-eslint/eslint-plugin": "5.59.6", "@typescript-eslint/parser": "5.59.6", "eslint": "8.41.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", - "jest": "29.5.0", - "jest-environment-jsdom": "29.5.0", + "jsdom": "^22.1.0", "prettier": "2.8.8", "rollup": "3.22.1", "rollup-plugin-delete": "2.0.0", - "typescript": "5.0.4" + "typescript": "5.0.4", + "vitest": "^0.32.4" }, "dependencies": { "@sora/e2ee": "^2021.1.0", "fflate": "0.7.4" } -} +} \ No newline at end of file diff --git a/packages/sdk/tests/utils.test.ts b/packages/sdk/tests/utils.test.ts index c301d827..d649c621 100644 --- a/packages/sdk/tests/utils.test.ts +++ b/packages/sdk/tests/utils.test.ts @@ -1,670 +1,860 @@ -import { createSignalingMessage } from "../src/utils"; -import { AudioCodecType, DataChannelDirection, VideoCodecType } from "../src/types"; - -const channelId = "7N3fsMHob"; -const metadata = "PG9A6RXgYqiqWKOVO"; -const clientId = "clientId"; -const sdp = "v=0..."; -const userAgent = window.navigator.userAgent; -const soraClient = "Sora JavaScript SDK __SORA_JS_SDK_VERSION__"; -const audioCodecType: AudioCodecType = "OPUS"; -const videoCodecType: VideoCodecType = "VP9"; +import { test, expect } from 'vitest' +import { createSignalingMessage } from '../src/utils' +import { AudioCodecType, DataChannelDirection, VideoCodecType } from '../src/types' + +const channelId = '7N3fsMHob' +const metadata = 'PG9A6RXgYqiqWKOVO' +const clientId = 'clientId' +const sdp = 'v=0...' +const userAgent = window.navigator.userAgent +const soraClient = 'Sora JavaScript SDK __SORA_JS_SDK_VERSION__' +const audioCodecType: AudioCodecType = 'OPUS' +const videoCodecType: VideoCodecType = 'VP9' const baseExpectedMessage = Object.freeze({ - type: "connect", + type: 'connect', sora_client: soraClient, environment: userAgent, sdp: sdp, audio: true, video: true, - role: "sendonly", + role: 'sendonly', channel_id: channelId, -}); +}) /** * role test */ -test("createSignalingMessage simple sendonly", () => { - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, {}, false)).toEqual(baseExpectedMessage); -}); - -test("createSignalingMessage simple recvonly", () => { - const expectedMessage = Object.assign({}, baseExpectedMessage, { role: "recvonly" }); - expect(createSignalingMessage(sdp, "recvonly", channelId, undefined, {}, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage simple sendrecv", () => { - const expectedMessage = Object.assign({}, baseExpectedMessage, { role: "sendrecv", multistream: true }); - expect(createSignalingMessage(sdp, "sendrecv", channelId, undefined, { multistream: true }, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage invalid role", () => { +test('createSignalingMessage simple sendonly', () => { + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, {}, false)).toEqual( + baseExpectedMessage, + ) +}) + +test('createSignalingMessage simple recvonly', () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { role: 'recvonly' }) + expect(createSignalingMessage(sdp, 'recvonly', channelId, undefined, {}, false)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage simple sendrecv', () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { + role: 'sendrecv', + multistream: true, + }) + expect( + createSignalingMessage(sdp, 'sendrecv', channelId, undefined, { multistream: true }, false), + ).toEqual(expectedMessage) +}) + +test('createSignalingMessage invalid role', () => { expect(() => { - createSignalingMessage(sdp, "test", channelId, metadata, {}, false); - }).toThrow(Error("Unknown role type")); -}); + createSignalingMessage(sdp, 'test', channelId, metadata, {}, false) + }).toThrow(Error('Unknown role type')) +}) -test("createSignalingMessage sendrecv and multistream: false", () => { +test('createSignalingMessage sendrecv and multistream: false', () => { expect(() => { - createSignalingMessage(sdp, "sendrecv", channelId, metadata, {}, false); - }).toThrow(Error("Failed to parse options. Options multistream must be true when connecting using 'sendrecv'")); -}); + createSignalingMessage(sdp, 'sendrecv', channelId, metadata, {}, false) + }).toThrow( + Error( + "Failed to parse options. Options multistream must be true when connecting using 'sendrecv'", + ), + ) +}) /** * channelId test */ -test("createSignalingMessage channelId: null", () => { +test('createSignalingMessage channelId: null', () => { expect(() => { - createSignalingMessage(sdp, "sendonly", null, undefined, {}, false); - }).toThrow(Error("channelId can not be null or undefined")); -}); + createSignalingMessage(sdp, 'sendonly', null, undefined, {}, false) + }).toThrow(Error('channelId can not be null or undefined')) +}) -test("createSignalingMessage channelId: undefined", () => { +test('createSignalingMessage channelId: undefined', () => { expect(() => { - createSignalingMessage(sdp, "sendonly", undefined, undefined, {}, false); - }).toThrow(Error("channelId can not be null or undefined")); -}); + createSignalingMessage(sdp, 'sendonly', undefined, undefined, {}, false) + }).toThrow(Error('channelId can not be null or undefined')) +}) /** * metadata test */ -test("createSignalingMessage metadata", () => { - const expectedMessage = Object.assign({}, baseExpectedMessage, { metadata: metadata }); - expect(createSignalingMessage(sdp, "sendonly", channelId, metadata, {}, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage metadata: null", () => { - const expectedMessage = Object.assign({}, baseExpectedMessage, { metadata: null }); - expect(createSignalingMessage(sdp, "sendonly", channelId, null, {}, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage metadata: undefined", () => { - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, {}, false)).toEqual(baseExpectedMessage); -}); +test('createSignalingMessage metadata', () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { metadata: metadata }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, metadata, {}, false)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage metadata: null', () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { metadata: null }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, null, {}, false)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage metadata: undefined', () => { + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, {}, false)).toEqual( + baseExpectedMessage, + ) +}) /** * clientId test */ -test("createSignalingMessage clientId", () => { +test('createSignalingMessage clientId', () => { const options = { clientId: clientId } - const expectedMessage = Object.assign({}, baseExpectedMessage, { client_id: options.clientId }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage clientId: empty string", () => { - const options = { clientId: "" } - const expectedMessage = Object.assign({}, baseExpectedMessage, { client_id: options.clientId }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage clientId: undefined", () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { client_id: options.clientId }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage clientId: empty string', () => { + const options = { clientId: '' } + const expectedMessage = Object.assign({}, baseExpectedMessage, { client_id: options.clientId }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage clientId: undefined', () => { const options = { clientId: undefined } - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * multistream test */ -test("createSignalingMessage multistream: true", () => { +test('createSignalingMessage multistream: true', () => { const options = { multistream: true } - const expectedMessage = Object.assign({}, baseExpectedMessage, { multistream: options.multistream }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); - -test("createSignalingMessage multistream: false", () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { + multistream: options.multistream, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage multistream: false', () => { const options = { multistream: false } - const expectedMessage = Object.assign({}, baseExpectedMessage, { multistream: options.multistream }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + const expectedMessage = Object.assign({}, baseExpectedMessage, { + multistream: options.multistream, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * audio test */ -test("createSignalingMessage audio: false", () => { +test('createSignalingMessage audio: false', () => { const options = { audio: false, audioCodecType: audioCodecType, audioBitRate: 100, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: false }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: false }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audio: true", () => { +test('createSignalingMessage audio: true', () => { const options = { audio: true, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) -test("createSignalingMessage audio: undefined", () => { +test('createSignalingMessage audio: undefined', () => { const options = { audio: undefined, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) -test("createSignalingMessage audio parameters", () => { +test('createSignalingMessage audio parameters', () => { const options = { audioCodecType: audioCodecType, audioBitRate: 100, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - codec_type: options.audioCodecType, - bit_rate: options.audioBitRate, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + codec_type: options.audioCodecType, + bit_rate: options.audioBitRate, + }, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsChannels", () => { +test('createSignalingMessage audioOpusParamsChannels', () => { const options = { audioOpusParamsChannels: 2, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - channels: options.audioOpusParamsChannels, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + channels: options.audioOpusParamsChannels, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsMaxplaybackrate", () => { +test('createSignalingMessage audioOpusParamsMaxplaybackrate', () => { const options = { audioOpusParamsMaxplaybackrate: 48000, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - maxplaybackrate: options.audioOpusParamsMaxplaybackrate, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + maxplaybackrate: options.audioOpusParamsMaxplaybackrate, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsStereo", () => { +test('createSignalingMessage audioOpusParamsStereo', () => { const options = { audioOpusParamsStereo: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - stereo: options.audioOpusParamsStereo, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + stereo: options.audioOpusParamsStereo, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsSpropStereo", () => { +test('createSignalingMessage audioOpusParamsSpropStereo', () => { const options = { audioOpusParamsSpropStereo: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - sprop_stereo: options.audioOpusParamsSpropStereo, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + sprop_stereo: options.audioOpusParamsSpropStereo, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsMinptime", () => { +test('createSignalingMessage audioOpusParamsMinptime', () => { const options = { audioOpusParamsMinptime: 10, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - minptime: options.audioOpusParamsMinptime, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + minptime: options.audioOpusParamsMinptime, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsPtime", () => { +test('createSignalingMessage audioOpusParamsPtime', () => { const options = { audioOpusParamsPtime: 20, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - ptime: options.audioOpusParamsPtime, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + ptime: options.audioOpusParamsPtime, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsUseinbandfec", () => { +test('createSignalingMessage audioOpusParamsUseinbandfec', () => { const options = { audioOpusParamsUseinbandfec: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - useinbandfec: options.audioOpusParamsUseinbandfec, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + useinbandfec: options.audioOpusParamsUseinbandfec, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage audioOpusParamsUsedtx", () => { +test('createSignalingMessage audioOpusParamsUsedtx', () => { const options = { audioOpusParamsUsedtx: false, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio: { - opus_params: { - usedtx: options.audioOpusParamsUsedtx, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio: { + opus_params: { + usedtx: options.audioOpusParamsUsedtx, + }, }, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * video test */ -test("createSignalingMessage video: false", () => { +test('createSignalingMessage video: false', () => { const options = { video: false, videoCodecType: videoCodecType, videoBitRate: 100, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { video: false }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { video: false }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage video: true", () => { +test('createSignalingMessage video: true', () => { const options = { video: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { video: true }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { video: true }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage video: undefined", () => { +test('createSignalingMessage video: undefined', () => { const options = { video: undefined, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { video: true }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { video: true }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage video parameters", () => { +test('createSignalingMessage video parameters', () => { const options = { videoCodecType: videoCodecType, videoBitRate: 100, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { video: { - codec_type: options.videoCodecType, - bit_rate: options.videoBitRate, - }}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + video: { + codec_type: options.videoCodecType, + bit_rate: options.videoBitRate, + }, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * e2ee test */ -test("createSignalingMessage e2ee: true", () => { +test('createSignalingMessage e2ee: true', () => { const options = { e2ee: true, - e2eeWasmUrl: "wasm", - }; + e2eeWasmUrl: 'wasm', + } const expectedMessage = Object.assign({}, baseExpectedMessage, { e2ee: true, video: { - codec_type: "VP8" + codec_type: 'VP8', }, signaling_notify_metadata: {}, - }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage e2ee: false", () => { +test('createSignalingMessage e2ee: false', () => { const options = { e2ee: false, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { e2ee: false, }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { e2ee: false }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage e2ee: true, video: false", () => { +test('createSignalingMessage e2ee: true, video: false', () => { const options = { e2ee: true, - e2eeWasmUrl: "wasm", + e2eeWasmUrl: 'wasm', video: false, - }; + } const expectedMessage = Object.assign({}, baseExpectedMessage, { e2ee: true, video: false, signaling_notify_metadata: {}, - }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) test("createSignalingMessage e2ee: true, videoCodecType: 'VP9'", () => { const options = { e2ee: true, - e2eeWasmUrl: "wasm", - VideoCodecType: "VP9", - }; + e2eeWasmUrl: 'wasm', + VideoCodecType: 'VP9', + } const expectedMessage = Object.assign({}, baseExpectedMessage, { e2ee: true, video: { - codec_type: "VP8" + codec_type: 'VP8', }, signaling_notify_metadata: {}, - }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * signalingNotifyMetadata test */ -test("createSignalingMessage signalingMetadata", () => { +test('createSignalingMessage signalingMetadata', () => { const options = { - signalingNotifyMetadata: "signalingNotifyMetadata", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { signaling_notify_metadata: options.signalingNotifyMetadata }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + signalingNotifyMetadata: 'signalingNotifyMetadata', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + signaling_notify_metadata: options.signalingNotifyMetadata, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage signalingMetadata: empty string", () => { +test('createSignalingMessage signalingMetadata: empty string', () => { const options = { - signalingNotifyMetadata: "", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { signaling_notify_metadata: options.signalingNotifyMetadata }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + signalingNotifyMetadata: '', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + signaling_notify_metadata: options.signalingNotifyMetadata, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage signalingMetadata: object", () => { +test('createSignalingMessage signalingMetadata: object', () => { const options = { - signalingNotifyMetadata: { key: "value" }, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { signaling_notify_metadata: options.signalingNotifyMetadata }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + signalingNotifyMetadata: { key: 'value' }, + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + signaling_notify_metadata: options.signalingNotifyMetadata, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage signalingMetadata: null", () => { +test('createSignalingMessage signalingMetadata: null', () => { const options = { signalingNotifyMetadata: null, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { signaling_notify_metadata: options.signalingNotifyMetadata }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + signaling_notify_metadata: options.signalingNotifyMetadata, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * dataChannelSignaling test */ -test("createSignalingMessage dataChannelSignaling: true", () => { +test('createSignalingMessage dataChannelSignaling: true', () => { const options = { dataChannelSignaling: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { data_channel_signaling: options.dataChannelSignaling }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + data_channel_signaling: options.dataChannelSignaling, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage dataChannelSignaling: false", () => { +test('createSignalingMessage dataChannelSignaling: false', () => { const options = { dataChannelSignaling: false, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { data_channel_signaling: options.dataChannelSignaling }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + data_channel_signaling: options.dataChannelSignaling, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage dataChannelSignaling: undefined", () => { +test('createSignalingMessage dataChannelSignaling: undefined', () => { const options = { dataChannelSignaling: undefined, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * ignoreDisconnectWebSocket test */ -test("createSignalingMessage ignoreDisconnectWebSocket: true", () => { +test('createSignalingMessage ignoreDisconnectWebSocket: true', () => { const options = { ignoreDisconnectWebSocket: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { ignore_disconnect_websocket: options.ignoreDisconnectWebSocket }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + ignore_disconnect_websocket: options.ignoreDisconnectWebSocket, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage ignoreDisconnectWebSocket: false", () => { +test('createSignalingMessage ignoreDisconnectWebSocket: false', () => { const options = { ignoreDisconnectWebSocket: false, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { ignore_disconnect_websocket: options.ignoreDisconnectWebSocket }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + ignore_disconnect_websocket: options.ignoreDisconnectWebSocket, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage ignoreDisconnectWebSocket: undefined", () => { +test('createSignalingMessage ignoreDisconnectWebSocket: undefined', () => { const options = { ignoreDisconnectWebSocket: undefined, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * redirect test */ -test("createSignalingMessage redirect: true", () => { - const expectedMessage = Object.assign({}, baseExpectedMessage, { redirect: true }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, {}, true)).toEqual(expectedMessage); -}); - -test("createSignalingMessage redirect: false", () => { - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, {}, false)).toEqual(baseExpectedMessage); -}); +test('createSignalingMessage redirect: true', () => { + const expectedMessage = Object.assign({}, baseExpectedMessage, { redirect: true }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, {}, true)).toEqual( + expectedMessage, + ) +}) + +test('createSignalingMessage redirect: false', () => { + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, {}, false)).toEqual( + baseExpectedMessage, + ) +}) /** * dataChannels test */ -test("createSignalingMessage dataChannels: invalid value", () => { +test('createSignalingMessage dataChannels: invalid value', () => { // array 以外の場合は追加されない const options = { - dataChannels: "test", - }; + dataChannels: 'test', + } // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) -test("createSignalingMessage dataChannels: empty array ", () => { +test('createSignalingMessage dataChannels: empty array ', () => { // array が空の場合は追加されない const options = { dataChannels: [], - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) -test("createSignalingMessage dataChannels: invalid array", () => { +test('createSignalingMessage dataChannels: invalid array', () => { // dataChannel に object 以外が含まれる場合は例外が発生する const options = { - dataChannels: [{ label: "test", direction: "sendrecv" }, "test"], - }; + dataChannels: [{ label: 'test', direction: 'sendrecv' }, 'test'], + } expect(() => { // @ts-ignore option で指定されている型以外を引数に指定する - createSignalingMessage(sdp, "sendonly", channelId, null, options, false); - }).toThrow("Failed to parse options dataChannels. Options dataChannels element must be type 'object'"); -}); + createSignalingMessage(sdp, 'sendonly', channelId, null, options, false) + }).toThrow( + "Failed to parse options dataChannels. Options dataChannels element must be type 'object'", + ) +}) -test("createSignalingMessage dataChannels: invalid array(null in array)", () => { +test('createSignalingMessage dataChannels: invalid array(null in array)', () => { // dataChannel に null が含まれる場合は例外が発生する const options = { - dataChannels: [{ label: "test", direction: "sendrecv" }, null], - }; + dataChannels: [{ label: 'test', direction: 'sendrecv' }, null], + } expect(() => { // @ts-ignore option で指定されている型以外を引数に指定する - createSignalingMessage(sdp, "sendonly", channelId, null, options, false); - }).toThrow("Failed to parse options dataChannels. Options dataChannels element must be type 'object'"); -}); + createSignalingMessage(sdp, 'sendonly', channelId, null, options, false) + }).toThrow( + "Failed to parse options dataChannels. Options dataChannels element must be type 'object'", + ) +}) -test("createSignalingMessage dataChannels", () => { +test('createSignalingMessage dataChannels', () => { // 正常系 const options = { dataChannels: [ - { label: "test", direction: "sendrecv" as DataChannelDirection }, + { label: 'test', direction: 'sendrecv' as DataChannelDirection }, { - label: "test2", - direction: "sendonly" as DataChannelDirection, + label: 'test2', + direction: 'sendonly' as DataChannelDirection, ordered: true, maxPacketLifeTime: 100, maxRetransmits: 100, - protocol: "protocol", + protocol: 'protocol', compress: false, }, ], - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { data_channels: [ - { label: "test", direction: "sendrecv" }, - { - label: "test2", - direction: "sendonly", - ordered: true, - max_packet_life_time: 100, - max_retransmits: 100, - protocol: "protocol", - compress: false, - }, - ]}); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + data_channels: [ + { label: 'test', direction: 'sendrecv' }, + { + label: 'test2', + direction: 'sendonly', + ordered: true, + max_packet_life_time: 100, + max_retransmits: 100, + protocol: 'protocol', + compress: false, + }, + ], + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * bundleId test */ -test("createSignalingMessage bundleId", () => { +test('createSignalingMessage bundleId', () => { const options = { - bundleId: "bundleId", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { bundle_id: options.bundleId }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + bundleId: 'bundleId', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { bundle_id: options.bundleId }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage bundleId: empty string", () => { +test('createSignalingMessage bundleId: empty string', () => { const options = { - bundleId: "", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { bundle_id: options.bundleId }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + bundleId: '', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { bundle_id: options.bundleId }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage bundleId: undefined", () => { +test('createSignalingMessage bundleId: undefined', () => { const options = { bundleId: undefined, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * simulcastRid test */ -test("createSignalingMessage simulcastRid", () => { +test('createSignalingMessage simulcastRid', () => { const options = { - simulcastRid: "r0", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { simulcast_rid: options.simulcastRid }); + simulcastRid: 'r0', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + simulcast_rid: options.simulcastRid, + }) // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage simulcastRid: unknown string", () => { +test('createSignalingMessage simulcastRid: unknown string', () => { // "r0", "r1", "r2" 以外の場合は追加されない const options = { - simulcastRid: "", - }; + simulcastRid: '', + } // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * spotlight test */ -test("createSignalingMessage spotlight: true", () => { +test('createSignalingMessage spotlight: true', () => { const options = { spotlight: true, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight: options.spotlight }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight: options.spotlight }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage spotlight: false", () => { +test('createSignalingMessage spotlight: false', () => { const options = { spotlight: false, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight: options.spotlight }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight: options.spotlight }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) /** * spotlightFocusRid test */ -test("createSignalingMessage spotlightFocusRid", () => { +test('createSignalingMessage spotlightFocusRid', () => { const options = { - spotlightFocusRid: "r0", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight_focus_rid: options.spotlightFocusRid }); + spotlightFocusRid: 'r0', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + spotlight_focus_rid: options.spotlightFocusRid, + }) // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage spotlightFocusRid: unknown string", () => { +test('createSignalingMessage spotlightFocusRid: unknown string', () => { // "none", "r0", "r1", "r2" 以外の場合は追加されない const options = { - spotlightFocusRid: "", - }; + spotlightFocusRid: '', + } // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * spotlightUnfocusRid test */ -test("createSignalingMessage spotlightUnfocusRid", () => { +test('createSignalingMessage spotlightUnfocusRid', () => { const options = { - spotlightUnfocusRid: "r0", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight_unfocus_rid: options.spotlightUnfocusRid }); + spotlightUnfocusRid: 'r0', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + spotlight_unfocus_rid: options.spotlightUnfocusRid, + }) // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage spotlightFocusRid: unknown string", () => { +test('createSignalingMessage spotlightFocusRid: unknown string', () => { // "none", "r0", "r1", "r2" 以外の場合は追加されない const options = { - spotlightUnfocusRid: "", - }; + spotlightUnfocusRid: '', + } // @ts-ignore option で指定されている型以外を引数に指定する - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) /** * spotlightNumber test */ -test("createSignalingMessage spotlightNumber", () => { +test('createSignalingMessage spotlightNumber', () => { const options = { spotlightNumber: 5, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight_number: options.spotlightNumber }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + spotlight_number: options.spotlightNumber, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage spotlightNumber: 0", () => { +test('createSignalingMessage spotlightNumber: 0', () => { const options = { spotlightNumber: 0, - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { spotlight_number: options.spotlightNumber }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + spotlight_number: options.spotlightNumber, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) -test("createSignalingMessage spotlightNumber: undefined", () => { +test('createSignalingMessage spotlightNumber: undefined', () => { const options = { spotlightNumber: undefined, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) -test("createSignalingMessage audioStreamingLanguageCode: undefined", () => { +test('createSignalingMessage audioStreamingLanguageCode: undefined', () => { const options = { audioStreamingLanguageCode: undefined, - }; - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(baseExpectedMessage); -}); + } + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + baseExpectedMessage, + ) +}) -test("createSignalingMessage audioStreamingLanguageCode: ja-JP", () => { +test('createSignalingMessage audioStreamingLanguageCode: ja-JP', () => { const options = { - audioStreamingLanguageCode: "ja-JP", - }; - const expectedMessage = Object.assign({}, baseExpectedMessage, { audio_streaming_language_code: options.audioStreamingLanguageCode }); - expect(createSignalingMessage(sdp, "sendonly", channelId, undefined, options, false)).toEqual(expectedMessage); -}); + audioStreamingLanguageCode: 'ja-JP', + } + const expectedMessage = Object.assign({}, baseExpectedMessage, { + audio_streaming_language_code: options.audioStreamingLanguageCode, + }) + expect(createSignalingMessage(sdp, 'sendonly', channelId, undefined, options, false)).toEqual( + expectedMessage, + ) +}) diff --git a/packages/sdk/vitest.config.ts b/packages/sdk/vitest.config.ts new file mode 100644 index 00000000..68e3449d --- /dev/null +++ b/packages/sdk/vitest.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + environment: 'jsdom', + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 394ed09a..67421d1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 14.2.0 typedoc: specifier: 0.24.8 - version: 0.24.8(typescript@5.1.6) + version: 0.24.8(typescript@5.0.4) packages/e2ee: dependencies: @@ -87,9 +87,6 @@ importers: '@swc/core': specifier: 1.3.59 version: 1.3.59 - '@swc/jest': - specifier: 0.2.26 - version: 0.2.26(@swc/core@1.3.59) '@types/jest': specifier: 29.5.1 version: 29.5.1 @@ -108,12 +105,9 @@ importers: eslint-plugin-prettier: specifier: 4.2.1 version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.41.0)(prettier@2.8.8) - jest: - specifier: 29.5.0 - version: 29.5.0 - jest-environment-jsdom: - specifier: 29.5.0 - version: 29.5.0 + jsdom: + specifier: ^22.1.0 + version: 22.1.0 prettier: specifier: 2.8.8 version: 2.8.8 @@ -126,6 +120,9 @@ importers: typescript: specifier: 5.0.4 version: 5.0.4 + vitest: + specifier: ^0.32.4 + version: 0.32.4(jsdom@22.1.0) packages: @@ -134,14 +131,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} @@ -149,146 +138,11 @@ packages: '@babel/highlight': 7.22.5 dev: true - /@babel/compat-data@7.22.5: - resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.22.5: - resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 - lru-cache: 5.1.1 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.22.5: - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-module-transforms@7.22.5: - resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-split-export-declaration@7.22.5: - resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helpers@7.22.5: - resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} @@ -298,182 +152,203 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser@7.22.5: - resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.5 + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/darwin-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/freebsd-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + /@esbuild/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + /@esbuild/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true dev: true + optional: true - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 + /@esbuild/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true dev: true + optional: true + + /@esbuild/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} @@ -532,287 +407,36 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + jest-get-type: 29.4.3 dev: true - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + /@jest/schemas@29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 + '@sinclair/typebox': 0.25.24 dev: true - /@jest/core@29.5.0: - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 '@types/node': 20.3.2 - ansi-escapes: 4.3.2 + '@types/yargs': 17.0.24 chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@20.3.2) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /@jest/create-cache-key-function@27.5.1: - resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - dev: true - - /@jest/environment@29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - jest-mock: 29.5.0 - dev: true - - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - dev: true - - /@jest/expect@29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/fake-timers@29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.3.2 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /@jest/globals@29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/types': 29.5.0 - jest-mock: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/reporters@29.5.0: - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.3.2 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.24 - dev: true - - /@jest/source-map@29.4.3: - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 - dev: true - - /@jest/test-sequencer@29.5.0: - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - slash: 3.0.0 - dev: true - - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.22.5 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 - '@types/yargs': 16.0.5 - chalk: 4.1.2 - dev: true - - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -926,18 +550,6 @@ packages: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons@3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - dependencies: - '@sinonjs/commons': 3.0.0 - dev: true - /@swc/core-darwin-arm64@1.3.59: resolution: {integrity: sha512-AnqWFBgEKHP0jb4iZqx7eVQT9/rX45+DE4Ox7GpwCahUKxxrsDLyXzKhwLwQuAjUvtu5JcSB77szKpPGDM49fQ==} engines: {node: '>=10'} @@ -1050,49 +662,19 @@ packages: '@swc/core-win32-x64-msvc': 1.3.59 dev: true - /@swc/jest@0.2.26(@swc/core@1.3.59): - resolution: {integrity: sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==} - engines: {npm: '>= 7.0.0'} - peerDependencies: - '@swc/core': '*' - dependencies: - '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.59 - jsonc-parser: 3.2.0 - dev: true - /@tootallnate/once@2.0.0: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} dev: true - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} - dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 - dev: true - - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.22.5 - dev: true - - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@types/chai': 4.3.5 dev: true - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} - dependencies: - '@babel/types': 7.22.5 + /@types/chai@4.3.5: + resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} dev: true /@types/estree@1.0.1: @@ -1106,12 +688,6 @@ packages: '@types/node': 20.3.2 dev: true - /@types/graceful-fs@4.1.6: - resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} - dependencies: - '@types/node': 20.3.2 - dev: true - /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true @@ -1135,14 +711,6 @@ packages: pretty-format: 29.5.0 dev: true - /@types/jsdom@20.0.1: - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - dependencies: - '@types/node': 20.3.2 - '@types/tough-cookie': 4.0.2 - parse5: 7.1.2 - dev: true - /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true @@ -1155,10 +723,6 @@ packages: resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} dev: true - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - dev: true - /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true @@ -1171,20 +735,10 @@ packages: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/tough-cookie@4.0.2: - resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} - dev: true - /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs@16.0.5: - resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - /@types/yargs@17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: @@ -1321,6 +875,44 @@ packages: eslint-visitor-keys: 3.4.1 dev: true + /@vitest/expect@0.32.4: + resolution: {integrity: sha512-m7EPUqmGIwIeoU763N+ivkFjTzbaBn0n9evsTOcde03ugy2avPs3kZbYmw3DkcH1j5mxhMhdamJkLQ6dM1bk/A==} + dependencies: + '@vitest/spy': 0.32.4 + '@vitest/utils': 0.32.4 + chai: 4.3.7 + dev: true + + /@vitest/runner@0.32.4: + resolution: {integrity: sha512-cHOVCkiRazobgdKLnczmz2oaKK9GJOw6ZyRcaPdssO1ej+wzHVIkWiCiNacb3TTYPdzMddYkCgMjZ4r8C0JFCw==} + dependencies: + '@vitest/utils': 0.32.4 + p-limit: 4.0.0 + pathe: 1.1.1 + dev: true + + /@vitest/snapshot@0.32.4: + resolution: {integrity: sha512-IRpyqn9t14uqsFlVI2d7DFMImGMs1Q9218of40bdQQgMePwVdmix33yMNnebXcTzDU5eiV3eUsoxxH5v0x/IQA==} + dependencies: + magic-string: 0.30.0 + pathe: 1.1.1 + pretty-format: 29.5.0 + dev: true + + /@vitest/spy@0.32.4: + resolution: {integrity: sha512-oA7rCOqVOOpE6rEoXuCOADX7Lla1LIa4hljI2MSccbpec54q+oifhziZIJXxlE/CvI2E+ElhBHzVu0VEvJGQKQ==} + dependencies: + tinyspy: 2.1.1 + dev: true + + /@vitest/utils@0.32.4: + resolution: {integrity: sha512-Gwnl8dhd1uJ+HXrYyV0eRqfmk9ek1ASE/LWfTCuWMw+d07ogHqp4hEAV28NiecimK6UY9DpSEPh+pXBA5gtTBg==} + dependencies: + diff-sequences: 29.4.3 + loupe: 2.3.6 + pretty-format: 29.5.0 + dev: true + /@zeit/schemas@2.29.0: resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} dev: true @@ -1337,13 +929,6 @@ packages: negotiator: 0.6.3 dev: true - /acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - dependencies: - acorn: 8.9.0 - acorn-walk: 8.2.0 - dev: true - /acorn-jsx@5.3.2(acorn@8.9.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1404,13 +989,6 @@ packages: string-width: 4.2.3 dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1449,14 +1027,6 @@ packages: engines: {node: '>=12'} dev: true - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true @@ -1465,12 +1035,6 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -1480,80 +1044,12 @@ packages: engines: {node: '>=8'} dev: true - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true - - /babel-jest@29.5.0(@babel/core@7.22.5): - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.22.5 - '@jest/transform': 29.5.0 - '@types/babel__core': 7.20.1 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.5) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.22.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.22.5): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.5 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true /balanced-match@1.0.2: @@ -1594,27 +1090,6 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001509 - electron-to-chromium: 1.4.445 - node-releases: 2.0.12 - update-browserslist-db: 1.0.11(browserslist@4.21.9) - dev: true - - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -1625,28 +1100,32 @@ packages: engines: {node: '>= 0.8'} dev: true - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true - /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} dev: true - /caniuse-lite@1.0.30001509: - resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} + /chai@4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.2 + deep-eql: 4.1.3 + get-func-name: 2.0.0 + loupe: 2.3.6 + pathval: 1.1.1 + type-detect: 4.0.8 dev: true /chalk-template@0.4.0: @@ -1678,9 +1157,8 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} + /check-error@1.0.2: + resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true /ci-info@3.8.0: @@ -1688,10 +1166,6 @@ packages: engines: {node: '>=8'} dev: true - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - dev: true - /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1711,26 +1185,8 @@ packages: is-wsl: 2.2.0 dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true @@ -1792,14 +1248,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1809,28 +1257,20 @@ packages: which: 2.0.2 dev: true - /cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - dev: true - - /cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} dependencies: - cssom: 0.3.8 + rrweb-cssom: 0.6.0 dev: true - /data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} + /data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-url: 12.0.1 dev: true /debug@2.6.9: @@ -1860,8 +1300,11 @@ packages: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} dev: true - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 dev: true /deep-extend@0.6.0: @@ -1897,11 +1340,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1932,15 +1370,6 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.445: - resolution: {integrity: sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==} - dev: true - - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -1954,15 +1383,34 @@ packages: engines: {node: '>=0.12'} dev: true - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 dev: true /escape-string-regexp@1.0.5: @@ -1980,19 +1428,6 @@ packages: engines: {node: '>=10'} dev: true - /escodegen@2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-config-prettier@8.8.0(eslint@8.41.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true @@ -2097,12 +1532,6 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -2151,11 +1580,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2206,12 +1630,6 @@ packages: reusify: 1.0.4 dev: true - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - dev: true - /fflate@0.7.4: resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} dev: false @@ -2230,14 +1648,6 @@ packages: to-regex-range: 5.0.1 dev: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2283,19 +1693,8 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true - - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} + /get-func-name@2.0.0: + resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true /get-stream@6.0.1: @@ -2339,11 +1738,6 @@ packages: once: 1.4.0 dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} @@ -2413,10 +1807,6 @@ packages: whatwg-encoding: 2.0.0 dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -2463,15 +1853,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2497,10 +1878,6 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -2530,11 +1907,6 @@ packages: engines: {node: '>=8'} dev: true - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2592,155 +1964,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.22.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} - dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 - dev: true - - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli@29.5.0: - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.3.2) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest-config@29.5.0(@types/node@20.3.2): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - babel-jest: 29.5.0(@babel/core@7.22.5) - chalk: 4.1.2 - ci-info: 3.8.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2751,91 +1974,11 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /jest-environment-jsdom@29.5.0: - resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/jsdom': 20.0.1 - '@types/node': 20.3.2 - jest-mock: 29.5.0 - jest-util: 29.5.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/graceful-fs': 4.1.6 - '@types/node': 20.3.2 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2861,147 +2004,6 @@ packages: stack-utils: 2.0.6 dev: true - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - jest-util: 29.5.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.5.0 - dev: true - - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.2 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true - - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.5.0 - '@jest/environment': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/globals': 29.5.0 - '@jest/source-map': 29.4.3 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - '@jest/expect-utils': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/babel__traverse': 7.20.1 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) - chalk: 4.1.2 - expect: 29.5.0 - graceful-fs: 4.2.11 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3009,79 +2011,15 @@ packages: '@jest/types': 29.5.0 '@types/node': 20.3.2 chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.5.0 - dev: true - - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: true - - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.3.2 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@29.5.0: - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.5.0 - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 dev: true /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -3089,9 +2027,9 @@ packages: argparse: 2.0.1 dev: true - /jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} + /jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: @@ -3099,21 +2037,18 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.9.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 + cssstyle: 3.0.0 + data-urls: 4.0.0 decimal.js: 10.4.3 domexception: 4.0.0 - escodegen: 2.0.0 form-data: 4.0.0 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.5 + nwsapi: 2.2.6 parse5: 7.1.2 + rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.3 @@ -3121,7 +2056,7 @@ packages: webidl-conversions: 7.0.0 whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 + whatwg-url: 12.0.1 ws: 8.13.0 xml-name-validator: 4.0.0 transitivePeerDependencies: @@ -3130,16 +2065,6 @@ packages: - utf-8-validate dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -3152,34 +2077,10 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: true - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3188,15 +2089,9 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} dev: true /locate-path@6.0.0: @@ -3210,10 +2105,10 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + /loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: - yallist: 3.1.1 + get-func-name: 2.0.0 dev: true /lru-cache@6.0.0: @@ -3234,17 +2129,11 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - dev: true - - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /magic-string@0.30.0: + resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + engines: {node: '>=12'} dependencies: - tmpl: 1.0.5 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /marked@4.3.0: @@ -3323,6 +2212,15 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /mlly@1.4.0: + resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} + dependencies: + acorn: 8.9.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.1.2 + dev: true + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -3331,6 +2229,12 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true @@ -3344,19 +2248,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-releases@2.0.12: - resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -3364,8 +2255,8 @@ packages: path-key: 3.1.1 dev: true - /nwsapi@2.2.5: - resolution: {integrity: sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==} + /nwsapi@2.2.6: + resolution: {integrity: sha512-vSZ4miHQ4FojLjmz2+ux4B0/XA16jfwt/LBzIUftDpRd8tujHFkXjMyLwjS08fIZCzesj2z7gJukOKJwqebJAQ==} dev: true /on-headers@1.0.2: @@ -3386,18 +2277,6 @@ packages: mimic-fn: 2.1.0 dev: true - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - dev: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -3410,13 +2289,6 @@ packages: type-check: 0.4.0 dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -3424,11 +2296,11 @@ packages: yocto-queue: 0.1.0 dev: true - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - p-limit: 2.3.0 + yocto-queue: 1.0.0 dev: true /p-locate@5.0.0: @@ -3445,11 +2317,6 @@ packages: aggregate-error: 3.1.0 dev: true - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3457,16 +2324,6 @@ packages: callsites: 3.1.0 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.22.5 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -3505,6 +2362,14 @@ packages: engines: {node: '>=8'} dev: true + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -3514,21 +2379,21 @@ packages: engines: {node: '>=8.6'} dev: true - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true - - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: - find-up: 4.1.0 + jsonc-parser: 3.2.0 + mlly: 1.4.0 + pathe: 1.1.1 dev: true - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} + /postcss@8.4.24: + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: true /prelude-ls@1.2.1: @@ -3558,14 +2423,6 @@ packages: react-is: 18.2.0 dev: true - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -3579,10 +2436,6 @@ packages: engines: {node: '>=6'} dev: true - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} - dev: true - /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true @@ -3624,11 +2477,6 @@ packages: rc: 1.2.8 dev: true - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -3638,28 +2486,11 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true - /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true @@ -3696,6 +2527,10 @@ packages: fsevents: 2.3.2 dev: true + /rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -3721,11 +2556,6 @@ packages: xmlchars: 2.2.0 dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - dev: true - /semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} @@ -3788,12 +2618,12 @@ packages: vscode-textmate: 8.0.0 dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true /slash@3.0.0: @@ -3801,22 +2631,11 @@ packages: engines: {node: '>=8'} dev: true - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -3824,12 +2643,12 @@ packages: escape-string-regexp: 2.0.0 dev: true - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.3.3: + resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} dev: true /string-width@4.2.3: @@ -3864,11 +2683,6 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -3884,6 +2698,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal@1.0.1: + resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + dependencies: + acorn: 8.9.0 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -3898,13 +2718,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -3914,26 +2727,22 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + /tinybench@2.5.0: + resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + /tinypool@0.5.0: + resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.1.1: + resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + engines: {node: '>=14.0.0'} dev: true /to-regex-range@5.0.1: @@ -3953,9 +2762,9 @@ packages: url-parse: 1.5.10 dev: true - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + /tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} dependencies: punycode: 2.3.0 dev: true @@ -3974,13 +2783,6 @@ packages: typescript: 5.0.4 dev: true - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: true - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -3998,17 +2800,12 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: true - /typedoc@0.24.8(typescript@5.1.6): + /typedoc@0.24.8(typescript@5.0.4): resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true @@ -4019,7 +2816,7 @@ packages: marked: 4.3.0 minimatch: 9.0.2 shiki: 0.14.3 - typescript: 5.1.6 + typescript: 5.0.4 dev: true /typescript@5.0.4: @@ -4028,10 +2825,8 @@ packages: hasBin: true dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} - engines: {node: '>=14.17'} - hasBin: true + /ufo@1.1.2: + resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} dev: true /universalify@0.2.0: @@ -4039,17 +2834,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.9): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.9 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: @@ -4070,20 +2854,130 @@ packages: requires-port: 1.0.0 dev: true - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 - dev: true - /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: true + /vite-node@0.32.4(@types/node@20.3.2): + resolution: {integrity: sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.0 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.3.9(@types/node@20.3.2) + transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@4.3.9(@types/node@20.3.2): + resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.3.2 + esbuild: 0.17.19 + postcss: 8.4.24 + rollup: 3.22.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vitest@0.32.4(jsdom@22.1.0): + resolution: {integrity: sha512-3czFm8RnrsWwIzVDu/Ca48Y/M+qh3vOnF16czJm98Q/AN1y3B6PBsyV8Re91Ty5s7txKNjEhpgtGPcfdbh2MZg==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.5 + '@types/chai-subset': 1.3.3 + '@types/node': 20.3.2 + '@vitest/expect': 0.32.4 + '@vitest/runner': 0.32.4 + '@vitest/snapshot': 0.32.4 + '@vitest/spy': 0.32.4 + '@vitest/utils': 0.32.4 + acorn: 8.9.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + jsdom: 22.1.0 + local-pkg: 0.4.3 + magic-string: 0.30.0 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.3.3 + strip-literal: 1.0.1 + tinybench: 2.5.0 + tinypool: 0.5.0 + vite: 4.3.9(@types/node@20.3.2) + vite-node: 0.32.4(@types/node@20.3.2) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true @@ -4099,12 +2993,6 @@ packages: xml-name-validator: 4.0.0 dev: true - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -4122,11 +3010,11 @@ packages: engines: {node: '>=12'} dev: true - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + /whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} dependencies: - tr46: 3.0.0 + tr46: 4.1.1 webidl-conversions: 7.0.0 dev: true @@ -4138,6 +3026,15 @@ packages: isexe: 2.0.0 dev: true + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /widest-line@4.0.1: resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} engines: {node: '>=12'} @@ -4145,20 +3042,6 @@ packages: string-width: 5.1.2 dev: true - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true - /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} @@ -4172,14 +3055,6 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} @@ -4202,38 +3077,16 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true diff --git a/vitest.workspace.ts b/vitest.workspace.ts new file mode 100644 index 00000000..d9387611 --- /dev/null +++ b/vitest.workspace.ts @@ -0,0 +1,5 @@ +import { defineWorkspace } from 'vitest/config' + +export default defineWorkspace([ + 'packages/*' +]) \ No newline at end of file From fa51b39fe2d61694b243f2e8bc5c649010a01c81 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 4 Jul 2023 12:14:55 +0900 Subject: [PATCH 029/182] =?UTF-8?q?vitest=20=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 5 +- pnpm-lock.yaml | 265 +++++-------------------------------- 3 files changed, 35 insertions(+), 237 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 9622004e..0fbfdb4e 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -29,6 +29,6 @@ "typescript": "5.0.4" }, "dependencies": { - "@sora/go-wasm": "^2021.1.0" + "@sora/go-wasm": "workspace:^" } } \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index d40f24bb..a8a4ff15 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -5,7 +5,7 @@ "watch": "rollup -c -w", "lint": "eslint --ext .ts ./src", "fmt": "prettier --write src", - "test": "vitest" + "test": "vitest run" }, "devDependencies": { "@rollup/plugin-commonjs": "25.0.0", @@ -14,7 +14,6 @@ "@rollup/plugin-typescript": "11.1.1", "@shiguredo/lyra-wasm": "2023.1.0", "@swc/core": "1.3.59", - "@types/jest": "29.5.1", "@typescript-eslint/eslint-plugin": "5.59.6", "@typescript-eslint/parser": "5.59.6", "eslint": "8.41.0", @@ -28,7 +27,7 @@ "vitest": "^0.32.4" }, "dependencies": { - "@sora/e2ee": "^2021.1.0", + "@sora/e2ee": "workspace:^", "fflate": "0.7.4" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 67421d1c..0f7ed387 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,12 +16,12 @@ importers: version: 14.2.0 typedoc: specifier: 0.24.8 - version: 0.24.8(typescript@5.0.4) + version: 0.24.8(typescript@5.1.6) packages/e2ee: dependencies: '@sora/go-wasm': - specifier: ^2021.1.0 + specifier: workspace:^ version: link:../go-wasm devDependencies: '@rollup/plugin-node-resolve': @@ -63,7 +63,7 @@ importers: packages/sdk: dependencies: '@sora/e2ee': - specifier: ^2021.1.0 + specifier: workspace:^ version: link:../e2ee fflate: specifier: 0.7.4 @@ -87,9 +87,6 @@ importers: '@swc/core': specifier: 1.3.59 version: 1.3.59 - '@types/jest': - specifier: 29.5.1 - version: 29.5.1 '@typescript-eslint/eslint-plugin': specifier: 5.59.6 version: 5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4) @@ -131,27 +128,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.5 - dev: true - - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - /@esbuild/android-arm64@0.17.19: resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -365,13 +341,13 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint/eslintrc@2.1.0: + resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.5.2 + espree: 9.6.0 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -407,13 +383,6 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - dev: true - /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -421,18 +390,6 @@ packages: '@sinclair/typebox': 0.25.24 dev: true - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.2 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true @@ -685,30 +642,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.3.2 - dev: true - - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest@29.5.1: - resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} - dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 + '@types/node': 20.3.3 dev: true /@types/json-schema@7.0.12: @@ -719,8 +653,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.3.2: - resolution: {integrity: sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==} + /@types/node@20.3.3: + resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==} dev: true /@types/resolve@1.20.2: @@ -731,20 +665,6 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - /@typescript-eslint/eslint-plugin@5.59.6(@typescript-eslint/parser@5.59.6)(eslint@8.41.0)(typescript@5.0.4): resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1003,13 +923,6 @@ packages: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1135,15 +1048,6 @@ packages: chalk: 4.1.2 dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1161,11 +1065,6 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} - dev: true - /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -1185,12 +1084,6 @@ packages: is-wsl: 2.2.0 dev: true - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1198,10 +1091,6 @@ packages: color-name: 1.1.4 dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true @@ -1413,16 +1302,6 @@ packages: '@esbuild/win32-x64': 0.17.19 dev: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1482,7 +1361,7 @@ packages: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 + '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.41.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 @@ -1495,7 +1374,7 @@ packages: escape-string-regexp: 4.0.0 eslint-scope: 7.2.0 eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + espree: 9.6.0 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -1523,8 +1402,8 @@ packages: - supports-color dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.0: + resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.9.0 @@ -1580,17 +1459,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1599,8 +1467,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1752,7 +1620,7 @@ packages: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.0 glob: 7.2.3 ignore: 5.2.4 merge2: 1.4.1 @@ -1765,7 +1633,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.0 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -1783,11 +1651,6 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1964,62 +1827,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.22.5 - '@jest/types': 29.5.0 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.6 - dev: true - - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - dev: true - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2636,13 +2443,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 - dev: true - /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true @@ -2704,13 +2504,6 @@ packages: acorn: 8.9.0 dev: true - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2805,7 +2598,7 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.24.8(typescript@5.0.4): + /typedoc@0.24.8(typescript@5.1.6): resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true @@ -2816,7 +2609,7 @@ packages: marked: 4.3.0 minimatch: 9.0.2 shiki: 0.14.3 - typescript: 5.0.4 + typescript: 5.1.6 dev: true /typescript@5.0.4: @@ -2825,6 +2618,12 @@ packages: hasBin: true dev: true + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /ufo@1.1.2: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} dev: true @@ -2859,7 +2658,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.32.4(@types/node@20.3.2): + /vite-node@0.32.4(@types/node@20.3.3): resolution: {integrity: sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2869,7 +2668,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.3.9(@types/node@20.3.2) + vite: 4.3.9(@types/node@20.3.3) transitivePeerDependencies: - '@types/node' - less @@ -2880,7 +2679,7 @@ packages: - terser dev: true - /vite@4.3.9(@types/node@20.3.2): + /vite@4.3.9(@types/node@20.3.3): resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -2905,7 +2704,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.3.2 + '@types/node': 20.3.3 esbuild: 0.17.19 postcss: 8.4.24 rollup: 3.22.1 @@ -2946,7 +2745,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.3.2 + '@types/node': 20.3.3 '@vitest/expect': 0.32.4 '@vitest/runner': 0.32.4 '@vitest/snapshot': 0.32.4 @@ -2966,8 +2765,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.5.0 - vite: 4.3.9(@types/node@20.3.2) - vite-node: 0.32.4(@types/node@20.3.2) + vite: 4.3.9(@types/node@20.3.3) + vite-node: 0.32.4(@types/node@20.3.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 1871187890e47dab2d23cd0d046f7231e7789973 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 4 Jul 2023 12:23:57 +0900 Subject: [PATCH 030/182] =?UTF-8?q?vitest=20=E3=81=AB=E5=88=87=E3=82=8A?= =?UTF-8?q?=E6=9B=BF=E3=81=88=E3=81=9F=E3=82=89=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=82=89=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=81=AE=E3=81=A7=E3=81=93=E3=81=AE=E3=81=BE=E3=81=BE=E3=81=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/utils.ts | 5 +---- packages/sdk/tsconfig.json | 20 ++++---------------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index 21e18a8d..57bdd8db 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -19,10 +19,7 @@ import { TransportType, } from './types' -// jest のテスト実行時にエラーが出るので以下の import はコメントアウトし自前で定数を定義している -// TODO(sile): 回避方法が分かったら import 方式に戻したい -// import { LYRA_VERSION } from "@shiguredo/lyra-wasm"; -const LYRA_VERSION = '1.3.0' +import { LYRA_VERSION } from '@shiguredo/lyra-wasm' function browser(): Browser { const ua = window.navigator.userAgent.toLocaleLowerCase() diff --git a/packages/sdk/tsconfig.json b/packages/sdk/tsconfig.json index 0fd396df..be886058 100644 --- a/packages/sdk/tsconfig.json +++ b/packages/sdk/tsconfig.json @@ -12,22 +12,10 @@ "allowSyntheticDefaultImports": true, "resolveJsonModule": true, "newLine": "LF", - "types": [ - "jest" - ], - "lib": [ - "esnext", - "dom", - "dom.iterable", - "scripthost" - ], + "types": [], + "lib": ["esnext", "dom", "dom.iterable", "scripthost"], "declarationDir": "../../" }, - "include": [ - "src/**/*.ts" - ], - "exclude": [ - "node_modules", - "tests" - ] + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "tests"] } From db3ef84d2cd1110026197d04b4a9c7f1a81529ab Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 4 Jul 2023 12:25:48 +0900 Subject: [PATCH 031/182] =?UTF-8?q?src=20=E3=82=92=E3=81=84=E3=81=98?= =?UTF-8?q?=E3=81=A3=E3=81=9F=E3=81=AE=E3=81=A7=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/sora.js | 10 +++------- dist/sora.mjs | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/dist/sora.js b/dist/sora.js index 10376720..3489d4d1 100644 --- a/dist/sora.js +++ b/dist/sora.js @@ -781,7 +781,7 @@ * * エンコード形式に非互換な変更が入った時点での google/lyra のバージョンが格納されている。 */ - const LYRA_VERSION$1 = "1.3.0"; + const LYRA_VERSION = "1.3.0"; const DEFAULT_SAMPLE_RATE = 16000; const DEFAULT_BITRATE = 9200; const DEFAULT_ENABLE_DTX = false; @@ -1224,8 +1224,8 @@ */ class LyraParams { constructor(version, bitrate, enableDtx) { - if (version !== LYRA_VERSION$1) { - throw new Error(`Unsupported Lyra version: ${version} (supported version is ${LYRA_VERSION$1})`); + if (version !== LYRA_VERSION) { + throw new Error(`Unsupported Lyra version: ${version} (supported version is ${LYRA_VERSION})`); } if (bitrate !== 3200 && bitrate !== 6000 && bitrate !== 9200) { throw new Error(`Unsupported Lyra bitrate: ${bitrate} (must be one of 3200, 6000, or 9200)`); @@ -2204,10 +2204,6 @@ } catch (e) { } - // jest のテスト実行時にエラーが出るので以下の import はコメントアウトし自前で定数を定義している - // TODO(sile): 回避方法が分かったら import 方式に戻したい - // import { LYRA_VERSION } from "@shiguredo/lyra-wasm"; - const LYRA_VERSION = '1.3.0'; function browser() { const ua = window.navigator.userAgent.toLocaleLowerCase(); if (ua.indexOf('edge') !== -1) { diff --git a/dist/sora.mjs b/dist/sora.mjs index a9118c6f..e0e6cc81 100644 --- a/dist/sora.mjs +++ b/dist/sora.mjs @@ -775,7 +775,7 @@ class SoraE2EE { * * エンコード形式に非互換な変更が入った時点での google/lyra のバージョンが格納されている。 */ -const LYRA_VERSION$1 = "1.3.0"; +const LYRA_VERSION = "1.3.0"; const DEFAULT_SAMPLE_RATE = 16000; const DEFAULT_BITRATE = 9200; const DEFAULT_ENABLE_DTX = false; @@ -1218,8 +1218,8 @@ async function transformLyraToPcm(decoder, encodedFrame, controller) { */ class LyraParams { constructor(version, bitrate, enableDtx) { - if (version !== LYRA_VERSION$1) { - throw new Error(`Unsupported Lyra version: ${version} (supported version is ${LYRA_VERSION$1})`); + if (version !== LYRA_VERSION) { + throw new Error(`Unsupported Lyra version: ${version} (supported version is ${LYRA_VERSION})`); } if (bitrate !== 3200 && bitrate !== 6000 && bitrate !== 9200) { throw new Error(`Unsupported Lyra bitrate: ${bitrate} (must be one of 3200, 6000, or 9200)`); @@ -2198,10 +2198,6 @@ try { } catch (e) { } -// jest のテスト実行時にエラーが出るので以下の import はコメントアウトし自前で定数を定義している -// TODO(sile): 回避方法が分かったら import 方式に戻したい -// import { LYRA_VERSION } from "@shiguredo/lyra-wasm"; -const LYRA_VERSION = '1.3.0'; function browser() { const ua = window.navigator.userAgent.toLocaleLowerCase(); if (ua.indexOf('edge') !== -1) { From 381c108a1ca3fee5126077815ffa1e39b99ef68b Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 4 Jul 2023 12:30:31 +0900 Subject: [PATCH 032/182] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=82=92=E6=9B=B4=E6=96=B0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index df6c7149..3161ebd9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,11 @@ ## develop +- [CHANGE] vitest 化 + + - jest をやめる + - @voluntas + - [CHANGE] pnpm 化 - npx 利用をやめる - @voluntas From 63002576c1cf876cb6f773743448ee21a36197b8 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 14:04:20 +0900 Subject: [PATCH 033/182] =?UTF-8?q?=E4=BD=99=E8=A8=88=E3=81=AA=E4=BE=9D?= =?UTF-8?q?=E5=AD=98=E3=81=8C=E5=A2=97=E3=81=88=E3=82=8B=E3=81=AE=E3=82=92?= =?UTF-8?q?=E9=98=B2=E3=81=90=E3=81=9F=E3=82=81=E3=81=AB=E3=80=81=E3=83=A6?= =?UTF-8?q?=E3=83=BC=E3=82=B6=E3=81=8C=E7=9B=B4=E6=8E=A5=E4=BD=BF=E3=82=8F?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=9E=8B=E3=81=AB=E3=81=AF=20@internal?= =?UTF-8?q?=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=97=E3=81=A6=20.d.ts=20?= =?UTF-8?q?=E3=81=AB=E5=90=AB=E3=81=BE=E3=82=8C=E3=81=AA=E3=81=84=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 2 ++ packages/sdk/src/lyra.ts | 10 ++++++++++ packages/sdk/tsconfig.json | 1 + 3 files changed, 13 insertions(+) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 61467bbd..b5b68940 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -189,6 +189,8 @@ export default class ConnectionBase { protected callbacks: Callbacks /** * E2EE インスタンス + * + * @internal */ protected e2ee: SoraE2EE | null /** diff --git a/packages/sdk/src/lyra.ts b/packages/sdk/src/lyra.ts index 9aac6c69..7b6d55cd 100644 --- a/packages/sdk/src/lyra.ts +++ b/packages/sdk/src/lyra.ts @@ -86,6 +86,7 @@ export function initLyra(config: LyraConfig): boolean { * Lyra が初期化済みかどうか * * @returns Lyra が初期化済みかどうか + * @internal */ export function isLyraInitialized(): boolean { return LYRA_CONFIG !== undefined @@ -97,6 +98,7 @@ export function isLyraInitialized(): boolean { * @param options エンコーダに指定するオプション * @returns Lyra エンコーダのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function createLyraEncoder(options: LyraEncoderOptions = {}): Promise { return (await loadLyraModule()).createEncoder(options) @@ -108,6 +110,7 @@ async function createLyraEncoder(options: LyraEncoderOptions = {}): Promise { return (await loadLyraModule()).createDecoder(options) @@ -120,6 +123,7 @@ async function createLyraDecoder(options: LyraDecoderOptions = {}): Promise { if (LYRA_CONFIG === undefined) { @@ -137,6 +141,7 @@ async function loadLyraModule(): Promise { * WebRTC Encoded Transform に渡される Lyra 用の web worker を生成する * * @returns Lyra でエンコードおよびデコードを行う web worker インスタンス + * @internal */ export function createLyraWorker() { const lyraWorkerScript = atob(LYRA_WORKER_SCRIPT) @@ -152,6 +157,7 @@ export function createLyraWorker() { * @param encoder Lyra エンコーダ * @param encodedFrame PCM 音声データ * @param controller 音声データの出力キュー + * @internal */ export async function transformPcmToLyra( encoder: LyraEncoder, @@ -178,6 +184,7 @@ export async function transformPcmToLyra( * @param decoder Lyra デコーダ * @param encodedFrame Lyra でエンコードされた音声データ * @param controller 音声データの出力キュー + * @internal */ export async function transformLyraToPcm( decoder: LyraDecoder, @@ -208,6 +215,7 @@ export async function transformLyraToPcm( /** * SDP に記載される Lyra のエンコードパラメータ + * @internal */ export class LyraParams { /** @@ -278,6 +286,8 @@ export class LyraParams { /** * 接続単位の Lyra 関連の状態を保持するためのクラス + * + * @internal */ export class LyraState { private encoderOptions: LyraEncoderOptions = {} diff --git a/packages/sdk/tsconfig.json b/packages/sdk/tsconfig.json index be886058..41a45e82 100644 --- a/packages/sdk/tsconfig.json +++ b/packages/sdk/tsconfig.json @@ -11,6 +11,7 @@ "esModuleInterop": true, "allowSyntheticDefaultImports": true, "resolveJsonModule": true, + "stripInternal": true, "newLine": "LF", "types": [], "lib": ["esnext", "dom", "dom.iterable", "scripthost"], From fab6e782c4576fd61a1362c7513cb2bfac3a5372 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 14:07:24 +0900 Subject: [PATCH 034/182] Update CHANGES.md --- CHANGES.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 3161ebd9..49f4c372 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,8 +11,12 @@ ## develop -- [CHANGE] vitest 化 +- [FIX] 余計な依存が増えるのを防ぐために、ユーザが直接使わない型には @internalを指定して .d.ts に含まれないようにする + - sora-js-sdk 内部で使われている E2EE と Lyra 関連の型が生成される .d.ts ファイルに含まれないようにする + - これによって sora-js-sdk の利用者は tsconfig.json に `skipLibCheck: true` を指定せずともコンパイルができるようになる + - @sile +- [CHANGE] vitest 化 - jest をやめる - @voluntas From 6da7ff8a42debf645537a528bf1764ca20f93e98 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 14:14:55 +0900 Subject: [PATCH 035/182] =?UTF-8?q?=E7=94=9F=E6=88=90=E7=89=A9=E3=82=92?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/base.d.ts | 5 --- dist/lyra.d.ts | 102 ------------------------------------------------- dist/sora.js | 12 +++++- dist/sora.mjs | 12 +++++- 4 files changed, 22 insertions(+), 109 deletions(-) diff --git a/dist/base.d.ts b/dist/base.d.ts index 5970c15f..ec117e69 100644 --- a/dist/base.d.ts +++ b/dist/base.d.ts @@ -1,5 +1,4 @@ import { Callbacks, ConnectionOptions, JSONType, DataChannelConfiguration, SignalingOfferMessage, SignalingReOfferMessage, SignalingUpdateMessage } from './types'; -import SoraE2EE from '@sora/e2ee'; declare global { interface Algorithm { namedCurve: string; @@ -128,10 +127,6 @@ export default class ConnectionBase { * イベントコールバックのリスト */ protected callbacks: Callbacks; - /** - * E2EE インスタンス - */ - protected e2ee: SoraE2EE | null; /** * mid と AudioCodecType の対応づけを保持するマップ * diff --git a/dist/lyra.d.ts b/dist/lyra.d.ts index 1f3fd586..78b39998 100644 --- a/dist/lyra.d.ts +++ b/dist/lyra.d.ts @@ -1,5 +1,3 @@ -import { RTCEncodedAudioFrame } from './types'; -import { LyraEncoder, LyraDecoder } from '@shiguredo/lyra-wasm'; /** * Lyra の設定情報 */ @@ -33,103 +31,3 @@ export interface LyraConfig { * @public */ export declare function initLyra(config: LyraConfig): boolean; -/*** - * Lyra が初期化済みかどうか - * - * @returns Lyra が初期化済みかどうか - */ -export declare function isLyraInitialized(): boolean; -/** - * WebRTC Encoded Transform に渡される Lyra 用の web worker を生成する - * - * @returns Lyra でエンコードおよびデコードを行う web worker インスタンス - */ -export declare function createLyraWorker(): Worker; -/** - * PCM(L16)の音声データを Lyra でエンコードする - * - * @param encoder Lyra エンコーダ - * @param encodedFrame PCM 音声データ - * @param controller 音声データの出力キュー - */ -export declare function transformPcmToLyra(encoder: LyraEncoder, encodedFrame: RTCEncodedAudioFrame, controller: TransformStreamDefaultController): Promise; -/** - * Lyra でエンコードされた音声データをデコードして PCM(L16)に変換する - * - * @param decoder Lyra デコーダ - * @param encodedFrame Lyra でエンコードされた音声データ - * @param controller 音声データの出力キュー - */ -export declare function transformLyraToPcm(decoder: LyraDecoder, encodedFrame: RTCEncodedAudioFrame, controller: TransformStreamDefaultController): Promise; -/** - * SDP に記載される Lyra のエンコードパラメータ - */ -export declare class LyraParams { - /** - * Lyra のエンコードフォーマットのバージョン - */ - readonly version: string; - /** - * エンコードビットレート - */ - readonly bitrate: 3200 | 6000 | 9200; - /** - * DTX を有効にするかどうか - */ - readonly enableDtx: boolean; - private constructor(); - /** - * SDP の media description 部分をパースして Lyra のエンコードパラメータを取得する - * - * @param media SDP の media description 部分 - * @returns パース結果 - * @throws SDP の内容が期待通りではなくパースに失敗した場合 - */ - static parseMediaDescription(media: string): LyraParams; - /** - * このエンコードパラメータに対応する SDP の fmtp 行を生成する - * - * @returns SDP の fmtp 行 - */ - toFmtpString(): string; -} -/** - * 接続単位の Lyra 関連の状態を保持するためのクラス - */ -export declare class LyraState { - private encoderOptions; - private midToLyraParams; - /** - * offer SDP を受け取り Lyra 対応のために必要な置換や情報の収集を行う - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - processOfferSdp(sdp: string): string; - /** - * setLocalDescription() に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForLocal(sdp: string): string; - /** - * Sora に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForSora(sdp: string): string; - /** - * Lyra のエンコーダを生成する - * - * @returns 生成されたエンコーダ - */ - createEncoder(): Promise; - /** - * Lyra のデコーダを生成する - * - * @returns 生成されたデコーダ - */ - createDecoder(): Promise; -} diff --git a/dist/sora.js b/dist/sora.js index 3489d4d1..ada91bab 100644 --- a/dist/sora.js +++ b/dist/sora.js @@ -1071,7 +1071,7 @@ /** * ビルド時に lyra_worker.ts のビルド結果(の base64 )で置換される文字列 */ - const LYRA_WORKER_SCRIPT = 'KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOgogICAgZmFjdG9yeSgpOwp9KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBAc2hpZ3VyZWRvL2x5cmEtd2FzbQogICAgICogTHlyYSBWMiBXZWJBc3NlbWJseSBidWlsZAogICAgICogQHZlcnNpb246IDIwMjIuMi4wCiAgICAgKiBAYXV0aG9yOiBTaGlndXJlZG8gSW5jLgogICAgICogQGxpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICAqKi8KCiAgICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgICBjb25zdCBERUZBVUxUX0JJVFJBVEUgPSA5MjAwOwogICAgY29uc3QgREVGQVVMVF9FTkFCTEVfRFRYID0gZmFsc2U7CiAgICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICAgIC8qKgogICAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYUVuY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44Ko44Oz44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog54++5Zyo44Gu44Ko44Oz44Kz44O844OJ44OT44OD44OI44Os44O844OICiAgICAgICAgICovCiAgICAgICAgYml0cmF0ZTsKICAgICAgICAvKioKICAgICAgICAgKiBEVFgg44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44Gp44GG44GLCiAgICAgICAgICovCiAgICAgICAgZW5hYmxlRHR4OwogICAgICAgIC8qKgogICAgICAgICAqIOS4gOOBpOOBruODleODrOODvOODoO+8iHtAbGluayBMeXJhRW5jb2Rlci5lbmNvZGV9IOODoeOCveODg+ODieOBq+a4oeOBmemfs+WjsOODh+ODvOOCv++8ieOBq+WQq+OCgeOCi+OCteODs+ODl+ODq+aVsAogICAgICAgICAqLwogICAgICAgIGZyYW1lU2l6ZTsKICAgICAgICAvKioKICAgICAgICAgKiBAaW50ZXJuYWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwb3J0LCBmcmFtZVNpemUsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDsKICAgICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSBmcmFtZVNpemU7CiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IG9wdGlvbnMuc2FtcGxlUmF0ZSB8fCBERUZBVUxUX1NBTVBMRV9SQVRFOwogICAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gb3B0aW9ucy5iaXRyYXRlIHx8IERFRkFVTFRfQklUUkFURTsKICAgICAgICAgICAgdGhpcy5lbmFibGVEdHggPSBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFg7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIDIwbXMg5YiG44Gu6Z+z5aOw44OH44O844K/44KS44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiDjgarjgYogYXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBhdWRpb0RhdGEg44Kk44Oz44K544K/44Oz44K544Gu5L2/44GE5Zue44GX44Gv44Gn44GN44Gq44GE77yJCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW1zIGF1ZGlvRGF0YSDjgqjjg7PjgrPjg7zjg4nlr77osaHjga7pn7Plo7Djg4fjg7zjgr8KICAgICAgICAgKiBAcmV0dXJucyDjgqjjg7PjgrPjg7zjg4nlvozjga7jg5DjgqTjg4jliJfjgILjgoLjgZcgRFRYIOOBjOacieWKueOBp+mfs+WjsOODh+ODvOOCv+OBjOeEoemfs+OBquWgtOWQiOOBq+OBryB1bmRlZmluZWQg44GM5Luj44KP44KK44Gr6L+U44GV44KM44KL44CCCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzCiAgICAgICAgICoKICAgICAgICAgKiDku6XkuIvjga7jgYTjgZrjgozjgYvjgavoqbLlvZPjgZnjgovloLTlkIjjgavjga/kvovlpJbjgYzpgIHlh7rjgZXjgozjgos6CiAgICAgICAgICogLSDlhaXlipvpn7Plo7Djg4fjg7zjgr/jgYwgMjBtcyDljZjkvY3vvIjjgrXjg7Pjg5fjg6vmlbDjgajjgZfjgabjga8ge0BsaW5rIEx5cmFFbmNvZGVyLmZyYW1lU2l6ZX3vvInjgafjga/jgarjgYQKICAgICAgICAgKiAtIOOBneOBruS7luOAgeS9leOCieOBi+OBrueQhueUseOBp+OCqOODs+OCs+ODvOODieOBq+WkseaVl+OBl+OBn+WgtOWQiAogICAgICAgICAqLwogICAgICAgIGVuY29kZShhdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5lbmNvZGVkQXVkaW9EYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZW5jb2RlIiwgYXVkaW9EYXRhIH0sIFthdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiDjgqjjg7PjgrPjg7zjg4DnlKjjgavnorrkv53jgZfjgZ/jg6rjgr3jg7zjgrnjgpLop6PmlL7jgZnjgosKICAgICAgICAgKi8KICAgICAgICBkZXN0cm95KCkgewogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZGVzdHJveSIgfSk7CiAgICAgICAgICAgIHRoaXMucG9ydC5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJTdGF0ZX0g44GL44KJIHtAbGluayBMeXJhRW5jb2Rlcn0g44KS5b6p5YWD44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJ9IOOBryB7QGxpbmsgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKX0g44KS5L2/44Gj44Gm44CBCiAgICAgICAgICog5Yil44GuIHdlYiB3b3JrZXIg44Gr6Lui6YCB44GZ44KL44GT44Go44GM5Y+v6IO944CCCiAgICAgICAgICog44Gf44Gg44GX44CB6Lui6YCB5pmC44Gr44Gv44Kv44Op44K544KE44Oh44K944OD44OJ44Gu54q25oWL44Gv6JC944Gh44Gm44GX44G+44GG44Gu44Gn44CBCiAgICAgICAgICog44Gd44KM44KS5b6p5YWD44GX44Gm5YaN44Gz5Yip55So5Y+v6IO944Gr44GZ44KL44Gf44KB44Gu6Zai5pWw44CCCiAgICAgICAgICog44Gq44GK44CB6Lui6YCB44Gu6Zqb44Gr44GvIHtAbGluayBMeXJhRW5jb2Rlci5wb3J0fSDjga7miYDmnInmqKnjgpLnp7vorbLjgZnjgovlv4XopoHjgYzjgYLjgovjgIIKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdGF0ZSDjgqjjg7PjgrPjg7zjg4Djga7nirbmhYsKICAgICAgICAgKiBAcmV0dXJuIOW+qeWFg+OBleOCjOOBn+OCqOODs+OCs+ODvOODgAogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBmcm9tU3RhdGUoc3RhdGUpIHsKICAgICAgICAgICAgc3RhdGUucG9ydC5zdGFydCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFFbmNvZGVyKHN0YXRlLnBvcnQsIHN0YXRlLmZyYW1lU2l6ZSwgc3RhdGUpOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjga7jg4fjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYURlY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44OH44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog5LiA44Gk44Gu44OV44Os44O844Og77yIe0BsaW5rIEx5cmFFbmNvZGVyLmRlY29kZX0g44Oh44K944OD44OJ44Gu6L+U44KK5YCk44Gu6Z+z5aOw44OH44O844K/77yJ44Gr5ZCr44G+44KM44KL44K144Oz44OX44Or5pWwCiAgICAgICAgICovCiAgICAgICAgZnJhbWVTaXplOwogICAgICAgIC8qKgogICAgICAgICAqIEBpbnRlcm5hbAogICAgICAgICAqLwogICAgICAgIGNvbnN0cnVjdG9yKHBvcnQsIGZyYW1lU2l6ZSwgb3B0aW9ucykgewogICAgICAgICAgICB0aGlzLnBvcnQgPSBwb3J0OwogICAgICAgICAgICB0aGlzLmZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXIuZW5jb2RlfSDjg6Hjgr3jg4Pjg4njgavjgojjgaPjgabjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZnjgosKICAgICAgICAgKgogICAgICAgICAqIOOBquOBiiBlbmNvZGVkQXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBlbmNvZGVkQXVkaW9EYXRhIOOCpOODs+OCueOCv+ODs+OCueOBruS9v+OBhOWbnuOBl+OBr+OBp+OBjeOBquOBhO+8iQogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtcyBlbmNvZGVkQXVkaW9EYXRhIOODh+OCs+ODvOODieWvvuixoeOBruODkOOCpOODiuODquWIl+OBquOBhOOBlyB1bmRlZmluZWQKICAgICAgICAgKiBAcmV0dXJucyDjg4fjgrPjg7zjg4njgZXjgozjgZ8gMjBtcyDliIbjga7pn7Plo7Djg4fjg7zjgr/jgIJ1bmRlZmluZWQg44GM5rih44GV44KM44Gf5aC05ZCI44Gr44Gv5Luj44KP44KK44Gr44Kz44Oz44OV44Kp44O844OI44OO44Kk44K644GM55Sf5oiQ44GV44KM44KL44CCCiAgICAgICAgICovCiAgICAgICAgZGVjb2RlKGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZWNvZGUiLCBlbmNvZGVkQXVkaW9EYXRhIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogIkx5cmFEZWNvZGVyLmRlY29kZSIsIGVuY29kZWRBdWRpb0RhdGEgfSwgW2VuY29kZWRBdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIOODh+OCs+ODvOODgOeUqOOBq+eiuuS/neOBl+OBn+ODquOCveODvOOCueOCkuino+aUvuOBmeOCiwogICAgICAgICAqLwogICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZXN0cm95IiB9KTsKICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2RlclN0YXRlfSDjgYvjgokge0BsaW5rIEx5cmFEZWNvZGVyfSDjgpLlvqnlhYPjgZnjgosKICAgICAgICAgKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2Rlcn0g44GvIHtAbGluayBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpfSDjgpLkvb/jgaPjgabjgIEKICAgICAgICAgKiDliKXjga4gd2ViIHdvcmtlciDjgavou6LpgIHjgZnjgovjgZPjgajjgYzlj6/og73jgIIKICAgICAgICAgKiDjgZ/jgaDjgZfjgIHou6LpgIHmmYLjgavjga/jgq/jg6njgrnjgoTjg6Hjgr3jg4Pjg4njga7nirbmhYvjga/okL3jgaHjgabjgZfjgb7jgYbjga7jgafjgIEKICAgICAgICAgKiDjgZ3jgozjgpLlvqnlhYPjgZfjgablho3jgbPliKnnlKjlj6/og73jgavjgZnjgovjgZ/jgoHjga7plqLmlbDjgIIKICAgICAgICAgKiDjgarjgYrjgIHou6LpgIHjga7pmpvjgavjga8ge0BsaW5rIEx5cmFEZWNvZGVyLnBvcnR9IOOBruaJgOacieaoqeOCkuenu+itsuOBmeOCi+W/heimgeOBjOOBguOCi+OAggogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0YXRlIOODh+OCs+ODvOODgOOBrueKtuaFiwogICAgICAgICAqIEByZXR1cm4g5b6p5YWD44GV44KM44Gf44OH44Kz44O844OACiAgICAgICAgICovCiAgICAgICAgc3RhdGljIGZyb21TdGF0ZShzdGF0ZSkgewogICAgICAgICAgICBzdGF0ZS5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgTHlyYURlY29kZXIoc3RhdGUucG9ydCwgc3RhdGUuZnJhbWVTaXplLCBzdGF0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUENN77yITDE277yJ44Gu6Z+z5aOw44OH44O844K/44KSIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGVuY29kZXIgTHlyYSDjgqjjg7PjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgUENNIOmfs+WjsOODh+ODvOOCvwogICAgICogQHBhcmFtIGNvbnRyb2xsZXIg6Z+z5aOw44OH44O844K/44Gu5Ye65Yqb44Kt44Ol44O8CiAgICAgKi8KICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybVBjbVRvTHlyYShlbmNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGVuY29kZWRGcmFtZS5kYXRhKTsKICAgICAgICBjb25zdCByYXdEYXRhID0gbmV3IEludDE2QXJyYXkoZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aCAvIDIpOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAgICAgIHJhd0RhdGFbaSAvIDJdID0gdmlldy5nZXRJbnQxNihpLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGVuY29kZWQgPSBhd2FpdCBlbmNvZGVyLmVuY29kZShyYXdEYXRhKTsKICAgICAgICBpZiAoZW5jb2RlZCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIC8vIERUWCDjgYzmnInlirnjgIHjgYvjgaTjgIEgZW5jb2RlZEZyYW1lIOOBjOeEoemfs++8iOOBquOBhOOBl+ODjuOCpOOCuuOBruOBv+OCkuWQq+OCk+OBp+OBhOOCi++8ieWgtOWQiOOBq+OBr+OBk+OBk+OBq+adpeOCiwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGVuY29kZWRGcmFtZS5kYXRhID0gZW5jb2RlZC5idWZmZXI7CiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZWRGcmFtZSk7CiAgICB9CiAgICAvKioKICAgICAqIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GV44KM44Gf6Z+z5aOw44OH44O844K/44KS44OH44Kz44O844OJ44GX44GmIFBDTe+8iEwxNu+8ieOBq+WkieaPm+OBmeOCiwogICAgICoKICAgICAqIEBwYXJhbSBkZWNvZGVyIEx5cmEg44OH44Kz44O844OACiAgICAgKiBAcGFyYW0gZW5jb2RlZEZyYW1lIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GV44KM44Gf6Z+z5aOw44OH44O844K/CiAgICAgKiBAcGFyYW0gY29udHJvbGxlciDpn7Plo7Djg4fjg7zjgr/jga7lh7rlipvjgq3jg6Xjg7wKICAgICAqLwogICAgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtTHlyYVRvUGNtKGRlY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgIGlmIChlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoID09PSAzKSB7CiAgICAgICAgICAgIC8vIGUyZWUg44KS5pyJ5Yq544Gr44GX44Gf5aC05ZCI44Gr44Gv44CBZTJlZSDjg6Ljgrjjg6Xjg7zjg6vjgYzkuI3mmI7jgarjg5HjgrHjg4Pjg4jjgpLlj5fkv6HjgZfjgZ/loLTlkIjjgasKICAgICAgICAgICAgLy8gb3B1cyDjga7nhKHpn7Pjg5HjgrHjg4Pjg4jjgpLnlJ/miJDjgZnjgovjga7jgafjgZ3jgozjgpLnhKHoppbjgZnjgovjgIIKICAgICAgICAgICAgLy8g44Gq44GK44CBc2VuZHJlY3Ygb3Igc2VuZG9ubHkg44Gn5o6l57aa55u05b6M44Gr55Sf5oiQ44GV44KM44Gf44OR44Kx44OD44OI44KS5Y+X5L+h44GZ44KL44Go5bi444Gr44GT44GT44Gr44GP44KL5qih5qeY44CCCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEx5cmEg44Gn44Gv5Zyn57iu5b6M44Gu6Z+z5aOw44OH44O844K/44K144Kk44K644GM5Zu65a6a6Kq/44Gn44CBMyDjg5DjgqTjg4jjgajjgarjgovjgZPjgajjga/jgarjgYTjga7jgafjgIEKICAgICAgICAgICAgLy8g44GT44Gu5p2h5Lu244Gn5q2j5bi444GqIEx5cmEg44OR44Kx44OD44OI44GM5o2o44Gm44KJ44KM44KL44GT44Go44Gv44Gq44GE44CCCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEZJWE1FKHNpemUpOiBlMmVlIOWBtOOBi+OCiSBvcHVzIOOCkuS7ruWumuOBl+OBn+eEoemfs+eUn+aIkOOCs+ODvOODieOBjOOBquOBj+OBquOBo+OBn+OCieOBk+OBruODr+ODvOOCr+OCouODqeOCpuODs+ODieOCgumZpOWOu+OBmeOCiwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlY29kZWQgPSBhd2FpdCBkZWNvZGVyLmRlY29kZShuZXcgVWludDhBcnJheShlbmNvZGVkRnJhbWUuZGF0YSkpOwogICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihkZWNvZGVkLmxlbmd0aCAqIDIpOwogICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKICAgICAgICBmb3IgKGNvbnN0IFtpLCB2XSBvZiBkZWNvZGVkLmVudHJpZXMoKSkgewogICAgICAgICAgICB2aWV3LnNldEludDE2KGkgKiAyLCB2LCBmYWxzZSk7CiAgICAgICAgfQogICAgICAgIGVuY29kZWRGcmFtZS5kYXRhID0gYnVmZmVyOwogICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVkRnJhbWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZVNlbmRlclRyYW5zZm9ybShlbmNvZGVyU3RhdGUpIHsKICAgICAgICBjb25zdCBlbmNvZGVyID0gTHlyYUVuY29kZXIuZnJvbVN0YXRlKGVuY29kZXJTdGF0ZSk7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICBhc3luYyB0cmFuc2Zvcm0oZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc2Zvcm1QY21Ub0x5cmEoZW5jb2RlciwgZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2goKSB7CiAgICAgICAgICAgICAgICBlbmNvZGVyLmRlc3Ryb3koKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGNyZWF0ZVJlY2VpdmVyVHJhbnNmb3JtKGRlY29kZXJTdGF0ZSkgewogICAgICAgIGNvbnN0IGRlY29kZXIgPSBMeXJhRGVjb2Rlci5mcm9tU3RhdGUoZGVjb2RlclN0YXRlKTsKICAgICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CiAgICAgICAgICAgIGFzeW5jIHRyYW5zZm9ybShlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgICAgIGF3YWl0IHRyYW5zZm9ybUx5cmFUb1BjbShkZWNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBmbHVzaCgpIHsKICAgICAgICAgICAgICAgIGRlY29kZXIuZGVzdHJveSgpOwogICAgICAgICAgICB9LAogICAgICAgIH0pOwogICAgfQogICAgb25ydGN0cmFuc2Zvcm0gPSAobXNnKSA9PiB7CiAgICAgICAgaWYgKG1zZy50cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUgPT0gJ3NlbmRlclRyYW5zZm9ybScpIHsKICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlU2VuZGVyVHJhbnNmb3JtKG1zZy50cmFuc2Zvcm1lci5vcHRpb25zLmx5cmFFbmNvZGVyKTsKICAgICAgICAgICAgbXNnLnRyYW5zZm9ybWVyLnJlYWRhYmxlCiAgICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtKQogICAgICAgICAgICAgICAgLnBpcGVUbyhtc2cudHJhbnNmb3JtZXIud3JpdGFibGUpCiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUud2FybihlKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG1zZy50cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUgPT0gJ3JlY2VpdmVyVHJhbnNmb3JtJykgewogICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjcmVhdGVSZWNlaXZlclRyYW5zZm9ybShtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5seXJhRGVjb2Rlcik7CiAgICAgICAgICAgIG1zZy50cmFuc2Zvcm1lci5yZWFkYWJsZQogICAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgIC5waXBlVG8obXNnLnRyYW5zZm9ybWVyLndyaXRhYmxlKQogICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLndhcm4oZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY29uc29sZS53YXJuKCd1bmtub3duIG1lc3NhZ2UnKTsKICAgICAgICAgICAgY29uc29sZS53YXJuKG1zZyk7CiAgICAgICAgfQogICAgfTsKCn0pKTsK'; + const LYRA_WORKER_SCRIPT = 'KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOgogICAgZmFjdG9yeSgpOwp9KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBAc2hpZ3VyZWRvL2x5cmEtd2FzbQogICAgICogTHlyYSBWMiBXZWJBc3NlbWJseSBidWlsZAogICAgICogQHZlcnNpb246IDIwMjIuMi4wCiAgICAgKiBAYXV0aG9yOiBTaGlndXJlZG8gSW5jLgogICAgICogQGxpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICAqKi8KCiAgICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgICBjb25zdCBERUZBVUxUX0JJVFJBVEUgPSA5MjAwOwogICAgY29uc3QgREVGQVVMVF9FTkFCTEVfRFRYID0gZmFsc2U7CiAgICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICAgIC8qKgogICAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYUVuY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44Ko44Oz44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog54++5Zyo44Gu44Ko44Oz44Kz44O844OJ44OT44OD44OI44Os44O844OICiAgICAgICAgICovCiAgICAgICAgYml0cmF0ZTsKICAgICAgICAvKioKICAgICAgICAgKiBEVFgg44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44Gp44GG44GLCiAgICAgICAgICovCiAgICAgICAgZW5hYmxlRHR4OwogICAgICAgIC8qKgogICAgICAgICAqIOS4gOOBpOOBruODleODrOODvOODoO+8iHtAbGluayBMeXJhRW5jb2Rlci5lbmNvZGV9IOODoeOCveODg+ODieOBq+a4oeOBmemfs+WjsOODh+ODvOOCv++8ieOBq+WQq+OCgeOCi+OCteODs+ODl+ODq+aVsAogICAgICAgICAqLwogICAgICAgIGZyYW1lU2l6ZTsKICAgICAgICAvKioKICAgICAgICAgKiBAaW50ZXJuYWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwb3J0LCBmcmFtZVNpemUsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDsKICAgICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSBmcmFtZVNpemU7CiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IG9wdGlvbnMuc2FtcGxlUmF0ZSB8fCBERUZBVUxUX1NBTVBMRV9SQVRFOwogICAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gb3B0aW9ucy5iaXRyYXRlIHx8IERFRkFVTFRfQklUUkFURTsKICAgICAgICAgICAgdGhpcy5lbmFibGVEdHggPSBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFg7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIDIwbXMg5YiG44Gu6Z+z5aOw44OH44O844K/44KS44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiDjgarjgYogYXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBhdWRpb0RhdGEg44Kk44Oz44K544K/44Oz44K544Gu5L2/44GE5Zue44GX44Gv44Gn44GN44Gq44GE77yJCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW1zIGF1ZGlvRGF0YSDjgqjjg7PjgrPjg7zjg4nlr77osaHjga7pn7Plo7Djg4fjg7zjgr8KICAgICAgICAgKiBAcmV0dXJucyDjgqjjg7PjgrPjg7zjg4nlvozjga7jg5DjgqTjg4jliJfjgILjgoLjgZcgRFRYIOOBjOacieWKueOBp+mfs+WjsOODh+ODvOOCv+OBjOeEoemfs+OBquWgtOWQiOOBq+OBryB1bmRlZmluZWQg44GM5Luj44KP44KK44Gr6L+U44GV44KM44KL44CCCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzCiAgICAgICAgICoKICAgICAgICAgKiDku6XkuIvjga7jgYTjgZrjgozjgYvjgavoqbLlvZPjgZnjgovloLTlkIjjgavjga/kvovlpJbjgYzpgIHlh7rjgZXjgozjgos6CiAgICAgICAgICogLSDlhaXlipvpn7Plo7Djg4fjg7zjgr/jgYwgMjBtcyDljZjkvY3vvIjjgrXjg7Pjg5fjg6vmlbDjgajjgZfjgabjga8ge0BsaW5rIEx5cmFFbmNvZGVyLmZyYW1lU2l6ZX3vvInjgafjga/jgarjgYQKICAgICAgICAgKiAtIOOBneOBruS7luOAgeS9leOCieOBi+OBrueQhueUseOBp+OCqOODs+OCs+ODvOODieOBq+WkseaVl+OBl+OBn+WgtOWQiAogICAgICAgICAqLwogICAgICAgIGVuY29kZShhdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5lbmNvZGVkQXVkaW9EYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZW5jb2RlIiwgYXVkaW9EYXRhIH0sIFthdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiDjgqjjg7PjgrPjg7zjg4DnlKjjgavnorrkv53jgZfjgZ/jg6rjgr3jg7zjgrnjgpLop6PmlL7jgZnjgosKICAgICAgICAgKi8KICAgICAgICBkZXN0cm95KCkgewogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZGVzdHJveSIgfSk7CiAgICAgICAgICAgIHRoaXMucG9ydC5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJTdGF0ZX0g44GL44KJIHtAbGluayBMeXJhRW5jb2Rlcn0g44KS5b6p5YWD44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJ9IOOBryB7QGxpbmsgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKX0g44KS5L2/44Gj44Gm44CBCiAgICAgICAgICog5Yil44GuIHdlYiB3b3JrZXIg44Gr6Lui6YCB44GZ44KL44GT44Go44GM5Y+v6IO944CCCiAgICAgICAgICog44Gf44Gg44GX44CB6Lui6YCB5pmC44Gr44Gv44Kv44Op44K544KE44Oh44K944OD44OJ44Gu54q25oWL44Gv6JC944Gh44Gm44GX44G+44GG44Gu44Gn44CBCiAgICAgICAgICog44Gd44KM44KS5b6p5YWD44GX44Gm5YaN44Gz5Yip55So5Y+v6IO944Gr44GZ44KL44Gf44KB44Gu6Zai5pWw44CCCiAgICAgICAgICog44Gq44GK44CB6Lui6YCB44Gu6Zqb44Gr44GvIHtAbGluayBMeXJhRW5jb2Rlci5wb3J0fSDjga7miYDmnInmqKnjgpLnp7vorbLjgZnjgovlv4XopoHjgYzjgYLjgovjgIIKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdGF0ZSDjgqjjg7PjgrPjg7zjg4Djga7nirbmhYsKICAgICAgICAgKiBAcmV0dXJuIOW+qeWFg+OBleOCjOOBn+OCqOODs+OCs+ODvOODgAogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBmcm9tU3RhdGUoc3RhdGUpIHsKICAgICAgICAgICAgc3RhdGUucG9ydC5zdGFydCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFFbmNvZGVyKHN0YXRlLnBvcnQsIHN0YXRlLmZyYW1lU2l6ZSwgc3RhdGUpOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjga7jg4fjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYURlY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44OH44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog5LiA44Gk44Gu44OV44Os44O844Og77yIe0BsaW5rIEx5cmFFbmNvZGVyLmRlY29kZX0g44Oh44K944OD44OJ44Gu6L+U44KK5YCk44Gu6Z+z5aOw44OH44O844K/77yJ44Gr5ZCr44G+44KM44KL44K144Oz44OX44Or5pWwCiAgICAgICAgICovCiAgICAgICAgZnJhbWVTaXplOwogICAgICAgIC8qKgogICAgICAgICAqIEBpbnRlcm5hbAogICAgICAgICAqLwogICAgICAgIGNvbnN0cnVjdG9yKHBvcnQsIGZyYW1lU2l6ZSwgb3B0aW9ucykgewogICAgICAgICAgICB0aGlzLnBvcnQgPSBwb3J0OwogICAgICAgICAgICB0aGlzLmZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXIuZW5jb2RlfSDjg6Hjgr3jg4Pjg4njgavjgojjgaPjgabjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZnjgosKICAgICAgICAgKgogICAgICAgICAqIOOBquOBiiBlbmNvZGVkQXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBlbmNvZGVkQXVkaW9EYXRhIOOCpOODs+OCueOCv+ODs+OCueOBruS9v+OBhOWbnuOBl+OBr+OBp+OBjeOBquOBhO+8iQogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtcyBlbmNvZGVkQXVkaW9EYXRhIOODh+OCs+ODvOODieWvvuixoeOBruODkOOCpOODiuODquWIl+OBquOBhOOBlyB1bmRlZmluZWQKICAgICAgICAgKiBAcmV0dXJucyDjg4fjgrPjg7zjg4njgZXjgozjgZ8gMjBtcyDliIbjga7pn7Plo7Djg4fjg7zjgr/jgIJ1bmRlZmluZWQg44GM5rih44GV44KM44Gf5aC05ZCI44Gr44Gv5Luj44KP44KK44Gr44Kz44Oz44OV44Kp44O844OI44OO44Kk44K644GM55Sf5oiQ44GV44KM44KL44CCCiAgICAgICAgICovCiAgICAgICAgZGVjb2RlKGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZWNvZGUiLCBlbmNvZGVkQXVkaW9EYXRhIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogIkx5cmFEZWNvZGVyLmRlY29kZSIsIGVuY29kZWRBdWRpb0RhdGEgfSwgW2VuY29kZWRBdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIOODh+OCs+ODvOODgOeUqOOBq+eiuuS/neOBl+OBn+ODquOCveODvOOCueOCkuino+aUvuOBmeOCiwogICAgICAgICAqLwogICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZXN0cm95IiB9KTsKICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2RlclN0YXRlfSDjgYvjgokge0BsaW5rIEx5cmFEZWNvZGVyfSDjgpLlvqnlhYPjgZnjgosKICAgICAgICAgKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2Rlcn0g44GvIHtAbGluayBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpfSDjgpLkvb/jgaPjgabjgIEKICAgICAgICAgKiDliKXjga4gd2ViIHdvcmtlciDjgavou6LpgIHjgZnjgovjgZPjgajjgYzlj6/og73jgIIKICAgICAgICAgKiDjgZ/jgaDjgZfjgIHou6LpgIHmmYLjgavjga/jgq/jg6njgrnjgoTjg6Hjgr3jg4Pjg4njga7nirbmhYvjga/okL3jgaHjgabjgZfjgb7jgYbjga7jgafjgIEKICAgICAgICAgKiDjgZ3jgozjgpLlvqnlhYPjgZfjgablho3jgbPliKnnlKjlj6/og73jgavjgZnjgovjgZ/jgoHjga7plqLmlbDjgIIKICAgICAgICAgKiDjgarjgYrjgIHou6LpgIHjga7pmpvjgavjga8ge0BsaW5rIEx5cmFEZWNvZGVyLnBvcnR9IOOBruaJgOacieaoqeOCkuenu+itsuOBmeOCi+W/heimgeOBjOOBguOCi+OAggogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0YXRlIOODh+OCs+ODvOODgOOBrueKtuaFiwogICAgICAgICAqIEByZXR1cm4g5b6p5YWD44GV44KM44Gf44OH44Kz44O844OACiAgICAgICAgICovCiAgICAgICAgc3RhdGljIGZyb21TdGF0ZShzdGF0ZSkgewogICAgICAgICAgICBzdGF0ZS5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgTHlyYURlY29kZXIoc3RhdGUucG9ydCwgc3RhdGUuZnJhbWVTaXplLCBzdGF0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUENN77yITDE277yJ44Gu6Z+z5aOw44OH44O844K/44KSIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGVuY29kZXIgTHlyYSDjgqjjg7PjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgUENNIOmfs+WjsOODh+ODvOOCvwogICAgICogQHBhcmFtIGNvbnRyb2xsZXIg6Z+z5aOw44OH44O844K/44Gu5Ye65Yqb44Kt44Ol44O8CiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoZW5jb2RlZEZyYW1lLmRhdGEpOwogICAgICAgIGNvbnN0IHJhd0RhdGEgPSBuZXcgSW50MTZBcnJheShlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoIC8gMik7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICAgICAgcmF3RGF0YVtpIC8gMl0gPSB2aWV3LmdldEludDE2KGksIGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgZW5jb2RlZCA9IGF3YWl0IGVuY29kZXIuZW5jb2RlKHJhd0RhdGEpOwogICAgICAgIGlmIChlbmNvZGVkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgLy8gRFRYIOOBjOacieWKueOAgeOBi+OBpOOAgSBlbmNvZGVkRnJhbWUg44GM54Sh6Z+z77yI44Gq44GE44GX44OO44Kk44K644Gu44G/44KS5ZCr44KT44Gn44GE44KL77yJ5aC05ZCI44Gr44Gv44GT44GT44Gr5p2l44KLCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBlbmNvZGVkLmJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZfjgaYgUENN77yITDE277yJ44Gr5aSJ5o+b44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGRlY29kZXIgTHlyYSDjg4fjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr8KICAgICAqIEBwYXJhbSBjb250cm9sbGVyIOmfs+WjsOODh+ODvOOCv+OBruWHuuWKm+OCreODpeODvAogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUx5cmFUb1BjbShkZWNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICBpZiAoZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aCA9PT0gMykgewogICAgICAgICAgICAvLyBlMmVlIOOCkuacieWKueOBq+OBl+OBn+WgtOWQiOOBq+OBr+OAgWUyZWUg44Oi44K444Ol44O844Or44GM5LiN5piO44Gq44OR44Kx44OD44OI44KS5Y+X5L+h44GX44Gf5aC05ZCI44GrCiAgICAgICAgICAgIC8vIG9wdXMg44Gu54Sh6Z+z44OR44Kx44OD44OI44KS55Sf5oiQ44GZ44KL44Gu44Gn44Gd44KM44KS54Sh6KaW44GZ44KL44CCCiAgICAgICAgICAgIC8vIOOBquOBiuOAgXNlbmRyZWN2IG9yIHNlbmRvbmx5IOOBp+aOpee2muebtOW+jOOBq+eUn+aIkOOBleOCjOOBn+ODkeOCseODg+ODiOOCkuWPl+S/oeOBmeOCi+OBqOW4uOOBq+OBk+OBk+OBq+OBj+OCi+aooeanmOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBMeXJhIOOBp+OBr+Wcp+e4ruW+jOOBrumfs+WjsOODh+ODvOOCv+OCteOCpOOCuuOBjOWbuuWumuiqv+OBp+OAgTMg44OQ44Kk44OI44Go44Gq44KL44GT44Go44Gv44Gq44GE44Gu44Gn44CBCiAgICAgICAgICAgIC8vIOOBk+OBruadoeS7tuOBp+ato+W4uOOBqiBMeXJhIOODkeOCseODg+ODiOOBjOaNqOOBpuOCieOCjOOCi+OBk+OBqOOBr+OBquOBhOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBGSVhNRShzaXplKTogZTJlZSDlgbTjgYvjgokgb3B1cyDjgpLku67lrprjgZfjgZ/nhKHpn7PnlJ/miJDjgrPjg7zjg4njgYzjgarjgY/jgarjgaPjgZ/jgonjgZPjga7jg6/jg7zjgq/jgqLjg6njgqbjg7Pjg4njgoLpmaTljrvjgZnjgosKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBkZWNvZGVkID0gYXdhaXQgZGVjb2Rlci5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoZW5jb2RlZEZyYW1lLmRhdGEpKTsKICAgICAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZGVjb2RlZC5sZW5ndGggKiAyKTsKICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICAgICAgZm9yIChjb25zdCBbaSwgdl0gb2YgZGVjb2RlZC5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgdmlldy5zZXRJbnQxNihpICogMiwgdiwgZmFsc2UpOwogICAgICAgIH0KICAgICAgICBlbmNvZGVkRnJhbWUuZGF0YSA9IGJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVTZW5kZXJUcmFuc2Zvcm0oZW5jb2RlclN0YXRlKSB7CiAgICAgICAgY29uc3QgZW5jb2RlciA9IEx5cmFFbmNvZGVyLmZyb21TdGF0ZShlbmNvZGVyU3RhdGUpOwogICAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKICAgICAgICAgICAgYXN5bmMgdHJhbnNmb3JtKGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgICAgICAgICAgYXdhaXQgdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsdXNoKCkgewogICAgICAgICAgICAgICAgZW5jb2Rlci5kZXN0cm95KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBjcmVhdGVSZWNlaXZlclRyYW5zZm9ybShkZWNvZGVyU3RhdGUpIHsKICAgICAgICBjb25zdCBkZWNvZGVyID0gTHlyYURlY29kZXIuZnJvbVN0YXRlKGRlY29kZXJTdGF0ZSk7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICBhc3luYyB0cmFuc2Zvcm0oZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc2Zvcm1MeXJhVG9QY20oZGVjb2RlciwgZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2goKSB7CiAgICAgICAgICAgICAgICBkZWNvZGVyLmRlc3Ryb3koKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIH0KICAgIG9ucnRjdHJhbnNmb3JtID0gKG1zZykgPT4gewogICAgICAgIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdzZW5kZXJUcmFuc2Zvcm0nKSB7CiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNyZWF0ZVNlbmRlclRyYW5zZm9ybShtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5seXJhRW5jb2Rlcik7CiAgICAgICAgICAgIG1zZy50cmFuc2Zvcm1lci5yZWFkYWJsZQogICAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgIC5waXBlVG8obXNnLnRyYW5zZm9ybWVyLndyaXRhYmxlKQogICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLndhcm4oZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdyZWNlaXZlclRyYW5zZm9ybScpIHsKICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlUmVjZWl2ZXJUcmFuc2Zvcm0obXNnLnRyYW5zZm9ybWVyLm9wdGlvbnMubHlyYURlY29kZXIpOwogICAgICAgICAgICBtc2cudHJhbnNmb3JtZXIucmVhZGFibGUKICAgICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAucGlwZVRvKG1zZy50cmFuc2Zvcm1lci53cml0YWJsZSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS53YXJuKGUpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUud2FybigndW5rbm93biBtZXNzYWdlJyk7CiAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICAgIH0KICAgIH07Cgp9KSk7Cg=='; /** * Lyra を使用するために必要な設定を保持するためのグローバル変数 * @@ -1119,6 +1119,7 @@ * Lyra が初期化済みかどうか * * @returns Lyra が初期化済みかどうか + * @internal */ function isLyraInitialized() { return LYRA_CONFIG !== undefined; @@ -1129,6 +1130,7 @@ * @param options エンコーダに指定するオプション * @returns Lyra エンコーダのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function createLyraEncoder(options = {}) { return (await loadLyraModule()).createEncoder(options); @@ -1139,6 +1141,7 @@ * @param options デコーダに指定するオプション * @returns Lyra デコーダのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function createLyraDecoder(options = {}) { return (await loadLyraModule()).createDecoder(options); @@ -1150,6 +1153,7 @@ * * @returns LyraModule インスタンスのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function loadLyraModule() { if (LYRA_CONFIG === undefined) { @@ -1164,6 +1168,7 @@ * WebRTC Encoded Transform に渡される Lyra 用の web worker を生成する * * @returns Lyra でエンコードおよびデコードを行う web worker インスタンス + * @internal */ function createLyraWorker() { const lyraWorkerScript = atob(LYRA_WORKER_SCRIPT); @@ -1176,6 +1181,7 @@ * @param encoder Lyra エンコーダ * @param encodedFrame PCM 音声データ * @param controller 音声データの出力キュー + * @internal */ async function transformPcmToLyra(encoder, encodedFrame, controller) { const view = new DataView(encodedFrame.data); @@ -1197,6 +1203,7 @@ * @param decoder Lyra デコーダ * @param encodedFrame Lyra でエンコードされた音声データ * @param controller 音声データの出力キュー + * @internal */ async function transformLyraToPcm(decoder, encodedFrame, controller) { if (encodedFrame.data.byteLength === 3) { @@ -1221,6 +1228,7 @@ } /** * SDP に記載される Lyra のエンコードパラメータ + * @internal */ class LyraParams { constructor(version, bitrate, enableDtx) { @@ -1267,6 +1275,8 @@ } /** * 接続単位の Lyra 関連の状態を保持するためのクラス + * + * @internal */ class LyraState { constructor() { diff --git a/dist/sora.mjs b/dist/sora.mjs index e0e6cc81..fd84769a 100644 --- a/dist/sora.mjs +++ b/dist/sora.mjs @@ -1065,7 +1065,7 @@ class LyraDecoder { /** * ビルド時に lyra_worker.ts のビルド結果(の base64 )で置換される文字列 */ -const LYRA_WORKER_SCRIPT = 'KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOgogICAgZmFjdG9yeSgpOwp9KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBAc2hpZ3VyZWRvL2x5cmEtd2FzbQogICAgICogTHlyYSBWMiBXZWJBc3NlbWJseSBidWlsZAogICAgICogQHZlcnNpb246IDIwMjIuMi4wCiAgICAgKiBAYXV0aG9yOiBTaGlndXJlZG8gSW5jLgogICAgICogQGxpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICAqKi8KCiAgICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgICBjb25zdCBERUZBVUxUX0JJVFJBVEUgPSA5MjAwOwogICAgY29uc3QgREVGQVVMVF9FTkFCTEVfRFRYID0gZmFsc2U7CiAgICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICAgIC8qKgogICAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYUVuY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44Ko44Oz44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog54++5Zyo44Gu44Ko44Oz44Kz44O844OJ44OT44OD44OI44Os44O844OICiAgICAgICAgICovCiAgICAgICAgYml0cmF0ZTsKICAgICAgICAvKioKICAgICAgICAgKiBEVFgg44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44Gp44GG44GLCiAgICAgICAgICovCiAgICAgICAgZW5hYmxlRHR4OwogICAgICAgIC8qKgogICAgICAgICAqIOS4gOOBpOOBruODleODrOODvOODoO+8iHtAbGluayBMeXJhRW5jb2Rlci5lbmNvZGV9IOODoeOCveODg+ODieOBq+a4oeOBmemfs+WjsOODh+ODvOOCv++8ieOBq+WQq+OCgeOCi+OCteODs+ODl+ODq+aVsAogICAgICAgICAqLwogICAgICAgIGZyYW1lU2l6ZTsKICAgICAgICAvKioKICAgICAgICAgKiBAaW50ZXJuYWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwb3J0LCBmcmFtZVNpemUsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDsKICAgICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSBmcmFtZVNpemU7CiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IG9wdGlvbnMuc2FtcGxlUmF0ZSB8fCBERUZBVUxUX1NBTVBMRV9SQVRFOwogICAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gb3B0aW9ucy5iaXRyYXRlIHx8IERFRkFVTFRfQklUUkFURTsKICAgICAgICAgICAgdGhpcy5lbmFibGVEdHggPSBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFg7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIDIwbXMg5YiG44Gu6Z+z5aOw44OH44O844K/44KS44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiDjgarjgYogYXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBhdWRpb0RhdGEg44Kk44Oz44K544K/44Oz44K544Gu5L2/44GE5Zue44GX44Gv44Gn44GN44Gq44GE77yJCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW1zIGF1ZGlvRGF0YSDjgqjjg7PjgrPjg7zjg4nlr77osaHjga7pn7Plo7Djg4fjg7zjgr8KICAgICAgICAgKiBAcmV0dXJucyDjgqjjg7PjgrPjg7zjg4nlvozjga7jg5DjgqTjg4jliJfjgILjgoLjgZcgRFRYIOOBjOacieWKueOBp+mfs+WjsOODh+ODvOOCv+OBjOeEoemfs+OBquWgtOWQiOOBq+OBryB1bmRlZmluZWQg44GM5Luj44KP44KK44Gr6L+U44GV44KM44KL44CCCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzCiAgICAgICAgICoKICAgICAgICAgKiDku6XkuIvjga7jgYTjgZrjgozjgYvjgavoqbLlvZPjgZnjgovloLTlkIjjgavjga/kvovlpJbjgYzpgIHlh7rjgZXjgozjgos6CiAgICAgICAgICogLSDlhaXlipvpn7Plo7Djg4fjg7zjgr/jgYwgMjBtcyDljZjkvY3vvIjjgrXjg7Pjg5fjg6vmlbDjgajjgZfjgabjga8ge0BsaW5rIEx5cmFFbmNvZGVyLmZyYW1lU2l6ZX3vvInjgafjga/jgarjgYQKICAgICAgICAgKiAtIOOBneOBruS7luOAgeS9leOCieOBi+OBrueQhueUseOBp+OCqOODs+OCs+ODvOODieOBq+WkseaVl+OBl+OBn+WgtOWQiAogICAgICAgICAqLwogICAgICAgIGVuY29kZShhdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5lbmNvZGVkQXVkaW9EYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZW5jb2RlIiwgYXVkaW9EYXRhIH0sIFthdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiDjgqjjg7PjgrPjg7zjg4DnlKjjgavnorrkv53jgZfjgZ/jg6rjgr3jg7zjgrnjgpLop6PmlL7jgZnjgosKICAgICAgICAgKi8KICAgICAgICBkZXN0cm95KCkgewogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZGVzdHJveSIgfSk7CiAgICAgICAgICAgIHRoaXMucG9ydC5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJTdGF0ZX0g44GL44KJIHtAbGluayBMeXJhRW5jb2Rlcn0g44KS5b6p5YWD44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJ9IOOBryB7QGxpbmsgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKX0g44KS5L2/44Gj44Gm44CBCiAgICAgICAgICog5Yil44GuIHdlYiB3b3JrZXIg44Gr6Lui6YCB44GZ44KL44GT44Go44GM5Y+v6IO944CCCiAgICAgICAgICog44Gf44Gg44GX44CB6Lui6YCB5pmC44Gr44Gv44Kv44Op44K544KE44Oh44K944OD44OJ44Gu54q25oWL44Gv6JC944Gh44Gm44GX44G+44GG44Gu44Gn44CBCiAgICAgICAgICog44Gd44KM44KS5b6p5YWD44GX44Gm5YaN44Gz5Yip55So5Y+v6IO944Gr44GZ44KL44Gf44KB44Gu6Zai5pWw44CCCiAgICAgICAgICog44Gq44GK44CB6Lui6YCB44Gu6Zqb44Gr44GvIHtAbGluayBMeXJhRW5jb2Rlci5wb3J0fSDjga7miYDmnInmqKnjgpLnp7vorbLjgZnjgovlv4XopoHjgYzjgYLjgovjgIIKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdGF0ZSDjgqjjg7PjgrPjg7zjg4Djga7nirbmhYsKICAgICAgICAgKiBAcmV0dXJuIOW+qeWFg+OBleOCjOOBn+OCqOODs+OCs+ODvOODgAogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBmcm9tU3RhdGUoc3RhdGUpIHsKICAgICAgICAgICAgc3RhdGUucG9ydC5zdGFydCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFFbmNvZGVyKHN0YXRlLnBvcnQsIHN0YXRlLmZyYW1lU2l6ZSwgc3RhdGUpOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjga7jg4fjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYURlY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44OH44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog5LiA44Gk44Gu44OV44Os44O844Og77yIe0BsaW5rIEx5cmFFbmNvZGVyLmRlY29kZX0g44Oh44K944OD44OJ44Gu6L+U44KK5YCk44Gu6Z+z5aOw44OH44O844K/77yJ44Gr5ZCr44G+44KM44KL44K144Oz44OX44Or5pWwCiAgICAgICAgICovCiAgICAgICAgZnJhbWVTaXplOwogICAgICAgIC8qKgogICAgICAgICAqIEBpbnRlcm5hbAogICAgICAgICAqLwogICAgICAgIGNvbnN0cnVjdG9yKHBvcnQsIGZyYW1lU2l6ZSwgb3B0aW9ucykgewogICAgICAgICAgICB0aGlzLnBvcnQgPSBwb3J0OwogICAgICAgICAgICB0aGlzLmZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXIuZW5jb2RlfSDjg6Hjgr3jg4Pjg4njgavjgojjgaPjgabjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZnjgosKICAgICAgICAgKgogICAgICAgICAqIOOBquOBiiBlbmNvZGVkQXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBlbmNvZGVkQXVkaW9EYXRhIOOCpOODs+OCueOCv+ODs+OCueOBruS9v+OBhOWbnuOBl+OBr+OBp+OBjeOBquOBhO+8iQogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtcyBlbmNvZGVkQXVkaW9EYXRhIOODh+OCs+ODvOODieWvvuixoeOBruODkOOCpOODiuODquWIl+OBquOBhOOBlyB1bmRlZmluZWQKICAgICAgICAgKiBAcmV0dXJucyDjg4fjgrPjg7zjg4njgZXjgozjgZ8gMjBtcyDliIbjga7pn7Plo7Djg4fjg7zjgr/jgIJ1bmRlZmluZWQg44GM5rih44GV44KM44Gf5aC05ZCI44Gr44Gv5Luj44KP44KK44Gr44Kz44Oz44OV44Kp44O844OI44OO44Kk44K644GM55Sf5oiQ44GV44KM44KL44CCCiAgICAgICAgICovCiAgICAgICAgZGVjb2RlKGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZWNvZGUiLCBlbmNvZGVkQXVkaW9EYXRhIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogIkx5cmFEZWNvZGVyLmRlY29kZSIsIGVuY29kZWRBdWRpb0RhdGEgfSwgW2VuY29kZWRBdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIOODh+OCs+ODvOODgOeUqOOBq+eiuuS/neOBl+OBn+ODquOCveODvOOCueOCkuino+aUvuOBmeOCiwogICAgICAgICAqLwogICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZXN0cm95IiB9KTsKICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2RlclN0YXRlfSDjgYvjgokge0BsaW5rIEx5cmFEZWNvZGVyfSDjgpLlvqnlhYPjgZnjgosKICAgICAgICAgKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2Rlcn0g44GvIHtAbGluayBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpfSDjgpLkvb/jgaPjgabjgIEKICAgICAgICAgKiDliKXjga4gd2ViIHdvcmtlciDjgavou6LpgIHjgZnjgovjgZPjgajjgYzlj6/og73jgIIKICAgICAgICAgKiDjgZ/jgaDjgZfjgIHou6LpgIHmmYLjgavjga/jgq/jg6njgrnjgoTjg6Hjgr3jg4Pjg4njga7nirbmhYvjga/okL3jgaHjgabjgZfjgb7jgYbjga7jgafjgIEKICAgICAgICAgKiDjgZ3jgozjgpLlvqnlhYPjgZfjgablho3jgbPliKnnlKjlj6/og73jgavjgZnjgovjgZ/jgoHjga7plqLmlbDjgIIKICAgICAgICAgKiDjgarjgYrjgIHou6LpgIHjga7pmpvjgavjga8ge0BsaW5rIEx5cmFEZWNvZGVyLnBvcnR9IOOBruaJgOacieaoqeOCkuenu+itsuOBmeOCi+W/heimgeOBjOOBguOCi+OAggogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0YXRlIOODh+OCs+ODvOODgOOBrueKtuaFiwogICAgICAgICAqIEByZXR1cm4g5b6p5YWD44GV44KM44Gf44OH44Kz44O844OACiAgICAgICAgICovCiAgICAgICAgc3RhdGljIGZyb21TdGF0ZShzdGF0ZSkgewogICAgICAgICAgICBzdGF0ZS5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgTHlyYURlY29kZXIoc3RhdGUucG9ydCwgc3RhdGUuZnJhbWVTaXplLCBzdGF0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUENN77yITDE277yJ44Gu6Z+z5aOw44OH44O844K/44KSIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGVuY29kZXIgTHlyYSDjgqjjg7PjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgUENNIOmfs+WjsOODh+ODvOOCvwogICAgICogQHBhcmFtIGNvbnRyb2xsZXIg6Z+z5aOw44OH44O844K/44Gu5Ye65Yqb44Kt44Ol44O8CiAgICAgKi8KICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybVBjbVRvTHlyYShlbmNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGVuY29kZWRGcmFtZS5kYXRhKTsKICAgICAgICBjb25zdCByYXdEYXRhID0gbmV3IEludDE2QXJyYXkoZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aCAvIDIpOwogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAgICAgIHJhd0RhdGFbaSAvIDJdID0gdmlldy5nZXRJbnQxNihpLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGVuY29kZWQgPSBhd2FpdCBlbmNvZGVyLmVuY29kZShyYXdEYXRhKTsKICAgICAgICBpZiAoZW5jb2RlZCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIC8vIERUWCDjgYzmnInlirnjgIHjgYvjgaTjgIEgZW5jb2RlZEZyYW1lIOOBjOeEoemfs++8iOOBquOBhOOBl+ODjuOCpOOCuuOBruOBv+OCkuWQq+OCk+OBp+OBhOOCi++8ieWgtOWQiOOBq+OBr+OBk+OBk+OBq+adpeOCiwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGVuY29kZWRGcmFtZS5kYXRhID0gZW5jb2RlZC5idWZmZXI7CiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGVuY29kZWRGcmFtZSk7CiAgICB9CiAgICAvKioKICAgICAqIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GV44KM44Gf6Z+z5aOw44OH44O844K/44KS44OH44Kz44O844OJ44GX44GmIFBDTe+8iEwxNu+8ieOBq+WkieaPm+OBmeOCiwogICAgICoKICAgICAqIEBwYXJhbSBkZWNvZGVyIEx5cmEg44OH44Kz44O844OACiAgICAgKiBAcGFyYW0gZW5jb2RlZEZyYW1lIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GV44KM44Gf6Z+z5aOw44OH44O844K/CiAgICAgKiBAcGFyYW0gY29udHJvbGxlciDpn7Plo7Djg4fjg7zjgr/jga7lh7rlipvjgq3jg6Xjg7wKICAgICAqLwogICAgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtTHlyYVRvUGNtKGRlY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgIGlmIChlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoID09PSAzKSB7CiAgICAgICAgICAgIC8vIGUyZWUg44KS5pyJ5Yq544Gr44GX44Gf5aC05ZCI44Gr44Gv44CBZTJlZSDjg6Ljgrjjg6Xjg7zjg6vjgYzkuI3mmI7jgarjg5HjgrHjg4Pjg4jjgpLlj5fkv6HjgZfjgZ/loLTlkIjjgasKICAgICAgICAgICAgLy8gb3B1cyDjga7nhKHpn7Pjg5HjgrHjg4Pjg4jjgpLnlJ/miJDjgZnjgovjga7jgafjgZ3jgozjgpLnhKHoppbjgZnjgovjgIIKICAgICAgICAgICAgLy8g44Gq44GK44CBc2VuZHJlY3Ygb3Igc2VuZG9ubHkg44Gn5o6l57aa55u05b6M44Gr55Sf5oiQ44GV44KM44Gf44OR44Kx44OD44OI44KS5Y+X5L+h44GZ44KL44Go5bi444Gr44GT44GT44Gr44GP44KL5qih5qeY44CCCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEx5cmEg44Gn44Gv5Zyn57iu5b6M44Gu6Z+z5aOw44OH44O844K/44K144Kk44K644GM5Zu65a6a6Kq/44Gn44CBMyDjg5DjgqTjg4jjgajjgarjgovjgZPjgajjga/jgarjgYTjga7jgafjgIEKICAgICAgICAgICAgLy8g44GT44Gu5p2h5Lu244Gn5q2j5bi444GqIEx5cmEg44OR44Kx44OD44OI44GM5o2o44Gm44KJ44KM44KL44GT44Go44Gv44Gq44GE44CCCiAgICAgICAgICAgIC8vCiAgICAgICAgICAgIC8vIEZJWE1FKHNpemUpOiBlMmVlIOWBtOOBi+OCiSBvcHVzIOOCkuS7ruWumuOBl+OBn+eEoemfs+eUn+aIkOOCs+ODvOODieOBjOOBquOBj+OBquOBo+OBn+OCieOBk+OBruODr+ODvOOCr+OCouODqeOCpuODs+ODieOCgumZpOWOu+OBmeOCiwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlY29kZWQgPSBhd2FpdCBkZWNvZGVyLmRlY29kZShuZXcgVWludDhBcnJheShlbmNvZGVkRnJhbWUuZGF0YSkpOwogICAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihkZWNvZGVkLmxlbmd0aCAqIDIpOwogICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKICAgICAgICBmb3IgKGNvbnN0IFtpLCB2XSBvZiBkZWNvZGVkLmVudHJpZXMoKSkgewogICAgICAgICAgICB2aWV3LnNldEludDE2KGkgKiAyLCB2LCBmYWxzZSk7CiAgICAgICAgfQogICAgICAgIGVuY29kZWRGcmFtZS5kYXRhID0gYnVmZmVyOwogICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVkRnJhbWUpOwogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZVNlbmRlclRyYW5zZm9ybShlbmNvZGVyU3RhdGUpIHsKICAgICAgICBjb25zdCBlbmNvZGVyID0gTHlyYUVuY29kZXIuZnJvbVN0YXRlKGVuY29kZXJTdGF0ZSk7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICBhc3luYyB0cmFuc2Zvcm0oZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc2Zvcm1QY21Ub0x5cmEoZW5jb2RlciwgZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2goKSB7CiAgICAgICAgICAgICAgICBlbmNvZGVyLmRlc3Ryb3koKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGNyZWF0ZVJlY2VpdmVyVHJhbnNmb3JtKGRlY29kZXJTdGF0ZSkgewogICAgICAgIGNvbnN0IGRlY29kZXIgPSBMeXJhRGVjb2Rlci5mcm9tU3RhdGUoZGVjb2RlclN0YXRlKTsKICAgICAgICByZXR1cm4gbmV3IFRyYW5zZm9ybVN0cmVhbSh7CiAgICAgICAgICAgIGFzeW5jIHRyYW5zZm9ybShlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICAgICAgICAgIGF3YWl0IHRyYW5zZm9ybUx5cmFUb1BjbShkZWNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBmbHVzaCgpIHsKICAgICAgICAgICAgICAgIGRlY29kZXIuZGVzdHJveSgpOwogICAgICAgICAgICB9LAogICAgICAgIH0pOwogICAgfQogICAgb25ydGN0cmFuc2Zvcm0gPSAobXNnKSA9PiB7CiAgICAgICAgaWYgKG1zZy50cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUgPT0gJ3NlbmRlclRyYW5zZm9ybScpIHsKICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlU2VuZGVyVHJhbnNmb3JtKG1zZy50cmFuc2Zvcm1lci5vcHRpb25zLmx5cmFFbmNvZGVyKTsKICAgICAgICAgICAgbXNnLnRyYW5zZm9ybWVyLnJlYWRhYmxlCiAgICAgICAgICAgICAgICAucGlwZVRocm91Z2godHJhbnNmb3JtKQogICAgICAgICAgICAgICAgLnBpcGVUbyhtc2cudHJhbnNmb3JtZXIud3JpdGFibGUpCiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUud2FybihlKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG1zZy50cmFuc2Zvcm1lci5vcHRpb25zLm5hbWUgPT0gJ3JlY2VpdmVyVHJhbnNmb3JtJykgewogICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBjcmVhdGVSZWNlaXZlclRyYW5zZm9ybShtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5seXJhRGVjb2Rlcik7CiAgICAgICAgICAgIG1zZy50cmFuc2Zvcm1lci5yZWFkYWJsZQogICAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgIC5waXBlVG8obXNnLnRyYW5zZm9ybWVyLndyaXRhYmxlKQogICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLndhcm4oZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgY29uc29sZS53YXJuKCd1bmtub3duIG1lc3NhZ2UnKTsKICAgICAgICAgICAgY29uc29sZS53YXJuKG1zZyk7CiAgICAgICAgfQogICAgfTsKCn0pKTsK'; +const LYRA_WORKER_SCRIPT = 'KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOgogICAgZmFjdG9yeSgpOwp9KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBAc2hpZ3VyZWRvL2x5cmEtd2FzbQogICAgICogTHlyYSBWMiBXZWJBc3NlbWJseSBidWlsZAogICAgICogQHZlcnNpb246IDIwMjIuMi4wCiAgICAgKiBAYXV0aG9yOiBTaGlndXJlZG8gSW5jLgogICAgICogQGxpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICAqKi8KCiAgICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgICBjb25zdCBERUZBVUxUX0JJVFJBVEUgPSA5MjAwOwogICAgY29uc3QgREVGQVVMVF9FTkFCTEVfRFRYID0gZmFsc2U7CiAgICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICAgIC8qKgogICAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYUVuY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44Ko44Oz44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog54++5Zyo44Gu44Ko44Oz44Kz44O844OJ44OT44OD44OI44Os44O844OICiAgICAgICAgICovCiAgICAgICAgYml0cmF0ZTsKICAgICAgICAvKioKICAgICAgICAgKiBEVFgg44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44Gp44GG44GLCiAgICAgICAgICovCiAgICAgICAgZW5hYmxlRHR4OwogICAgICAgIC8qKgogICAgICAgICAqIOS4gOOBpOOBruODleODrOODvOODoO+8iHtAbGluayBMeXJhRW5jb2Rlci5lbmNvZGV9IOODoeOCveODg+ODieOBq+a4oeOBmemfs+WjsOODh+ODvOOCv++8ieOBq+WQq+OCgeOCi+OCteODs+ODl+ODq+aVsAogICAgICAgICAqLwogICAgICAgIGZyYW1lU2l6ZTsKICAgICAgICAvKioKICAgICAgICAgKiBAaW50ZXJuYWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwb3J0LCBmcmFtZVNpemUsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDsKICAgICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSBmcmFtZVNpemU7CiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IG9wdGlvbnMuc2FtcGxlUmF0ZSB8fCBERUZBVUxUX1NBTVBMRV9SQVRFOwogICAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gb3B0aW9ucy5iaXRyYXRlIHx8IERFRkFVTFRfQklUUkFURTsKICAgICAgICAgICAgdGhpcy5lbmFibGVEdHggPSBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFg7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIDIwbXMg5YiG44Gu6Z+z5aOw44OH44O844K/44KS44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiDjgarjgYogYXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBhdWRpb0RhdGEg44Kk44Oz44K544K/44Oz44K544Gu5L2/44GE5Zue44GX44Gv44Gn44GN44Gq44GE77yJCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW1zIGF1ZGlvRGF0YSDjgqjjg7PjgrPjg7zjg4nlr77osaHjga7pn7Plo7Djg4fjg7zjgr8KICAgICAgICAgKiBAcmV0dXJucyDjgqjjg7PjgrPjg7zjg4nlvozjga7jg5DjgqTjg4jliJfjgILjgoLjgZcgRFRYIOOBjOacieWKueOBp+mfs+WjsOODh+ODvOOCv+OBjOeEoemfs+OBquWgtOWQiOOBq+OBryB1bmRlZmluZWQg44GM5Luj44KP44KK44Gr6L+U44GV44KM44KL44CCCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzCiAgICAgICAgICoKICAgICAgICAgKiDku6XkuIvjga7jgYTjgZrjgozjgYvjgavoqbLlvZPjgZnjgovloLTlkIjjgavjga/kvovlpJbjgYzpgIHlh7rjgZXjgozjgos6CiAgICAgICAgICogLSDlhaXlipvpn7Plo7Djg4fjg7zjgr/jgYwgMjBtcyDljZjkvY3vvIjjgrXjg7Pjg5fjg6vmlbDjgajjgZfjgabjga8ge0BsaW5rIEx5cmFFbmNvZGVyLmZyYW1lU2l6ZX3vvInjgafjga/jgarjgYQKICAgICAgICAgKiAtIOOBneOBruS7luOAgeS9leOCieOBi+OBrueQhueUseOBp+OCqOODs+OCs+ODvOODieOBq+WkseaVl+OBl+OBn+WgtOWQiAogICAgICAgICAqLwogICAgICAgIGVuY29kZShhdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5lbmNvZGVkQXVkaW9EYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZW5jb2RlIiwgYXVkaW9EYXRhIH0sIFthdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiDjgqjjg7PjgrPjg7zjg4DnlKjjgavnorrkv53jgZfjgZ/jg6rjgr3jg7zjgrnjgpLop6PmlL7jgZnjgosKICAgICAgICAgKi8KICAgICAgICBkZXN0cm95KCkgewogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZGVzdHJveSIgfSk7CiAgICAgICAgICAgIHRoaXMucG9ydC5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJTdGF0ZX0g44GL44KJIHtAbGluayBMeXJhRW5jb2Rlcn0g44KS5b6p5YWD44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJ9IOOBryB7QGxpbmsgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKX0g44KS5L2/44Gj44Gm44CBCiAgICAgICAgICog5Yil44GuIHdlYiB3b3JrZXIg44Gr6Lui6YCB44GZ44KL44GT44Go44GM5Y+v6IO944CCCiAgICAgICAgICog44Gf44Gg44GX44CB6Lui6YCB5pmC44Gr44Gv44Kv44Op44K544KE44Oh44K944OD44OJ44Gu54q25oWL44Gv6JC944Gh44Gm44GX44G+44GG44Gu44Gn44CBCiAgICAgICAgICog44Gd44KM44KS5b6p5YWD44GX44Gm5YaN44Gz5Yip55So5Y+v6IO944Gr44GZ44KL44Gf44KB44Gu6Zai5pWw44CCCiAgICAgICAgICog44Gq44GK44CB6Lui6YCB44Gu6Zqb44Gr44GvIHtAbGluayBMeXJhRW5jb2Rlci5wb3J0fSDjga7miYDmnInmqKnjgpLnp7vorbLjgZnjgovlv4XopoHjgYzjgYLjgovjgIIKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdGF0ZSDjgqjjg7PjgrPjg7zjg4Djga7nirbmhYsKICAgICAgICAgKiBAcmV0dXJuIOW+qeWFg+OBleOCjOOBn+OCqOODs+OCs+ODvOODgAogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBmcm9tU3RhdGUoc3RhdGUpIHsKICAgICAgICAgICAgc3RhdGUucG9ydC5zdGFydCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFFbmNvZGVyKHN0YXRlLnBvcnQsIHN0YXRlLmZyYW1lU2l6ZSwgc3RhdGUpOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjga7jg4fjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYURlY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44OH44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog5LiA44Gk44Gu44OV44Os44O844Og77yIe0BsaW5rIEx5cmFFbmNvZGVyLmRlY29kZX0g44Oh44K944OD44OJ44Gu6L+U44KK5YCk44Gu6Z+z5aOw44OH44O844K/77yJ44Gr5ZCr44G+44KM44KL44K144Oz44OX44Or5pWwCiAgICAgICAgICovCiAgICAgICAgZnJhbWVTaXplOwogICAgICAgIC8qKgogICAgICAgICAqIEBpbnRlcm5hbAogICAgICAgICAqLwogICAgICAgIGNvbnN0cnVjdG9yKHBvcnQsIGZyYW1lU2l6ZSwgb3B0aW9ucykgewogICAgICAgICAgICB0aGlzLnBvcnQgPSBwb3J0OwogICAgICAgICAgICB0aGlzLmZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXIuZW5jb2RlfSDjg6Hjgr3jg4Pjg4njgavjgojjgaPjgabjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZnjgosKICAgICAgICAgKgogICAgICAgICAqIOOBquOBiiBlbmNvZGVkQXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBlbmNvZGVkQXVkaW9EYXRhIOOCpOODs+OCueOCv+ODs+OCueOBruS9v+OBhOWbnuOBl+OBr+OBp+OBjeOBquOBhO+8iQogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtcyBlbmNvZGVkQXVkaW9EYXRhIOODh+OCs+ODvOODieWvvuixoeOBruODkOOCpOODiuODquWIl+OBquOBhOOBlyB1bmRlZmluZWQKICAgICAgICAgKiBAcmV0dXJucyDjg4fjgrPjg7zjg4njgZXjgozjgZ8gMjBtcyDliIbjga7pn7Plo7Djg4fjg7zjgr/jgIJ1bmRlZmluZWQg44GM5rih44GV44KM44Gf5aC05ZCI44Gr44Gv5Luj44KP44KK44Gr44Kz44Oz44OV44Kp44O844OI44OO44Kk44K644GM55Sf5oiQ44GV44KM44KL44CCCiAgICAgICAgICovCiAgICAgICAgZGVjb2RlKGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZWNvZGUiLCBlbmNvZGVkQXVkaW9EYXRhIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogIkx5cmFEZWNvZGVyLmRlY29kZSIsIGVuY29kZWRBdWRpb0RhdGEgfSwgW2VuY29kZWRBdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIOODh+OCs+ODvOODgOeUqOOBq+eiuuS/neOBl+OBn+ODquOCveODvOOCueOCkuino+aUvuOBmeOCiwogICAgICAgICAqLwogICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZXN0cm95IiB9KTsKICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2RlclN0YXRlfSDjgYvjgokge0BsaW5rIEx5cmFEZWNvZGVyfSDjgpLlvqnlhYPjgZnjgosKICAgICAgICAgKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2Rlcn0g44GvIHtAbGluayBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpfSDjgpLkvb/jgaPjgabjgIEKICAgICAgICAgKiDliKXjga4gd2ViIHdvcmtlciDjgavou6LpgIHjgZnjgovjgZPjgajjgYzlj6/og73jgIIKICAgICAgICAgKiDjgZ/jgaDjgZfjgIHou6LpgIHmmYLjgavjga/jgq/jg6njgrnjgoTjg6Hjgr3jg4Pjg4njga7nirbmhYvjga/okL3jgaHjgabjgZfjgb7jgYbjga7jgafjgIEKICAgICAgICAgKiDjgZ3jgozjgpLlvqnlhYPjgZfjgablho3jgbPliKnnlKjlj6/og73jgavjgZnjgovjgZ/jgoHjga7plqLmlbDjgIIKICAgICAgICAgKiDjgarjgYrjgIHou6LpgIHjga7pmpvjgavjga8ge0BsaW5rIEx5cmFEZWNvZGVyLnBvcnR9IOOBruaJgOacieaoqeOCkuenu+itsuOBmeOCi+W/heimgeOBjOOBguOCi+OAggogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0YXRlIOODh+OCs+ODvOODgOOBrueKtuaFiwogICAgICAgICAqIEByZXR1cm4g5b6p5YWD44GV44KM44Gf44OH44Kz44O844OACiAgICAgICAgICovCiAgICAgICAgc3RhdGljIGZyb21TdGF0ZShzdGF0ZSkgewogICAgICAgICAgICBzdGF0ZS5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgTHlyYURlY29kZXIoc3RhdGUucG9ydCwgc3RhdGUuZnJhbWVTaXplLCBzdGF0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUENN77yITDE277yJ44Gu6Z+z5aOw44OH44O844K/44KSIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGVuY29kZXIgTHlyYSDjgqjjg7PjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgUENNIOmfs+WjsOODh+ODvOOCvwogICAgICogQHBhcmFtIGNvbnRyb2xsZXIg6Z+z5aOw44OH44O844K/44Gu5Ye65Yqb44Kt44Ol44O8CiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoZW5jb2RlZEZyYW1lLmRhdGEpOwogICAgICAgIGNvbnN0IHJhd0RhdGEgPSBuZXcgSW50MTZBcnJheShlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoIC8gMik7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICAgICAgcmF3RGF0YVtpIC8gMl0gPSB2aWV3LmdldEludDE2KGksIGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgZW5jb2RlZCA9IGF3YWl0IGVuY29kZXIuZW5jb2RlKHJhd0RhdGEpOwogICAgICAgIGlmIChlbmNvZGVkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgLy8gRFRYIOOBjOacieWKueOAgeOBi+OBpOOAgSBlbmNvZGVkRnJhbWUg44GM54Sh6Z+z77yI44Gq44GE44GX44OO44Kk44K644Gu44G/44KS5ZCr44KT44Gn44GE44KL77yJ5aC05ZCI44Gr44Gv44GT44GT44Gr5p2l44KLCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBlbmNvZGVkLmJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZfjgaYgUENN77yITDE277yJ44Gr5aSJ5o+b44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGRlY29kZXIgTHlyYSDjg4fjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr8KICAgICAqIEBwYXJhbSBjb250cm9sbGVyIOmfs+WjsOODh+ODvOOCv+OBruWHuuWKm+OCreODpeODvAogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUx5cmFUb1BjbShkZWNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICBpZiAoZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aCA9PT0gMykgewogICAgICAgICAgICAvLyBlMmVlIOOCkuacieWKueOBq+OBl+OBn+WgtOWQiOOBq+OBr+OAgWUyZWUg44Oi44K444Ol44O844Or44GM5LiN5piO44Gq44OR44Kx44OD44OI44KS5Y+X5L+h44GX44Gf5aC05ZCI44GrCiAgICAgICAgICAgIC8vIG9wdXMg44Gu54Sh6Z+z44OR44Kx44OD44OI44KS55Sf5oiQ44GZ44KL44Gu44Gn44Gd44KM44KS54Sh6KaW44GZ44KL44CCCiAgICAgICAgICAgIC8vIOOBquOBiuOAgXNlbmRyZWN2IG9yIHNlbmRvbmx5IOOBp+aOpee2muebtOW+jOOBq+eUn+aIkOOBleOCjOOBn+ODkeOCseODg+ODiOOCkuWPl+S/oeOBmeOCi+OBqOW4uOOBq+OBk+OBk+OBq+OBj+OCi+aooeanmOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBMeXJhIOOBp+OBr+Wcp+e4ruW+jOOBrumfs+WjsOODh+ODvOOCv+OCteOCpOOCuuOBjOWbuuWumuiqv+OBp+OAgTMg44OQ44Kk44OI44Go44Gq44KL44GT44Go44Gv44Gq44GE44Gu44Gn44CBCiAgICAgICAgICAgIC8vIOOBk+OBruadoeS7tuOBp+ato+W4uOOBqiBMeXJhIOODkeOCseODg+ODiOOBjOaNqOOBpuOCieOCjOOCi+OBk+OBqOOBr+OBquOBhOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBGSVhNRShzaXplKTogZTJlZSDlgbTjgYvjgokgb3B1cyDjgpLku67lrprjgZfjgZ/nhKHpn7PnlJ/miJDjgrPjg7zjg4njgYzjgarjgY/jgarjgaPjgZ/jgonjgZPjga7jg6/jg7zjgq/jgqLjg6njgqbjg7Pjg4njgoLpmaTljrvjgZnjgosKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBkZWNvZGVkID0gYXdhaXQgZGVjb2Rlci5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoZW5jb2RlZEZyYW1lLmRhdGEpKTsKICAgICAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZGVjb2RlZC5sZW5ndGggKiAyKTsKICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICAgICAgZm9yIChjb25zdCBbaSwgdl0gb2YgZGVjb2RlZC5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgdmlldy5zZXRJbnQxNihpICogMiwgdiwgZmFsc2UpOwogICAgICAgIH0KICAgICAgICBlbmNvZGVkRnJhbWUuZGF0YSA9IGJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVTZW5kZXJUcmFuc2Zvcm0oZW5jb2RlclN0YXRlKSB7CiAgICAgICAgY29uc3QgZW5jb2RlciA9IEx5cmFFbmNvZGVyLmZyb21TdGF0ZShlbmNvZGVyU3RhdGUpOwogICAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKICAgICAgICAgICAgYXN5bmMgdHJhbnNmb3JtKGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgICAgICAgICAgYXdhaXQgdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsdXNoKCkgewogICAgICAgICAgICAgICAgZW5jb2Rlci5kZXN0cm95KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBjcmVhdGVSZWNlaXZlclRyYW5zZm9ybShkZWNvZGVyU3RhdGUpIHsKICAgICAgICBjb25zdCBkZWNvZGVyID0gTHlyYURlY29kZXIuZnJvbVN0YXRlKGRlY29kZXJTdGF0ZSk7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICBhc3luYyB0cmFuc2Zvcm0oZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc2Zvcm1MeXJhVG9QY20oZGVjb2RlciwgZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2goKSB7CiAgICAgICAgICAgICAgICBkZWNvZGVyLmRlc3Ryb3koKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIH0KICAgIG9ucnRjdHJhbnNmb3JtID0gKG1zZykgPT4gewogICAgICAgIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdzZW5kZXJUcmFuc2Zvcm0nKSB7CiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNyZWF0ZVNlbmRlclRyYW5zZm9ybShtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5seXJhRW5jb2Rlcik7CiAgICAgICAgICAgIG1zZy50cmFuc2Zvcm1lci5yZWFkYWJsZQogICAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgIC5waXBlVG8obXNnLnRyYW5zZm9ybWVyLndyaXRhYmxlKQogICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLndhcm4oZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdyZWNlaXZlclRyYW5zZm9ybScpIHsKICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlUmVjZWl2ZXJUcmFuc2Zvcm0obXNnLnRyYW5zZm9ybWVyLm9wdGlvbnMubHlyYURlY29kZXIpOwogICAgICAgICAgICBtc2cudHJhbnNmb3JtZXIucmVhZGFibGUKICAgICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAucGlwZVRvKG1zZy50cmFuc2Zvcm1lci53cml0YWJsZSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS53YXJuKGUpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUud2FybigndW5rbm93biBtZXNzYWdlJyk7CiAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICAgIH0KICAgIH07Cgp9KSk7Cg=='; /** * Lyra を使用するために必要な設定を保持するためのグローバル変数 * @@ -1113,6 +1113,7 @@ function initLyra(config) { * Lyra が初期化済みかどうか * * @returns Lyra が初期化済みかどうか + * @internal */ function isLyraInitialized() { return LYRA_CONFIG !== undefined; @@ -1123,6 +1124,7 @@ function isLyraInitialized() { * @param options エンコーダに指定するオプション * @returns Lyra エンコーダのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function createLyraEncoder(options = {}) { return (await loadLyraModule()).createEncoder(options); @@ -1133,6 +1135,7 @@ async function createLyraEncoder(options = {}) { * @param options デコーダに指定するオプション * @returns Lyra デコーダのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function createLyraDecoder(options = {}) { return (await loadLyraModule()).createDecoder(options); @@ -1144,6 +1147,7 @@ async function createLyraDecoder(options = {}) { * * @returns LyraModule インスタンスのプロミス * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 + * @internal */ async function loadLyraModule() { if (LYRA_CONFIG === undefined) { @@ -1158,6 +1162,7 @@ async function loadLyraModule() { * WebRTC Encoded Transform に渡される Lyra 用の web worker を生成する * * @returns Lyra でエンコードおよびデコードを行う web worker インスタンス + * @internal */ function createLyraWorker() { const lyraWorkerScript = atob(LYRA_WORKER_SCRIPT); @@ -1170,6 +1175,7 @@ function createLyraWorker() { * @param encoder Lyra エンコーダ * @param encodedFrame PCM 音声データ * @param controller 音声データの出力キュー + * @internal */ async function transformPcmToLyra(encoder, encodedFrame, controller) { const view = new DataView(encodedFrame.data); @@ -1191,6 +1197,7 @@ async function transformPcmToLyra(encoder, encodedFrame, controller) { * @param decoder Lyra デコーダ * @param encodedFrame Lyra でエンコードされた音声データ * @param controller 音声データの出力キュー + * @internal */ async function transformLyraToPcm(decoder, encodedFrame, controller) { if (encodedFrame.data.byteLength === 3) { @@ -1215,6 +1222,7 @@ async function transformLyraToPcm(decoder, encodedFrame, controller) { } /** * SDP に記載される Lyra のエンコードパラメータ + * @internal */ class LyraParams { constructor(version, bitrate, enableDtx) { @@ -1261,6 +1269,8 @@ class LyraParams { } /** * 接続単位の Lyra 関連の状態を保持するためのクラス + * + * @internal */ class LyraState { constructor() { From cceff49364b8811b3f6cc7f82325f3f47a1e57b7 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 14:15:46 +0900 Subject: [PATCH 036/182] Update CHANGES.md --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 49f4c372..a2e32185 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,7 +11,7 @@ ## develop -- [FIX] 余計な依存が増えるのを防ぐために、ユーザが直接使わない型には @internalを指定して .d.ts に含まれないようにする +- [FIX] ユーザが直接使わない型には @internal を指定して .d.ts に含まれないようにする - sora-js-sdk 内部で使われている E2EE と Lyra 関連の型が生成される .d.ts ファイルに含まれないようにする - これによって sora-js-sdk の利用者は tsconfig.json に `skipLibCheck: true` を指定せずともコンパイルができるようになる - @sile From 80e15c8faddb682a17123de3cd2771b40315a58a Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 14:19:46 +0900 Subject: [PATCH 037/182] =?UTF-8?q?dist/=20=E3=83=87=E3=82=A3=E3=83=AC?= =?UTF-8?q?=E3=82=AF=E3=83=88=E3=83=AA=E3=81=AF=E3=83=AA=E3=83=9D=E3=82=B8?= =?UTF-8?q?=E3=83=88=E3=83=AA=E3=81=AB=E3=81=AF=E5=90=AB=E3=82=81=E3=81=AA?= =?UTF-8?q?=E3=81=84=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yaml | 1 - .gitignore | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ab6c2903..a46bc966 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -26,7 +26,6 @@ jobs: - run: pnpm run build - run: pnpm run lint - run: pnpm run test - - run: git diff --stat --exit-code - name: Slack Notification if: failure() uses: rtCamp/action-slack-notify@v2 diff --git a/.gitignore b/.gitignore index fef55c6f..5bf6cdd6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ packages/e2ee/dist packages/e2ee/_worker apidoc/ .log/ +dist/ From 53ae10ee097e04bc96c69c789756eb1a99433da4 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 14:22:09 +0900 Subject: [PATCH 038/182] Update CHANGES.md --- CHANGES.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index a2e32185..984bb818 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,10 @@ ## develop +- [CHANGE] dist/ ディレクトリはリポジトリに含めないようにする + - 含めてもあまりメリットがない割に手間が増えるので削除してしまう + - @sile + - [FIX] ユーザが直接使わない型には @internal を指定して .d.ts に含まれないようにする - sora-js-sdk 内部で使われている E2EE と Lyra 関連の型が生成される .d.ts ファイルに含まれないようにする - これによって sora-js-sdk の利用者は tsconfig.json に `skipLibCheck: true` を指定せずともコンパイルができるようになる From 988c474212edc63275c1308dbba3b03f616f9580 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 16:27:34 +0900 Subject: [PATCH 039/182] =?UTF-8?q?dist/=20=E3=83=87=E3=82=A3=E3=83=AC?= =?UTF-8?q?=E3=82=AF=E3=83=88=E3=83=AA=E3=82=92=E5=89=8A=E9=99=A4=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/base.d.ts | 653 ---- dist/helpers.d.ts | 11 - dist/lyra.d.ts | 33 - dist/packages/sdk/base.d.ts | 658 ---- dist/packages/sdk/helpers.d.ts | 11 - dist/packages/sdk/lyra.d.ts | 145 - dist/packages/sdk/publisher.d.ts | 33 - dist/packages/sdk/sora.d.ts | 141 - dist/packages/sdk/subscriber.d.ts | 26 - dist/packages/sdk/types.d.ts | 324 -- dist/packages/sdk/utils.d.ts | 18 - dist/publisher.d.ts | 33 - dist/sora.d.ts | 141 - dist/sora.js | 5297 ----------------------------- dist/sora.mjs | 5289 ---------------------------- dist/subscriber.d.ts | 26 - dist/types.d.ts | 337 -- dist/utils.d.ts | 19 - 18 files changed, 13195 deletions(-) delete mode 100644 dist/base.d.ts delete mode 100644 dist/helpers.d.ts delete mode 100644 dist/lyra.d.ts delete mode 100644 dist/packages/sdk/base.d.ts delete mode 100644 dist/packages/sdk/helpers.d.ts delete mode 100644 dist/packages/sdk/lyra.d.ts delete mode 100644 dist/packages/sdk/publisher.d.ts delete mode 100644 dist/packages/sdk/sora.d.ts delete mode 100644 dist/packages/sdk/subscriber.d.ts delete mode 100644 dist/packages/sdk/types.d.ts delete mode 100644 dist/packages/sdk/utils.d.ts delete mode 100644 dist/publisher.d.ts delete mode 100644 dist/sora.d.ts delete mode 100644 dist/sora.js delete mode 100644 dist/sora.mjs delete mode 100644 dist/subscriber.d.ts delete mode 100644 dist/types.d.ts delete mode 100644 dist/utils.d.ts diff --git a/dist/base.d.ts b/dist/base.d.ts deleted file mode 100644 index ec117e69..00000000 --- a/dist/base.d.ts +++ /dev/null @@ -1,653 +0,0 @@ -import { Callbacks, ConnectionOptions, JSONType, DataChannelConfiguration, SignalingOfferMessage, SignalingReOfferMessage, SignalingUpdateMessage } from './types'; -declare global { - interface Algorithm { - namedCurve: string; - } -} -/** - * Sora との WebRTC 接続を扱う基底クラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param role - ロール - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * @param debug - デバッグフラグ - */ -export default class ConnectionBase { - /** - * ロール(sendonly | sendrecv | recvonly) - */ - role: string; - /** - * チャネルID - */ - channelId: string; - /** - * メタデータ - */ - metadata: JSONType | undefined; - /** - * シグナリングに使用する URL 候補 - */ - signalingUrlCandidates: string | string[]; - /** - * 接続オプション - */ - options: ConnectionOptions; - /** - * PeerConnection に渡す configuration - */ - constraints: any; - /** - * デバッグフラグ - */ - debug: boolean; - /** - * クライアントID - */ - clientId: string | null; - /** - * コネクションID - */ - connectionId: string | null; - /** - * リモートコネクションIDのリスト - */ - remoteConnectionIds: string[]; - /** - * メディアストリーム - */ - stream: MediaStream | null; - /** - * type offer に含まれる認証 metadata - */ - authMetadata: JSONType; - /** - * PeerConnection インスタンス - */ - pc: RTCPeerConnection | null; - /** - * サイマルキャストで使用する RTCRtpEncodingParameters のリスト - */ - encodings: RTCRtpEncodingParameters[]; - /** - * WS シグナリングで type offer メッセージを受信したシグナリング URL - */ - connectedSignalingUrl: string; - /** - * WS シグナリングで最初に type connect を送信したシグナリング URL - */ - contactSignalingUrl: string; - /** - * WebSocket インスタンス - */ - private ws; - /** - * 初回シグナリング時接続タイムアウト用のタイマーID - */ - private connectionTimeoutTimerId; - /** - * WebSocket 切断監視用のタイマーID - */ - private monitorSignalingWebSocketEventTimerId; - /** - * PeerConnection state 切断監視用のタイマーID - */ - private monitorIceConnectionStateChangeTimerId; - /** - * 接続中の DataChannel リスト - */ - private soraDataChannels; - /** - * 初回シグナリング接続時のタイムアウトに使用するタイムアウト時間(デフォルト 60000ms) - */ - private connectionTimeout; - /** - * シグナリング候補のURLへの接続確認タイムアウトに使用するタイムアウト時間(デフォルト 3000ms) - */ - private signalingCandidateTimeout; - /** - * 切断処理のタイムアウトに使用するタイムアウト時間(デフォルト 3000ms) - */ - private disconnectWaitTimeout; - /** - * audio / video の msid - */ - private mids; - /** - * シグナリングを DataChannel へ switch したかどうかのフラグ - */ - private signalingSwitched; - /** - * シグナリング type offer に含まれる DataChannel レコード - */ - private signalingOfferMessageDataChannels; - /** - * イベントコールバックのリスト - */ - protected callbacks: Callbacks; - /** - * mid と AudioCodecType の対応づけを保持するマップ - * - * Lyra などのカスタム音声コーデック使用時に RTCRtpReceiver をどのコーデックでデコードすべきかを - * 判別するために使われる - * - * カスタム音声コーデックが有効になっていない場合には空のままとなる - */ - private midToAudioCodecType; - /** - * Lyra インスタンス - */ - private lyra?; - /** - * キーとなる sender が setupSenderTransform で初期化済みかどうか - */ - private senderStreamInitialized; - constructor(signalingUrlCandidates: string | string[], role: string, channelId: string, metadata: JSONType, options: ConnectionOptions, debug: boolean); - /** - * SendRecv Object で発火するイベントのコールバックを設定するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * sendrecv.on("track", (event) => { - * // callback 処理 - * }); - * ``` - * - * @remarks - * addstream イベントは非推奨です. track イベントを使用してください - * - * removestream イベントは非推奨です. removetrack イベントを使用してください - * - * @param kind - イベントの種類(disconnect, push, track, removetrack, notify, log, timeout, timeline, signaling, message, datachannel) - * @param callback - コールバック関数 - * - * @public - */ - on(kind: T, callback: U): void; - /** - * audio track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopAudioTrack(mediaStream); - * ``` - * - * @remarks - * stream の audio track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - audio track を削除する MediaStream - * - * @public - */ - stopAudioTrack(stream: MediaStream): Promise; - /** - * video track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopVideoTrack(mediaStream); - * ``` - * - * @remarks - * stream の video track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - video track を削除する MediaStream - * - * @public - */ - stopVideoTrack(stream: MediaStream): Promise; - /** - * audio track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({audio: true}); - * await sendrecv.replaceAudioTrack(mediaStream, replacedMediaStream.getAudioTracks()[0]); - * ``` - * - * @remarks - * stream の audio track を停止後、新しい audio track をセットします - * - * @param stream - audio track を削除する MediaStream - * @param audioTrack - 新しい audio track - * - * @public - */ - replaceAudioTrack(stream: MediaStream, audioTrack: MediaStreamTrack): Promise; - /** - * video track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({video: true}); - * await sendrecv.replaceVideoTrack(mediaStream, replacedMediaStream.getVideoTracks()[0]); - * ``` - * - * @remarks - * stream の video track を停止後、新しい video track をセットします - * - * @param stream - video track を削除する MediaStream - * @param videoTrack - 新しい video track - * - * @public - */ - replaceVideoTrack(stream: MediaStream, videoTrack: MediaStreamTrack): Promise; - /** - * connect 処理中に例外が発生した場合の切断処理をするメソッド - */ - private signalingTerminate; - /** - * PeerConnection の state に異常が発生した場合の切断処理をするメソッド - * - * @param title - disconnect callback に渡すイベントのタイトル - */ - private abendPeerConnectionState; - /** - * 何かしらの異常があった場合の切断処理 - * - * @param title - disconnect callback に渡すイベントのタイトル - * @param params - 切断時の状況を入れる Record - */ - private abend; - /** - * 接続状態の初期化をするメソッド - */ - private initializeConnection; - /** - * WebSocket を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - * - * @param title - type disconnect 時の reason - */ - private disconnectWebSocket; - /** - * DataChannel を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - private disconnectDataChannel; - /** - * PeerConnection を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - private disconnectPeerConnection; - /** - * 切断処理をするメソッド - * - * @example - * ``` - * await sendrecv.disconnect(); - * ``` - * - * @public - */ - disconnect(): Promise; - /** - * E2EE の初期設定をするメソッド - */ - protected setupE2EE(): void; - /** - * E2EE を開始するメソッド - */ - protected startE2EE(): void; - /** - * シグナリングに使う WebSocket インスタンスを作成するメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param signalingUrlCandidates - シグナリング候補の URL. 後方互換のため string | string[] を受け取る - * - * @returns - * 接続できた WebScoket インスタンスを返します - */ - protected getSignalingWebSocket(signalingUrlCandidates: string | string[]): Promise; - /** - * シグナリング処理を行うメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param ws - WebSocket インスタンス - * @param redirect - クラスター接続時にリダイレクトされた場合のフラグ - * - * @returns - * Sora から受け取った type offer メッセージを返します - */ - protected signaling(ws: WebSocket, redirect?: boolean): Promise; - /** - * PeerConnection 接続処理をするメソッド - * - * @param message - シグナリング処理で受け取った type offer メッセージ - */ - protected connectPeerConnection(message: SignalingOfferMessage): Promise; - /** - * setRemoteDescription 処理を行うメソッド - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - protected setRemoteDescription(message: SignalingOfferMessage | SignalingUpdateMessage | SignalingReOfferMessage): Promise; - /** - * createAnswer 処理を行うメソッド - * - * @remarks - * サイマルキャスト用の setParameters 処理もここで行う - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - protected createAnswer(message: SignalingOfferMessage | SignalingUpdateMessage | SignalingReOfferMessage): Promise; - /** - * カスタムコーデック対応用に offer SDP を処理するメソッド - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - private processOfferSdp; - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は setLocalDescription() メソッドに渡される - * - * @param answer SDP - * @returns 処理後の SDP - */ - private processAnswerSdpForLocal; - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は Sora に送信される - * - * @param answer SDP - * @returns 処理後の SDP - */ - private processAnswerSdpForSora; - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、送信側の WebRTC Encoded Transform をセットアップする - * - * @param sender 対象となる RTCRtpSender インスタンス - */ - protected setupSenderTransform(sender: RTCRtpSender): Promise; - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、受信側の WebRTC Encoded Transform をセットアップする - * - * @param mid コーデックの判別に使う mid - * @param receiver 対象となる RTCRtpReceiver インスタンス - */ - protected setupReceiverTransform(mid: string | null, receiver: RTCRtpReceiver): Promise; - /** - * シグナリングサーバーに type answer を投げるメソッド - */ - protected sendAnswer(): void; - /** - * iceCnadidate 処理をするメソッド - */ - protected onIceCandidate(): Promise; - /** - * connectionState が "connected" になるのを監視するメソッド - * - * @remarks - * PeerConnection.connectionState が実装されていない場合は何もしない - */ - protected waitChangeConnectionStateConnected(): Promise; - /** - * 初回シグナリング接続時の WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - protected monitorSignalingWebSocketEvent(): Promise; - /** - * WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - protected monitorWebSocketEvent(): void; - /** - * 初回シグナリング後 PeerConnection の state を監視するメソッド - * - * @remarks - * connectionState, iceConnectionState を監視して不正な場合に切断する - */ - protected monitorPeerConnectionState(): void; - /** - * 初回シグナリングの接続タイムアウト処理をするメソッド - */ - protected setConnectionTimeout(): Promise; - /** - * setConnectionTimeout でセットしたタイマーを止めるメソッド - */ - protected clearConnectionTimeout(): void; - /** - * monitorSignalingWebSocketEvent でセットしたタイマーを止めるメソッド - */ - protected clearMonitorSignalingWebSocketEvent(): void; - /** - * monitorPeerConnectionState でセットしたタイマーを止めるメソッド - */ - protected clearMonitorIceConnectionStateChange(): void; - /** - * trace log を出力するメソッド - * - * @param title - ログのタイトル - * @param message - ログの本文 - */ - protected trace(title: string, message: unknown): void; - /** - * WebSocket のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeWebSocketSignalingLog(eventType: string, data?: unknown): void; - /** - * DataChannel のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeDataChannelSignalingLog(eventType: string, channel: RTCDataChannel, data?: unknown): void; - /** - * WebSocket のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeWebSocketTimelineLog(eventType: string, data?: unknown): void; - /** - * DataChannel のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeDataChannelTimelineLog(eventType: string, channel: RTCDataChannel, data?: unknown): void; - /** - * PeerConnection のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writePeerConnectionTimelineLog(eventType: string, data?: unknown): void; - /** - * Sora との接続のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeSoraTimelineLog(eventType: string, data?: unknown): void; - /** - * createOffer 処理をするメソッド - * - * @returns - * 生成した RTCSessionDescription を返します - */ - private createOffer; - /** - * シグナリングサーバーから受け取った type e2ee メッセージを処理をするメソッド - * - * @param data - E2EE 用バイナリメッセージ - */ - private signalingOnMessageE2EE; - /** - * シグナリングサーバーから受け取った type offer メッセージを処理をするメソッド - * - * @param message - type offer メッセージ - */ - private signalingOnMessageTypeOffer; - /** - * シグナリングサーバーに type update を投げるメソッド - */ - private sendUpdateAnswer; - /** - * シグナリングサーバーに type re-answer を投げるメソッド - */ - private sendReAnswer; - /** - * シグナリングサーバーから受け取った type update メッセージを処理をするメソッド - * - * @param message - type update メッセージ - */ - private signalingOnMessageTypeUpdate; - /** - * シグナリングサーバーから受け取った type re-offer メッセージを処理をするメソッド - * - * @param message - type re-offer メッセージ - */ - private signalingOnMessageTypeReOffer; - /** - * シグナリングサーバーから受け取った type ping メッセージを処理をするメソッド - * - * @param message - type ping メッセージ - */ - private signalingOnMessageTypePing; - /** - * シグナリングサーバーから受け取った type notify メッセージを処理をするメソッド - * - * @param message - type notify メッセージ - */ - private signalingOnMessageTypeNotify; - /** - * シグナリングサーバーから受け取った type switched メッセージを処理をするメソッド - * - * @param message - type switched メッセージ - */ - private signalingOnMessageTypeSwitched; - /** - * シグナリングサーバーから受け取った type redirect メッセージを処理をするメソッド - * - * @param message - type redirect メッセージ - */ - private signalingOnMessageTypeRedirect; - /** - * sender の parameters に encodings をセットするメソッド - * - * @remarks - * サイマルキャスト用の処理 - */ - private setSenderParameters; - /** - * PeerConnection から RTCStatsReport を取得するためのメソッド - */ - private getStats; - /** - * PeerConnection の ondatachannel callback メソッド - * - * @param dataChannelEvent - DataChannel イベント - */ - private onDataChannel; - /** - * シグナリングサーバーへメッセージを送信するメソッド - * - * @param message - 送信するメッセージ - */ - private sendSignalingMessage; - /** - * シグナリングサーバーに E2E 用メッセージを投げるメソッド - * - * @param message - 送信するバイナリメッセージ - */ - private sendE2EEMessage; - /** - * シグナリングサーバーに stats メッセージを投げるメソッド - * - * @param reports - RTCStatsReport のリスト - */ - private sendStatsMessage; - /** - * audio transceiver を取得するメソッド - */ - private getAudioTransceiver; - /** - * video transceiver を取得するメソッド - */ - private getVideoTransceiver; - /** - * disconnect callback に渡す Event オブジェクトを生成するためのメソッド - * - * @param type - Event タイプ(normal | abend) - * @param title - Event タイトル - * @param initDict - Event に設定するオプションパラメーター - */ - private soraCloseEvent; - /** - * DataChannel を使用してメッセージを送信するメソッド - * - * @param label - メッセージを送信する DataChannel のラベル - * @param message - Uint8Array - */ - sendMessage(label: string, message: Uint8Array): void; - /** - * E2EE の自分のフィンガープリント - */ - get e2eeSelfFingerprint(): string | undefined; - /** - * E2EE のリモートのフィンガープリントリスト - */ - get e2eeRemoteFingerprints(): Record | undefined; - /** - * audio が有効かどうか - */ - get audio(): boolean; - /** - * video が有効かどうか - */ - get video(): boolean; - /** - * シグナリングに使用する URL - * - * @deprecated - */ - get signalingUrl(): string | string[]; - /** - * DataChannel メッセージング用の DataChannel 情報のリスト - */ - get datachannels(): DataChannelConfiguration[]; -} diff --git a/dist/helpers.d.ts b/dist/helpers.d.ts deleted file mode 100644 index a74eb59c..00000000 --- a/dist/helpers.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * MediaStream の constraints を動的に変更するメソッド. - * - * @param mediastream - メディアストリーム - * - * @param constraints - メディアストリーム制約 - * - * @public - */ -declare function applyMediaStreamConstraints(mediastream: MediaStream, constraints: MediaStreamConstraints): Promise; -export { applyMediaStreamConstraints }; diff --git a/dist/lyra.d.ts b/dist/lyra.d.ts deleted file mode 100644 index 78b39998..00000000 --- a/dist/lyra.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * Lyra の設定情報 - */ -export interface LyraConfig { - /** - * Lyra の WebAssembly ビルドファイルが配置されているディレクトリのパス(URL) - */ - wasmPath: string; - /** - * Lyra のモデルファイルが配置されているディレクトリのパス(URL) - */ - modelPath: string; -} -/** - * Lyra の初期化を行うメソッド - * - * このメソッドの呼び出し時には設定情報の保存のみを行い、 - * Lyra での音声エンコード・デコードに必要な WebAssembly ファイルおよびモデルファイルは、 - * 実際に必要になったタイミングで初めてロードされます - * - * Lyra を使うためには以下の機能がブラウザで利用可能である必要があります: - * - クロスオリジン分離(内部で SharedArrayBuffer クラスを使用しているため) - * - WebRTC Encoded Transform - * - * これらの機能が利用不可の場合には、このメソッドは警告メッセージを出力した上で、 - * 返り値として false を返します - * - * @param config Lyra の設定情報 - * @returns Lyra の初期化に成功したかどうか - * - * @public - */ -export declare function initLyra(config: LyraConfig): boolean; diff --git a/dist/packages/sdk/base.d.ts b/dist/packages/sdk/base.d.ts deleted file mode 100644 index 977c1b23..00000000 --- a/dist/packages/sdk/base.d.ts +++ /dev/null @@ -1,658 +0,0 @@ -import { Callbacks, ConnectionOptions, JSONType, DataChannelConfiguration, SignalingOfferMessage, SignalingReOfferMessage, SignalingUpdateMessage } from "./types"; -import SoraE2EE from "@sora/e2ee"; -declare global { - interface Algorithm { - namedCurve: string; - } -} -/** - * Sora との WebRTC 接続を扱う基底クラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param role - ロール - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * @param debug - デバッグフラグ - */ -export default class ConnectionBase { - /** - * ロール(sendonly | sendrecv | recvonly) - */ - role: string; - /** - * チャネルID - */ - channelId: string; - /** - * メタデータ - */ - metadata: JSONType | undefined; - /** - * シグナリングに使用する URL 候補 - */ - signalingUrlCandidates: string | string[]; - /** - * 接続オプション - */ - options: ConnectionOptions; - /** - * PeerConnection に渡す configuration - */ - constraints: any; - /** - * デバッグフラグ - */ - debug: boolean; - /** - * クライアントID - */ - clientId: string | null; - /** - * コネクションID - */ - connectionId: string | null; - /** - * リモートコネクションIDのリスト - */ - remoteConnectionIds: string[]; - /** - * メディアストリーム - */ - stream: MediaStream | null; - /** - * type offer に含まれる認証 metadata - */ - authMetadata: JSONType; - /** - * PeerConnection インスタンス - */ - pc: RTCPeerConnection | null; - /** - * サイマルキャストで使用する RTCRtpEncodingParameters のリスト - */ - encodings: RTCRtpEncodingParameters[]; - /** - * WS シグナリングで type offer メッセージを受信したシグナリング URL - */ - connectedSignalingUrl: string; - /** - * WS シグナリングで最初に type connect を送信したシグナリング URL - */ - contactSignalingUrl: string; - /** - * WebSocket インスタンス - */ - private ws; - /** - * 初回シグナリング時接続タイムアウト用のタイマーID - */ - private connectionTimeoutTimerId; - /** - * WebSocket 切断監視用のタイマーID - */ - private monitorSignalingWebSocketEventTimerId; - /** - * PeerConnection state 切断監視用のタイマーID - */ - private monitorIceConnectionStateChangeTimerId; - /** - * 接続中の DataChannel リスト - */ - private soraDataChannels; - /** - * 初回シグナリング接続時のタイムアウトに使用するタイムアウト時間(デフォルト 60000ms) - */ - private connectionTimeout; - /** - * シグナリング候補のURLへの接続確認タイムアウトに使用するタイムアウト時間(デフォルト 3000ms) - */ - private signalingCandidateTimeout; - /** - * 切断処理のタイムアウトに使用するタイムアウト時間(デフォルト 3000ms) - */ - private disconnectWaitTimeout; - /** - * audio / video の msid - */ - private mids; - /** - * シグナリングを DataChannel へ switch したかどうかのフラグ - */ - private signalingSwitched; - /** - * シグナリング type offer に含まれる DataChannel レコード - */ - private signalingOfferMessageDataChannels; - /** - * イベントコールバックのリスト - */ - protected callbacks: Callbacks; - /** - * E2EE インスタンス - */ - protected e2ee: SoraE2EE | null; - /** - * mid と AudioCodecType の対応づけを保持するマップ - * - * Lyra などのカスタム音声コーデック使用時に RTCRtpReceiver をどのコーデックでデコードすべきかを - * 判別するために使われる - * - * カスタム音声コーデックが有効になっていない場合には空のままとなる - */ - private midToAudioCodecType; - /** - * Lyra インスタンス - */ - private lyra?; - /** - * キーとなる sender が setupSenderTransform で初期化済みかどうか - */ - private senderStreamInitialized; - constructor(signalingUrlCandidates: string | string[], role: string, channelId: string, metadata: JSONType, options: ConnectionOptions, debug: boolean); - /** - * SendRecv Object で発火するイベントのコールバックを設定するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * sendrecv.on("track", (event) => { - * // callback 処理 - * }); - * ``` - * - * @remarks - * addstream イベントは非推奨です. track イベントを使用してください - * - * removestream イベントは非推奨です. removetrack イベントを使用してください - * - * @param kind - イベントの種類(disconnect, push, track, removetrack, notify, log, timeout, timeline, signaling, message, datachannel) - * @param callback - コールバック関数 - * - * @public - */ - on(kind: T, callback: U): void; - /** - * audio track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopAudioTrack(mediaStream); - * ``` - * - * @remarks - * stream の audio track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - audio track を削除する MediaStream - * - * @public - */ - stopAudioTrack(stream: MediaStream): Promise; - /** - * video track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopVideoTrack(mediaStream); - * ``` - * - * @remarks - * stream の video track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - video track を削除する MediaStream - * - * @public - */ - stopVideoTrack(stream: MediaStream): Promise; - /** - * audio track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({audio: true}); - * await sendrecv.replaceAudioTrack(mediaStream, replacedMediaStream.getAudioTracks()[0]); - * ``` - * - * @remarks - * stream の audio track を停止後、新しい audio track をセットします - * - * @param stream - audio track を削除する MediaStream - * @param audioTrack - 新しい audio track - * - * @public - */ - replaceAudioTrack(stream: MediaStream, audioTrack: MediaStreamTrack): Promise; - /** - * video track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({video: true}); - * await sendrecv.replaceVideoTrack(mediaStream, replacedMediaStream.getVideoTracks()[0]); - * ``` - * - * @remarks - * stream の video track を停止後、新しい video track をセットします - * - * @param stream - video track を削除する MediaStream - * @param videoTrack - 新しい video track - * - * @public - */ - replaceVideoTrack(stream: MediaStream, videoTrack: MediaStreamTrack): Promise; - /** - * connect 処理中に例外が発生した場合の切断処理をするメソッド - */ - private signalingTerminate; - /** - * PeerConnection の state に異常が発生した場合の切断処理をするメソッド - * - * @param title - disconnect callback に渡すイベントのタイトル - */ - private abendPeerConnectionState; - /** - * 何かしらの異常があった場合の切断処理 - * - * @param title - disconnect callback に渡すイベントのタイトル - * @param params - 切断時の状況を入れる Record - */ - private abend; - /** - * 接続状態の初期化をするメソッド - */ - private initializeConnection; - /** - * WebSocket を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - * - * @param title - type disconnect 時の reason - */ - private disconnectWebSocket; - /** - * DataChannel を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - private disconnectDataChannel; - /** - * PeerConnection を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - private disconnectPeerConnection; - /** - * 切断処理をするメソッド - * - * @example - * ``` - * await sendrecv.disconnect(); - * ``` - * - * @public - */ - disconnect(): Promise; - /** - * E2EE の初期設定をするメソッド - */ - protected setupE2EE(): void; - /** - * E2EE を開始するメソッド - */ - protected startE2EE(): void; - /** - * シグナリングに使う WebSocket インスタンスを作成するメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param signalingUrlCandidates - シグナリング候補の URL. 後方互換のため string | string[] を受け取る - * - * @returns - * 接続できた WebScoket インスタンスを返します - */ - protected getSignalingWebSocket(signalingUrlCandidates: string | string[]): Promise; - /** - * シグナリング処理を行うメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param ws - WebSocket インスタンス - * @param redirect - クラスター接続時にリダイレクトされた場合のフラグ - * - * @returns - * Sora から受け取った type offer メッセージを返します - */ - protected signaling(ws: WebSocket, redirect?: boolean): Promise; - /** - * PeerConnection 接続処理をするメソッド - * - * @param message - シグナリング処理で受け取った type offer メッセージ - */ - protected connectPeerConnection(message: SignalingOfferMessage): Promise; - /** - * setRemoteDescription 処理を行うメソッド - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - protected setRemoteDescription(message: SignalingOfferMessage | SignalingUpdateMessage | SignalingReOfferMessage): Promise; - /** - * createAnswer 処理を行うメソッド - * - * @remarks - * サイマルキャスト用の setParameters 処理もここで行う - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - protected createAnswer(message: SignalingOfferMessage | SignalingUpdateMessage | SignalingReOfferMessage): Promise; - /** - * カスタムコーデック対応用に offer SDP を処理するメソッド - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - private processOfferSdp; - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は setLocalDescription() メソッドに渡される - * - * @param answer SDP - * @returns 処理後の SDP - */ - private processAnswerSdpForLocal; - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は Sora に送信される - * - * @param answer SDP - * @returns 処理後の SDP - */ - private processAnswerSdpForSora; - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、送信側の WebRTC Encoded Transform をセットアップする - * - * @param sender 対象となる RTCRtpSender インスタンス - */ - protected setupSenderTransform(sender: RTCRtpSender): Promise; - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、受信側の WebRTC Encoded Transform をセットアップする - * - * @param mid コーデックの判別に使う mid - * @param receiver 対象となる RTCRtpReceiver インスタンス - */ - protected setupReceiverTransform(mid: string | null, receiver: RTCRtpReceiver): Promise; - /** - * シグナリングサーバーに type answer を投げるメソッド - */ - protected sendAnswer(): void; - /** - * iceCnadidate 処理をするメソッド - */ - protected onIceCandidate(): Promise; - /** - * connectionState が "connected" になるのを監視するメソッド - * - * @remarks - * PeerConnection.connectionState が実装されていない場合は何もしない - */ - protected waitChangeConnectionStateConnected(): Promise; - /** - * 初回シグナリング接続時の WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - protected monitorSignalingWebSocketEvent(): Promise; - /** - * WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - protected monitorWebSocketEvent(): void; - /** - * 初回シグナリング後 PeerConnection の state を監視するメソッド - * - * @remarks - * connectionState, iceConnectionState を監視して不正な場合に切断する - */ - protected monitorPeerConnectionState(): void; - /** - * 初回シグナリングの接続タイムアウト処理をするメソッド - */ - protected setConnectionTimeout(): Promise; - /** - * setConnectionTimeout でセットしたタイマーを止めるメソッド - */ - protected clearConnectionTimeout(): void; - /** - * monitorSignalingWebSocketEvent でセットしたタイマーを止めるメソッド - */ - protected clearMonitorSignalingWebSocketEvent(): void; - /** - * monitorPeerConnectionState でセットしたタイマーを止めるメソッド - */ - protected clearMonitorIceConnectionStateChange(): void; - /** - * trace log を出力するメソッド - * - * @param title - ログのタイトル - * @param message - ログの本文 - */ - protected trace(title: string, message: unknown): void; - /** - * WebSocket のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeWebSocketSignalingLog(eventType: string, data?: unknown): void; - /** - * DataChannel のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeDataChannelSignalingLog(eventType: string, channel: RTCDataChannel, data?: unknown): void; - /** - * WebSocket のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeWebSocketTimelineLog(eventType: string, data?: unknown): void; - /** - * DataChannel のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeDataChannelTimelineLog(eventType: string, channel: RTCDataChannel, data?: unknown): void; - /** - * PeerConnection のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writePeerConnectionTimelineLog(eventType: string, data?: unknown): void; - /** - * Sora との接続のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - protected writeSoraTimelineLog(eventType: string, data?: unknown): void; - /** - * createOffer 処理をするメソッド - * - * @returns - * 生成した RTCSessionDescription を返します - */ - private createOffer; - /** - * シグナリングサーバーから受け取った type e2ee メッセージを処理をするメソッド - * - * @param data - E2EE 用バイナリメッセージ - */ - private signalingOnMessageE2EE; - /** - * シグナリングサーバーから受け取った type offer メッセージを処理をするメソッド - * - * @param message - type offer メッセージ - */ - private signalingOnMessageTypeOffer; - /** - * シグナリングサーバーに type update を投げるメソッド - */ - private sendUpdateAnswer; - /** - * シグナリングサーバーに type re-answer を投げるメソッド - */ - private sendReAnswer; - /** - * シグナリングサーバーから受け取った type update メッセージを処理をするメソッド - * - * @param message - type update メッセージ - */ - private signalingOnMessageTypeUpdate; - /** - * シグナリングサーバーから受け取った type re-offer メッセージを処理をするメソッド - * - * @param message - type re-offer メッセージ - */ - private signalingOnMessageTypeReOffer; - /** - * シグナリングサーバーから受け取った type ping メッセージを処理をするメソッド - * - * @param message - type ping メッセージ - */ - private signalingOnMessageTypePing; - /** - * シグナリングサーバーから受け取った type notify メッセージを処理をするメソッド - * - * @param message - type notify メッセージ - */ - private signalingOnMessageTypeNotify; - /** - * シグナリングサーバーから受け取った type switched メッセージを処理をするメソッド - * - * @param message - type switched メッセージ - */ - private signalingOnMessageTypeSwitched; - /** - * シグナリングサーバーから受け取った type redirect メッセージを処理をするメソッド - * - * @param message - type redirect メッセージ - */ - private signalingOnMessageTypeRedirect; - /** - * sender の parameters に encodings をセットするメソッド - * - * @remarks - * サイマルキャスト用の処理 - */ - private setSenderParameters; - /** - * PeerConnection から RTCStatsReport を取得するためのメソッド - */ - private getStats; - /** - * PeerConnection の ondatachannel callback メソッド - * - * @param dataChannelEvent - DataChannel イベント - */ - private onDataChannel; - /** - * シグナリングサーバーへメッセージを送信するメソッド - * - * @param message - 送信するメッセージ - */ - private sendSignalingMessage; - /** - * シグナリングサーバーに E2E 用メッセージを投げるメソッド - * - * @param message - 送信するバイナリメッセージ - */ - private sendE2EEMessage; - /** - * シグナリングサーバーに stats メッセージを投げるメソッド - * - * @param reports - RTCStatsReport のリスト - */ - private sendStatsMessage; - /** - * audio transceiver を取得するメソッド - */ - private getAudioTransceiver; - /** - * video transceiver を取得するメソッド - */ - private getVideoTransceiver; - /** - * disconnect callback に渡す Event オブジェクトを生成するためのメソッド - * - * @param type - Event タイプ(normal | abend) - * @param title - Event タイトル - * @param initDict - Event に設定するオプションパラメーター - */ - private soraCloseEvent; - /** - * DataChannel を使用してメッセージを送信するメソッド - * - * @param label - メッセージを送信する DataChannel のラベル - * @param message - Uint8Array - */ - sendMessage(label: string, message: Uint8Array): void; - /** - * E2EE の自分のフィンガープリント - */ - get e2eeSelfFingerprint(): string | undefined; - /** - * E2EE のリモートのフィンガープリントリスト - */ - get e2eeRemoteFingerprints(): Record | undefined; - /** - * audio が有効かどうか - */ - get audio(): boolean; - /** - * video が有効かどうか - */ - get video(): boolean; - /** - * シグナリングに使用する URL - * - * @deprecated - */ - get signalingUrl(): string | string[]; - /** - * DataChannel メッセージング用の DataChannel 情報のリスト - */ - get datachannels(): DataChannelConfiguration[]; -} diff --git a/dist/packages/sdk/helpers.d.ts b/dist/packages/sdk/helpers.d.ts deleted file mode 100644 index a74eb59c..00000000 --- a/dist/packages/sdk/helpers.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * MediaStream の constraints を動的に変更するメソッド. - * - * @param mediastream - メディアストリーム - * - * @param constraints - メディアストリーム制約 - * - * @public - */ -declare function applyMediaStreamConstraints(mediastream: MediaStream, constraints: MediaStreamConstraints): Promise; -export { applyMediaStreamConstraints }; diff --git a/dist/packages/sdk/lyra.d.ts b/dist/packages/sdk/lyra.d.ts deleted file mode 100644 index ffb5d3d9..00000000 --- a/dist/packages/sdk/lyra.d.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { RTCEncodedAudioFrame } from "./types"; -import { LyraEncoder, LyraDecoder, LyraEncoderOptions, LyraDecoderOptions } from "@shiguredo/lyra-wasm"; -/** - * Lyra の設定情報 - */ -export interface LyraConfig { - /** - * Lyra の WebAssembly ビルドファイルが配置されているディレクトリのパス(URL) - */ - wasmPath: string; - /** - * Lyra のモデルファイルが配置されているディレクトリのパス(URL) - */ - modelPath: string; -} -/** - * Lyra の初期化を行うメソッド - * - * このメソッドの呼び出し時には設定情報の保存のみを行い、 - * Lyra での音声エンコード・デコードに必要な WebAssembly ファイルおよびモデルファイルは、 - * 実際に必要になったタイミングで初めてロードされます - * - * Lyra を使うためには以下の機能がブラウザで利用可能である必要があります: - * - クロスオリジン分離(内部で SharedArrayBuffer クラスを使用しているため) - * - WebRTC Encoded Transform - * - * これらの機能が利用不可の場合には、このメソッドは警告メッセージを出力した上で、 - * 返り値として false を返します - * - * @param config Lyra の設定情報 - * @returns Lyra の初期化に成功したかどうか - * - * @public - */ -export declare function initLyra(config: LyraConfig): boolean; -/*** - * Lyra が初期化済みかどうか - * - * @returns Lyra が初期化済みかどうか - */ -export declare function isLyraInitialized(): boolean; -/** - * Lyra のエンコーダを生成して返す - * - * @param options エンコーダに指定するオプション - * @returns Lyra エンコーダのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - */ -export declare function createLyraEncoder(options?: LyraEncoderOptions): Promise; -/** - * Lyra のデコーダを生成して返す - * - * @param options デコーダに指定するオプション - * @returns Lyra デコーダのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - */ -export declare function createLyraDecoder(options?: LyraDecoderOptions): Promise; -/** - * PCM(L16)の音声データを Lyra でエンコードする - * - * @param encoder Lyra エンコーダ - * @param encodedFrame PCM 音声データ - * @param controller 音声データの出力キュー - */ -export declare function transformPcmToLyra(encoder: LyraEncoder, encodedFrame: RTCEncodedAudioFrame, controller: TransformStreamDefaultController): void; -/** - * Lyra でエンコードされた音声データをデコードして PCM(L16)に変換する - * - * @param decoder Lyra デコーダ - * @param encodedFrame Lyra でエンコードされた音声データ - * @param controller 音声データの出力キュー - */ -export declare function transformLyraToPcm(decoder: LyraDecoder, encodedFrame: RTCEncodedAudioFrame, controller: TransformStreamDefaultController): void; -/** - * SDP に記載される Lyra のエンコードパラメータ - */ -export declare class LyraParams { - /** - * Lyra のエンコードフォーマットのバージョン - */ - readonly version: string; - /** - * エンコードビットレート - */ - readonly bitrate: 3200 | 6000 | 9200; - /** - * DTX を有効にするかどうか - */ - readonly enableDtx: boolean; - private constructor(); - /** - * SDP の media description 部分をパースして Lyra のエンコードパラメータを取得する - * - * @param media SDP の media description 部分 - * @returns パース結果 - * @throws SDP の内容が期待通りではなくパースに失敗した場合 - */ - static parseMediaDescription(media: string): LyraParams; - /** - * このエンコードパラメータに対応する SDP の fmtp 行を生成する - * - * @returns SDP の fmtp 行 - */ - toFmtpString(): string; -} -/** - * 接続単位の Lyra 関連の状態を保持するためのクラス - */ -export declare class LyraState { - private encoderOptions; - private midToLyraParams; - /** - * offer SDP を受け取り Lyra 対応のために必要な置換や情報の収集を行う - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - processOfferSdp(sdp: string): string; - /** - * setLocalDescription() に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForLocal(sdp: string): string; - /** - * Sora に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForSora(sdp: string): string; - /** - * Lyra のエンコーダを生成する - * - * @returns 生成されたエンコーダ - */ - createEncoder(): Promise; - /** - * Lyra のデコーダを生成する - * - * @returns 生成されたデコーダ - */ - createDecoder(): Promise; -} diff --git a/dist/packages/sdk/publisher.d.ts b/dist/packages/sdk/publisher.d.ts deleted file mode 100644 index 1688b010..00000000 --- a/dist/packages/sdk/publisher.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import ConnectionBase from "./base"; -/** - * Role が "sendonly" または "sendrecv" の場合に Sora との WebRTC 接続を扱うクラス - */ -export default class ConnectionPublisher extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * ``` - * - * @param stream - メディアストリーム - * - * @public - */ - connect(stream: MediaStream): Promise; - /** - * シングルストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - private singleStream; - /** - * マルチストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - private multiStream; -} diff --git a/dist/packages/sdk/sora.d.ts b/dist/packages/sdk/sora.d.ts deleted file mode 100644 index 95f87b8a..00000000 --- a/dist/packages/sdk/sora.d.ts +++ /dev/null @@ -1,141 +0,0 @@ -import ConnectionBase from "./base"; -import { initLyra, LyraConfig } from "./lyra"; -import ConnectionPublisher from "./publisher"; -import ConnectionSubscriber from "./subscriber"; -import { applyMediaStreamConstraints } from "./helpers"; -import type { AudioCodecType, Callbacks, ConnectionOptions, DataChannelConfiguration, DataChannelDirection, DataChannelEvent, DataChannelMessageEvent, JSONType, Role, SignalingEvent, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, SignalingNotifyConnectionUpdated, SignalingNotifyMessage, SignalingNotifyMetadata, SignalingNotifyNetworkStatus, SignalingNotifySpotlightChanged, SignalingNotifySpotlightFocused, SignalingNotifySpotlightUnfocused, SignalingPushMessage, Simulcast, SimulcastRid, SoraAbendTitle, SoraCloseEvent, SoraCloseEventInitDict, SoraCloseEventType, SpotlightFocusRid, TimelineEvent, TimelineEventLogType, TransportType, VideoCodecType } from "./types"; -/** - * Role 毎の Connection インスタンスを生成するためのクラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param debug - デバッグフラグ - */ -declare class SoraConnection { - /** - * シグナリングに使用する URL の候補 - */ - signalingUrlCandidates: string | string[]; - /** - * デバッグフラグ - */ - debug: boolean; - constructor(signalingUrlCandidates: string | string[], debug?: boolean); - /** - * role sendrecv で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendrecv = connection.sendrecv("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role sendrecv な Connection オブジェクトを返します - * - * @public - */ - sendrecv(channelId: string, metadata?: JSONType, options?: ConnectionOptions): ConnectionPublisher; - /** - * role sendonly で接続するための Connecion インスタンスを生成するメソッド - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendonly = connection.sendonly("sora"); - * ``` - * - * @returns - * role sendonly な Connection オブジェクトを返します - * - * @public - */ - sendonly(channelId: string, metadata?: JSONType, options?: ConnectionOptions): ConnectionPublisher; - /** - * role recvonly で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const recvonly = connection.recvonly("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role recvonly な Connection オブジェクトを返します - * - * @public - */ - recvonly(channelId: string, metadata?: JSONType, options?: ConnectionOptions): ConnectionSubscriber; - /** - * シグナリングに使用する URL の候補 - * - * @public - * @deprecated - */ - get signalingUrl(): string | string[]; -} -/** - * Sora JS SDK package - */ -declare const _default: { - /** - * E2EE で使用する WASM の読み込みを行うメソッド - * - * @example - * ```typescript - * Sora.initE2EE("http://192.0.2.100/wasm.wasm"); - * ``` - * @param wasmUrl - E2EE WASM の URL - * - * @public - */ - initE2EE: (wasmUrl: string) => Promise; - /** - * Lyra の初期化を行うメソッド - * - * 詳細は lyra.ts の initLyra() メソッドのドキュメントを参照 - */ - initLyra: typeof initLyra; - /** - * SoraConnection インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * ``` - * - * @param signalingUrlCandidates - シグナリングに使用する URL 候補 - * @param debug - デバッグフラグ - * - * @public - * - */ - connection: (signalingUrlCandidates: string | string[], debug?: boolean) => SoraConnection; - /** - * SDK のバージョンを返すメソッド - * - * @public - */ - version: () => string; - /** - * WebRTC のユーティリティ関数群 - * - * @public - */ - helpers: { - applyMediaStreamConstraints: typeof applyMediaStreamConstraints; - }; -}; -export default _default; -export type { AudioCodecType, Callbacks, ConnectionBase, ConnectionOptions, ConnectionPublisher, ConnectionSubscriber, DataChannelConfiguration, DataChannelDirection, DataChannelEvent, DataChannelMessageEvent, JSONType, LyraConfig, Role, SignalingEvent, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, SignalingNotifyConnectionUpdated, SignalingNotifyMessage, SignalingNotifyMetadata, SignalingNotifyNetworkStatus, SignalingNotifySpotlightChanged, SignalingNotifySpotlightFocused, SignalingNotifySpotlightUnfocused, SignalingPushMessage, Simulcast, SimulcastRid, SoraAbendTitle, SoraCloseEvent, SoraCloseEventInitDict, SoraCloseEventType, SoraConnection, SpotlightFocusRid, TimelineEvent, TimelineEventLogType, TransportType, VideoCodecType, }; diff --git a/dist/packages/sdk/subscriber.d.ts b/dist/packages/sdk/subscriber.d.ts deleted file mode 100644 index 9a5d22df..00000000 --- a/dist/packages/sdk/subscriber.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import ConnectionBase from "./base"; -/** - * Role が "recvonly" の場合に Sora との WebRTC 接続を扱うクラス - */ -export default class ConnectionSubscriber extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const recvonly = connection.sendrecv("sora"); - * await recvonly.connect(); - * ``` - * - * @public - */ - connect(): Promise; - /** - * シングルストリームで Sora へ接続するメソッド - */ - private singleStream; - /** - * マルチストリームで Sora へ接続するメソッド - */ - private multiStream; -} diff --git a/dist/packages/sdk/types.d.ts b/dist/packages/sdk/types.d.ts deleted file mode 100644 index 00d5ac3d..00000000 --- a/dist/packages/sdk/types.d.ts +++ /dev/null @@ -1,324 +0,0 @@ -export type JSONType = null | boolean | number | string | JSONType[] | { - [prop: string]: JSONType | undefined; -}; -export type SimulcastRid = "r0" | "r1" | "r2"; -export type SpotlightFocusRid = "none" | SimulcastRid; -export type Simulcast = boolean | { - rid: SimulcastRid; -}; -export type AudioCodecType = "OPUS" | "LYRA"; -export type SignalingAudio = boolean | { - codec_type?: AudioCodecType; - bit_rate?: number; - opus_params?: { - channels?: number; - maxplaybackrate?: number; - minptime?: number; - ptime?: number; - stereo?: boolean; - sprop_stereo?: boolean; - useinbandfec?: boolean; - usedtx?: boolean; - }; - lyra_params?: { - version?: string; - bitrate?: 3200 | 6000 | 9200; - usedtx?: boolean; - }; -}; -export type VideoCodecType = "VP9" | "VP8" | "AV1" | "H264" | "H265"; -export type SignalingVideo = boolean | { - codec_type?: VideoCodecType; - bit_rate?: number; -}; -export type Role = "sendrecv" | "sendonly" | "recvonly"; -export type SignalingConnectDataChannel = { - label?: string; - direction?: DataChannelDirection; - compress?: boolean; - max_packet_life_time?: number; - max_retransmits?: number; - protocol?: string; - ordered?: boolean; -}; -export type SignalingConnectMessage = { - type: "connect"; - role: Role; - channel_id: string; - client_id?: string; - bundle_id?: string; - metadata?: JSONType; - signaling_notify_metadata?: JSONType; - multistream?: boolean; - spotlight?: boolean; - spotlight_number?: number; - simulcast?: Simulcast; - simulcast_rid?: SimulcastRid; - audio: SignalingAudio; - video: SignalingVideo; - sdp: string; - sora_client: string; - environment: string; - e2ee?: boolean; - spotlight_focus_rid?: SpotlightFocusRid; - spotlight_unfocus_rid?: SpotlightFocusRid; - data_channel_signaling?: boolean; - ignore_disconnect_websocket?: boolean; - redirect?: true; - data_channels?: SignalingConnectDataChannel[]; - audio_streaming_language_code?: string; -}; -export type SignalingMessage = SignalingOfferMessage | SignalingUpdateMessage | SignalingReOfferMessage | SignalingPingMessage | SignalingPushMessage | SignalingNotifyMessage | SignalingReqStatsMessage | SignalingSwitchedMessage | SignalingRedirectMessage; -export type SignalingOfferMessageDataChannel = { - label: string; - direction: DataChannelDirection; - compress: boolean; -}; -export type SignalingOfferMessage = { - type: "offer"; - sdp: string; - client_id: string; - connection_id: string; - bundle_id?: string; - metadata?: JSONType; - config?: RTCConfiguration; - encodings?: RTCRtpEncodingParameters[]; - ignore_disconnect_websocket?: boolean; - data_channel_signaling?: boolean; - data_channels?: SignalingOfferMessageDataChannel[]; - mid?: { - audio?: string; - video?: string; - }; -}; -export type SignalingUpdateMessage = { - type: "update"; - sdp: string; -}; -export type SignalingReOfferMessage = { - type: "re-offer"; - sdp: string; -}; -export type SignalingPingMessage = { - type: "ping"; - stats: boolean; -}; -export type SignalingPushMessage = { - type: "push"; - data: Record; -}; -export type SignalingReqStatsMessage = { - type: "req-stats"; -}; -export type SignalingSwitchedMessage = { - type: "switched"; - ignore_disconnect_websocket: boolean; -}; -export type SignalingRedirectMessage = { - type: "redirect"; - location: string; -}; -export type SignalingNotifyMessage = SignalingNotifyConnectionCreated | SignalingNotifyConnectionUpdated | SignalingNotifyConnectionDestroyed | SignalingNotifySpotlightChanged | SignalingNotifySpotlightFocused | SignalingNotifySpotlightUnfocused | SignalingNotifyNetworkStatus; -export type SignalingNotifyMetadata = { - client_id?: string; - connection_id?: string; - authn_metadata?: JSONType; - authz_metadata?: JSONType; - metadata?: JSONType; -}; -export type SignalingNotifyConnectionCreated = { - type: "notify"; - event_type: "connection.created"; - role: Role; - client_id?: string; - connection_id?: string; - audio?: boolean; - video?: boolean; - authn_metadata?: JSONType; - authz_metadata?: JSONType; - metadata?: JSONType; - metadata_list?: SignalingNotifyMetadata[]; - data?: SignalingNotifyMetadata[]; - minutes: number; - channel_connections: number; - channel_sendrecv_connections: number; - channel_sendonly_connections: number; - channel_recvonly_connections: number; - turn_transport_type: "udp" | "tcp"; -}; -export type SignalingNotifyConnectionUpdated = { - type: "notify"; - event_type: "connection.updated"; - role: Role; - client_id?: string; - connection_id?: string; - audio?: boolean; - video?: boolean; - minutes: number; - channel_connections: number; - channel_sendrecv_connections: number; - channel_sendonly_connections: number; - channel_recvonly_connections: number; - turn_transport_type: "udp" | "tcp"; -}; -export type SignalingNotifyConnectionDestroyed = { - type: "notify"; - event_type: "connection.destroyed"; - role: Role; - client_id?: string; - connection_id?: string; - audio?: boolean; - video?: boolean; - minutes: number; - authn_metadata?: JSONType; - authz_metadata?: JSONType; - metadata?: JSONType; - channel_connections: number; - channel_sendrecv_connections: number; - channel_sendonly_connections: number; - channel_recvonly_connections: number; - turn_transport_type: "udp" | "tcp"; -}; -export type SignalingNotifySpotlightChanged = { - type: "notify"; - event_type: "spotlight.changed"; - client_id: string | null; - connection_id: string | null; - spotlight_id: string; - fixed?: boolean; - audio: boolean; - video: boolean; -}; -export type SignalingNotifySpotlightFocused = { - type: "notify"; - event_type: "spotlight.focused"; - client_id: string | null; - connection_id: string; - audio: boolean; - video: boolean; - fixed: boolean; -}; -export type SignalingNotifySpotlightUnfocused = { - type: "notify"; - event_type: "spotlight.unfocused"; - client_id: string | null; - connection_id: string; - audio: boolean; - video: boolean; - fixed: boolean; -}; -export type SignalingNotifyNetworkStatus = { - type: "notify"; - event_type: "network.status"; - unstable_level: 0 | 1 | 2 | 3; -}; -export type DataChannelDirection = "sendonly" | "sendrecv" | "recvonly"; -export type DataChannelConfiguration = { - label: string; - direction: DataChannelDirection; - compress?: boolean; - maxPacketLifeTime?: number; - maxRetransmits?: number; - protocol?: string; - ordered?: boolean; -}; -export type ConnectionOptions = { - audio?: boolean; - audioCodecType?: AudioCodecType; - audioBitRate?: number; - audioOpusParamsChannels?: number; - audioOpusParamsMaxplaybackrate?: number; - audioOpusParamsStereo?: boolean; - audioOpusParamsSpropStereo?: boolean; - audioOpusParamsMinptime?: number; - audioOpusParamsPtime?: number; - audioOpusParamsUseinbandfec?: boolean; - audioOpusParamsUsedtx?: boolean; - audioLyraParamsBitrate?: 3200 | 6000 | 9200; - audioLyraParamsUsedtx?: boolean; - video?: boolean; - videoCodecType?: VideoCodecType; - videoBitRate?: number; - multistream?: boolean; - spotlight?: boolean; - spotlightNumber?: number; - spotlightFocusRid?: SpotlightFocusRid; - spotlightUnfocusRid?: SpotlightFocusRid; - simulcast?: boolean; - simulcastRid?: SimulcastRid; - clientId?: string; - timeout?: number; - connectionTimeout?: number; - e2ee?: boolean; - signalingNotifyMetadata?: JSONType; - dataChannelSignaling?: boolean; - ignoreDisconnectWebSocket?: boolean; - disconnectWaitTimeout?: number; - signalingCandidateTimeout?: number; - dataChannels?: DataChannelConfiguration[]; - bundleId?: string; - audioStreamingLanguageCode?: string; -}; -export type Callbacks = { - disconnect: (event: SoraCloseEvent) => void; - push: (event: SignalingPushMessage, transportType: TransportType) => void; - addstream: (event: RTCTrackEvent) => void; - track: (event: RTCTrackEvent) => void; - removestream: (event: MediaStreamTrackEvent) => void; - removetrack: (event: MediaStreamTrackEvent) => void; - notify: (event: SignalingNotifyMessage, transportType: TransportType) => void; - log: (title: string, message: JSONType) => void; - timeout: () => void; - timeline: (event: TimelineEvent) => void; - signaling: (event: SignalingEvent) => void; - message: (event: DataChannelMessageEvent) => void; - datachannel: (event: DataChannelEvent) => void; -}; -export type PreKeyBundle = { - identityKey: string; - signedPreKey: string; - preKeySignature: string; -}; -export type Browser = "edge" | "chrome" | "safari" | "opera" | "firefox" | null; -export type TransportType = "websocket" | "datachannel" | "peerconnection"; -export type TimelineEventLogType = "websocket" | "datachannel" | "peerconnection" | "sora"; -export interface SignalingEvent extends Event { - transportType: TransportType; - data?: any; -} -export interface DataChannelMessageEvent extends Event { - label: string; - data: ArrayBuffer; -} -export interface DataChannelEvent extends Event { - datachannel: DataChannelConfiguration; -} -export interface TimelineEvent extends Event { - logType: TimelineEventLogType; - data?: any; - dataChannelId?: number | null; - dataChannelLabel?: string; -} -export interface SoraCloseEvent extends Event { - title: string; - code?: number; - reason?: string; - params?: Record; -} -export type SoraCloseEventType = "normal" | "abend"; -export type SoraCloseEventInitDict = { - code?: number; - reason?: string; - params?: Record; -}; -export type SoraAbendTitle = "CONNECTION-STATE-FAILED" | "DATA-CHANNEL-ONERROR" | "ICE-CONNECTION-STATE-DISCONNECTED-TIMEOUT" | "ICE-CONNECTION-STATE-FAILED" | "INTERNAL-ERROR" | "WEBSOCKET-ONCLOSE" | "WEBSOCKET-ONERROR"; -export interface RTCEncodedAudioFrame { - readonly timestamp: number; - data: ArrayBuffer; - getMetadata(): RTCEncodedAudioFrameMetadata; -} -export interface RTCEncodedAudioFrameMetadata { - synchronizationSource: number; - payloadType: number; - contributingSources: [number]; -} diff --git a/dist/packages/sdk/utils.d.ts b/dist/packages/sdk/utils.d.ts deleted file mode 100644 index fc4d33c2..00000000 --- a/dist/packages/sdk/utils.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ConnectionOptions, JSONType, DataChannelConfiguration, DataChannelEvent, DataChannelMessageEvent, PreKeyBundle, SignalingConnectMessage, SignalingEvent, SignalingNotifyMetadata, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, TimelineEvent, TimelineEventLogType, TransportType } from "./types"; -export declare function isSafari(): boolean; -export declare function isChrome(): boolean; -export declare function createSignalingMessage(offerSDP: string, role: string, channelId: string | null | undefined, metadata: JSONType | undefined, options: ConnectionOptions, redirect: boolean): SignalingConnectMessage; -export declare function getSignalingNotifyAuthnMetadata(message: SignalingNotifyConnectionCreated | SignalingNotifyConnectionDestroyed | SignalingNotifyMetadata): JSONType; -export declare function getSignalingNotifyData(message: SignalingNotifyConnectionCreated): SignalingNotifyMetadata[]; -export declare function getPreKeyBundle(message: JSONType): PreKeyBundle | null; -export declare function trace(clientId: string | null, title: string, value: unknown): void; -export declare class ConnectError extends Error { - code?: number; - reason?: string; -} -export declare function createSignalingEvent(eventType: string, data: unknown, transportType: TransportType): SignalingEvent; -export declare function createDataChannelData(channel: RTCDataChannel): Record; -export declare function createTimelineEvent(eventType: string, data: unknown, logType: TimelineEventLogType, dataChannelId?: number | null, dataChannelLabel?: string): TimelineEvent; -export declare function createDataChannelMessageEvent(label: string, data: ArrayBuffer): DataChannelMessageEvent; -export declare function createDataChannelEvent(channel: DataChannelConfiguration): DataChannelEvent; -export declare function parseDataChannelEventData(eventData: unknown, compress: boolean): string; diff --git a/dist/publisher.d.ts b/dist/publisher.d.ts deleted file mode 100644 index bdb6eb64..00000000 --- a/dist/publisher.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -import ConnectionBase from './base'; -/** - * Role が "sendonly" または "sendrecv" の場合に Sora との WebRTC 接続を扱うクラス - */ -export default class ConnectionPublisher extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * ``` - * - * @param stream - メディアストリーム - * - * @public - */ - connect(stream: MediaStream): Promise; - /** - * シングルストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - private singleStream; - /** - * マルチストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - private multiStream; -} diff --git a/dist/sora.d.ts b/dist/sora.d.ts deleted file mode 100644 index 1db6235e..00000000 --- a/dist/sora.d.ts +++ /dev/null @@ -1,141 +0,0 @@ -import ConnectionBase from './base'; -import { initLyra, LyraConfig } from './lyra'; -import ConnectionPublisher from './publisher'; -import ConnectionSubscriber from './subscriber'; -import { applyMediaStreamConstraints } from './helpers'; -import type { AudioCodecType, Callbacks, ConnectionOptions, DataChannelConfiguration, DataChannelDirection, DataChannelEvent, DataChannelMessageEvent, JSONType, Role, SignalingEvent, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, SignalingNotifyConnectionUpdated, SignalingNotifyMessage, SignalingNotifyMetadata, SignalingNotifyNetworkStatus, SignalingNotifySpotlightChanged, SignalingNotifySpotlightFocused, SignalingNotifySpotlightUnfocused, SignalingPushMessage, Simulcast, SimulcastRid, SoraAbendTitle, SoraCloseEvent, SoraCloseEventInitDict, SoraCloseEventType, SpotlightFocusRid, TimelineEvent, TimelineEventLogType, TransportType, VideoCodecType } from './types'; -/** - * Role 毎の Connection インスタンスを生成するためのクラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param debug - デバッグフラグ - */ -declare class SoraConnection { - /** - * シグナリングに使用する URL の候補 - */ - signalingUrlCandidates: string | string[]; - /** - * デバッグフラグ - */ - debug: boolean; - constructor(signalingUrlCandidates: string | string[], debug?: boolean); - /** - * role sendrecv で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendrecv = connection.sendrecv("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role sendrecv な Connection オブジェクトを返します - * - * @public - */ - sendrecv(channelId: string, metadata?: JSONType, options?: ConnectionOptions): ConnectionPublisher; - /** - * role sendonly で接続するための Connecion インスタンスを生成するメソッド - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendonly = connection.sendonly("sora"); - * ``` - * - * @returns - * role sendonly な Connection オブジェクトを返します - * - * @public - */ - sendonly(channelId: string, metadata?: JSONType, options?: ConnectionOptions): ConnectionPublisher; - /** - * role recvonly で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const recvonly = connection.recvonly("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role recvonly な Connection オブジェクトを返します - * - * @public - */ - recvonly(channelId: string, metadata?: JSONType, options?: ConnectionOptions): ConnectionSubscriber; - /** - * シグナリングに使用する URL の候補 - * - * @public - * @deprecated - */ - get signalingUrl(): string | string[]; -} -/** - * Sora JS SDK package - */ -declare const _default: { - /** - * E2EE で使用する WASM の読み込みを行うメソッド - * - * @example - * ```typescript - * Sora.initE2EE("http://192.0.2.100/wasm.wasm"); - * ``` - * @param wasmUrl - E2EE WASM の URL - * - * @public - */ - initE2EE: (wasmUrl: string) => Promise; - /** - * Lyra の初期化を行うメソッド - * - * 詳細は lyra.ts の initLyra() メソッドのドキュメントを参照 - */ - initLyra: typeof initLyra; - /** - * SoraConnection インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * ``` - * - * @param signalingUrlCandidates - シグナリングに使用する URL 候補 - * @param debug - デバッグフラグ - * - * @public - * - */ - connection: (signalingUrlCandidates: string | string[], debug?: boolean) => SoraConnection; - /** - * SDK のバージョンを返すメソッド - * - * @public - */ - version: () => string; - /** - * WebRTC のユーティリティ関数群 - * - * @public - */ - helpers: { - applyMediaStreamConstraints: typeof applyMediaStreamConstraints; - }; -}; -export default _default; -export type { AudioCodecType, Callbacks, ConnectionBase, ConnectionOptions, ConnectionPublisher, ConnectionSubscriber, DataChannelConfiguration, DataChannelDirection, DataChannelEvent, DataChannelMessageEvent, JSONType, LyraConfig, Role, SignalingEvent, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, SignalingNotifyConnectionUpdated, SignalingNotifyMessage, SignalingNotifyMetadata, SignalingNotifyNetworkStatus, SignalingNotifySpotlightChanged, SignalingNotifySpotlightFocused, SignalingNotifySpotlightUnfocused, SignalingPushMessage, Simulcast, SimulcastRid, SoraAbendTitle, SoraCloseEvent, SoraCloseEventInitDict, SoraCloseEventType, SoraConnection, SpotlightFocusRid, TimelineEvent, TimelineEventLogType, TransportType, VideoCodecType, }; diff --git a/dist/sora.js b/dist/sora.js deleted file mode 100644 index ada91bab..00000000 --- a/dist/sora.js +++ /dev/null @@ -1,5297 +0,0 @@ -/** - * sora-js-sdk - * WebRTC SFU Sora JavaScript SDK - * @version: 2023.2.0-canary.0 - * @author: Shiguredo Inc. - * @license: Apache-2.0 - **/ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Sora = factory()); -})(this, (function () { 'use strict'; - - /** - * @sora/e2ee - * WebRTC SFU Sora JavaScript E2EE Library - * @version: 2021.1.0 - * @author: Shiguredo Inc. - * @license: Apache-2.0 - **/ - - // Copyright 2018 The Go Authors. All rights reserved. - // Use of this source code is governed by a BSD-style - // license that can be found in the LICENSE file. - - function WasmExec () { - (() => { - // Map multiple JavaScript environments to a single common API, - // preferring web standards over Node.js API. - // - // Environments considered: - // - Browsers - // - Node.js - // - Electron - // - Parcel - - if (typeof global !== "undefined") ; else if (typeof window !== "undefined") { - window.global = window; - } else if (typeof self !== "undefined") { - self.global = self; - } else { - throw new Error("cannot export Go (neither global, window nor self is defined)"); - } - - if (!global.require && typeof require !== "undefined") { - global.require = require; - } - - if (!global.fs && global.require) { - const fs = require("fs"); - if (Object.keys(fs) !== 0) { - global.fs = fs; - } - } - - const enosys = () => { - const err = new Error("not implemented"); - err.code = "ENOSYS"; - return err; - }; - - if (!global.fs) { - let outputBuf = ""; - global.fs = { - constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused - writeSync(fd, buf) { - outputBuf += decoder.decode(buf); - const nl = outputBuf.lastIndexOf("\n"); - if (nl != -1) { - console.log(outputBuf.substr(0, nl)); - outputBuf = outputBuf.substr(nl + 1); - } - return buf.length; - }, - write(fd, buf, offset, length, position, callback) { - if (offset !== 0 || length !== buf.length || position !== null) { - callback(enosys()); - return; - } - const n = this.writeSync(fd, buf); - callback(null, n); - }, - chmod(path, mode, callback) { callback(enosys()); }, - chown(path, uid, gid, callback) { callback(enosys()); }, - close(fd, callback) { callback(enosys()); }, - fchmod(fd, mode, callback) { callback(enosys()); }, - fchown(fd, uid, gid, callback) { callback(enosys()); }, - fstat(fd, callback) { callback(enosys()); }, - fsync(fd, callback) { callback(null); }, - ftruncate(fd, length, callback) { callback(enosys()); }, - lchown(path, uid, gid, callback) { callback(enosys()); }, - link(path, link, callback) { callback(enosys()); }, - lstat(path, callback) { callback(enosys()); }, - mkdir(path, perm, callback) { callback(enosys()); }, - open(path, flags, mode, callback) { callback(enosys()); }, - read(fd, buffer, offset, length, position, callback) { callback(enosys()); }, - readdir(path, callback) { callback(enosys()); }, - readlink(path, callback) { callback(enosys()); }, - rename(from, to, callback) { callback(enosys()); }, - rmdir(path, callback) { callback(enosys()); }, - stat(path, callback) { callback(enosys()); }, - symlink(path, link, callback) { callback(enosys()); }, - truncate(path, length, callback) { callback(enosys()); }, - unlink(path, callback) { callback(enosys()); }, - utimes(path, atime, mtime, callback) { callback(enosys()); }, - }; - } - - if (!global.process) { - global.process = { - getuid() { return -1; }, - getgid() { return -1; }, - geteuid() { return -1; }, - getegid() { return -1; }, - getgroups() { throw enosys(); }, - pid: -1, - ppid: -1, - umask() { throw enosys(); }, - cwd() { throw enosys(); }, - chdir() { throw enosys(); }, - }; - } - - if (!global.crypto) { - const nodeCrypto = require("crypto"); - global.crypto = { - getRandomValues(b) { - nodeCrypto.randomFillSync(b); - }, - }; - } - - if (!global.performance) { - global.performance = { - now() { - const [sec, nsec] = process.hrtime(); - return sec * 1000 + nsec / 1000000; - }, - }; - } - - if (!global.TextEncoder) { - global.TextEncoder = require("util").TextEncoder; - } - - if (!global.TextDecoder) { - global.TextDecoder = require("util").TextDecoder; - } - - // End of polyfills for common API. - - const encoder = new TextEncoder("utf-8"); - const decoder = new TextDecoder("utf-8"); - - global.Go = class { - constructor() { - this.argv = ["js"]; - this.env = {}; - this.exit = (code) => { - if (code !== 0) { - console.warn("exit code:", code); - } - }; - this._exitPromise = new Promise((resolve) => { - this._resolveExitPromise = resolve; - }); - this._pendingEvent = null; - this._scheduledTimeouts = new Map(); - this._nextCallbackTimeoutID = 1; - - const setInt64 = (addr, v) => { - this.mem.setUint32(addr + 0, v, true); - this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true); - }; - - const getInt64 = (addr) => { - const low = this.mem.getUint32(addr + 0, true); - const high = this.mem.getInt32(addr + 4, true); - return low + high * 4294967296; - }; - - const loadValue = (addr) => { - const f = this.mem.getFloat64(addr, true); - if (f === 0) { - return undefined; - } - if (!isNaN(f)) { - return f; - } - - const id = this.mem.getUint32(addr, true); - return this._values[id]; - }; - - const storeValue = (addr, v) => { - const nanHead = 0x7FF80000; - - if (typeof v === "number" && v !== 0) { - if (isNaN(v)) { - this.mem.setUint32(addr + 4, nanHead, true); - this.mem.setUint32(addr, 0, true); - return; - } - this.mem.setFloat64(addr, v, true); - return; - } - - if (v === undefined) { - this.mem.setFloat64(addr, 0, true); - return; - } - - let id = this._ids.get(v); - if (id === undefined) { - id = this._idPool.pop(); - if (id === undefined) { - id = this._values.length; - } - this._values[id] = v; - this._goRefCounts[id] = 0; - this._ids.set(v, id); - } - this._goRefCounts[id]++; - let typeFlag = 0; - switch (typeof v) { - case "object": - if (v !== null) { - typeFlag = 1; - } - break; - case "string": - typeFlag = 2; - break; - case "symbol": - typeFlag = 3; - break; - case "function": - typeFlag = 4; - break; - } - this.mem.setUint32(addr + 4, nanHead | typeFlag, true); - this.mem.setUint32(addr, id, true); - }; - - const loadSlice = (addr) => { - const array = getInt64(addr + 0); - const len = getInt64(addr + 8); - return new Uint8Array(this._inst.exports.mem.buffer, array, len); - }; - - const loadSliceOfValues = (addr) => { - const array = getInt64(addr + 0); - const len = getInt64(addr + 8); - const a = new Array(len); - for (let i = 0; i < len; i++) { - a[i] = loadValue(array + i * 8); - } - return a; - }; - - const loadString = (addr) => { - const saddr = getInt64(addr + 0); - const len = getInt64(addr + 8); - return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len)); - }; - - const timeOrigin = Date.now() - performance.now(); - this.importObject = { - go: { - // Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters) - // may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported - // function. A goroutine can switch to a new stack if the current stack is too small (see morestack function). - // This changes the SP, thus we have to update the SP used by the imported function. - - // func wasmExit(code int32) - "runtime.wasmExit": (sp) => { - const code = this.mem.getInt32(sp + 8, true); - this.exited = true; - delete this._inst; - delete this._values; - delete this._goRefCounts; - delete this._ids; - delete this._idPool; - this.exit(code); - }, - - // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32) - "runtime.wasmWrite": (sp) => { - const fd = getInt64(sp + 8); - const p = getInt64(sp + 16); - const n = this.mem.getInt32(sp + 24, true); - fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n)); - }, - - // func resetMemoryDataView() - "runtime.resetMemoryDataView": (sp) => { - this.mem = new DataView(this._inst.exports.mem.buffer); - }, - - // func nanotime1() int64 - "runtime.nanotime1": (sp) => { - setInt64(sp + 8, (timeOrigin + performance.now()) * 1000000); - }, - - // func walltime1() (sec int64, nsec int32) - "runtime.walltime1": (sp) => { - const msec = (new Date).getTime(); - setInt64(sp + 8, msec / 1000); - this.mem.setInt32(sp + 16, (msec % 1000) * 1000000, true); - }, - - // func scheduleTimeoutEvent(delay int64) int32 - "runtime.scheduleTimeoutEvent": (sp) => { - const id = this._nextCallbackTimeoutID; - this._nextCallbackTimeoutID++; - this._scheduledTimeouts.set(id, setTimeout( - () => { - this._resume(); - while (this._scheduledTimeouts.has(id)) { - // for some reason Go failed to register the timeout event, log and try again - // (temporary workaround for https://github.com/golang/go/issues/28975) - console.warn("scheduleTimeoutEvent: missed timeout event"); - this._resume(); - } - }, - getInt64(sp + 8) + 1, // setTimeout has been seen to fire up to 1 millisecond early - )); - this.mem.setInt32(sp + 16, id, true); - }, - - // func clearTimeoutEvent(id int32) - "runtime.clearTimeoutEvent": (sp) => { - const id = this.mem.getInt32(sp + 8, true); - clearTimeout(this._scheduledTimeouts.get(id)); - this._scheduledTimeouts.delete(id); - }, - - // func getRandomData(r []byte) - "runtime.getRandomData": (sp) => { - crypto.getRandomValues(loadSlice(sp + 8)); - }, - - // func finalizeRef(v ref) - "syscall/js.finalizeRef": (sp) => { - const id = this.mem.getUint32(sp + 8, true); - this._goRefCounts[id]--; - if (this._goRefCounts[id] === 0) { - const v = this._values[id]; - this._values[id] = null; - this._ids.delete(v); - this._idPool.push(id); - } - }, - - // func stringVal(value string) ref - "syscall/js.stringVal": (sp) => { - storeValue(sp + 24, loadString(sp + 8)); - }, - - // func valueGet(v ref, p string) ref - "syscall/js.valueGet": (sp) => { - const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16)); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 32, result); - }, - - // func valueSet(v ref, p string, x ref) - "syscall/js.valueSet": (sp) => { - Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32)); - }, - - // func valueDelete(v ref, p string) - "syscall/js.valueDelete": (sp) => { - Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16)); - }, - - // func valueIndex(v ref, i int) ref - "syscall/js.valueIndex": (sp) => { - storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16))); - }, - - // valueSetIndex(v ref, i int, x ref) - "syscall/js.valueSetIndex": (sp) => { - Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24)); - }, - - // func valueCall(v ref, m string, args []ref) (ref, bool) - "syscall/js.valueCall": (sp) => { - try { - const v = loadValue(sp + 8); - const m = Reflect.get(v, loadString(sp + 16)); - const args = loadSliceOfValues(sp + 32); - const result = Reflect.apply(m, v, args); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 56, result); - this.mem.setUint8(sp + 64, 1); - } catch (err) { - storeValue(sp + 56, err); - this.mem.setUint8(sp + 64, 0); - } - }, - - // func valueInvoke(v ref, args []ref) (ref, bool) - "syscall/js.valueInvoke": (sp) => { - try { - const v = loadValue(sp + 8); - const args = loadSliceOfValues(sp + 16); - const result = Reflect.apply(v, undefined, args); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 40, result); - this.mem.setUint8(sp + 48, 1); - } catch (err) { - storeValue(sp + 40, err); - this.mem.setUint8(sp + 48, 0); - } - }, - - // func valueNew(v ref, args []ref) (ref, bool) - "syscall/js.valueNew": (sp) => { - try { - const v = loadValue(sp + 8); - const args = loadSliceOfValues(sp + 16); - const result = Reflect.construct(v, args); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 40, result); - this.mem.setUint8(sp + 48, 1); - } catch (err) { - storeValue(sp + 40, err); - this.mem.setUint8(sp + 48, 0); - } - }, - - // func valueLength(v ref) int - "syscall/js.valueLength": (sp) => { - setInt64(sp + 16, parseInt(loadValue(sp + 8).length)); - }, - - // valuePrepareString(v ref) (ref, int) - "syscall/js.valuePrepareString": (sp) => { - const str = encoder.encode(String(loadValue(sp + 8))); - storeValue(sp + 16, str); - setInt64(sp + 24, str.length); - }, - - // valueLoadString(v ref, b []byte) - "syscall/js.valueLoadString": (sp) => { - const str = loadValue(sp + 8); - loadSlice(sp + 16).set(str); - }, - - // func valueInstanceOf(v ref, t ref) bool - "syscall/js.valueInstanceOf": (sp) => { - this.mem.setUint8(sp + 24, (loadValue(sp + 8) instanceof loadValue(sp + 16)) ? 1 : 0); - }, - - // func copyBytesToGo(dst []byte, src ref) (int, bool) - "syscall/js.copyBytesToGo": (sp) => { - const dst = loadSlice(sp + 8); - const src = loadValue(sp + 32); - if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { - this.mem.setUint8(sp + 48, 0); - return; - } - const toCopy = src.subarray(0, dst.length); - dst.set(toCopy); - setInt64(sp + 40, toCopy.length); - this.mem.setUint8(sp + 48, 1); - }, - - // func copyBytesToJS(dst ref, src []byte) (int, bool) - "syscall/js.copyBytesToJS": (sp) => { - const dst = loadValue(sp + 8); - const src = loadSlice(sp + 16); - if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { - this.mem.setUint8(sp + 48, 0); - return; - } - const toCopy = src.subarray(0, dst.length); - dst.set(toCopy); - setInt64(sp + 40, toCopy.length); - this.mem.setUint8(sp + 48, 1); - }, - - "debug": (value) => { - console.log(value); - }, - } - }; - } - - async run(instance) { - this._inst = instance; - this.mem = new DataView(this._inst.exports.mem.buffer); - this._values = [ // JS values that Go currently has references to, indexed by reference id - NaN, - 0, - null, - true, - false, - global, - this, - ]; - this._goRefCounts = new Array(this._values.length).fill(Infinity); // number of references that Go has to a JS value, indexed by reference id - this._ids = new Map([ // mapping from JS values to reference ids - [0, 1], - [null, 2], - [true, 3], - [false, 4], - [global, 5], - [this, 6], - ]); - this._idPool = []; // unused ids that have been garbage collected - this.exited = false; // whether the Go program has exited - - // Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory. - let offset = 4096; - - const strPtr = (str) => { - const ptr = offset; - const bytes = encoder.encode(str + "\0"); - new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes); - offset += bytes.length; - if (offset % 8 !== 0) { - offset += 8 - (offset % 8); - } - return ptr; - }; - - const argc = this.argv.length; - - const argvPtrs = []; - this.argv.forEach((arg) => { - argvPtrs.push(strPtr(arg)); - }); - argvPtrs.push(0); - - const keys = Object.keys(this.env).sort(); - keys.forEach((key) => { - argvPtrs.push(strPtr(`${key}=${this.env[key]}`)); - }); - argvPtrs.push(0); - - const argv = offset; - argvPtrs.forEach((ptr) => { - this.mem.setUint32(offset, ptr, true); - this.mem.setUint32(offset + 4, 0, true); - offset += 8; - }); - - this._inst.exports.run(argc, argv); - if (this.exited) { - this._resolveExitPromise(); - } - await this._exitPromise; - } - - _resume() { - if (this.exited) { - throw new Error("Go program has already exited"); - } - this._inst.exports.resume(); - if (this.exited) { - this._resolveExitPromise(); - } - } - - _makeFuncWrapper(id) { - const go = this; - return function () { - const event = { id: id, this: this, args: arguments }; - go._pendingEvent = event; - go._resume(); - return event.result; - }; - } - }; - - if ( - global.require && - global.require.main === module && - global.process && - global.process.versions && - !global.process.versions.electron - ) { - if (process.argv.length < 3) { - console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); - process.exit(1); - } - - const go = new Go(); - go.argv = process.argv.slice(2); - go.env = Object.assign({ TMPDIR: require("os").tmpdir() }, process.env); - go.exit = process.exit; - WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { - process.on("exit", (code) => { // Node.js exits if no event handler is pending - if (code === 0 && !go.exited) { - // deadlock, make Go print error and stack traces - go._pendingEvent = { id: 0 }; - go._resume(); - } - }); - return go.run(result.instance); - }).catch((err) => { - console.error(err); - process.exit(1); - }); - } - })(); - } - - const WORKER_SCRIPT = 'InVzZSBzdHJpY3QiOwovKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi8KY29uc3QgY29ubmVjdGlvbklkTGVuZ3RoID0gMjY7CmZ1bmN0aW9uIGJ5dGVDb3VudChuKSB7CiAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICAvLyBsb2cyNTYoeCkgPSBsb2coeCkgLyBsb2coMjU2KQogICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cobikgLyBNYXRoLmxvZygyICoqIDgpICsgMSk7Cn0KZnVuY3Rpb24gYXJyYXlCdWZmZXJUb051bWJlcihhcnJheUJ1ZmZlcikgewogICAgLy8gMzJiaXQg44G+44Gn44KS5oOz5a6aIChCaWdJbnQg44G444Gu5pu444GN5o+b44GI5pmC44Gr6KaB5L+u5q2jKQogICAgY29uc3QgbmV3QXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQpOwogICAgY29uc3QgbmV3RGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcobmV3QXJyYXlCdWZmZXIpOwogICAgY29uc3QgZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIpOwogICAgY29uc3QgcGFkZGluZ0xlbmd0aCA9IFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UIC0gZGF0YVZpZXcuYnl0ZUxlbmd0aDsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFkZGluZ0xlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgbmV3RGF0YVZpZXcuc2V0VWludDgoaSwgMCk7CiAgICB9CiAgICBmb3IgKGxldCBpID0gcGFkZGluZ0xlbmd0aCwgaiA9IDA7IGkgPCBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDsgaSArPSAxLCBqICs9IDEpIHsKICAgICAgICBuZXdEYXRhVmlldy5zZXRVaW50OChpLCBkYXRhVmlldy5nZXRVaW50OChqKSk7CiAgICB9CiAgICByZXR1cm4gbmV3RGF0YVZpZXcuZ2V0VWludDMyKDApOwp9CmZ1bmN0aW9uIGVuY29kZVNGcmFtZUhlYWRlcihzLCBjb3VudCwga2V5SWQpIHsKICAgIC8vICAwIDEgMiAzIDQgNSA2IDcKICAgIC8vICstKy0rLSstKy0rLSstKy0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIC8vIHxTfExFTiAgfDF8S0xFTiB8ICAgS0lELi4uIChsZW5ndGg9S0xFTikgICAgfCAgICBDVFIuLi4gKGxlbmd0aD1MRU4pICAgIHwKICAgIC8vICstKy0rLSstKy0rLSstKy0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIC8vIFM6IDEgYml0CiAgICAvLyBMRU46IDMgYml0CiAgICAvLyBYOiAxIGJpdAogICAgLy8gS0xFTjogMyBiaXQKICAgIC8vIEtJRDogS0xFTiBieXRlCiAgICAvLyBDVFI6IExFTiBieXRlCiAgICAvLyBUT0RPOiBrZXlJZCAoS0lEKSDjgYwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsIDcgYnl0ZSDjgpLotoXjgYjjgabjgYTjgZ/loLTlkIjjga/jgqjjg6njg7zjgYvkvovlpJYKICAgIC8vIFRPRE86IGNvdW50IChDVFIpIOOBjCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwgNyBieXRlIOOCkui2heOBiOOBpuOBhOOBn+WgtOWQiOOBr+OCqOODqeODvOOBi+S+i+WklgogICAgaWYgKG1heEtleUlkIDwga2V5SWQgfHwgbWF4Q291bnQgPCBjb3VudCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRVhDRUVERUQtTUFYSU1VTS1CUk9BRENBU1RJTkctVElNRScpOwogICAgfQogICAgY29uc3Qga2xlbiA9IGJ5dGVDb3VudChrZXlJZCk7CiAgICBjb25zdCBsZW4gPSBieXRlQ291bnQoY291bnQpOwogICAgY29uc3QgaGVhZGVyQnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEgKyBrbGVuICsgbGVuKTsKICAgIGNvbnN0IGhlYWRlckRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGhlYWRlckJ1ZmZlcik7CiAgICAvLyBTLCBMRU4sIDEsIEtMRU4g44GnIDEgYnl0ZQogICAgaGVhZGVyRGF0YVZpZXcuc2V0VWludDgoMCwgKHMgPDwgNykgKyAobGVuIDw8IDQpICsgKDEgPDwgMykgKyBrbGVuKTsKICAgIGNvbnN0IGhlYWRlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShoZWFkZXJCdWZmZXIpOwogICAgY29uc3Qga2V5SWRCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQpOwogICAgY29uc3Qga2V5SWREYXRhVmlldyA9IG5ldyBEYXRhVmlldyhrZXlJZEJ1ZmZlcik7CiAgICBrZXlJZERhdGFWaWV3LnNldFVpbnQzMigwLCBrZXlJZCk7CiAgICBjb25zdCBrZXlJZFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShrZXlJZEJ1ZmZlcik7CiAgICBoZWFkZXJVaW50OEFycmF5LnNldChrZXlJZFVpbnQ4QXJyYXkuc3ViYXJyYXkoVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgLSBrbGVuKSwgMSk7CiAgICBjb25zdCBjb3VudEJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCk7CiAgICBjb25zdCBjb3VudERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGNvdW50QnVmZmVyKTsKICAgIGNvdW50RGF0YVZpZXcuc2V0VWludDMyKDAsIGNvdW50KTsKICAgIGNvbnN0IGNvdW50VWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGNvdW50QnVmZmVyKTsKICAgIGhlYWRlclVpbnQ4QXJyYXkuc2V0KGNvdW50VWludDhBcnJheS5zdWJhcnJheShVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAtIGxlbiksIGtsZW4gKyAxKTsKICAgIHJldHVybiBoZWFkZXJVaW50OEFycmF5Owp9CmZ1bmN0aW9uIHNwbGl0SGVhZGVyKHNmcmFtZSkgewogICAgY29uc3Qgc2ZyYW1lRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoc2ZyYW1lKTsKICAgIGNvbnN0IGhlYWRlciA9IHNmcmFtZURhdGFWaWV3LmdldFVpbnQ4KDApOwogICAgY29uc3QgbGVuID0gKGhlYWRlciAmIDB4NzApID4+IDQ7CiAgICBjb25zdCBrbGVuID0gaGVhZGVyICYgMHgwNzsKICAgIGNvbnN0IHNmcmFtZUhlYWRlckxlbmd0aCA9IDEgKyBrbGVuICsgbGVuOwogICAgY29uc3Qgc2ZyYW1lSGVhZGVyID0gc2ZyYW1lLnNsaWNlKDAsIHNmcmFtZUhlYWRlckxlbmd0aCk7CiAgICBpZiAoc2ZyYW1lSGVhZGVyLmJ5dGVMZW5ndGggPCBzZnJhbWVIZWFkZXJMZW5ndGgpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VORVhQRUNURUQtU0ZSQU1FLUxFTkdUSCcpOwogICAgfQogICAgY29uc3QgY29ubmVjdGlvbklkID0gc2ZyYW1lLnNsaWNlKHNmcmFtZUhlYWRlckxlbmd0aCwgc2ZyYW1lSGVhZGVyTGVuZ3RoICsgY29ubmVjdGlvbklkTGVuZ3RoKTsKICAgIGNvbnN0IGVuY3J5cHRlZEZyYW1lID0gc2ZyYW1lLnNsaWNlKHNmcmFtZUhlYWRlckxlbmd0aCArIGNvbm5lY3Rpb25JZExlbmd0aCwgc2ZyYW1lLmJ5dGVMZW5ndGgpOwogICAgcmV0dXJuIFtzZnJhbWVIZWFkZXIsIGNvbm5lY3Rpb25JZCwgZW5jcnlwdGVkRnJhbWVdOwp9CmZ1bmN0aW9uIHBhcnNlU0ZyYW1lSGVhZGVyKHNmcmFtZUhlYWRlcikgewogICAgY29uc3Qgc2ZyYW1lSGVhZGVyRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoc2ZyYW1lSGVhZGVyKTsKICAgIGNvbnN0IGhlYWRlciA9IHNmcmFtZUhlYWRlckRhdGFWaWV3LmdldFVpbnQ4KDApOwogICAgY29uc3QgcyA9IChoZWFkZXIgJiAweDgwKSA+PiA3OwogICAgY29uc3QgbGVuID0gKGhlYWRlciAmIDB4NzApID4+IDQ7CiAgICBjb25zdCB4ID0gKGhlYWRlciAmIDB4MDgpID4+IDM7CiAgICBjb25zdCBrbGVuID0gaGVhZGVyICYgMHgwNzsKICAgIC8vIHggZmxhZwogICAgaWYgKHggIT09IDEpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VORVhQRUNURUQtWC1GTEFHJyk7CiAgICB9CiAgICBjb25zdCBoZWFkZXJMZW5ndGggPSAxICsga2xlbiArIGxlbjsKICAgIGlmIChzZnJhbWVIZWFkZXJEYXRhVmlldy5ieXRlTGVuZ3RoIDwgaGVhZGVyTGVuZ3RoKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVTkVYUEVDVEVELVNGUkFNRS1IRUFERVItTEVOR1RIJyk7CiAgICB9CiAgICBjb25zdCBrZXlJZEJ1ZmZlciA9IHNmcmFtZUhlYWRlci5zbGljZSgxLCAxICsga2xlbik7CiAgICBjb25zdCBrZXlJZCA9IGFycmF5QnVmZmVyVG9OdW1iZXIoa2V5SWRCdWZmZXIpOwogICAgY29uc3QgY291bnRCdWZmZXIgPSBzZnJhbWVIZWFkZXIuc2xpY2UoMSArIGtsZW4sIGhlYWRlckxlbmd0aCk7CiAgICBjb25zdCBjb3VudCA9IGFycmF5QnVmZmVyVG9OdW1iZXIoY291bnRCdWZmZXIpOwogICAgcmV0dXJuIFtzLCBjb3VudCwga2V5SWRdOwp9Ci8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC90cmlwbGUtc2xhc2gtcmVmZXJlbmNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi8KLy8vIDxyZWZlcmVuY2UgcGF0aD0iLi9zZnJhbWUudHMiLz4KLy8gVE9ETzog5omx44GG5pWw5YCk44GM5aSn44GN44GE566H5omA44Gn44GvIE51bWJlciDjgYvjgokgQmlnSW50IOOBq+e9ruOBjeaPm+OBiOOCiwovLyBUT0RPOiBCaWdJbnQg44Gr572u44GN5o+b44GI44KL6Zqb44Gr5aSJ5pu044GZ44KLCmNvbnN0IG1heEtleUlkID0gMiAqKiAzMjsKY29uc3QgbWF4Q291bnQgPSAyICoqIDMyOwpjb25zdCBzZWxmRGVyaXZlS2V5TWFwID0gbmV3IE1hcCgpOwpjb25zdCBjb3VudE1hcCA9IG5ldyBNYXAoKTsKY29uc3Qgd3JpdGVJVk1hcCA9IG5ldyBNYXAoKTsKY29uc3QgcmVtb3RlRGVyaXZlS2V5TWFwID0gbmV3IE1hcCgpOwpjb25zdCBsYXRlc3RSZW1vdGVLZXlJZE1hcCA9IG5ldyBNYXAoKTsKY29uc3QgbGl0dGxlRW5kaWFuID0gdHJ1ZTsKY29uc3QgYmlnRW5kaWFuID0gIWxpdHRsZUVuZGlhbjsKY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTsKY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTsKLy8gVlA4IOOBruOBvwovLyBUT0RPKG5ha2FpKTogVlA5IC8gQVYxIOOCguWwhuadpeeahOOBq+WvvuW/nOOCguiAg+OBiOOCiwpjb25zdCB1bmVuY3J5cHRlZEJ5dGVzID0gewogICAgLy8gSSDjg5Xjg6zjg7zjg6AKICAgIGtleTogMTAsCiAgICAvLyDpnZ4gSSDjg5Xjg6zjg7zjg6AKICAgIGRlbHRhOiAzLAogICAgLy8g44Kq44O844OH44Kj44KqCiAgICB1bmRlZmluZWQ6IDEsCn07CmZ1bmN0aW9uIGdldENvdW50KGNvbm5lY3Rpb25JZCkgewogICAgcmV0dXJuIGNvdW50TWFwLmdldChjb25uZWN0aW9uSWQpIHx8IDA7Cn0KZnVuY3Rpb24gc2V0Q291bnQoY29ubmVjdGlvbklkLCBjb3VudCkgewogICAgcmV0dXJuIGNvdW50TWFwLnNldChjb25uZWN0aW9uSWQsIGNvdW50KTsKfQpmdW5jdGlvbiBnZXRSZW1vdGVEZXJpdmVLZXkoY29ubmVjdGlvbklkLCBrZXlJZCkgewogICAgaWYgKCFyZW1vdGVEZXJpdmVLZXlNYXAuaGFzKGNvbm5lY3Rpb25JZCkpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JFTU9URS1ERVJJVkVLRVktTUFQLU5PVC1GT1VORCcpOwogICAgfQogICAgY29uc3QgZGVyaXZlS2V5TWFwID0gcmVtb3RlRGVyaXZlS2V5TWFwLmdldChjb25uZWN0aW9uSWQpOwogICAgaWYgKCFkZXJpdmVLZXlNYXApIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICByZXR1cm4gZGVyaXZlS2V5TWFwLmdldChrZXlJZCk7Cn0KZnVuY3Rpb24gc2V0UmVtb3RlRGVyaXZlS2V5KGNvbm5lY3Rpb25JZCwga2V5SWQsIGRlcml2ZUtleSkgewogICAgbGV0IGRlcml2ZUtleU1hcCA9IHJlbW90ZURlcml2ZUtleU1hcC5nZXQoY29ubmVjdGlvbklkKTsKICAgIGlmICghZGVyaXZlS2V5TWFwKSB7CiAgICAgICAgZGVyaXZlS2V5TWFwID0gbmV3IE1hcCgpOwogICAgfQogICAgZGVyaXZlS2V5TWFwLnNldChrZXlJZCwgZGVyaXZlS2V5KTsKICAgIHJlbW90ZURlcml2ZUtleU1hcC5zZXQoY29ubmVjdGlvbklkLCBkZXJpdmVLZXlNYXApOwp9CmZ1bmN0aW9uIHNldExhdGVzdFJlbW90ZUtleUlkKGNvbm5lY3Rpb25JZCwga2V5SWQpIHsKICAgIGNvbnN0IGxhdGVzdFJlbW90ZUtleUlkID0gbGF0ZXN0UmVtb3RlS2V5SWRNYXAuZ2V0KGNvbm5lY3Rpb25JZCk7CiAgICBpZiAobGF0ZXN0UmVtb3RlS2V5SWQpIHsKICAgICAgICBpZiAobGF0ZXN0UmVtb3RlS2V5SWQgPCBrZXlJZCkgewogICAgICAgICAgICBsYXRlc3RSZW1vdGVLZXlJZE1hcC5zZXQoY29ubmVjdGlvbklkLCBrZXlJZCk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgbGF0ZXN0UmVtb3RlS2V5SWRNYXAuc2V0KGNvbm5lY3Rpb25JZCwga2V5SWQpOwogICAgfQp9CmZ1bmN0aW9uIHJlbW92ZU9sZFJlbW90ZURlcml2ZUtleXMoKSB7CiAgICBsYXRlc3RSZW1vdGVLZXlJZE1hcC5mb3JFYWNoKChsYXRlc3RLZXlJZCwgY29ubmVjdGlvbklkKSA9PiB7CiAgICAgICAgY29uc3QgZGVyaXZlS2V5TWFwID0gcmVtb3RlRGVyaXZlS2V5TWFwLmdldChjb25uZWN0aW9uSWQpOwogICAgICAgIGlmIChkZXJpdmVLZXlNYXApIHsKICAgICAgICAgICAgZGVyaXZlS2V5TWFwLmZvckVhY2goKF8sIGtleUlkKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAobGF0ZXN0S2V5SWQgIT09IGtleUlkKSB7CiAgICAgICAgICAgICAgICAgICAgZGVyaXZlS2V5TWFwLmRlbGV0ZShrZXlJZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0pOwp9CmZ1bmN0aW9uIHJlbW92ZURlcml2ZUtleShjb25uZWN0aW9uSWQpIHsKICAgIGxhdGVzdFJlbW90ZUtleUlkTWFwLmRlbGV0ZShjb25uZWN0aW9uSWQpOwogICAgcmVtb3RlRGVyaXZlS2V5TWFwLmRlbGV0ZShjb25uZWN0aW9uSWQpOwp9CmZ1bmN0aW9uIGdldExhdGVzdFNlbGZEZXJpdmVLZXkoKSB7CiAgICBjb25zdCBkZXJpdmVLZXkgPSBzZWxmRGVyaXZlS2V5TWFwLmdldCgnbGF0ZXN0Jyk7CiAgICBpZiAoIWRlcml2ZUtleSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignTEFURVNULVNFTEYtREVSSVZFS0VZLU5PVF9GT1VORCcpOwogICAgfQogICAgcmV0dXJuIGRlcml2ZUtleTsKfQpmdW5jdGlvbiBzZXRTZWxmRGVyaXZlS2V5KGNvbm5lY3Rpb25JZCwga2V5SWQsIGRlcml2ZUtleSkgewogICAgY29uc3QgY3VycmVudFNlbGZEZXJpdmVLZXkgPSBzZWxmRGVyaXZlS2V5TWFwLmdldCgnbGF0ZXN0Jyk7CiAgICBpZiAoY3VycmVudFNlbGZEZXJpdmVLZXkpIHsKICAgICAgICBpZiAoY3VycmVudFNlbGZEZXJpdmVLZXlbJ2tleUlkJ10gPCBrZXlJZCkgewogICAgICAgICAgICBjb25zdCBuZXh0U2VsZkRlcml2ZUtleSA9IHsgY29ubmVjdGlvbklkLCBrZXlJZCwgZGVyaXZlS2V5IH07CiAgICAgICAgICAgIHNlbGZEZXJpdmVLZXlNYXAuc2V0KCdsYXRlc3QnLCBuZXh0U2VsZkRlcml2ZUtleSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgY29uc3QgbmV4dFNlbGZEZXJpdmVLZXkgPSB7IGNvbm5lY3Rpb25JZCwga2V5SWQsIGRlcml2ZUtleSB9OwogICAgICAgIHNlbGZEZXJpdmVLZXlNYXAuc2V0KCdsYXRlc3QnLCBuZXh0U2VsZkRlcml2ZUtleSk7CiAgICB9Cn0KZnVuY3Rpb24gc2lsZW5jZUZyYW1lKGVuY29kZWRGcmFtZSkgewogICAgLy8gY29ubmVjdGlvbi5jcmVhdGVkLCByZWNlaXZlTWVzc2FnZSDlj5fkv6HliY3jga7loLTlkIgKICAgIGlmIChlbmNvZGVkRnJhbWUudHlwZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgLy8g6Z+z5aOw44Gv5pqX5Y+35YyW44Gv44GE44KL44Go6IGe44GR44Gf44KC44Gu44GY44KD44Gq44GE44Gu44Gn572u44GN5o+b44GI44KLCiAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBBcnJheUJ1ZmZlcigzKTsKICAgICAgICBjb25zdCBuZXdVaW50OCA9IG5ldyBVaW50OEFycmF5KG5ld0RhdGEpOwogICAgICAgIC8vIE9wdXMg44K144Kk44Os44Oz44K544OV44Os44O844OgCiAgICAgICAgbmV3VWludDguc2V0KFsweGQ4LCAweGZmLCAweGZlXSk7CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBuZXdEYXRhOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgLy8g5pig5YOP44GM5q2j5bi444GY44KD44Gq44GE44Gf44KBIFBMSSDjgrnjg4jjg7zjg6DjgYznmbrnlJ/jgZfjgabjgZfjgb7jgYYKICAgICAgICAvLyDjgZ3jga7jgZ/jgoEgMzIweDI0MCDjga7nnJ/jgaPpu5LjgarnlLvpnaLjgavnva7jgY3mj5vjgYjjgosKICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IEFycmF5QnVmZmVyKDYwKTsKICAgICAgICBjb25zdCBuZXdVaW50OCA9IG5ldyBVaW50OEFycmF5KG5ld0RhdGEpOwogICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZQogICAgICAgIG5ld1VpbnQ4LnNldChbMHhiMCwgMHgwNSwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHhhMCwgMHgwMCwgMHg1YSwgMHgwMCwKICAgICAgICAgICAgMHgzOSwgMHgwMywgMHgwMCwgMHgwMCwgMHgxYywgMHgyMiwgMHgxNiwgMHgxNiwgMHgyMiwgMHg2NiwKICAgICAgICAgICAgMHgxMiwgMHgyMCwgMHgwNCwgMHg5MCwgMHg0MCwgMHgwMCwgMHhjNSwgMHgwMSwgMHhlMCwgMHg3YywKICAgICAgICAgICAgMHg0ZCwgMHgyZiwgMHhmYSwgMHhkZCwgMHg0ZCwgMHhhNSwgMHg3ZiwgMHg4OSwgMHhhNSwgMHhmZiwKICAgICAgICAgICAgMHg1YiwgMHhhOSwgMHhiNCwgMHhhZiwgMHhmMSwgMHgzNCwgMHhiZiwgMHhlYiwgMHg3NSwgMHgzNiwKICAgICAgICAgICAgMHg5NSwgMHhmZSwgMHgyNiwgMHg5NiwgMHg2MCwgMHhmZSwgMHhmZiwgMHhiYSwgMHhmZiwgMHg0MCwKICAgICAgICBdKTsKICAgICAgICBlbmNvZGVkRnJhbWUuZGF0YSA9IG5ld0RhdGE7CiAgICB9CiAgICByZXR1cm4gZW5jb2RlZEZyYW1lOwp9CmZ1bmN0aW9uIHNldFdyaXRlSVYoY29ubmVjdGlvbklkLCBrZXlJZCwgd3JpdGVJVikgewogICAgY29uc3Qga2V5ID0gW2Nvbm5lY3Rpb25JZCwga2V5SWQudG9TdHJpbmcoKV0uam9pbignOicpOwogICAgd3JpdGVJVk1hcC5zZXQoa2V5LCB3cml0ZUlWKTsKfQpmdW5jdGlvbiBnZXRXcml0ZUlWKGNvbm5lY3Rpb25JZCwga2V5SWQpIHsKICAgIGNvbnN0IGtleSA9IFtjb25uZWN0aW9uSWQsIGtleUlkLnRvU3RyaW5nKCldLmpvaW4oJzonKTsKICAgIHJldHVybiB3cml0ZUlWTWFwLmdldChrZXkpOwp9CmZ1bmN0aW9uIGdlbmVyYXRlSVYoY291bnQsIGNvbm5lY3Rpb25JZCwga2V5SWQpIHsKICAgIC8vIFRPRE86IGtleUlkIOOBjCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwgNyBieXRlIOOCkui2heOBiOOBpuOBhOOBn+WgtOWQiOOBr+OCqOODqeODvOOBi+S+i+WklgogICAgLy8gVE9ETzogY291bnQg44GMIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLCA3IGJ5dGUg44KS6LaF44GI44Gm44GE44Gf5aC05ZCI44Gv44Ko44Op44O844GL5L6L5aSWCiAgICAvLyAzMiBiaXQg44G+44GnCiAgICBpZiAobWF4S2V5SWQgPCBrZXlJZCB8fCBtYXhDb3VudCA8IGNvdW50KSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFWENFRURFRC1NQVhJTVVNLUJST0FEQ0FTVElORy1USU1FJyk7CiAgICB9CiAgICBjb25zdCB3cml0ZUlWID0gZ2V0V3JpdGVJVihjb25uZWN0aW9uSWQsIGtleUlkKTsKICAgIGlmICghd3JpdGVJVikgewogICAgICAgIHRocm93IG5ldyBFcnJvcignV1JJVEVJVi1OT1QtRk9VTkQnKTsKICAgIH0KICAgIGNvbnN0IHBhZGRpbmdMZW5ndGggPSBObiAtIFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UOwogICAgY29uc3QgY291bnRXaXRoUGFkZGluZ0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihObik7CiAgICBjb25zdCBjb3VudFdpdGhQYWRkaW5nRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoY291bnRXaXRoUGFkZGluZ0J1ZmZlcik7CiAgICBjb3VudFdpdGhQYWRkaW5nRGF0YVZpZXcuc2V0VWludDMyKHBhZGRpbmdMZW5ndGgsIGNvdW50LCBiaWdFbmRpYW4pOwogICAgY29uc3QgaXYgPSBuZXcgVWludDhBcnJheShObik7CiAgICBjb25zdCBjb3VudFdpdGhQYWRkaW5nID0gbmV3IFVpbnQ4QXJyYXkoY291bnRXaXRoUGFkZGluZ0J1ZmZlcik7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5uOyBpKyspIHsKICAgICAgICBpdltpXSA9IHdyaXRlSVZbaV0gXiBjb3VudFdpdGhQYWRkaW5nW2ldOwogICAgfQogICAgcmV0dXJuIGl2Owp9CmZ1bmN0aW9uIHBhcnNlUGF5bG9hZChwYXlsb2FkVHlwZSwgcGF5bG9hZCkgewogICAgcmV0dXJuIFsKICAgICAgICBuZXcgVWludDhBcnJheShwYXlsb2FkLCAwLCB1bmVuY3J5cHRlZEJ5dGVzW3BheWxvYWRUeXBlXSksCiAgICAgICAgbmV3IFVpbnQ4QXJyYXkocGF5bG9hZCwgdW5lbmNyeXB0ZWRCeXRlc1twYXlsb2FkVHlwZV0pLAogICAgXTsKfQpmdW5jdGlvbiBlbmNvZGVGcmFtZUFkZChoZWFkZXIsIHNmcmFtZUhlYWRlciwgY29ubmVjdGlvbklkKSB7CiAgICBjb25zdCBjb25uZWN0aW9uSWREYXRhID0gdGV4dEVuY29kZXIuZW5jb2RlKGNvbm5lY3Rpb25JZCk7CiAgICBjb25zdCBmcmFtZUFkZCA9IG5ldyBVaW50OEFycmF5KGhlYWRlci5ieXRlTGVuZ3RoICsgc2ZyYW1lSGVhZGVyLmJ5dGVMZW5ndGggKyBjb25uZWN0aW9uSWREYXRhLmJ5dGVMZW5ndGgpOwogICAgZnJhbWVBZGQuc2V0KGhlYWRlciwgMCk7CiAgICBmcmFtZUFkZC5zZXQoc2ZyYW1lSGVhZGVyLCBoZWFkZXIuYnl0ZUxlbmd0aCk7CiAgICBmcmFtZUFkZC5zZXQoY29ubmVjdGlvbklkRGF0YSwgaGVhZGVyLmJ5dGVMZW5ndGggKyBzZnJhbWVIZWFkZXIuYnl0ZUxlbmd0aCk7CiAgICByZXR1cm4gZnJhbWVBZGQ7Cn0KYXN5bmMgZnVuY3Rpb24gZW5jcnlwdEZ1bmN0aW9uKGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgY29uc3QgeyBjb25uZWN0aW9uSWQsIGtleUlkLCBkZXJpdmVLZXkgfSA9IGdldExhdGVzdFNlbGZEZXJpdmVLZXkoKTsKICAgIGlmICghZGVyaXZlS2V5KSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgY3VycmVudENvdW50ID0gZ2V0Q291bnQoY29ubmVjdGlvbklkKTsKICAgIC8vIGNvdW50IOOBjCAzMiBiaXQg5Lul5LiK44Gu5aC05ZCI44Gv5YGc5q2i44GZ44KLCiAgICBpZiAoY3VycmVudENvdW50ID4gbWF4Q291bnQpIHsKICAgICAgICBwb3N0TWVzc2FnZSh7IHR5cGU6ICdkaXNjb25uZWN0JyB9KTsKICAgIH0KICAgIGNvbnN0IGl2ID0gZ2VuZXJhdGVJVihjdXJyZW50Q291bnQsIGNvbm5lY3Rpb25JZCwga2V5SWQpOwogICAgaWYgKCFpdikgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IFtoZWFkZXIsIHBheWxvYWRdID0gcGFyc2VQYXlsb2FkKGVuY29kZWRGcmFtZS50eXBlLCBlbmNvZGVkRnJhbWUuZGF0YSk7CiAgICBjb25zdCBzZnJhbWVIZWFkZXIgPSBlbmNvZGVTRnJhbWVIZWFkZXIoMCwgY3VycmVudENvdW50LCBrZXlJZCk7CiAgICBjb25zdCBmcmFtZUFkZCA9IGVuY29kZUZyYW1lQWRkKGhlYWRlciwgc2ZyYW1lSGVhZGVyLCBjb25uZWN0aW9uSWQpOwogICAgY3J5cHRvLnN1YnRsZQogICAgICAgIC5lbmNyeXB0KHsKICAgICAgICBuYW1lOiAnQUVTLUdDTScsCiAgICAgICAgaXY6IGl2LAogICAgICAgIC8vIOaal+WPt+WMluOBleOCjOOBpuOBhOOBquOBhOmDqOWIhgogICAgICAgIGFkZGl0aW9uYWxEYXRhOiBmcmFtZUFkZCwKICAgIH0sIGRlcml2ZUtleSwgcGF5bG9hZCkKICAgICAgICAudGhlbigoY2lwaGVyVGV4dCkgPT4gewogICAgICAgIGNvbnN0IG5ld0RhdGEgPSBuZXcgQXJyYXlCdWZmZXIoZnJhbWVBZGQuYnl0ZUxlbmd0aCArIGNpcGhlclRleHQuYnl0ZUxlbmd0aCk7CiAgICAgICAgY29uc3QgbmV3RGF0YVVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkobmV3RGF0YSk7CiAgICAgICAgbmV3RGF0YVVpbnQ4LnNldChmcmFtZUFkZCwgMCk7CiAgICAgICAgbmV3RGF0YVVpbnQ4LnNldChuZXcgVWludDhBcnJheShjaXBoZXJUZXh0KSwgZnJhbWVBZGQuYnl0ZUxlbmd0aCk7CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBuZXdEYXRhOwogICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVkRnJhbWUpOwogICAgfSk7CiAgICBzZXRDb3VudChjb25uZWN0aW9uSWQsIGN1cnJlbnRDb3VudCArIDEpOwp9CmFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRGdW5jdGlvbihlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgIC8vIOepuuODleODrOODvOODoOWvvuW/nAogICAgaWYgKGVuY29kZWRGcmFtZS5kYXRhLmJ5dGVMZW5ndGggPCAxKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdHJ5IHsKICAgICAgICBjb25zdCBmcmFtZU1ldGFkYXRhQnVmZmVyID0gZW5jb2RlZEZyYW1lLmRhdGEuc2xpY2UoMCwgdW5lbmNyeXB0ZWRCeXRlc1tlbmNvZGVkRnJhbWUudHlwZV0pOwogICAgICAgIGNvbnN0IGZyYW1lTWV0YWRhdGEgPSBuZXcgVWludDhBcnJheShmcmFtZU1ldGFkYXRhQnVmZmVyKTsKICAgICAgICBjb25zdCBbc2ZyYW1lSGVhZGVyQnVmZmVyLCBjb25uZWN0aW9uSWRCdWZmZXIsIGVuY3J5cHRlZEZyYW1lQnVmZmVyXSA9IHNwbGl0SGVhZGVyKGVuY29kZWRGcmFtZS5kYXRhLnNsaWNlKHVuZW5jcnlwdGVkQnl0ZXNbZW5jb2RlZEZyYW1lLnR5cGVdKSk7CiAgICAgICAgY29uc3Qgc2ZyYW1lSGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoc2ZyYW1lSGVhZGVyQnVmZmVyKTsKICAgICAgICBjb25zdCBjb25uZWN0aW9uSWQgPSB0ZXh0RGVjb2Rlci5kZWNvZGUoY29ubmVjdGlvbklkQnVmZmVyKTsKICAgICAgICBjb25zdCBbcywgY291bnQsIGtleUlkXSA9IHBhcnNlU0ZyYW1lSGVhZGVyKHNmcmFtZUhlYWRlckJ1ZmZlcik7CiAgICAgICAgLy8g5LuK5Zue44GvIHMgZmxhZyDjga8gMCDjga7jgb8KICAgICAgICBpZiAocyAhPT0gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VORVhQRUNURUQtUy1GTEFHJyk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlcml2ZUtleSA9IGdldFJlbW90ZURlcml2ZUtleShjb25uZWN0aW9uSWQsIGtleUlkKTsKICAgICAgICBpZiAoIWRlcml2ZUtleSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGl2ID0gZ2VuZXJhdGVJVihjb3VudCwgY29ubmVjdGlvbklkLCBrZXlJZCk7CiAgICAgICAgaWYgKCFpdikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGZyYW1lQWRkID0gZW5jb2RlRnJhbWVBZGQoZnJhbWVNZXRhZGF0YSwgc2ZyYW1lSGVhZGVyLCBjb25uZWN0aW9uSWQpOwogICAgICAgIGNyeXB0by5zdWJ0bGUKICAgICAgICAgICAgLmRlY3J5cHQoewogICAgICAgICAgICBuYW1lOiAnQUVTLUdDTScsCiAgICAgICAgICAgIGl2OiBpdiwKICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IGZyYW1lQWRkLAogICAgICAgIH0sIGRlcml2ZUtleSwgbmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGVkRnJhbWVCdWZmZXIpKQogICAgICAgICAgICAudGhlbigocGxhaW5UZXh0KSA9PiB7CiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBuZXcgQXJyYXlCdWZmZXIoZnJhbWVNZXRhZGF0YUJ1ZmZlci5ieXRlTGVuZ3RoICsgcGxhaW5UZXh0LmJ5dGVMZW5ndGgpOwogICAgICAgICAgICBjb25zdCBuZXdVaW50OCA9IG5ldyBVaW50OEFycmF5KG5ld0RhdGEpOwogICAgICAgICAgICBuZXdVaW50OC5zZXQobmV3IFVpbnQ4QXJyYXkoZnJhbWVNZXRhZGF0YUJ1ZmZlciwgMCwgdW5lbmNyeXB0ZWRCeXRlc1tlbmNvZGVkRnJhbWUudHlwZV0pKTsKICAgICAgICAgICAgbmV3VWludDguc2V0KG5ldyBVaW50OEFycmF5KHBsYWluVGV4dCksIHVuZW5jcnlwdGVkQnl0ZXNbZW5jb2RlZEZyYW1lLnR5cGVdKTsKICAgICAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBuZXdEYXRhOwogICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgICAgICB9KTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgLy8g5oOz5a6a5aSW44Gu44OR44Kx44OD44OI44OV44Kp44O844Oe44OD44OI44KS5Y+X5L+h44GX44Gf5aC05ZCICiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHNpbGVuY2VGcmFtZShlbmNvZGVkRnJhbWUpKTsKICAgIH0KfQovKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvdHJpcGxlLXNsYXNoLXJlZmVyZW5jZSAqLwovLy8gPHJlZmVyZW5jZSBwYXRoPSIuL2UyZWUudHMiLz4KLy8gbm9uY2Ug44K144Kk44K6CmNvbnN0IE5uID0gMTI7Ci8vIGtleSDjgrXjgqTjgroKY29uc3QgTmsgPSAxNjsKLy8ga2V5IOOCteOCpOOCuu+8iGJpdO+8iQpjb25zdCBrZXlMZW5ndGggPSBOayAqIDg7CmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRGVyaXZlS2V5KG1hdGVyaWFsKSB7CiAgICBjb25zdCBzYWx0ID0gdGV4dEVuY29kZXIuZW5jb2RlKCdTRnJhbWUxMCcpOwogICAgY29uc3QgaW5mbyA9IHRleHRFbmNvZGVyLmVuY29kZSgna2V5Jyk7CiAgICBjb25zdCBkZXJpdmVLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRlcml2ZUtleSh7CiAgICAgICAgbmFtZTogJ0hLREYnLAogICAgICAgIHNhbHQ6IHNhbHQsCiAgICAgICAgaGFzaDogJ1NIQS0yNTYnLAogICAgICAgIGluZm86IGluZm8sCiAgICB9LCBtYXRlcmlhbCwgewogICAgICAgIG5hbWU6ICdBRVMtR0NNJywKICAgICAgICBsZW5ndGg6IGtleUxlbmd0aCwKICAgIH0sIGZhbHNlLCBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddKTsKICAgIHJldHVybiBkZXJpdmVLZXk7Cn0KYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVXcml0ZUlWKG1hdGVyaWFsKSB7CiAgICBjb25zdCBzYWx0ID0gdGV4dEVuY29kZXIuZW5jb2RlKCdTRnJhbWUxMCcpOwogICAgY29uc3QgaW5mbyA9IHRleHRFbmNvZGVyLmVuY29kZSgnc2FsdCcpOwogICAgY29uc3Qgd3JpdGVJVkJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGVyaXZlQml0cyh7CiAgICAgICAgbmFtZTogJ0hLREYnLAogICAgICAgIHNhbHQ6IHNhbHQsCiAgICAgICAgaGFzaDogJ1NIQS0zODQnLAogICAgICAgIGluZm86IGluZm8sCiAgICB9LCBtYXRlcmlhbCwgCiAgICAvLyBJViDjga8gOTYg44OT44OD44OI44Gq44Gu44GnCiAgICBObiAqIDgpOwogICAgY29uc3Qgd3JpdGVJViA9IG5ldyBVaW50OEFycmF5KHdyaXRlSVZCdWZmZXIpOwogICAgcmV0dXJuIHdyaXRlSVY7Cn0KbGV0IHJlbW92YWxUaW1lb3V0SWQgPSAwOwpvbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKICAgIGNvbnN0IHsgdHlwZSB9ID0gZXZlbnQuZGF0YTsKICAgIGlmICh0eXBlID09PSAnc2VsZlNlY3JldEtleU1hdGVyaWFsJykgewogICAgICAgIGNvbnN0IHsgc2VsZlNlY3JldEtleU1hdGVyaWFsLCBzZWxmQ29ubmVjdGlvbklkLCBzZWxmS2V5SWQsIHdhaXRpbmdUaW1lIH0gPSBldmVudC5kYXRhOwogICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBjcnlwdG8uc3VidGxlCiAgICAgICAgICAgICAgICAuaW1wb3J0S2V5KCdyYXcnLCBzZWxmU2VjcmV0S2V5TWF0ZXJpYWwuYnVmZmVyLCAnSEtERicsIGZhbHNlLCBbJ2Rlcml2ZUJpdHMnLCAnZGVyaXZlS2V5J10pCiAgICAgICAgICAgICAgICAudGhlbigobWF0ZXJpYWwpID0+IHsKICAgICAgICAgICAgICAgIGdlbmVyYXRlRGVyaXZlS2V5KG1hdGVyaWFsKS50aGVuKChkZXJpdmVLZXkpID0+IHsKICAgICAgICAgICAgICAgICAgICBzZXRTZWxmRGVyaXZlS2V5KHNlbGZDb25uZWN0aW9uSWQsIHNlbGZLZXlJZCwgZGVyaXZlS2V5KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgZ2VuZXJhdGVXcml0ZUlWKG1hdGVyaWFsKS50aGVuKCh3cml0ZUlWKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc2V0V3JpdGVJVihzZWxmQ29ubmVjdGlvbklkLCBzZWxmS2V5SWQsIHdyaXRlSVYpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwgd2FpdGluZ1RpbWUgfHwgMCk7CiAgICAgICAgLy8gVE9ETzogKzEwMDAg44Gn6Y2155Sf5oiQ5b6M44Gr5a6f6KGM44GV44KM44KL44KI44GG44Gr44GX44Gm44GE44KL44GM55+t44GE5aC05ZCI44Gv5Ly444Gw44GZCiAgICAgICAgY29uc3QgcmVtb3ZhbFdhaXRpbmdUaW1lID0gKHdhaXRpbmdUaW1lIHx8IDApICsgMTAwMDsKICAgICAgICBpZiAocmVtb3ZhbFRpbWVvdXRJZCkgewogICAgICAgICAgICAvLyDli5XkvZzmuIjjgb/jgr/jgqTjg57jg7zmnInjgooKICAgICAgICAgICAgaWYgKHdhaXRpbmdUaW1lKSB7CiAgICAgICAgICAgICAgICAvLyBjb25uZWN0aW9uLmRlc3Ryb3llZAogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHJlbW92YWxUaW1lb3V0SWQpOwogICAgICAgICAgICAgICAgcmVtb3ZhbFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFJlbW90ZURlcml2ZUtleXMoKTsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQocmVtb3ZhbFRpbWVvdXRJZCk7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZhbFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICB9LCByZW1vdmFsV2FpdGluZ1RpbWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyDli5XkvZzmuIjjgb/jgr/jgqTjg57jg7zjgarjgZcKICAgICAgICAgICAgLy8gY29ubmVjdGlvbi5jcmVhdGVkIOOBruWgtOWQiOOCguWwkeOBl+Wun+ihjOOCkumBheOCieOBm+OCiwogICAgICAgICAgICByZW1vdmFsVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICByZW1vdmVPbGRSZW1vdGVEZXJpdmVLZXlzKCk7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQocmVtb3ZhbFRpbWVvdXRJZCk7CiAgICAgICAgICAgICAgICByZW1vdmFsVGltZW91dElkID0gMDsKICAgICAgICAgICAgfSwgcmVtb3ZhbFdhaXRpbmdUaW1lKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmICh0eXBlID09PSAncmVtb3RlU2VjcmV0S2V5TWF0ZXJpYWxzJykgewogICAgICAgIGNvbnN0IHsgcmVtb3RlU2VjcmV0S2V5TWF0ZXJpYWxzIH0gPSBldmVudC5kYXRhOwogICAgICAgIGZvciAoY29uc3QgW2Nvbm5lY3Rpb25JZCwgcmVtb3RlU2VjcmV0S2V5TWF0ZXJpYWxdIG9mIE9iamVjdC5lbnRyaWVzKHJlbW90ZVNlY3JldEtleU1hdGVyaWFscykpIHsKICAgICAgICAgICAgY29uc3QgeyBrZXlJZCwgc2VjcmV0S2V5TWF0ZXJpYWwgfSA9IHJlbW90ZVNlY3JldEtleU1hdGVyaWFsOwogICAgICAgICAgICBjcnlwdG8uc3VidGxlCiAgICAgICAgICAgICAgICAuaW1wb3J0S2V5KCdyYXcnLCBzZWNyZXRLZXlNYXRlcmlhbC5idWZmZXIsICdIS0RGJywgZmFsc2UsIFsnZGVyaXZlQml0cycsICdkZXJpdmVLZXknXSkKICAgICAgICAgICAgICAgIC50aGVuKChtYXRlcmlhbCkgPT4gewogICAgICAgICAgICAgICAgZ2VuZXJhdGVEZXJpdmVLZXkobWF0ZXJpYWwpLnRoZW4oKGRlcml2ZUtleSkgPT4gewogICAgICAgICAgICAgICAgICAgIHNldFJlbW90ZURlcml2ZUtleShjb25uZWN0aW9uSWQsIGtleUlkLCBkZXJpdmVLZXkpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBnZW5lcmF0ZVdyaXRlSVYobWF0ZXJpYWwpLnRoZW4oKHdyaXRlSVYpID0+IHsKICAgICAgICAgICAgICAgICAgICBzZXRXcml0ZUlWKGNvbm5lY3Rpb25JZCwga2V5SWQsIHdyaXRlSVYpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzZXRMYXRlc3RSZW1vdGVLZXlJZChjb25uZWN0aW9uSWQsIGtleUlkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSBpZiAodHlwZSA9PT0gJ3JlbW92ZVJlbW90ZURlcml2ZUtleScpIHsKICAgICAgICBjb25zdCB7IGNvbm5lY3Rpb25JZCB9ID0gZXZlbnQuZGF0YTsKICAgICAgICByZW1vdmVEZXJpdmVLZXkoY29ubmVjdGlvbklkKTsKICAgIH0KICAgIGVsc2UgaWYgKHR5cGUgPT09ICdlbmNyeXB0JykgewogICAgICAgIGNvbnN0IHsgcmVhZGFibGVTdHJlYW0sIHdyaXRhYmxlU3RyZWFtIH0gPSBldmVudC5kYXRhOwogICAgICAgIGNvbnN0IHRyYW5zZm9ybVN0cmVhbSA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICB0cmFuc2Zvcm06IGVuY3J5cHRGdW5jdGlvbiwKICAgICAgICB9KTsKICAgICAgICByZWFkYWJsZVN0cmVhbS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1TdHJlYW0pLnBpcGVUbyh3cml0YWJsZVN0cmVhbSk7CiAgICB9CiAgICBlbHNlIGlmICh0eXBlID09PSAnZGVjcnlwdCcpIHsKICAgICAgICBjb25zdCB7IHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSB9ID0gZXZlbnQuZGF0YTsKICAgICAgICBjb25zdCB0cmFuc2Zvcm1TdHJlYW0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKICAgICAgICAgICAgdHJhbnNmb3JtOiBkZWNyeXB0RnVuY3Rpb24sCiAgICAgICAgfSk7CiAgICAgICAgcmVhZGFibGVTdHJlYW0ucGlwZVRocm91Z2godHJhbnNmb3JtU3RyZWFtKS5waXBlVG8od3JpdGFibGVTdHJlYW0pOwogICAgfQogICAgZWxzZSBpZiAodHlwZSA9PT0gJ2NsZWFyJykgewogICAgICAgIGNvdW50TWFwLmNsZWFyKCk7CiAgICAgICAgd3JpdGVJVk1hcC5jbGVhcigpOwogICAgICAgIHJlbW90ZURlcml2ZUtleU1hcC5jbGVhcigpOwogICAgICAgIGxhdGVzdFJlbW90ZUtleUlkTWFwLmNsZWFyKCk7CiAgICAgICAgc2VsZkRlcml2ZUtleU1hcC5jbGVhcigpOwogICAgfQp9Owo='; - class SoraE2EE { - constructor() { - // 対応しているかどうかの判断 - // @ts-ignore トライアル段階の API なので無視する - const supportsInsertableStreams = !!RTCRtpSender.prototype.createEncodedStreams; - if (!supportsInsertableStreams) { - throw new Error('E2EE is not supported in this browser.'); - } - this.worker = null; - this.onWorkerDisconnect = null; - } - // worker を起動する - startWorker() { - // ワーカーを起動する - const workerScript = atob(WORKER_SCRIPT); - this.worker = new Worker(URL.createObjectURL(new Blob([workerScript], { type: 'application/javascript' }))); - this.worker.onmessage = (event) => { - const { operation } = event.data; - if (operation === 'disconnect' && typeof this.onWorkerDisconnect === 'function') { - this.onWorkerDisconnect(); - } - }; - } - // worker の掃除をする - clearWorker() { - if (this.worker) { - this.worker.postMessage({ - type: 'clear', - }); - } - } - // worker を終了する - terminateWorker() { - if (this.worker) { - this.worker.terminate(); - } - } - // 初期化処理 - async init() { - const { preKeyBundle } = await window.e2ee.init(); - return preKeyBundle; - } - setupSenderTransform(readableStream, writableStream) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - const message = { - type: 'encrypt', - readableStream: readableStream, - writableStream: writableStream, - }; - this.worker.postMessage(message, [readableStream, writableStream]); - } - setupReceiverTransform(readableStream, writableStream) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - const message = { - type: 'decrypt', - readableStream: readableStream, - writableStream: writableStream, - }; - this.worker.postMessage(message, [readableStream, writableStream]); - } - postRemoteSecretKeyMaterials(result) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - this.worker.postMessage({ - type: 'remoteSecretKeyMaterials', - remoteSecretKeyMaterials: result.remoteSecretKeyMaterials, - }); - } - postRemoveRemoteDeriveKey(connectionId) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - this.worker.postMessage({ - type: 'removeRemoteDeriveKey', - connectionId: connectionId, - }); - } - postSelfSecretKeyMaterial(selfConnectionId, selfKeyId, selfSecretKeyMaterial, waitingTime = 0) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - this.worker.postMessage({ - type: 'selfSecretKeyMaterial', - selfConnectionId: selfConnectionId, - selfKeyId: selfKeyId, - selfSecretKeyMaterial: selfSecretKeyMaterial, - waitingTime: waitingTime, - }); - } - startSession(connectionId, preKeyBundle) { - const [result, err] = window.e2ee.startSession(connectionId, preKeyBundle.identityKey, preKeyBundle.signedPreKey, preKeyBundle.preKeySignature); - if (err) { - throw err; - } - return result; - } - stopSession(connectionId) { - const [result, err] = window.e2ee.stopSession(connectionId); - if (err) { - throw err; - } - return result; - } - receiveMessage(message) { - const [result, err] = window.e2ee.receiveMessage(message); - if (err) { - throw err; - } - return result; - } - start(selfConnectionId) { - const [result, err] = window.e2ee.start(selfConnectionId); - if (err) { - throw err; - } - return result; - } - addPreKeyBundle(connectionId, preKeyBundle) { - const err = window.e2ee.addPreKeyBundle(connectionId, preKeyBundle.identityKey, preKeyBundle.signedPreKey, preKeyBundle.preKeySignature); - if (err) { - throw err; - } - } - selfFingerprint() { - return window.e2ee.selfFingerprint(); - } - remoteFingerprints() { - return window.e2ee.remoteFingerprints(); - } - static async loadWasm(wasmUrl) { - if (!window.e2ee === undefined) { - console.warn('E2ee wasm is already loaded. Will not be reload.'); - return; - } - WasmExec(); - if (!window.Go) { - throw new Error(`Failed to load module Go. window.Go is ${window.Go}.`); - } - const go = new Go(); - const { instance } = await WebAssembly.instantiateStreaming(fetch(wasmUrl), go.importObject); - go.run(instance); - if (!window.e2ee) { - throw new Error(`Failed to load module e2ee. window.e2ee is ${window.e2ee}.`); - } - } - static version() { - return '2021.1.0'; - } - static wasmVersion() { - return window.e2ee.version(); - } - } - - /** - * @shiguredo/lyra-wasm - * Lyra V2 WebAssembly build - * @version: 2022.2.0 - * @author: Shiguredo Inc. - * @license: Apache-2.0 - **/ - - /** - * Lyra のエンコード形式のバージョン。 - * - * エンコード形式に非互換な変更が入った時点での google/lyra のバージョンが格納されている。 - */ - const LYRA_VERSION = "1.3.0"; - const DEFAULT_SAMPLE_RATE = 16000; - const DEFAULT_BITRATE = 9200; - const DEFAULT_ENABLE_DTX = false; - const DEFAULT_CHANNELS = 1; - - const WEB_WORKER_SCRIPT = "KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDoKICBmYWN0b3J5KCk7Cn0pKChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JzsKCiAgdmFyIEx5cmFXYXNtTW9kdWxlID0gKCgpID0+IHsKICAgIHZhciBfc2NyaXB0RGlyID0gKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJyA/IG5ldyAocmVxdWlyZSgndScgKyAncmwnKS5VUkwpKCdmaWxlOicgKyBfX2ZpbGVuYW1lKS5ocmVmIDogdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLmhyZWYgOiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyB8fCBuZXcgVVJMKCdseXJhX3N5bmNfd29ya2VyLmpzJywgZG9jdW1lbnQuYmFzZVVSSSkuaHJlZikpOwogICAgCiAgICByZXR1cm4gKAogIGZ1bmN0aW9uKEx5cmFXYXNtTW9kdWxlKSB7CiAgICBMeXJhV2FzbU1vZHVsZSA9IEx5cmFXYXNtTW9kdWxlIHx8IHt9OwoKICB2YXIgTW9kdWxlPXR5cGVvZiBMeXJhV2FzbU1vZHVsZSE9InVuZGVmaW5lZCI/THlyYVdhc21Nb2R1bGU6e307dmFyIHJlYWR5UHJvbWlzZVJlc29sdmUscmVhZHlQcm9taXNlUmVqZWN0O01vZHVsZVsicmVhZHkiXT1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7cmVhZHlQcm9taXNlUmVzb2x2ZT1yZXNvbHZlO3JlYWR5UHJvbWlzZVJlamVjdD1yZWplY3Q7fSk7dmFyIG1vZHVsZU92ZXJyaWRlcz1PYmplY3QuYXNzaWduKHt9LE1vZHVsZSk7dmFyIHRoaXNQcm9ncmFtPSIuL3RoaXMucHJvZ3JhbSI7dmFyIHF1aXRfPShzdGF0dXMsdG9UaHJvdyk9Pnt0aHJvdyB0b1Rocm93fTt2YXIgRU5WSVJPTk1FTlRfSVNfV0VCPXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PSJzdHJpbmciO3ZhciBFTlZJUk9OTUVOVF9JU19QVEhSRUFEPU1vZHVsZVsiRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCJdfHxmYWxzZTt2YXIgc2NyaXB0RGlyZWN0b3J5PSIiO2Z1bmN0aW9uIGxvY2F0ZUZpbGUocGF0aCl7aWYoTW9kdWxlWyJsb2NhdGVGaWxlIl0pe3JldHVybiBNb2R1bGVbImxvY2F0ZUZpbGUiXShwYXRoLHNjcmlwdERpcmVjdG9yeSl9cmV0dXJuIHNjcmlwdERpcmVjdG9yeStwYXRofXZhciByZWFkXyxyZWFkQXN5bmMscmVhZEJpbmFyeTtmdW5jdGlvbiBsb2dFeGNlcHRpb25PbkV4aXQoZSl7aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpcmV0dXJuO2xldCB0b0xvZz1lO2VycigiZXhpdGluZyBkdWUgdG8gZXhjZXB0aW9uOiAiK3RvTG9nKTt9aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtzY3JpcHREaXJlY3Rvcnk9cmVxdWlyZSgicGF0aCIpLmRpcm5hbWUoc2NyaXB0RGlyZWN0b3J5KSsiLyI7fWVsc2Uge3NjcmlwdERpcmVjdG9yeT1fX2Rpcm5hbWUrIi8iO312YXIgZnMsbm9kZVBhdGg7aWYodHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iKXtmcz1yZXF1aXJlKCJmcyIpO25vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTt9cmVhZF89KGZpbGVuYW1lLGJpbmFyeSk9PntmaWxlbmFtZT1ub2RlUGF0aFsibm9ybWFsaXplIl0oZmlsZW5hbWUpO3JldHVybiBmcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUsYmluYXJ5P3VuZGVmaW5lZDoidXRmOCIpfTtyZWFkQmluYXJ5PWZpbGVuYW1lPT57dmFyIHJldD1yZWFkXyhmaWxlbmFtZSx0cnVlKTtpZighcmV0LmJ1ZmZlcil7cmV0PW5ldyBVaW50OEFycmF5KHJldCk7fXJldHVybiByZXR9O3JlYWRBc3luYz0oZmlsZW5hbWUsb25sb2FkLG9uZXJyb3IpPT57ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTtmcy5yZWFkRmlsZShmaWxlbmFtZSxmdW5jdGlvbihlcnIsZGF0YSl7aWYoZXJyKW9uZXJyb3IoZXJyKTtlbHNlIG9ubG9hZChkYXRhLmJ1ZmZlcik7fSk7fTtpZihwcm9jZXNzWyJhcmd2Il0ubGVuZ3RoPjEpe3RoaXNQcm9ncmFtPXByb2Nlc3NbImFyZ3YiXVsxXS5yZXBsYWNlKC9cXC9nLCIvIik7fXByb2Nlc3NbImFyZ3YiXS5zbGljZSgyKTtwcm9jZXNzWyJvbiJdKCJ1bmNhdWdodEV4Y2VwdGlvbiIsZnVuY3Rpb24oZXgpe2lmKCEoZXggaW5zdGFuY2VvZiBFeGl0U3RhdHVzKSl7dGhyb3cgZXh9fSk7cHJvY2Vzc1sib24iXSgidW5oYW5kbGVkUmVqZWN0aW9uIixmdW5jdGlvbihyZWFzb24pe3Rocm93IHJlYXNvbn0pO3F1aXRfPShzdGF0dXMsdG9UaHJvdyk9PntpZihrZWVwUnVudGltZUFsaXZlKCkpe3Byb2Nlc3NbImV4aXRDb2RlIl09c3RhdHVzO3Rocm93IHRvVGhyb3d9bG9nRXhjZXB0aW9uT25FeGl0KHRvVGhyb3cpO3Byb2Nlc3NbImV4aXQiXShzdGF0dXMpO307TW9kdWxlWyJpbnNwZWN0Il09ZnVuY3Rpb24oKXtyZXR1cm4gIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn07bGV0IG5vZGVXb3JrZXJUaHJlYWRzO3RyeXtub2RlV29ya2VyVGhyZWFkcz1yZXF1aXJlKCJ3b3JrZXJfdGhyZWFkcyIpO31jYXRjaChlKXtjb25zb2xlLmVycm9yKCdUaGUgIndvcmtlcl90aHJlYWRzIiBtb2R1bGUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIG5vZGUuanMgYnVpbGQgLSBwZXJoYXBzIGEgbmV3ZXIgdmVyc2lvbiBpcyBuZWVkZWQ/Jyk7dGhyb3cgZX1nbG9iYWwuV29ya2VyPW5vZGVXb3JrZXJUaHJlYWRzLldvcmtlcjt9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtzY3JpcHREaXJlY3Rvcnk9c2VsZi5sb2NhdGlvbi5ocmVmO31lbHNlIGlmKHR5cGVvZiBkb2N1bWVudCE9InVuZGVmaW5lZCImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQpe3NjcmlwdERpcmVjdG9yeT1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzt9aWYoX3NjcmlwdERpcil7c2NyaXB0RGlyZWN0b3J5PV9zY3JpcHREaXI7fWlmKHNjcmlwdERpcmVjdG9yeS5pbmRleE9mKCJibG9iOiIpIT09MCl7c2NyaXB0RGlyZWN0b3J5PXNjcmlwdERpcmVjdG9yeS5zdWJzdHIoMCxzY3JpcHREaXJlY3RvcnkucmVwbGFjZSgvWz8jXS4qLywiIikubGFzdEluZGV4T2YoIi8iKSsxKTt9ZWxzZSB7c2NyaXB0RGlyZWN0b3J5PSIiO31pZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVhZF89dXJsPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oIkdFVCIsdXJsLGZhbHNlKTt4aHIuc2VuZChudWxsKTtyZXR1cm4geGhyLnJlc3BvbnNlVGV4dH07aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtyZWFkQmluYXJ5PXVybD0+e3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3hoci5zZW5kKG51bGwpO3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2UpfTt9cmVhZEFzeW5jPSh1cmwsb25sb2FkLG9uZXJyb3IpPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oIkdFVCIsdXJsLHRydWUpO3hoci5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt4aHIub25sb2FkPSgpPT57aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpO3JldHVybn1vbmVycm9yKCk7fTt4aHIub25lcnJvcj1vbmVycm9yO3hoci5zZW5kKG51bGwpO307fX1lbHNlO2lmKEVOVklST05NRU5UX0lTX05PREUpe2lmKHR5cGVvZiBwZXJmb3JtYW5jZT09InVuZGVmaW5lZCIpe2dsb2JhbC5wZXJmb3JtYW5jZT1yZXF1aXJlKCJwZXJmX2hvb2tzIikucGVyZm9ybWFuY2U7fX12YXIgZGVmYXVsdFByaW50PWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7dmFyIGRlZmF1bHRQcmludEVycj1jb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtkZWZhdWx0UHJpbnQ9c3RyPT5mcy53cml0ZVN5bmMoMSxzdHIrIlxuIik7ZGVmYXVsdFByaW50RXJyPXN0cj0+ZnMud3JpdGVTeW5jKDIsc3RyKyJcbiIpO312YXIgb3V0PU1vZHVsZVsicHJpbnQiXXx8ZGVmYXVsdFByaW50O3ZhciBlcnI9TW9kdWxlWyJwcmludEVyciJdfHxkZWZhdWx0UHJpbnRFcnI7T2JqZWN0LmFzc2lnbihNb2R1bGUsbW9kdWxlT3ZlcnJpZGVzKTttb2R1bGVPdmVycmlkZXM9bnVsbDtpZihNb2R1bGVbImFyZ3VtZW50cyJdKU1vZHVsZVsiYXJndW1lbnRzIl07aWYoTW9kdWxlWyJ0aGlzUHJvZ3JhbSJdKXRoaXNQcm9ncmFtPU1vZHVsZVsidGhpc1Byb2dyYW0iXTtpZihNb2R1bGVbInF1aXQiXSlxdWl0Xz1Nb2R1bGVbInF1aXQiXTt2YXIgUE9JTlRFUl9TSVpFPTQ7dmFyIHdhc21CaW5hcnk7aWYoTW9kdWxlWyJ3YXNtQmluYXJ5Il0pd2FzbUJpbmFyeT1Nb2R1bGVbIndhc21CaW5hcnkiXTt2YXIgbm9FeGl0UnVudGltZT1Nb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXXx8dHJ1ZTtpZih0eXBlb2YgV2ViQXNzZW1ibHkhPSJvYmplY3QiKXthYm9ydCgibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO312YXIgd2FzbU1lbW9yeTt2YXIgd2FzbU1vZHVsZTt2YXIgQUJPUlQ9ZmFsc2U7dmFyIEVYSVRTVEFUVVM7ZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbix0ZXh0KXtpZighY29uZGl0aW9uKXthYm9ydCh0ZXh0KTt9fXZhciBVVEY4RGVjb2Rlcj10eXBlb2YgVGV4dERlY29kZXIhPSJ1bmRlZmluZWQiP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnVuZGVmaW5lZDtmdW5jdGlvbiBVVEY4QXJyYXlUb1N0cmluZyhoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQpe3ZhciBlbmRJZHg9aWR4K21heEJ5dGVzVG9SZWFkO3ZhciBlbmRQdHI9aWR4O3doaWxlKGhlYXBPckFycmF5W2VuZFB0cl0mJiEoZW5kUHRyPj1lbmRJZHgpKSsrZW5kUHRyO2lmKGVuZFB0ci1pZHg+MTYmJmhlYXBPckFycmF5LmJ1ZmZlciYmVVRGOERlY29kZXIpe3JldHVybiBVVEY4RGVjb2Rlci5kZWNvZGUoaGVhcE9yQXJyYXkuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/aGVhcE9yQXJyYXkuc2xpY2UoaWR4LGVuZFB0cik6aGVhcE9yQXJyYXkuc3ViYXJyYXkoaWR4LGVuZFB0cikpfXZhciBzdHI9IiI7d2hpbGUoaWR4PGVuZFB0cil7dmFyIHUwPWhlYXBPckFycmF5W2lkeCsrXTtpZighKHUwJjEyOCkpe3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh1MCk7Y29udGludWV9dmFyIHUxPWhlYXBPckFycmF5W2lkeCsrXSY2MztpZigodTAmMjI0KT09MTkyKXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoKHUwJjMxKTw8Nnx1MSk7Y29udGludWV9dmFyIHUyPWhlYXBPckFycmF5W2lkeCsrXSY2MztpZigodTAmMjQwKT09MjI0KXt1MD0odTAmMTUpPDwxMnx1MTw8Nnx1Mjt9ZWxzZSB7dTA9KHUwJjcpPDwxOHx1MTw8MTJ8dTI8PDZ8aGVhcE9yQXJyYXlbaWR4KytdJjYzO31pZih1MDw2NTUzNil7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHUwKTt9ZWxzZSB7dmFyIGNoPXUwLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyk7fX1yZXR1cm4gc3RyfWZ1bmN0aW9uIFVURjhUb1N0cmluZyhwdHIsbWF4Qnl0ZXNUb1JlYWQpe3JldHVybiBwdHI/VVRGOEFycmF5VG9TdHJpbmcoSEVBUFU4LHB0cixtYXhCeXRlc1RvUmVhZCk6IiJ9ZnVuY3Rpb24gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLGhlYXAsb3V0SWR4LG1heEJ5dGVzVG9Xcml0ZSl7aWYoIShtYXhCeXRlc1RvV3JpdGU+MCkpcmV0dXJuIDA7dmFyIHN0YXJ0SWR4PW91dElkeDt2YXIgZW5kSWR4PW91dElkeCttYXhCeXRlc1RvV3JpdGUtMTtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgdT1zdHIuY2hhckNvZGVBdChpKTtpZih1Pj01NTI5NiYmdTw9NTczNDMpe3ZhciB1MT1zdHIuY2hhckNvZGVBdCgrK2kpO3U9NjU1MzYrKCh1JjEwMjMpPDwxMCl8dTEmMTAyMzt9aWYodTw9MTI3KXtpZihvdXRJZHg+PWVuZElkeClicmVhaztoZWFwW291dElkeCsrXT11O31lbHNlIGlmKHU8PTIwNDcpe2lmKG91dElkeCsxPj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109MTkyfHU+PjY7aGVhcFtvdXRJZHgrK109MTI4fHUmNjM7fWVsc2UgaWYodTw9NjU1MzUpe2lmKG91dElkeCsyPj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109MjI0fHU+PjEyO2hlYXBbb3V0SWR4KytdPTEyOHx1Pj42JjYzO2hlYXBbb3V0SWR4KytdPTEyOHx1JjYzO31lbHNlIHtpZihvdXRJZHgrMz49ZW5kSWR4KWJyZWFrO2hlYXBbb3V0SWR4KytdPTI0MHx1Pj4xODtoZWFwW291dElkeCsrXT0xMjh8dT4+MTImNjM7aGVhcFtvdXRJZHgrK109MTI4fHU+PjYmNjM7aGVhcFtvdXRJZHgrK109MTI4fHUmNjM7fX1oZWFwW291dElkeF09MDtyZXR1cm4gb3V0SWR4LXN0YXJ0SWR4fWZ1bmN0aW9uIHN0cmluZ1RvVVRGOChzdHIsb3V0UHRyLG1heEJ5dGVzVG9Xcml0ZSl7cmV0dXJuIHN0cmluZ1RvVVRGOEFycmF5KHN0cixIRUFQVTgsb3V0UHRyLG1heEJ5dGVzVG9Xcml0ZSl9ZnVuY3Rpb24gbGVuZ3RoQnl0ZXNVVEY4KHN0cil7dmFyIGxlbj0wO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDsrK2kpe3ZhciBjPXN0ci5jaGFyQ29kZUF0KGkpO2lmKGM8PTEyNyl7bGVuKys7fWVsc2UgaWYoYzw9MjA0Nyl7bGVuKz0yO31lbHNlIGlmKGM+PTU1Mjk2JiZjPD01NzM0Myl7bGVuKz00OysraTt9ZWxzZSB7bGVuKz0zO319cmV0dXJuIGxlbn12YXIgYnVmZmVyLEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7YnVmZmVyPU1vZHVsZVsiYnVmZmVyIl07fWZ1bmN0aW9uIHVwZGF0ZUdsb2JhbEJ1ZmZlckFuZFZpZXdzKGJ1Zil7YnVmZmVyPWJ1ZjtNb2R1bGVbIkhFQVA4Il09SEVBUDg9bmV3IEludDhBcnJheShidWYpO01vZHVsZVsiSEVBUDE2Il09SEVBUDE2PW5ldyBJbnQxNkFycmF5KGJ1Zik7TW9kdWxlWyJIRUFQMzIiXT1IRUFQMzI9bmV3IEludDMyQXJyYXkoYnVmKTtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVOD1uZXcgVWludDhBcnJheShidWYpO01vZHVsZVsiSEVBUFUxNiJdPUhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1Zik7TW9kdWxlWyJIRUFQVTMyIl09SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmKTtNb2R1bGVbIkhFQVBGMzIiXT1IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmKTtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmKTt9dmFyIElOSVRJQUxfTUVNT1JZPU1vZHVsZVsiSU5JVElBTF9NRU1PUlkiXXx8NjcxMDg4NjQ7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7d2FzbU1lbW9yeT1Nb2R1bGVbIndhc21NZW1vcnkiXTtidWZmZXI9TW9kdWxlWyJidWZmZXIiXTt9ZWxzZSB7aWYoTW9kdWxlWyJ3YXNtTWVtb3J5Il0pe3dhc21NZW1vcnk9TW9kdWxlWyJ3YXNtTWVtb3J5Il07fWVsc2Uge3dhc21NZW1vcnk9bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7ImluaXRpYWwiOklOSVRJQUxfTUVNT1JZLzY1NTM2LCJtYXhpbXVtIjpJTklUSUFMX01FTU9SWS82NTUzNiwic2hhcmVkIjp0cnVlfSk7aWYoISh3YXNtTWVtb3J5LmJ1ZmZlciBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyKSl7ZXJyKCJyZXF1ZXN0ZWQgYSBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IGJ1dCB0aGUgcmV0dXJuZWQgYnVmZmVyIGlzIG5vdCBhIFNoYXJlZEFycmF5QnVmZmVyLCBpbmRpY2F0aW5nIHRoYXQgd2hpbGUgdGhlIGJyb3dzZXIgaGFzIFNoYXJlZEFycmF5QnVmZmVyIGl0IGRvZXMgbm90IGhhdmUgV2ViQXNzZW1ibHkgdGhyZWFkcyBzdXBwb3J0IC0geW91IG1heSBuZWVkIHRvIHNldCBhIGZsYWciKTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtlcnIoIihvbiBub2RlIHlvdSBtYXkgbmVlZDogLS1leHBlcmltZW50YWwtd2FzbS10aHJlYWRzIC0tZXhwZXJpbWVudGFsLXdhc20tYnVsay1tZW1vcnkgYW5kL29yIHJlY2VudCB2ZXJzaW9uKSIpO310aHJvdyBFcnJvcigiYmFkIG1lbW9yeSIpfX19aWYod2FzbU1lbW9yeSl7YnVmZmVyPXdhc21NZW1vcnkuYnVmZmVyO31JTklUSUFMX01FTU9SWT1idWZmZXIuYnl0ZUxlbmd0aDt1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyhidWZmZXIpO3ZhciB3YXNtVGFibGU7dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTtmdW5jdGlvbiBrZWVwUnVudGltZUFsaXZlKCl7cmV0dXJuIG5vRXhpdFJ1bnRpbWV9ZnVuY3Rpb24gcHJlUnVuKCl7aWYoTW9kdWxlWyJwcmVSdW4iXSl7aWYodHlwZW9mIE1vZHVsZVsicHJlUnVuIl09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVSdW4iXT1bTW9kdWxlWyJwcmVSdW4iXV07d2hpbGUoTW9kdWxlWyJwcmVSdW4iXS5sZW5ndGgpe2FkZE9uUHJlUnVuKE1vZHVsZVsicHJlUnVuIl0uc2hpZnQoKSk7fX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pO31mdW5jdGlvbiBpbml0UnVudGltZSgpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuO2lmKCFNb2R1bGVbIm5vRlNJbml0Il0mJiFGUy5pbml0LmluaXRpYWxpemVkKUZTLmluaXQoKTtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKTt9ZnVuY3Rpb24gcG9zdFJ1bigpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuO2lmKE1vZHVsZVsicG9zdFJ1biJdKXtpZih0eXBlb2YgTW9kdWxlWyJwb3N0UnVuIl09PSJmdW5jdGlvbiIpTW9kdWxlWyJwb3N0UnVuIl09W01vZHVsZVsicG9zdFJ1biJdXTt3aGlsZShNb2R1bGVbInBvc3RSdW4iXS5sZW5ndGgpe2FkZE9uUG9zdFJ1bihNb2R1bGVbInBvc3RSdW4iXS5zaGlmdCgpKTt9fWNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQT1NUUlVOX18pO31mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpO31mdW5jdGlvbiBhZGRPbkluaXQoY2Ipe19fQVRJTklUX18udW5zaGlmdChjYik7fWZ1bmN0aW9uIGFkZE9uUG9zdFJ1bihjYil7X19BVFBPU1RSVU5fXy51bnNoaWZ0KGNiKTt9dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBnZXRVbmlxdWVSdW5EZXBlbmRlbmN5KGlkKXtyZXR1cm4gaWR9ZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShpZCl7cnVuRGVwZW5kZW5jaWVzKys7aWYoTW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0pe01vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKHJ1bkRlcGVuZGVuY2llcyk7fX1mdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKTt9aWYocnVuRGVwZW5kZW5jaWVzPT0wKXtpZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKTt9fX1mdW5jdGlvbiBhYm9ydCh3aGF0KXtpZihNb2R1bGVbIm9uQWJvcnQiXSl7TW9kdWxlWyJvbkFib3J0Il0od2hhdCk7fXdoYXQ9IkFib3J0ZWQoIit3aGF0KyIpIjtlcnIod2hhdCk7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPTE7d2hhdCs9Ii4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iO3ZhciBlPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Iod2hhdCk7cmVhZHlQcm9taXNlUmVqZWN0KGUpO3Rocm93IGV9dmFyIGRhdGFVUklQcmVmaXg9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIGlzRGF0YVVSSShmaWxlbmFtZSl7cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoZGF0YVVSSVByZWZpeCl9ZnVuY3Rpb24gaXNGaWxlVVJJKGZpbGVuYW1lKXtyZXR1cm4gZmlsZW5hbWUuc3RhcnRzV2l0aCgiZmlsZTovLyIpfXZhciB3YXNtQmluYXJ5RmlsZTtpZihNb2R1bGVbImxvY2F0ZUZpbGUiXSl7d2FzbUJpbmFyeUZpbGU9Imx5cmEud2FzbSI7aWYoIWlzRGF0YVVSSSh3YXNtQmluYXJ5RmlsZSkpe3dhc21CaW5hcnlGaWxlPWxvY2F0ZUZpbGUod2FzbUJpbmFyeUZpbGUpO319ZWxzZSB7d2FzbUJpbmFyeUZpbGU9bmV3IFVSTCgibHlyYS53YXNtIiwodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbG9jYXRpb24gPT09ICd1bmRlZmluZWQnID8gbmV3IChyZXF1aXJlKCd1JyArICdybCcpLlVSTCkoJ2ZpbGU6JyArIF9fZmlsZW5hbWUpLmhyZWYgOiB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gbG9jYXRpb24uaHJlZiA6IChkb2N1bWVudC5jdXJyZW50U2NyaXB0ICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIHx8IG5ldyBVUkwoJ2x5cmFfc3luY193b3JrZXIuanMnLCBkb2N1bWVudC5iYXNlVVJJKS5ocmVmKSkpLnRvU3RyaW5nKCk7fWZ1bmN0aW9uIGdldEJpbmFyeShmaWxlKXt0cnl7aWYoZmlsZT09d2FzbUJpbmFyeUZpbGUmJndhc21CaW5hcnkpe3JldHVybiBuZXcgVWludDhBcnJheSh3YXNtQmluYXJ5KX1pZihyZWFkQmluYXJ5KXtyZXR1cm4gcmVhZEJpbmFyeShmaWxlKX10aHJvdyAiYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifWNhdGNoKGVycil7YWJvcnQoZXJyKTt9fWZ1bmN0aW9uIGdldEJpbmFyeVByb21pc2UoKXtpZighd2FzbUJpbmFyeSYmKEVOVklST05NRU5UX0lTX1dFQnx8RU5WSVJPTk1FTlRfSVNfV09SS0VSKSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhaXNGaWxlVVJJKHdhc21CaW5hcnlGaWxlKSl7cmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7aWYoIXJlc3BvbnNlWyJvayJdKXt0aHJvdyAiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIit3YXNtQmluYXJ5RmlsZSsiJyJ9cmV0dXJuIHJlc3BvbnNlWyJhcnJheUJ1ZmZlciJdKCl9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBnZXRCaW5hcnkod2FzbUJpbmFyeUZpbGUpfSl9ZWxzZSB7aWYocmVhZEFzeW5jKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe3JlYWRBc3luYyh3YXNtQmluYXJ5RmlsZSxmdW5jdGlvbihyZXNwb25zZSl7cmVzb2x2ZShuZXcgVWludDhBcnJheShyZXNwb25zZSkpO30scmVqZWN0KTt9KX19fXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSl9KX1mdW5jdGlvbiBjcmVhdGVXYXNtKCl7dmFyIGluZm89eyJlbnYiOmFzbUxpYnJhcnlBcmcsIndhc2lfc25hcHNob3RfcHJldmlldzEiOmFzbUxpYnJhcnlBcmd9O2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSxtb2R1bGUpe3ZhciBleHBvcnRzPWluc3RhbmNlLmV4cG9ydHM7TW9kdWxlWyJhc20iXT1leHBvcnRzO3JlZ2lzdGVyVExTSW5pdChNb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90bHNfaW5pdCJdKTt3YXNtVGFibGU9TW9kdWxlWyJhc20iXVsiX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZSJdO2FkZE9uSW5pdChNb2R1bGVbImFzbSJdWyJfX3dhc21fY2FsbF9jdG9ycyJdKTt3YXNtTW9kdWxlPW1vZHVsZTtpZighRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7cmVtb3ZlUnVuRGVwZW5kZW5jeSgpO319aWYoIUVOVklST05NRU5UX0lTX1BUSFJFQUQpe2FkZFJ1bkRlcGVuZGVuY3koKTt9ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KXtyZWNlaXZlSW5zdGFuY2UocmVzdWx0WyJpbnN0YW5jZSJdLHJlc3VsdFsibW9kdWxlIl0pO31mdW5jdGlvbiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVyKXtyZXR1cm4gZ2V0QmluYXJ5UHJvbWlzZSgpLnRoZW4oZnVuY3Rpb24oYmluYXJ5KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYmluYXJ5LGluZm8pfSkudGhlbihmdW5jdGlvbihpbnN0YW5jZSl7cmV0dXJuIGluc3RhbmNlfSkudGhlbihyZWNlaXZlcixmdW5jdGlvbihyZWFzb24pe2VycigiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIityZWFzb24pO2Fib3J0KHJlYXNvbik7fSl9ZnVuY3Rpb24gaW5zdGFudGlhdGVBc3luYygpe2lmKCF3YXNtQmluYXJ5JiZ0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PSJmdW5jdGlvbiImJiFpc0RhdGFVUkkod2FzbUJpbmFyeUZpbGUpJiYhaXNGaWxlVVJJKHdhc21CaW5hcnlGaWxlKSYmIUVOVklST05NRU5UX0lTX05PREUmJnR5cGVvZiBmZXRjaD09ImZ1bmN0aW9uIil7cmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7dmFyIHJlc3VsdD1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwb25zZSxpbmZvKTtyZXR1cm4gcmVzdWx0LnRoZW4ocmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQsZnVuY3Rpb24ocmVhc29uKXtlcnIoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK3JlYXNvbik7ZXJyKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpO3JldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KX0pfSl9ZWxzZSB7cmV0dXJuIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIocmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQpfX1pZihNb2R1bGVbImluc3RhbnRpYXRlV2FzbSJdKXt0cnl7dmFyIGV4cG9ydHM9TW9kdWxlWyJpbnN0YW50aWF0ZVdhc20iXShpbmZvLHJlY2VpdmVJbnN0YW5jZSk7cmV0dXJuIGV4cG9ydHN9Y2F0Y2goZSl7ZXJyKCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAiK2UpO3JlYWR5UHJvbWlzZVJlamVjdChlKTt9fWluc3RhbnRpYXRlQXN5bmMoKS5jYXRjaChyZWFkeVByb21pc2VSZWplY3QpO3JldHVybiB7fX12YXIgdGVtcERvdWJsZTt2YXIgdGVtcEk2NDt2YXIgQVNNX0NPTlNUUz17MjA5NjAwOigpPT57cmV0dXJuIHR5cGVvZiB3YXNtT2Zmc2V0Q29udmVydGVyIT09InVuZGVmaW5lZCJ9fTtmdW5jdGlvbiBIYXZlT2Zmc2V0Q29udmVydGVyKCl7cmV0dXJuIHR5cGVvZiB3YXNtT2Zmc2V0Q29udmVydGVyIT09InVuZGVmaW5lZCJ9ZnVuY3Rpb24gRXhpdFN0YXR1cyhzdGF0dXMpe3RoaXMubmFtZT0iRXhpdFN0YXR1cyI7dGhpcy5tZXNzYWdlPSJQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCIrc3RhdHVzKyIpIjt0aGlzLnN0YXR1cz1zdGF0dXM7fWZ1bmN0aW9uIGtpbGxUaHJlYWQocHRocmVhZF9wdHIpe3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1twdGhyZWFkX3B0cl07ZGVsZXRlIFBUaHJlYWQucHRocmVhZHNbcHRocmVhZF9wdHJdO3dvcmtlci50ZXJtaW5hdGUoKTtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YShwdGhyZWFkX3B0cik7UFRocmVhZC5ydW5uaW5nV29ya2Vycy5zcGxpY2UoUFRocmVhZC5ydW5uaW5nV29ya2Vycy5pbmRleE9mKHdvcmtlciksMSk7d29ya2VyLnB0aHJlYWRfcHRyPTA7fWZ1bmN0aW9uIGNhbmNlbFRocmVhZChwdGhyZWFkX3B0cil7dmFyIHdvcmtlcj1QVGhyZWFkLnB0aHJlYWRzW3B0aHJlYWRfcHRyXTt3b3JrZXIucG9zdE1lc3NhZ2UoeyJjbWQiOiJjYW5jZWwifSk7fWZ1bmN0aW9uIGNsZWFudXBUaHJlYWQocHRocmVhZF9wdHIpe3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1twdGhyZWFkX3B0cl07YXNzZXJ0KHdvcmtlcik7UFRocmVhZC5yZXR1cm5Xb3JrZXJUb1Bvb2wod29ya2VyKTt9ZnVuY3Rpb24gemVyb01lbW9yeShhZGRyZXNzLHNpemUpe0hFQVBVOC5maWxsKDAsYWRkcmVzcyxhZGRyZXNzK3NpemUpO3JldHVybiBhZGRyZXNzfWZ1bmN0aW9uIHNwYXduVGhyZWFkKHRocmVhZFBhcmFtcyl7dmFyIHdvcmtlcj1QVGhyZWFkLmdldE5ld1dvcmtlcigpO2lmKCF3b3JrZXIpe3JldHVybiA2fVBUaHJlYWQucnVubmluZ1dvcmtlcnMucHVzaCh3b3JrZXIpO1BUaHJlYWQucHRocmVhZHNbdGhyZWFkUGFyYW1zLnB0aHJlYWRfcHRyXT13b3JrZXI7d29ya2VyLnB0aHJlYWRfcHRyPXRocmVhZFBhcmFtcy5wdGhyZWFkX3B0cjt2YXIgbXNnPXsiY21kIjoicnVuIiwic3RhcnRfcm91dGluZSI6dGhyZWFkUGFyYW1zLnN0YXJ0Um91dGluZSwiYXJnIjp0aHJlYWRQYXJhbXMuYXJnLCJwdGhyZWFkX3B0ciI6dGhyZWFkUGFyYW1zLnB0aHJlYWRfcHRyfTt3b3JrZXIucnVuUHRocmVhZD0oKT0+e21zZy50aW1lPXBlcmZvcm1hbmNlLm5vdygpO3dvcmtlci5wb3N0TWVzc2FnZShtc2csdGhyZWFkUGFyYW1zLnRyYW5zZmVyTGlzdCk7fTtpZih3b3JrZXIubG9hZGVkKXt3b3JrZXIucnVuUHRocmVhZCgpO2RlbGV0ZSB3b3JrZXIucnVuUHRocmVhZDt9cmV0dXJuIDB9dmFyIFBBVEg9e2lzQWJzOnBhdGg9PnBhdGguY2hhckF0KDApPT09Ii8iLHNwbGl0UGF0aDpmaWxlbmFtZT0+e3ZhciBzcGxpdFBhdGhSZT0vXihcLz98KShbXHNcU10qPykoKD86XC57MSwyfXxbXlwvXSs/fCkoXC5bXi5cL10qfCkpKD86W1wvXSopJC87cmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpfSxub3JtYWxpemVBcnJheToocGFydHMsYWxsb3dBYm92ZVJvb3QpPT57dmFyIHVwPTA7Zm9yKHZhciBpPXBhcnRzLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgbGFzdD1wYXJ0c1tpXTtpZihsYXN0PT09Ii4iKXtwYXJ0cy5zcGxpY2UoaSwxKTt9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArKzt9ZWxzZSBpZih1cCl7cGFydHMuc3BsaWNlKGksMSk7dXAtLTt9fWlmKGFsbG93QWJvdmVSb290KXtmb3IoO3VwO3VwLS0pe3BhcnRzLnVuc2hpZnQoIi4uIik7fX1yZXR1cm4gcGFydHN9LG5vcm1hbGl6ZTpwYXRoPT57dmFyIGlzQWJzb2x1dGU9UEFUSC5pc0FicyhwYXRoKSx0cmFpbGluZ1NsYXNoPXBhdGguc3Vic3RyKC0xKT09PSIvIjtwYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcihwPT4hIXApLCFpc0Fic29sdXRlKS5qb2luKCIvIik7aWYoIXBhdGgmJiFpc0Fic29sdXRlKXtwYXRoPSIuIjt9aWYocGF0aCYmdHJhaWxpbmdTbGFzaCl7cGF0aCs9Ii8iO31yZXR1cm4gKGlzQWJzb2x1dGU/Ii8iOiIiKStwYXRofSxkaXJuYW1lOnBhdGg9Pnt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiAiLiJ9aWYoZGlyKXtkaXI9ZGlyLnN1YnN0cigwLGRpci5sZW5ndGgtMSk7fXJldHVybiByb290K2Rpcn0sYmFzZW5hbWU6cGF0aD0+e2lmKHBhdGg9PT0iLyIpcmV0dXJuICIvIjtwYXRoPVBBVEgubm9ybWFsaXplKHBhdGgpO3BhdGg9cGF0aC5yZXBsYWNlKC9cLyQvLCIiKTt2YXIgbGFzdFNsYXNoPXBhdGgubGFzdEluZGV4T2YoIi8iKTtpZihsYXN0U2xhc2g9PT0tMSlyZXR1cm4gcGF0aDtyZXR1cm4gcGF0aC5zdWJzdHIobGFzdFNsYXNoKzEpfSxqb2luOmZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGhzLmpvaW4oIi8iKSl9LGpvaW4yOihsLHIpPT57cmV0dXJuIFBBVEgubm9ybWFsaXplKGwrIi8iK3IpfX07ZnVuY3Rpb24gZ2V0UmFuZG9tRGV2aWNlKCl7aWYodHlwZW9mIGNyeXB0bz09Im9iamVjdCImJnR5cGVvZiBjcnlwdG9bImdldFJhbmRvbVZhbHVlcyJdPT0iZnVuY3Rpb24iKXt2YXIgcmFuZG9tQnVmZmVyPW5ldyBVaW50OEFycmF5KDEpO3JldHVybiAoKT0+e2NyeXB0by5nZXRSYW5kb21WYWx1ZXMocmFuZG9tQnVmZmVyKTtyZXR1cm4gcmFuZG9tQnVmZmVyWzBdfX1lbHNlIGlmKEVOVklST05NRU5UX0lTX05PREUpe3RyeXt2YXIgY3J5cHRvX21vZHVsZT1yZXF1aXJlKCJjcnlwdG8iKTtyZXR1cm4gKCk9PmNyeXB0b19tb2R1bGVbInJhbmRvbUJ5dGVzIl0oMSlbMF19Y2F0Y2goZSl7fX1yZXR1cm4gKCk9PmFib3J0KCJyYW5kb21EZXZpY2UiKX12YXIgUEFUSF9GUz17cmVzb2x2ZTpmdW5jdGlvbigpe3ZhciByZXNvbHZlZFBhdGg9IiIscmVzb2x2ZWRBYnNvbHV0ZT1mYWxzZTtmb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aC0xO2k+PS0xJiYhcmVzb2x2ZWRBYnNvbHV0ZTtpLS0pe3ZhciBwYXRoPWk+PTA/YXJndW1lbnRzW2ldOkZTLmN3ZCgpO2lmKHR5cGVvZiBwYXRoIT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtyZXR1cm4gIiJ9cmVzb2x2ZWRQYXRoPXBhdGgrIi8iK3Jlc29sdmVkUGF0aDtyZXNvbHZlZEFic29sdXRlPVBBVEguaXNBYnMocGF0aCk7fXJlc29sdmVkUGF0aD1QQVRILm5vcm1hbGl6ZUFycmF5KHJlc29sdmVkUGF0aC5zcGxpdCgiLyIpLmZpbHRlcihwPT4hIXApLCFyZXNvbHZlZEFic29sdXRlKS5qb2luKCIvIik7cmV0dXJuIChyZXNvbHZlZEFic29sdXRlPyIvIjoiIikrcmVzb2x2ZWRQYXRofHwiLiJ9LHJlbGF0aXZlOihmcm9tLHRvKT0+e2Zyb209UEFUSF9GUy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRIX0ZTLnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuIFtdO3JldHVybiBhcnIuc2xpY2Uoc3RhcnQsZW5kLXN0YXJ0KzEpfXZhciBmcm9tUGFydHM9dHJpbShmcm9tLnNwbGl0KCIvIikpO3ZhciB0b1BhcnRzPXRyaW0odG8uc3BsaXQoIi8iKSk7dmFyIGxlbmd0aD1NYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLHRvUGFydHMubGVuZ3RoKTt2YXIgc2FtZVBhcnRzTGVuZ3RoPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2lmKGZyb21QYXJ0c1tpXSE9PXRvUGFydHNbaV0pe3NhbWVQYXJ0c0xlbmd0aD1pO2JyZWFrfX12YXIgb3V0cHV0UGFydHM9W107Zm9yKHZhciBpPXNhbWVQYXJ0c0xlbmd0aDtpPGZyb21QYXJ0cy5sZW5ndGg7aSsrKXtvdXRwdXRQYXJ0cy5wdXNoKCIuLiIpO31vdXRwdXRQYXJ0cz1vdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtyZXR1cm4gb3V0cHV0UGFydHMuam9pbigiLyIpfX07ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgbGVuPWxlbmd0aD4wP2xlbmd0aDpsZW5ndGhCeXRlc1VURjgoc3RyaW5neSkrMTt2YXIgdThhcnJheT1uZXcgQXJyYXkobGVuKTt2YXIgbnVtQnl0ZXNXcml0dGVuPXN0cmluZ1RvVVRGOEFycmF5KHN0cmluZ3ksdThhcnJheSwwLHU4YXJyYXkubGVuZ3RoKTtpZihkb250QWRkTnVsbCl1OGFycmF5Lmxlbmd0aD1udW1CeXRlc1dyaXR0ZW47cmV0dXJuIHU4YXJyYXl9dmFyIFRUWT17dHR5czpbXSxpbml0OmZ1bmN0aW9uKCl7fSxzaHV0ZG93bjpmdW5jdGlvbigpe30scmVnaXN0ZXI6ZnVuY3Rpb24oZGV2LG9wcyl7VFRZLnR0eXNbZGV2XT17aW5wdXQ6W10sb3V0cHV0OltdLG9wczpvcHN9O0ZTLnJlZ2lzdGVyRGV2aWNlKGRldixUVFkuc3RyZWFtX29wcyk7fSxzdHJlYW1fb3BzOntvcGVuOmZ1bmN0aW9uKHN0cmVhbSl7dmFyIHR0eT1UVFkudHR5c1tzdHJlYW0ubm9kZS5yZGV2XTtpZighdHR5KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myl9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlO30sY2xvc2U6ZnVuY3Rpb24oc3RyZWFtKXtzdHJlYW0udHR5Lm9wcy5mc3luYyhzdHJlYW0udHR5KTt9LGZzeW5jOmZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnR0eS5vcHMuZnN5bmMoc3RyZWFtLnR0eSk7fSxyZWFkOmZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2lmKCFzdHJlYW0udHR5fHwhc3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYwKX12YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9c3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIoc3RyZWFtLnR0eSk7fWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KX1pZihyZXN1bHQ9PT11bmRlZmluZWQmJmJ5dGVzUmVhZD09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYpfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdDt9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt9cmV0dXJuIGJ5dGVzUmVhZH0sd3JpdGU6ZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjApfXRyeXtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSk7fX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSl9aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt9cmV0dXJuIGl9fSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOmZ1bmN0aW9uKHR0eSl7aWYoIXR0eS5pbnB1dC5sZW5ndGgpe3ZhciByZXN1bHQ9bnVsbDtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt2YXIgQlVGU0laRT0yNTY7dmFyIGJ1Zj1CdWZmZXIuYWxsb2MoQlVGU0laRSk7dmFyIGJ5dGVzUmVhZD0wO3RyeXtieXRlc1JlYWQ9ZnMucmVhZFN5bmMocHJvY2Vzcy5zdGRpbi5mZCxidWYsMCxCVUZTSVpFLC0xKTt9Y2F0Y2goZSl7aWYoZS50b1N0cmluZygpLmluY2x1ZGVzKCJFT0YiKSlieXRlc1JlYWQ9MDtlbHNlIHRocm93IGV9aWYoYnl0ZXNSZWFkPjApe3Jlc3VsdD1idWYuc2xpY2UoMCxieXRlc1JlYWQpLnRvU3RyaW5nKCJ1dGYtOCIpO31lbHNlIHtyZXN1bHQ9bnVsbDt9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIjt9fWVsc2UgaWYodHlwZW9mIHJlYWRsaW5lPT0iZnVuY3Rpb24iKXtyZXN1bHQ9cmVhZGxpbmUoKTtpZihyZXN1bHQhPT1udWxsKXtyZXN1bHQrPSJcbiI7fX1pZighcmVzdWx0KXtyZXR1cm4gbnVsbH10dHkuaW5wdXQ9aW50QXJyYXlGcm9tU3RyaW5nKHJlc3VsdCx0cnVlKTt9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSxwdXRfY2hhcjpmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7b3V0KFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsMCkpO3R0eS5vdXRwdXQ9W107fWVsc2Uge2lmKHZhbCE9MCl0dHkub3V0cHV0LnB1c2godmFsKTt9fSxmc3luYzpmdW5jdGlvbih0dHkpe2lmKHR0eS5vdXRwdXQmJnR0eS5vdXRwdXQubGVuZ3RoPjApe291dChVVEY4QXJyYXlUb1N0cmluZyh0dHkub3V0cHV0LDApKTt0dHkub3V0cHV0PVtdO319fSxkZWZhdWx0X3R0eTFfb3BzOntwdXRfY2hhcjpmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7ZXJyKFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsMCkpO3R0eS5vdXRwdXQ9W107fWVsc2Uge2lmKHZhbCE9MCl0dHkub3V0cHV0LnB1c2godmFsKTt9fSxmc3luYzpmdW5jdGlvbih0dHkpe2lmKHR0eS5vdXRwdXQmJnR0eS5vdXRwdXQubGVuZ3RoPjApe2VycihVVEY4QXJyYXlUb1N0cmluZyh0dHkub3V0cHV0LDApKTt0dHkub3V0cHV0PVtdO319fX07ZnVuY3Rpb24gYWxpZ25NZW1vcnkoc2l6ZSxhbGlnbm1lbnQpe3JldHVybiBNYXRoLmNlaWwoc2l6ZS9hbGlnbm1lbnQpKmFsaWdubWVudH1mdW5jdGlvbiBtbWFwQWxsb2Moc2l6ZSl7c2l6ZT1hbGlnbk1lbW9yeShzaXplLDY1NTM2KTt2YXIgcHRyPV9lbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24oNjU1MzYsc2l6ZSk7aWYoIXB0cilyZXR1cm4gMDtyZXR1cm4gemVyb01lbW9yeShwdHIsc2l6ZSl9dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxtb3VudDpmdW5jdGlvbihtb3VudCl7cmV0dXJuIE1FTUZTLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTYzODR8NTExLDApfSxjcmVhdGVOb2RlOmZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUsZGV2KXtpZihGUy5pc0Jsa2Rldihtb2RlKXx8RlMuaXNGSUZPKG1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myl9aWYoIU1FTUZTLm9wc190YWJsZSl7TUVNRlMub3BzX3RhYmxlPXtkaXI6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHIsbG9va3VwOk1FTUZTLm5vZGVfb3BzLmxvb2t1cCxta25vZDpNRU1GUy5ub2RlX29wcy5ta25vZCxyZW5hbWU6TUVNRlMubm9kZV9vcHMucmVuYW1lLHVubGluazpNRU1GUy5ub2RlX29wcy51bmxpbmsscm1kaXI6TUVNRlMubm9kZV9vcHMucm1kaXIscmVhZGRpcjpNRU1GUy5ub2RlX29wcy5yZWFkZGlyLHN5bWxpbms6TUVNRlMubm9kZV9vcHMuc3ltbGlua30sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWt9fSxmaWxlOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06e2xsc2VlazpNRU1GUy5zdHJlYW1fb3BzLmxsc2VlayxyZWFkOk1FTUZTLnN0cmVhbV9vcHMucmVhZCx3cml0ZTpNRU1GUy5zdHJlYW1fb3BzLndyaXRlLGFsbG9jYXRlOk1FTUZTLnN0cmVhbV9vcHMuYWxsb2NhdGUsbW1hcDpNRU1GUy5zdHJlYW1fb3BzLm1tYXAsbXN5bmM6TUVNRlMuc3RyZWFtX29wcy5tc3luY319LGxpbms6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHIscmVhZGxpbms6TUVNRlMubm9kZV9vcHMucmVhZGxpbmt9LHN0cmVhbTp7fX0sY2hyZGV2Ontub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06RlMuY2hyZGV2X3N0cmVhbV9vcHN9fTt9dmFyIG5vZGU9RlMuY3JlYXRlTm9kZShwYXJlbnQsbmFtZSxtb2RlLGRldik7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5kaXIuc3RyZWFtO25vZGUuY29udGVudHM9e307fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUudXNlZEJ5dGVzPTA7bm9kZS5jb250ZW50cz1udWxsO31lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXtub2RlLm5vZGVfb3BzPU1FTUZTLm9wc190YWJsZS5saW5rLm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5saW5rLnN0cmVhbTt9ZWxzZSBpZihGUy5pc0NocmRldihub2RlLm1vZGUpKXtub2RlLm5vZGVfb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmNocmRldi5zdHJlYW07fW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZTtwYXJlbnQudGltZXN0YW1wPW5vZGUudGltZXN0YW1wO31yZXR1cm4gbm9kZX0sZ2V0RmlsZURhdGFBc1R5cGVkQXJyYXk6ZnVuY3Rpb24obm9kZSl7aWYoIW5vZGUuY29udGVudHMpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKG5vZGUuY29udGVudHMuc3ViYXJyYXkpcmV0dXJuIG5vZGUuY29udGVudHMuc3ViYXJyYXkoMCxub2RlLnVzZWRCeXRlcyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KG5vZGUuY29udGVudHMpfSxleHBhbmRGaWxlU3RvcmFnZTpmdW5jdGlvbihub2RlLG5ld0NhcGFjaXR5KXt2YXIgcHJldkNhcGFjaXR5PW5vZGUuY29udGVudHM/bm9kZS5jb250ZW50cy5sZW5ndGg6MDtpZihwcmV2Q2FwYWNpdHk+PW5ld0NhcGFjaXR5KXJldHVybjt2YXIgQ0FQQUNJVFlfRE9VQkxJTkdfTUFYPTEwMjQqMTAyNDtuZXdDYXBhY2l0eT1NYXRoLm1heChuZXdDYXBhY2l0eSxwcmV2Q2FwYWNpdHkqKHByZXZDYXBhY2l0eTxDQVBBQ0lUWV9ET1VCTElOR19NQVg/MjoxLjEyNSk+Pj4wKTtpZihwcmV2Q2FwYWNpdHkhPTApbmV3Q2FwYWNpdHk9TWF0aC5tYXgobmV3Q2FwYWNpdHksMjU2KTt2YXIgb2xkQ29udGVudHM9bm9kZS5jb250ZW50cztub2RlLmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KG5ld0NhcGFjaXR5KTtpZihub2RlLnVzZWRCeXRlcz4wKW5vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsbm9kZS51c2VkQnl0ZXMpLDApO30scmVzaXplRmlsZVN0b3JhZ2U6ZnVuY3Rpb24obm9kZSxuZXdTaXplKXtpZihub2RlLnVzZWRCeXRlcz09bmV3U2l6ZSlyZXR1cm47aWYobmV3U2l6ZT09MCl7bm9kZS5jb250ZW50cz1udWxsO25vZGUudXNlZEJ5dGVzPTA7fWVsc2Uge3ZhciBvbGRDb250ZW50cz1ub2RlLmNvbnRlbnRzO25vZGUuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkobmV3U2l6ZSk7aWYob2xkQ29udGVudHMpe25vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsTWF0aC5taW4obmV3U2l6ZSxub2RlLnVzZWRCeXRlcykpKTt9bm9kZS51c2VkQnl0ZXM9bmV3U2l6ZTt9fSxub2RlX29wczp7Z2V0YXR0cjpmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2O31lbHNlIGlmKEZTLmlzRmlsZShub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS51c2VkQnl0ZXM7fWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmxpbmsubGVuZ3RoO31lbHNlIHthdHRyLnNpemU9MDt9YXR0ci5hdGltZT1uZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7YXR0ci5tdGltZT1uZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7YXR0ci5jdGltZT1uZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7YXR0ci5ibGtzaXplPTQwOTY7YXR0ci5ibG9ja3M9TWF0aC5jZWlsKGF0dHIuc2l6ZS9hdHRyLmJsa3NpemUpO3JldHVybiBhdHRyfSxzZXRhdHRyOmZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlO31pZihhdHRyLnRpbWVzdGFtcCE9PXVuZGVmaW5lZCl7bm9kZS50aW1lc3RhbXA9YXR0ci50aW1lc3RhbXA7fWlmKGF0dHIuc2l6ZSE9PXVuZGVmaW5lZCl7TUVNRlMucmVzaXplRmlsZVN0b3JhZ2Uobm9kZSxhdHRyLnNpemUpO319LGxvb2t1cDpmdW5jdGlvbihwYXJlbnQsbmFtZSl7dGhyb3cgRlMuZ2VuZXJpY0Vycm9yc1s0NF19LG1rbm9kOmZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUsZGV2KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmFtZSxtb2RlLGRldil9LHJlbmFtZTpmdW5jdGlvbihvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKXtpZihGUy5pc0RpcihvbGRfbm9kZS5tb2RlKSl7dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpO31jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpfX19ZGVsZXRlIG9sZF9ub2RlLnBhcmVudC5jb250ZW50c1tvbGRfbm9kZS5uYW1lXTtvbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wPURhdGUubm93KCk7b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtuZXdfZGlyLnRpbWVzdGFtcD1vbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wO29sZF9ub2RlLnBhcmVudD1uZXdfZGlyO30sdW5saW5rOmZ1bmN0aW9uKHBhcmVudCxuYW1lKXtkZWxldGUgcGFyZW50LmNvbnRlbnRzW25hbWVdO3BhcmVudC50aW1lc3RhbXA9RGF0ZS5ub3coKTt9LHJtZGlyOmZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTtmb3IodmFyIGkgaW4gbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV07cGFyZW50LnRpbWVzdGFtcD1EYXRlLm5vdygpO30scmVhZGRpcjpmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpO31yZXR1cm4gZW50cmllc30sc3ltbGluazpmdW5jdGlvbihwYXJlbnQsbmV3bmFtZSxvbGRwYXRoKXt2YXIgbm9kZT1NRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuZXduYW1lLDUxMXw0MDk2MCwwKTtub2RlLmxpbms9b2xkcGF0aDtyZXR1cm4gbm9kZX0scmVhZGxpbms6ZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9cmV0dXJuIG5vZGUubGlua319LHN0cmVhbV9vcHM6e3JlYWQ6ZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PXN0cmVhbS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihzdHJlYW0ubm9kZS51c2VkQnl0ZXMtcG9zaXRpb24sbGVuZ3RoKTtpZihzaXplPjgmJmNvbnRlbnRzLnN1YmFycmF5KXtidWZmZXIuc2V0KGNvbnRlbnRzLnN1YmFycmF5KHBvc2l0aW9uLHBvc2l0aW9uK3NpemUpLG9mZnNldCk7fWVsc2Uge2Zvcih2YXIgaT0wO2k8c2l6ZTtpKyspYnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXTt9cmV0dXJuIHNpemV9LHdyaXRlOmZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pe2lmKCFsZW5ndGgpcmV0dXJuIDA7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTtpZihidWZmZXIuc3ViYXJyYXkmJighbm9kZS5jb250ZW50c3x8bm9kZS5jb250ZW50cy5zdWJhcnJheSkpe2lmKGNhbk93bil7bm9kZS5jb250ZW50cz1idWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpO25vZGUudXNlZEJ5dGVzPWxlbmd0aDtyZXR1cm4gbGVuZ3RofWVsc2UgaWYobm9kZS51c2VkQnl0ZXM9PT0wJiZwb3NpdGlvbj09PTApe25vZGUuY29udGVudHM9YnVmZmVyLnNsaWNlKG9mZnNldCxvZmZzZXQrbGVuZ3RoKTtub2RlLnVzZWRCeXRlcz1sZW5ndGg7cmV0dXJuIGxlbmd0aH1lbHNlIGlmKHBvc2l0aW9uK2xlbmd0aDw9bm9kZS51c2VkQnl0ZXMpe25vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkscG9zaXRpb24pO3JldHVybiBsZW5ndGh9fU1FTUZTLmV4cGFuZEZpbGVTdG9yYWdlKG5vZGUscG9zaXRpb24rbGVuZ3RoKTtpZihub2RlLmNvbnRlbnRzLnN1YmFycmF5JiZidWZmZXIuc3ViYXJyYXkpe25vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkscG9zaXRpb24pO31lbHNlIHtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe25vZGUuY29udGVudHNbcG9zaXRpb24raV09YnVmZmVyW29mZnNldCtpXTt9fW5vZGUudXNlZEJ5dGVzPU1hdGgubWF4KG5vZGUudXNlZEJ5dGVzLHBvc2l0aW9uK2xlbmd0aCk7cmV0dXJuIGxlbmd0aH0sbGxzZWVrOmZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsd2hlbmNlKXt2YXIgcG9zaXRpb249b2Zmc2V0O2lmKHdoZW5jZT09PTEpe3Bvc2l0aW9uKz1zdHJlYW0ucG9zaXRpb247fWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXtwb3NpdGlvbis9c3RyZWFtLm5vZGUudXNlZEJ5dGVzO319aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXJldHVybiBwb3NpdGlvbn0sYWxsb2NhdGU6ZnVuY3Rpb24oc3RyZWFtLG9mZnNldCxsZW5ndGgpe01FTUZTLmV4cGFuZEZpbGVTdG9yYWdlKHN0cmVhbS5ub2RlLG9mZnNldCtsZW5ndGgpO3N0cmVhbS5ub2RlLnVzZWRCeXRlcz1NYXRoLm1heChzdHJlYW0ubm9kZS51c2VkQnl0ZXMsb2Zmc2V0K2xlbmd0aCk7fSxtbWFwOmZ1bmN0aW9uKHN0cmVhbSxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmY29udGVudHMuYnVmZmVyPT09YnVmZmVyKXthbGxvY2F0ZWQ9ZmFsc2U7cHRyPWNvbnRlbnRzLmJ5dGVPZmZzZXQ7fWVsc2Uge2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpO31lbHNlIHtjb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyxwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpO319YWxsb2NhdGVkPXRydWU7cHRyPW1tYXBBbGxvYyhsZW5ndGgpO2lmKCFwdHIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ4KX1IRUFQOC5zZXQoY29udGVudHMscHRyKTt9cmV0dXJuIHtwdHI6cHRyLGFsbG9jYXRlZDphbGxvY2F0ZWR9fSxtc3luYzpmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgsbW1hcEZsYWdzKXtNRU1GUy5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsMCxsZW5ndGgsb2Zmc2V0LGZhbHNlKTtyZXR1cm4gMH19fTtmdW5jdGlvbiBhc3luY0xvYWQodXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXt2YXIgZGVwPSFub1J1bkRlcD9nZXRVbmlxdWVSdW5EZXBlbmRlbmN5KCJhbCAiK3VybCk6IiI7cmVhZEFzeW5jKHVybCxhcnJheUJ1ZmZlcj0+e2Fzc2VydChhcnJheUJ1ZmZlciwnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZCAobm8gYXJyYXlCdWZmZXIpLicpO29ubG9hZChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO2lmKGRlcClyZW1vdmVSdW5EZXBlbmRlbmN5KCk7fSxldmVudD0+e2lmKG9uZXJyb3Ipe29uZXJyb3IoKTt9ZWxzZSB7dGhyb3cgJ0xvYWRpbmcgZGF0YSBmaWxlICInK3VybCsnIiBmYWlsZWQuJ319KTtpZihkZXApYWRkUnVuRGVwZW5kZW5jeSgpO312YXIgRlM9e3Jvb3Q6bnVsbCxtb3VudHM6W10sZGV2aWNlczp7fSxzdHJlYW1zOltdLG5leHRJbm9kZToxLG5hbWVUYWJsZTpudWxsLGN1cnJlbnRQYXRoOiIvIixpbml0aWFsaXplZDpmYWxzZSxpZ25vcmVQZXJtaXNzaW9uczp0cnVlLEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGZpbGVzeXN0ZW1zOm51bGwsc3luY0ZTUmVxdWVzdHM6MCxsb29rdXBQYXRoOihwYXRoLG9wdHM9e30pPT57cGF0aD1QQVRIX0ZTLnJlc29sdmUocGF0aCk7aWYoIXBhdGgpcmV0dXJuIHtwYXRoOiIiLG5vZGU6bnVsbH07dmFyIGRlZmF1bHRzPXtmb2xsb3dfbW91bnQ6dHJ1ZSxyZWN1cnNlX2NvdW50OjB9O29wdHM9T2JqZWN0LmFzc2lnbihkZWZhdWx0cyxvcHRzKTtpZihvcHRzLnJlY3Vyc2VfY291bnQ+OCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzIpfXZhciBwYXJ0cz1wYXRoLnNwbGl0KCIvIikuZmlsdGVyKHA9PiEhcCk7dmFyIGN1cnJlbnQ9RlMucm9vdDt2YXIgY3VycmVudF9wYXRoPSIvIjtmb3IodmFyIGk9MDtpPHBhcnRzLmxlbmd0aDtpKyspe3ZhciBpc2xhc3Q9aT09PXBhcnRzLmxlbmd0aC0xO2lmKGlzbGFzdCYmb3B0cy5wYXJlbnQpe2JyZWFrfWN1cnJlbnQ9RlMubG9va3VwTm9kZShjdXJyZW50LHBhcnRzW2ldKTtjdXJyZW50X3BhdGg9UEFUSC5qb2luMihjdXJyZW50X3BhdGgscGFydHNbaV0pO2lmKEZTLmlzTW91bnRwb2ludChjdXJyZW50KSl7aWYoIWlzbGFzdHx8aXNsYXN0JiZvcHRzLmZvbGxvd19tb3VudCl7Y3VycmVudD1jdXJyZW50Lm1vdW50ZWQucm9vdDt9fWlmKCFpc2xhc3R8fG9wdHMuZm9sbG93KXt2YXIgY291bnQ9MDt3aGlsZShGUy5pc0xpbmsoY3VycmVudC5tb2RlKSl7dmFyIGxpbms9RlMucmVhZGxpbmsoY3VycmVudF9wYXRoKTtjdXJyZW50X3BhdGg9UEFUSF9GUy5yZXNvbHZlKFBBVEguZGlybmFtZShjdXJyZW50X3BhdGgpLGxpbmspO3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChjdXJyZW50X3BhdGgse3JlY3Vyc2VfY291bnQ6b3B0cy5yZWN1cnNlX2NvdW50KzF9KTtjdXJyZW50PWxvb2t1cC5ub2RlO2lmKGNvdW50Kys+NDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKX19fX1yZXR1cm4ge3BhdGg6Y3VycmVudF9wYXRoLG5vZGU6Y3VycmVudH19LGdldFBhdGg6bm9kZT0+e3ZhciBwYXRoO3doaWxlKHRydWUpe2lmKEZTLmlzUm9vdChub2RlKSl7dmFyIG1vdW50PW5vZGUubW91bnQubW91bnRwb2ludDtpZighcGF0aClyZXR1cm4gbW91bnQ7cmV0dXJuIG1vdW50W21vdW50Lmxlbmd0aC0xXSE9PSIvIj9tb3VudCsiLyIrcGF0aDptb3VudCtwYXRofXBhdGg9cGF0aD9ub2RlLm5hbWUrIi8iK3BhdGg6bm9kZS5uYW1lO25vZGU9bm9kZS5wYXJlbnQ7fX0saGFzaE5hbWU6KHBhcmVudGlkLG5hbWUpPT57dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MDt9cmV0dXJuIChwYXJlbnRpZCtoYXNoPj4+MCklRlMubmFtZVRhYmxlLmxlbmd0aH0saGFzaEFkZE5vZGU6bm9kZT0+e3ZhciBoYXNoPUZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLG5vZGUubmFtZSk7bm9kZS5uYW1lX25leHQ9RlMubmFtZVRhYmxlW2hhc2hdO0ZTLm5hbWVUYWJsZVtoYXNoXT1ub2RlO30saGFzaFJlbW92ZU5vZGU6bm9kZT0+e3ZhciBoYXNoPUZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLG5vZGUubmFtZSk7aWYoRlMubmFtZVRhYmxlW2hhc2hdPT09bm9kZSl7RlMubmFtZVRhYmxlW2hhc2hdPW5vZGUubmFtZV9uZXh0O31lbHNlIHt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0O319fSxsb29rdXBOb2RlOihwYXJlbnQsbmFtZSk9Pnt2YXIgZXJyQ29kZT1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnJDb2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlLHBhcmVudCl9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0sY3JlYXRlTm9kZToocGFyZW50LG5hbWUsbW9kZSxyZGV2KT0+e3ZhciBub2RlPW5ldyBGUy5GU05vZGUocGFyZW50LG5hbWUsbW9kZSxyZGV2KTtGUy5oYXNoQWRkTm9kZShub2RlKTtyZXR1cm4gbm9kZX0sZGVzdHJveU5vZGU6bm9kZT0+e0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpO30saXNSb290Om5vZGU9PntyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSxpc01vdW50cG9pbnQ6bm9kZT0+e3JldHVybiAhIW5vZGUubW91bnRlZH0saXNGaWxlOm1vZGU9PntyZXR1cm4gKG1vZGUmNjE0NDApPT09MzI3Njh9LGlzRGlyOm1vZGU9PntyZXR1cm4gKG1vZGUmNjE0NDApPT09MTYzODR9LGlzTGluazptb2RlPT57cmV0dXJuIChtb2RlJjYxNDQwKT09PTQwOTYwfSxpc0NocmRldjptb2RlPT57cmV0dXJuIChtb2RlJjYxNDQwKT09PTgxOTJ9LGlzQmxrZGV2Om1vZGU9PntyZXR1cm4gKG1vZGUmNjE0NDApPT09MjQ1NzZ9LGlzRklGTzptb2RlPT57cmV0dXJuIChtb2RlJjYxNDQwKT09PTQwOTZ9LGlzU29ja2V0Om1vZGU9PntyZXR1cm4gKG1vZGUmNDkxNTIpPT09NDkxNTJ9LGZsYWdNb2Rlczp7InIiOjAsInIrIjoyLCJ3Ijo1NzcsIncrIjo1NzgsImEiOjEwODksImErIjoxMDkwfSxtb2RlU3RyaW5nVG9GbGFnczpzdHI9Pnt2YXIgZmxhZ3M9RlMuZmxhZ01vZGVzW3N0cl07aWYodHlwZW9mIGZsYWdzPT0idW5kZWZpbmVkIil7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiAiK3N0cil9cmV0dXJuIGZsYWdzfSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzpmbGFnPT57dmFyIHBlcm1zPVsiciIsInciLCJydyJdW2ZsYWcmM107aWYoZmxhZyY1MTIpe3Blcm1zKz0idyI7fXJldHVybiBwZXJtc30sbm9kZVBlcm1pc3Npb25zOihub2RlLHBlcm1zKT0+e2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmNsdWRlcygiciIpJiYhKG5vZGUubW9kZSYyOTIpKXtyZXR1cm4gMn1lbHNlIGlmKHBlcm1zLmluY2x1ZGVzKCJ3IikmJiEobm9kZS5tb2RlJjE0Nikpe3JldHVybiAyfWVsc2UgaWYocGVybXMuaW5jbHVkZXMoIngiKSYmIShub2RlLm1vZGUmNzMpKXtyZXR1cm4gMn1yZXR1cm4gMH0sbWF5TG9va3VwOmRpcj0+e3ZhciBlcnJDb2RlPUZTLm5vZGVQZXJtaXNzaW9ucyhkaXIsIngiKTtpZihlcnJDb2RlKXJldHVybiBlcnJDb2RlO2lmKCFkaXIubm9kZV9vcHMubG9va3VwKXJldHVybiAyO3JldHVybiAwfSxtYXlDcmVhdGU6KGRpcixuYW1lKT0+e3RyeXt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKGRpcixuYW1lKTtyZXR1cm4gMjB9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSxtYXlEZWxldGU6KGRpcixuYW1lLGlzZGlyKT0+e3ZhciBub2RlO3RyeXtub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO31jYXRjaChlKXtyZXR1cm4gZS5lcnJub312YXIgZXJyQ29kZT1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVyckNvZGUpe3JldHVybiBlcnJDb2RlfWlmKGlzZGlyKXtpZighRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIDU0fWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gMTB9fWVsc2Uge2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiAzMX19cmV0dXJuIDB9LG1heU9wZW46KG5vZGUsZmxhZ3MpPT57aWYoIW5vZGUpe3JldHVybiA0NH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIDMyfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpIT09InIifHxmbGFncyY1MTIpe3JldHVybiAzMX19cmV0dXJuIEZTLm5vZGVQZXJtaXNzaW9ucyhub2RlLEZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGZsYWdzKSl9LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZmRfc3RhcnQ9MCxmZF9lbmQ9RlMuTUFYX09QRU5fRkRTKT0+e2Zvcih2YXIgZmQ9ZmRfc3RhcnQ7ZmQ8PWZkX2VuZDtmZCsrKXtpZighRlMuc3RyZWFtc1tmZF0pe3JldHVybiBmZH19dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzMpfSxnZXRTdHJlYW06ZmQ9PkZTLnN0cmVhbXNbZmRdLGNyZWF0ZVN0cmVhbTooc3RyZWFtLGZkX3N0YXJ0LGZkX2VuZCk9PntpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPWZ1bmN0aW9uKCl7dGhpcy5zaGFyZWQ9e307fTtGUy5GU1N0cmVhbS5wcm90b3R5cGU9e307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRlMuRlNTdHJlYW0ucHJvdG90eXBlLHtvYmplY3Q6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHNldDpmdW5jdGlvbih2YWwpe3RoaXMubm9kZT12YWw7fX0saXNSZWFkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gKHRoaXMuZmxhZ3MmMjA5NzE1NSkhPT0xfX0saXNXcml0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuICh0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH19LGlzQXBwZW5kOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mbGFncyYxMDI0fX0sZmxhZ3M6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYXJlZC5mbGFnc30sc2V0OmZ1bmN0aW9uKHZhbCl7dGhpcy5zaGFyZWQuZmxhZ3M9dmFsO319LHBvc2l0aW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb259LHNldDpmdW5jdGlvbih2YWwpe3RoaXMuc2hhcmVkLnBvc2l0aW9uPXZhbDt9fX0pO31zdHJlYW09T2JqZWN0LmFzc2lnbihuZXcgRlMuRlNTdHJlYW0sc3RyZWFtKTt2YXIgZmQ9RlMubmV4dGZkKGZkX3N0YXJ0LGZkX2VuZCk7c3RyZWFtLmZkPWZkO0ZTLnN0cmVhbXNbZmRdPXN0cmVhbTtyZXR1cm4gc3RyZWFtfSxjbG9zZVN0cmVhbTpmZD0+e0ZTLnN0cmVhbXNbZmRdPW51bGw7fSxjaHJkZXZfc3RyZWFtX29wczp7b3BlbjpzdHJlYW09Pnt2YXIgZGV2aWNlPUZTLmdldERldmljZShzdHJlYW0ubm9kZS5yZGV2KTtzdHJlYW0uc3RyZWFtX29wcz1kZXZpY2Uuc3RyZWFtX29wcztpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSk7fX0sbGxzZWVrOigpPT57dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfX0sbWFqb3I6ZGV2PT5kZXY+PjgsbWlub3I6ZGV2PT5kZXYmMjU1LG1ha2VkZXY6KG1hLG1pKT0+bWE8PDh8bWkscmVnaXN0ZXJEZXZpY2U6KGRldixvcHMpPT57RlMuZGV2aWNlc1tkZXZdPXtzdHJlYW1fb3BzOm9wc307fSxnZXREZXZpY2U6ZGV2PT5GUy5kZXZpY2VzW2Rldl0sZ2V0TW91bnRzOm1vdW50PT57dmFyIG1vdW50cz1bXTt2YXIgY2hlY2s9W21vdW50XTt3aGlsZShjaGVjay5sZW5ndGgpe3ZhciBtPWNoZWNrLnBvcCgpO21vdW50cy5wdXNoKG0pO2NoZWNrLnB1c2guYXBwbHkoY2hlY2ssbS5tb3VudHMpO31yZXR1cm4gbW91bnRzfSxzeW5jZnM6KHBvcHVsYXRlLGNhbGxiYWNrKT0+e2lmKHR5cGVvZiBwb3B1bGF0ZT09ImZ1bmN0aW9uIil7Y2FsbGJhY2s9cG9wdWxhdGU7cG9wdWxhdGU9ZmFsc2U7fUZTLnN5bmNGU1JlcXVlc3RzKys7aWYoRlMuc3luY0ZTUmVxdWVzdHM+MSl7ZXJyKCJ3YXJuaW5nOiAiK0ZTLnN5bmNGU1JlcXVlc3RzKyIgRlMuc3luY2ZzIG9wZXJhdGlvbnMgaW4gZmxpZ2h0IGF0IG9uY2UsIHByb2JhYmx5IGp1c3QgZG9pbmcgZXh0cmEgd29yayIpO312YXIgbW91bnRzPUZTLmdldE1vdW50cyhGUy5yb290Lm1vdW50KTt2YXIgY29tcGxldGVkPTA7ZnVuY3Rpb24gZG9DYWxsYmFjayhlcnJDb2RlKXtGUy5zeW5jRlNSZXF1ZXN0cy0tO3JldHVybiBjYWxsYmFjayhlcnJDb2RlKX1mdW5jdGlvbiBkb25lKGVyckNvZGUpe2lmKGVyckNvZGUpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBkb0NhbGxiYWNrKGVyckNvZGUpfXJldHVybn1pZigrK2NvbXBsZXRlZD49bW91bnRzLmxlbmd0aCl7ZG9DYWxsYmFjayhudWxsKTt9fW1vdW50cy5mb3JFYWNoKG1vdW50PT57aWYoIW1vdW50LnR5cGUuc3luY2ZzKXtyZXR1cm4gZG9uZShudWxsKX1tb3VudC50eXBlLnN5bmNmcyhtb3VudCxwb3B1bGF0ZSxkb25lKTt9KTt9LG1vdW50Oih0eXBlLG9wdHMsbW91bnRwb2ludCk9Pnt2YXIgcm9vdD1tb3VudHBvaW50PT09Ii8iO3ZhciBwc2V1ZG89IW1vdW50cG9pbnQ7dmFyIG5vZGU7aWYocm9vdCYmRlMucm9vdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApfWVsc2UgaWYoIXJvb3QmJiFwc2V1ZG8pe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTttb3VudHBvaW50PWxvb2t1cC5wYXRoO25vZGU9bG9va3VwLm5vZGU7aWYoRlMuaXNNb3VudHBvaW50KG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCl9aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KX19dmFyIG1vdW50PXt0eXBlOnR5cGUsb3B0czpvcHRzLG1vdW50cG9pbnQ6bW91bnRwb2ludCxtb3VudHM6W119O3ZhciBtb3VudFJvb3Q9dHlwZS5tb3VudChtb3VudCk7bW91bnRSb290Lm1vdW50PW1vdW50O21vdW50LnJvb3Q9bW91bnRSb290O2lmKHJvb3Qpe0ZTLnJvb3Q9bW91bnRSb290O31lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KTt9fXJldHVybiBtb3VudFJvb3R9LHVubW91bnQ6bW91bnRwb2ludD0+e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXZhciBub2RlPWxvb2t1cC5ub2RlO3ZhciBtb3VudD1ub2RlLm1vdW50ZWQ7dmFyIG1vdW50cz1GUy5nZXRNb3VudHMobW91bnQpO09iamVjdC5rZXlzKEZTLm5hbWVUYWJsZSkuZm9yRWFjaChoYXNoPT57dmFyIGN1cnJlbnQ9RlMubmFtZVRhYmxlW2hhc2hdO3doaWxlKGN1cnJlbnQpe3ZhciBuZXh0PWN1cnJlbnQubmFtZV9uZXh0O2lmKG1vdW50cy5pbmNsdWRlcyhjdXJyZW50Lm1vdW50KSl7RlMuZGVzdHJveU5vZGUoY3VycmVudCk7fWN1cnJlbnQ9bmV4dDt9fSk7bm9kZS5tb3VudGVkPW51bGw7dmFyIGlkeD1ub2RlLm1vdW50Lm1vdW50cy5pbmRleE9mKG1vdW50KTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpO30sbG9va3VwOihwYXJlbnQsbmFtZSk9PntyZXR1cm4gcGFyZW50Lm5vZGVfb3BzLmxvb2t1cChwYXJlbnQsbmFtZSl9LG1rbm9kOihwYXRoLG1vZGUsZGV2KT0+e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTtpZighbmFtZXx8bmFtZT09PSIuInx8bmFtZT09PSIuLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX12YXIgZXJyQ29kZT1GUy5tYXlDcmVhdGUocGFyZW50LG5hbWUpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0sY3JlYXRlOihwYXRoLG1vZGUpPT57bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NDM4O21vZGUmPTQwOTU7bW9kZXw9MzI3Njg7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0sbWtkaXI6KHBhdGgsbW9kZSk9Pnttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo1MTE7bW9kZSY9NTExfDUxMjttb2RlfD0xNjM4NDtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSxta2RpclRyZWU6KHBhdGgsbW9kZSk9Pnt2YXIgZGlycz1wYXRoLnNwbGl0KCIvIik7dmFyIGQ9IiI7Zm9yKHZhciBpPTA7aTxkaXJzLmxlbmd0aDsrK2kpe2lmKCFkaXJzW2ldKWNvbnRpbnVlO2QrPSIvIitkaXJzW2ldO3RyeXtGUy5ta2RpcihkLG1vZGUpO31jYXRjaChlKXtpZihlLmVycm5vIT0yMCl0aHJvdyBlfX19LG1rZGV2OihwYXRoLG1vZGUsZGV2KT0+e2lmKHR5cGVvZiBkZXY9PSJ1bmRlZmluZWQiKXtkZXY9bW9kZTttb2RlPTQzODt9bW9kZXw9ODE5MjtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLGRldil9LHN5bWxpbms6KG9sZHBhdGgsbmV3cGF0aCk9PntpZighUEFUSF9GUy5yZXNvbHZlKG9sZHBhdGgpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG5ld3BhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTtpZighcGFyZW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9dmFyIG5ld25hbWU9UEFUSC5iYXNlbmFtZShuZXdwYXRoKTt2YXIgZXJyQ29kZT1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfWlmKCFwYXJlbnQubm9kZV9vcHMuc3ltbGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpfXJldHVybiBwYXJlbnQubm9kZV9vcHMuc3ltbGluayhwYXJlbnQsbmV3bmFtZSxvbGRwYXRoKX0scmVuYW1lOihvbGRfcGF0aCxuZXdfcGF0aCk9Pnt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO2xvb2t1cD1GUy5sb29rdXBQYXRoKG9sZF9wYXRoLHtwYXJlbnQ6dHJ1ZX0pO29sZF9kaXI9bG9va3VwLm5vZGU7bG9va3VwPUZTLmxvb2t1cFBhdGgobmV3X3BhdGgse3BhcmVudDp0cnVlfSk7bmV3X2Rpcj1sb29rdXAubm9kZTtpZighb2xkX2Rpcnx8IW5ld19kaXIpdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDQpO2lmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3NSl9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEhfRlMucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXJlbGF0aXZlPVBBVEhfRlMucmVsYXRpdmUobmV3X3BhdGgsb2xkX2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpfXZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKTt9Y2F0Y2goZSl7fWlmKG9sZF9ub2RlPT09bmV3X25vZGUpe3JldHVybn12YXIgaXNkaXI9RlMuaXNEaXIob2xkX25vZGUubW9kZSk7dmFyIGVyckNvZGU9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfWVyckNvZGU9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnJDb2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKX1pZighb2xkX2Rpci5ub2RlX29wcy5yZW5hbWUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1pZihGUy5pc01vdW50cG9pbnQob2xkX25vZGUpfHxuZXdfbm9kZSYmRlMuaXNNb3VudHBvaW50KG5ld19ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApfWlmKG5ld19kaXIhPT1vbGRfZGlyKXtlcnJDb2RlPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9fUZTLmhhc2hSZW1vdmVOb2RlKG9sZF9ub2RlKTt0cnl7b2xkX2Rpci5ub2RlX29wcy5yZW5hbWUob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSk7fWNhdGNoKGUpe3Rocm93IGV9ZmluYWxseXtGUy5oYXNoQWRkTm9kZShvbGRfbm9kZSk7fX0scm1kaXI6cGF0aD0+e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyQ29kZT1GUy5tYXlEZWxldGUocGFyZW50LG5hbWUsdHJ1ZSk7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApfXBhcmVudC5ub2RlX29wcy5ybWRpcihwYXJlbnQsbmFtZSk7RlMuZGVzdHJveU5vZGUobm9kZSk7fSxyZWFkZGlyOnBhdGg9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5yZWFkZGlyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCl9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0sdW5saW5rOnBhdGg9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO2lmKCFwYXJlbnQpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX12YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnJDb2RlPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSxmYWxzZSk7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9aWYoIXBhcmVudC5ub2RlX29wcy51bmxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1pZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt9LHJlYWRsaW5rOnBhdGg9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1pZighbGluay5ub2RlX29wcy5yZWFkbGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXJldHVybiBQQVRIX0ZTLnJlc29sdmUoRlMuZ2V0UGF0aChsaW5rLnBhcmVudCksbGluay5ub2RlX29wcy5yZWFkbGluayhsaW5rKSl9LHN0YXQ6KHBhdGgsZG9udEZvbGxvdyk9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1pZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0sbHN0YXQ6cGF0aD0+e3JldHVybiBGUy5zdGF0KHBhdGgsdHJ1ZSl9LGNobW9kOihwYXRoLG1vZGUsZG9udEZvbGxvdyk9Pnt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09InN0cmluZyIpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTtub2RlPWxvb2t1cC5ub2RlO31lbHNlIHtub2RlPXBhdGg7fWlmKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7bW9kZTptb2RlJjQwOTV8bm9kZS5tb2RlJn40MDk1LHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7fSxsY2htb2Q6KHBhdGgsbW9kZSk9PntGUy5jaG1vZChwYXRoLG1vZGUsdHJ1ZSk7fSxmY2htb2Q6KGZkLG1vZGUpPT57dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfUZTLmNobW9kKHN0cmVhbS5ub2RlLG1vZGUpO30sY2hvd246KHBhdGgsdWlkLGdpZCxkb250Rm9sbG93KT0+e3ZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGU7fWVsc2Uge25vZGU9cGF0aDt9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pO30sbGNob3duOihwYXRoLHVpZCxnaWQpPT57RlMuY2hvd24ocGF0aCx1aWQsZ2lkLHRydWUpO30sZmNob3duOihmZCx1aWQsZ2lkKT0+e3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKTt9LHRydW5jYXRlOihwYXRoLGxlbik9PntpZihsZW48MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZTt9ZWxzZSB7bm9kZT1wYXRoO31pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzEpfWlmKCFGUy5pc0ZpbGUobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXZhciBlcnJDb2RlPUZTLm5vZGVQZXJtaXNzaW9ucyhub2RlLCJ3Iik7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3NpemU6bGVuLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7fSxmdHJ1bmNhdGU6KGZkLGxlbik9Pnt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX1GUy50cnVuY2F0ZShzdHJlYW0ubm9kZSxsZW4pO30sdXRpbWU6KHBhdGgsYXRpbWUsbXRpbWUpPT57dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KTt9LG9wZW46KHBhdGgsZmxhZ3MsbW9kZSk9PntpZihwYXRoPT09IiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1mbGFncz10eXBlb2YgZmxhZ3M9PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT0idW5kZWZpbmVkIj80Mzg6bW9kZTtpZihmbGFncyY2NCl7bW9kZT1tb2RlJjQwOTV8MzI3Njg7fWVsc2Uge21vZGU9MDt9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PSJvYmplY3QiKXtub2RlPXBhdGg7fWVsc2Uge3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZTt9Y2F0Y2goZSl7fX12YXIgY3JlYXRlZD1mYWxzZTtpZihmbGFncyY2NCl7aWYobm9kZSl7aWYoZmxhZ3MmMTI4KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyMCl9fWVsc2Uge25vZGU9RlMubWtub2QocGF0aCxtb2RlLDApO2NyZWF0ZWQ9dHJ1ZTt9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9aWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7ZmxhZ3MmPX41MTI7fWlmKGZsYWdzJjY1NTM2JiYhRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTQpfWlmKCFjcmVhdGVkKXt2YXIgZXJyQ29kZT1GUy5tYXlPcGVuKG5vZGUsZmxhZ3MpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfX1pZihmbGFncyY1MTImJiFjcmVhdGVkKXtGUy50cnVuY2F0ZShub2RlLDApO31mbGFncyY9figxMjh8NTEyfDEzMTA3Mik7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe25vZGU6bm9kZSxwYXRoOkZTLmdldFBhdGgobm9kZSksZmxhZ3M6ZmxhZ3Msc2Vla2FibGU6dHJ1ZSxwb3NpdGlvbjowLHN0cmVhbV9vcHM6bm9kZS5zdHJlYW1fb3BzLHVuZ290dGVuOltdLGVycm9yOmZhbHNlfSk7aWYoc3RyZWFtLnN0cmVhbV9vcHMub3Blbil7c3RyZWFtLnN0cmVhbV9vcHMub3BlbihzdHJlYW0pO31pZihNb2R1bGVbImxvZ1JlYWRGaWxlcyJdJiYhKGZsYWdzJjEpKXtpZighRlMucmVhZEZpbGVzKUZTLnJlYWRGaWxlcz17fTtpZighKHBhdGggaW4gRlMucmVhZEZpbGVzKSl7RlMucmVhZEZpbGVzW3BhdGhdPTE7fX1yZXR1cm4gc3RyZWFtfSxjbG9zZTpzdHJlYW09PntpZihGUy5pc0Nsb3NlZChzdHJlYW0pKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KX1pZihzdHJlYW0uZ2V0ZGVudHMpc3RyZWFtLmdldGRlbnRzPW51bGw7dHJ5e2lmKHN0cmVhbS5zdHJlYW1fb3BzLmNsb3NlKXtzdHJlYW0uc3RyZWFtX29wcy5jbG9zZShzdHJlYW0pO319Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCk7fXN0cmVhbS5mZD1udWxsO30saXNDbG9zZWQ6c3RyZWFtPT57cmV0dXJuIHN0cmVhbS5mZD09PW51bGx9LGxsc2Vlazooc3RyZWFtLG9mZnNldCx3aGVuY2UpPT57aWYoRlMuaXNDbG9zZWQoc3RyZWFtKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfWlmKHdoZW5jZSE9MCYmd2hlbmNlIT0xJiZ3aGVuY2UhPTIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX1zdHJlYW0ucG9zaXRpb249c3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKTtzdHJlYW0udW5nb3R0ZW49W107cmV0dXJuIHN0cmVhbS5wb3NpdGlvbn0scmVhZDooc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKT0+e2lmKGxlbmd0aDwwfHxwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9aWYoRlMuaXNDbG9zZWQoc3RyZWFtKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMSl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLnJlYWQpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX12YXIgc2Vla2luZz10eXBlb2YgcG9zaXRpb24hPSJ1bmRlZmluZWQiO2lmKCFzZWVraW5nKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247fWVsc2UgaWYoIXN0cmVhbS5zZWVrYWJsZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfXZhciBieXRlc1JlYWQ9c3RyZWFtLnN0cmVhbV9vcHMucmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNSZWFkO3JldHVybiBieXRlc1JlYWR9LHdyaXRlOihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKT0+e2lmKGxlbmd0aDwwfHxwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9aWYoRlMuaXNDbG9zZWQoc3RyZWFtKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMSl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9aWYoc3RyZWFtLnNlZWthYmxlJiZzdHJlYW0uZmxhZ3MmMTAyNCl7RlMubGxzZWVrKHN0cmVhbSwwLDIpO312YXIgc2Vla2luZz10eXBlb2YgcG9zaXRpb24hPSJ1bmRlZmluZWQiO2lmKCFzZWVraW5nKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247fWVsc2UgaWYoIXN0cmVhbS5zZWVrYWJsZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfXZhciBieXRlc1dyaXR0ZW49c3RyZWFtLnN0cmVhbV9vcHMud3JpdGUoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1dyaXR0ZW47cmV0dXJuIGJ5dGVzV3JpdHRlbn0sYWxsb2NhdGU6KHN0cmVhbSxvZmZzZXQsbGVuZ3RoKT0+e2lmKEZTLmlzQ2xvc2VkKHN0cmVhbSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfWlmKG9mZnNldDwwfHxsZW5ndGg8PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMzgpfXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKTt9LG1tYXA6KHN0cmVhbSxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyk9PntpZigocHJvdCYyKSE9PTAmJihmbGFncyYyKT09PTAmJihzdHJlYW0uZmxhZ3MmMjA5NzE1NSkhPT0yKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubW1hcChzdHJlYW0sbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSxtc3luYzooc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLG1tYXBGbGFncyk9PntpZighc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMpe3JldHVybiAwfXJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5tc3luYyhzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgsbW1hcEZsYWdzKX0sbXVubWFwOnN0cmVhbT0+MCxpb2N0bDooc3RyZWFtLGNtZCxhcmcpPT57aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1OSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0scmVhZEZpbGU6KHBhdGgsb3B0cz17fSk9PntvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fDA7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9VVRGOEFycmF5VG9TdHJpbmcoYnVmLDApO31lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7cmV0PWJ1Zjt9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSx3cml0ZUZpbGU6KHBhdGgsZGF0YSxvcHRzPXt9KT0+e29wdHMuZmxhZ3M9b3B0cy5mbGFnc3x8NTc3O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3Msb3B0cy5tb2RlKTtpZih0eXBlb2YgZGF0YT09InN0cmluZyIpe3ZhciBidWY9bmV3IFVpbnQ4QXJyYXkobGVuZ3RoQnl0ZXNVVEY4KGRhdGEpKzEpO3ZhciBhY3R1YWxOdW1CeXRlcz1zdHJpbmdUb1VURjhBcnJheShkYXRhLGJ1ZiwwLGJ1Zi5sZW5ndGgpO0ZTLndyaXRlKHN0cmVhbSxidWYsMCxhY3R1YWxOdW1CeXRlcyx1bmRlZmluZWQsb3B0cy5jYW5Pd24pO31lbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyhkYXRhKSl7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmJ5dGVMZW5ndGgsdW5kZWZpbmVkLG9wdHMuY2FuT3duKTt9ZWxzZSB7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBkYXRhIHR5cGUiKX1GUy5jbG9zZShzdHJlYW0pO30sY3dkOigpPT5GUy5jdXJyZW50UGF0aCxjaGRpcjpwYXRoPT57dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7aWYobG9va3VwLm5vZGU9PT1udWxsKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9aWYoIUZTLmlzRGlyKGxvb2t1cC5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCl9dmFyIGVyckNvZGU9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9RlMuY3VycmVudFBhdGg9bG9va3VwLnBhdGg7fSxjcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXM6KCk9PntGUy5ta2RpcigiL3RtcCIpO0ZTLm1rZGlyKCIvaG9tZSIpO0ZTLm1rZGlyKCIvaG9tZS93ZWJfdXNlciIpO30sY3JlYXRlRGVmYXVsdERldmljZXM6KCk9PntGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooKT0+MCx3cml0ZTooc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyk9Pmxlbmd0aH0pO0ZTLm1rZGV2KCIvZGV2L251bGwiLEZTLm1ha2VkZXYoMSwzKSk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNSwwKSxUVFkuZGVmYXVsdF90dHlfb3BzKTtUVFkucmVnaXN0ZXIoRlMubWFrZWRldig2LDApLFRUWS5kZWZhdWx0X3R0eTFfb3BzKTtGUy5ta2RldigiL2Rldi90dHkiLEZTLm1ha2VkZXYoNSwwKSk7RlMubWtkZXYoIi9kZXYvdHR5MSIsRlMubWFrZWRldig2LDApKTt2YXIgcmFuZG9tX2RldmljZT1nZXRSYW5kb21EZXZpY2UoKTtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJyYW5kb20iLHJhbmRvbV9kZXZpY2UpO0ZTLmNyZWF0ZURldmljZSgiL2RldiIsInVyYW5kb20iLHJhbmRvbV9kZXZpY2UpO0ZTLm1rZGlyKCIvZGV2L3NobSIpO0ZTLm1rZGlyKCIvZGV2L3NobS90bXAiKTt9LGNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllczooKT0+e0ZTLm1rZGlyKCIvcHJvYyIpO3ZhciBwcm9jX3NlbGY9RlMubWtkaXIoIi9wcm9jL3NlbGYiKTtGUy5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpO0ZTLm1vdW50KHttb3VudDooKT0+e3ZhciBub2RlPUZTLmNyZWF0ZU5vZGUocHJvY19zZWxmLCJmZCIsMTYzODR8NTExLDczKTtub2RlLm5vZGVfb3BzPXtsb29rdXA6KHBhcmVudCxuYW1lKT0+e3ZhciBmZD0rbmFtZTt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTt2YXIgcmV0PXtwYXJlbnQ6bnVsbCxtb3VudDp7bW91bnRwb2ludDoiZmFrZSJ9LG5vZGVfb3BzOntyZWFkbGluazooKT0+c3RyZWFtLnBhdGh9fTtyZXQucGFyZW50PXJldDtyZXR1cm4gcmV0fX07cmV0dXJuIG5vZGV9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpO30sY3JlYXRlU3RhbmRhcmRTdHJlYW1zOigpPT57aWYoTW9kdWxlWyJzdGRpbiJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRpbiIsTW9kdWxlWyJzdGRpbiJdKTt9ZWxzZSB7RlMuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZGluIik7fWlmKE1vZHVsZVsic3Rkb3V0Il0pe0ZTLmNyZWF0ZURldmljZSgiL2RldiIsInN0ZG91dCIsbnVsbCxNb2R1bGVbInN0ZG91dCJdKTt9ZWxzZSB7RlMuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZG91dCIpO31pZihNb2R1bGVbInN0ZGVyciJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsTW9kdWxlWyJzdGRlcnIiXSk7fWVsc2Uge0ZTLnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIik7fUZTLm9wZW4oIi9kZXYvc3RkaW4iLDApO0ZTLm9wZW4oIi9kZXYvc3Rkb3V0IiwxKTtGUy5vcGVuKCIvZGV2L3N0ZGVyciIsMSk7fSxlbnN1cmVFcnJub0Vycm9yOigpPT57aWYoRlMuRXJybm9FcnJvcilyZXR1cm47RlMuRXJybm9FcnJvcj1mdW5jdGlvbiBFcnJub0Vycm9yKGVycm5vLG5vZGUpe3RoaXMubm9kZT1ub2RlO3RoaXMuc2V0RXJybm89ZnVuY3Rpb24oZXJybm8pe3RoaXMuZXJybm89ZXJybm87fTt0aGlzLnNldEVycm5vKGVycm5vKTt0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIjt9O0ZTLkVycm5vRXJyb3IucHJvdG90eXBlPW5ldyBFcnJvcjtGUy5FcnJub0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1GUy5FcnJub0Vycm9yO1s0NF0uZm9yRWFjaChjb2RlPT57RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+Ijt9KTt9LHN0YXRpY0luaXQ6KCk9PntGUy5lbnN1cmVFcnJub0Vycm9yKCk7RlMubmFtZVRhYmxlPW5ldyBBcnJheSg0MDk2KTtGUy5tb3VudChNRU1GUyx7fSwiLyIpO0ZTLmNyZWF0ZURlZmF1bHREaXJlY3RvcmllcygpO0ZTLmNyZWF0ZURlZmF1bHREZXZpY2VzKCk7RlMuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCk7RlMuZmlsZXN5c3RlbXM9eyJNRU1GUyI6TUVNRlN9O30saW5pdDooaW5wdXQsb3V0cHV0LGVycm9yKT0+e0ZTLmluaXQuaW5pdGlhbGl6ZWQ9dHJ1ZTtGUy5lbnN1cmVFcnJub0Vycm9yKCk7TW9kdWxlWyJzdGRpbiJdPWlucHV0fHxNb2R1bGVbInN0ZGluIl07TW9kdWxlWyJzdGRvdXQiXT1vdXRwdXR8fE1vZHVsZVsic3Rkb3V0Il07TW9kdWxlWyJzdGRlcnIiXT1lcnJvcnx8TW9kdWxlWyJzdGRlcnIiXTtGUy5jcmVhdGVTdGFuZGFyZFN0cmVhbXMoKTt9LHF1aXQ6KCk9PntGUy5pbml0LmluaXRpYWxpemVkPWZhbHNlO2Zvcih2YXIgaT0wO2k8RlMuc3RyZWFtcy5sZW5ndGg7aSsrKXt2YXIgc3RyZWFtPUZTLnN0cmVhbXNbaV07aWYoIXN0cmVhbSl7Y29udGludWV9RlMuY2xvc2Uoc3RyZWFtKTt9fSxnZXRNb2RlOihjYW5SZWFkLGNhbldyaXRlKT0+e3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSxmaW5kT2JqZWN0OihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspPT57dmFyIHJldD1GUy5hbmFseXplUGF0aChwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspO2lmKCFyZXQuZXhpc3RzKXtyZXR1cm4gbnVsbH1yZXR1cm4gcmV0Lm9iamVjdH0sYW5hbHl6ZVBhdGg6KHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk9Pnt0cnl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udFJlc29sdmVMYXN0TGlua30pO3BhdGg9bG9va3VwLnBhdGg7fWNhdGNoKGUpe312YXIgcmV0PXtpc1Jvb3Q6ZmFsc2UsZXhpc3RzOmZhbHNlLGVycm9yOjAsbmFtZTpudWxsLHBhdGg6bnVsbCxvYmplY3Q6bnVsbCxwYXJlbnRFeGlzdHM6ZmFsc2UscGFyZW50UGF0aDpudWxsLHBhcmVudE9iamVjdDpudWxsfTt0cnl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7cmV0LnBhcmVudEV4aXN0cz10cnVlO3JldC5wYXJlbnRQYXRoPWxvb2t1cC5wYXRoO3JldC5wYXJlbnRPYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTtsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRSZXNvbHZlTGFzdExpbmt9KTtyZXQuZXhpc3RzPXRydWU7cmV0LnBhdGg9bG9va3VwLnBhdGg7cmV0Lm9iamVjdD1sb29rdXAubm9kZTtyZXQubmFtZT1sb29rdXAubm9kZS5uYW1lO3JldC5pc1Jvb3Q9bG9va3VwLnBhdGg9PT0iLyI7fWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vO31yZXR1cm4gcmV0fSxjcmVhdGVQYXRoOihwYXJlbnQscGF0aCxjYW5SZWFkLGNhbldyaXRlKT0+e3BhcmVudD10eXBlb2YgcGFyZW50PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpO3ZhciBwYXJ0cz1wYXRoLnNwbGl0KCIvIikucmV2ZXJzZSgpO3doaWxlKHBhcnRzLmxlbmd0aCl7dmFyIHBhcnQ9cGFydHMucG9wKCk7aWYoIXBhcnQpY29udGludWU7dmFyIGN1cnJlbnQ9UEFUSC5qb2luMihwYXJlbnQscGFydCk7dHJ5e0ZTLm1rZGlyKGN1cnJlbnQpO31jYXRjaChlKXt9cGFyZW50PWN1cnJlbnQ7fXJldHVybiBjdXJyZW50fSxjcmVhdGVGaWxlOihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpPT57dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpO3ZhciBtb2RlPUZTLmdldE1vZGUoY2FuUmVhZCxjYW5Xcml0ZSk7cmV0dXJuIEZTLmNyZWF0ZShwYXRoLG1vZGUpfSxjcmVhdGVEYXRhRmlsZToocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bik9Pnt2YXIgcGF0aD1uYW1lO2lmKHBhcmVudCl7cGFyZW50PXR5cGVvZiBwYXJlbnQ9PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCk7cGF0aD1uYW1lP1BBVEguam9pbjIocGFyZW50LG5hbWUpOnBhcmVudDt9dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTt2YXIgbm9kZT1GUy5jcmVhdGUocGF0aCxtb2RlKTtpZihkYXRhKXtpZih0eXBlb2YgZGF0YT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnI7fUZTLmNobW9kKG5vZGUsbW9kZXwxNDYpO3ZhciBzdHJlYW09RlMub3Blbihub2RlLDU3Nyk7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLGNhbk93bik7RlMuY2xvc2Uoc3RyZWFtKTtGUy5jaG1vZChub2RlLG1vZGUpO31yZXR1cm4gbm9kZX0sY3JlYXRlRGV2aWNlOihwYXJlbnQsbmFtZSxpbnB1dCxvdXRwdXQpPT57dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpO3ZhciBtb2RlPUZTLmdldE1vZGUoISFpbnB1dCwhIW91dHB1dCk7aWYoIUZTLmNyZWF0ZURldmljZS5tYWpvcilGUy5jcmVhdGVEZXZpY2UubWFqb3I9NjQ7dmFyIGRldj1GUy5tYWtlZGV2KEZTLmNyZWF0ZURldmljZS5tYWpvcisrLDApO0ZTLnJlZ2lzdGVyRGV2aWNlKGRldix7b3BlbjpzdHJlYW09PntzdHJlYW0uc2Vla2FibGU9ZmFsc2U7fSxjbG9zZTpzdHJlYW09PntpZihvdXRwdXQmJm91dHB1dC5idWZmZXImJm91dHB1dC5idWZmZXIubGVuZ3RoKXtvdXRwdXQoMTApO319LHJlYWQ6KHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3MpPT57dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PWlucHV0KCk7fWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KX1pZihyZXN1bHQ9PT11bmRlZmluZWQmJmJ5dGVzUmVhZD09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYpfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdDt9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt9cmV0dXJuIGJ5dGVzUmVhZH0sd3JpdGU6KHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3MpPT57Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt0cnl7b3V0cHV0KGJ1ZmZlcltvZmZzZXQraV0pO31jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSl9fWlmKGxlbmd0aCl7c3RyZWFtLm5vZGUudGltZXN0YW1wPURhdGUubm93KCk7fXJldHVybiBpfX0pO3JldHVybiBGUy5ta2RldihwYXRoLG1vZGUsZGV2KX0sZm9yY2VMb2FkRmlsZTpvYmo9PntpZihvYmouaXNEZXZpY2V8fG9iai5pc0ZvbGRlcnx8b2JqLmxpbmt8fG9iai5jb250ZW50cylyZXR1cm4gdHJ1ZTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBpbiBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtzIGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2Mgb24gdGhlIG1haW4gdGhyZWFkLiIpfWVsc2UgaWYocmVhZF8pe3RyeXtvYmouY29udGVudHM9aW50QXJyYXlGcm9tU3RyaW5nKHJlYWRfKG9iai51cmwpLHRydWUpO29iai51c2VkQnl0ZXM9b2JqLmNvbnRlbnRzLmxlbmd0aDt9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjkpfX1lbHNlIHt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfX0sY3JlYXRlTGF6eUZpbGU6KHBhcmVudCxuYW1lLHVybCxjYW5SZWFkLGNhbldyaXRlKT0+e2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXTt9TGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLmdldD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9nZXQoaWR4KXtpZihpZHg+dGhpcy5sZW5ndGgtMXx8aWR4PDApe3JldHVybiB1bmRlZmluZWR9dmFyIGNodW5rT2Zmc2V0PWlkeCV0aGlzLmNodW5rU2l6ZTt2YXIgY2h1bmtOdW09aWR4L3RoaXMuY2h1bmtTaXplfDA7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXI7fTtMYXp5VWludDhBcnJheS5wcm90b3R5cGUuY2FjaGVMZW5ndGg9ZnVuY3Rpb24gTGF6eVVpbnQ4QXJyYXlfY2FjaGVMZW5ndGgoKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt4aHIub3BlbigiSEVBRCIsdXJsLGZhbHNlKTt4aHIuc2VuZChudWxsKTtpZighKHhoci5zdGF0dXM+PTIwMCYmeGhyLnN0YXR1czwzMDB8fHhoci5zdGF0dXM9PT0zMDQpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiK3VybCsiLiBTdGF0dXM6ICIreGhyLnN0YXR1cyk7dmFyIGRhdGFsZW5ndGg9TnVtYmVyKHhoci5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1sZW5ndGgiKSk7dmFyIGhlYWRlcjt2YXIgaGFzQnl0ZVNlcnZpbmc9KGhlYWRlcj14aHIuZ2V0UmVzcG9uc2VIZWFkZXIoIkFjY2VwdC1SYW5nZXMiKSkmJmhlYWRlcj09PSJieXRlcyI7dmFyIHVzZXNHemlwPShoZWFkZXI9eGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUVuY29kaW5nIikpJiZoZWFkZXI9PT0iZ3ppcCI7dmFyIGNodW5rU2l6ZT0xMDI0KjEwMjQ7aWYoIWhhc0J5dGVTZXJ2aW5nKWNodW5rU2l6ZT1kYXRhbGVuZ3RoO3ZhciBkb1hIUj0oZnJvbSx0byk9PntpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7aWYoeGhyLm92ZXJyaWRlTWltZVR5cGUpe3hoci5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIik7fXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1yZXR1cm4gaW50QXJyYXlGcm9tU3RyaW5nKHhoci5yZXNwb25zZVRleHR8fCIiLHRydWUpfTt2YXIgbGF6eUFycmF5PXRoaXM7bGF6eUFycmF5LnNldERhdGFHZXR0ZXIoY2h1bmtOdW09Pnt2YXIgc3RhcnQ9Y2h1bmtOdW0qY2h1bmtTaXplO3ZhciBlbmQ9KGNodW5rTnVtKzEpKmNodW5rU2l6ZS0xO2VuZD1NYXRoLm1pbihlbmQsZGF0YWxlbmd0aC0xKTtpZih0eXBlb2YgbGF6eUFycmF5LmNodW5rc1tjaHVua051bV09PSJ1bmRlZmluZWQiKXtsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXT1kb1hIUihzdGFydCxlbmQpO31pZih0eXBlb2YgbGF6eUFycmF5LmNodW5rc1tjaHVua051bV09PSJ1bmRlZmluZWQiKXRocm93IG5ldyBFcnJvcigiZG9YSFIgZmFpbGVkISIpO3JldHVybiBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXX0pO2lmKHVzZXNHemlwfHwhZGF0YWxlbmd0aCl7Y2h1bmtTaXplPWRhdGFsZW5ndGg9MTtkYXRhbGVuZ3RoPXRoaXMuZ2V0dGVyKDApLmxlbmd0aDtjaHVua1NpemU9ZGF0YWxlbmd0aDtvdXQoIkxhenlGaWxlcyBvbiBnemlwIGZvcmNlcyBkb3dubG9hZCBvZiB0aGUgd2hvbGUgZmlsZSB3aGVuIGxlbmd0aCBpcyBhY2Nlc3NlZCIpO310aGlzLl9sZW5ndGg9ZGF0YWxlbmd0aDt0aGlzLl9jaHVua1NpemU9Y2h1bmtTaXplO3RoaXMubGVuZ3RoS25vd249dHJ1ZTt9O2lmKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCIpe2lmKCFFTlZJUk9OTUVOVF9JU19XT1JLRVIpdGhyb3cgIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciBsYXp5QXJyYXk9bmV3IExhenlVaW50OEFycmF5O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxhenlBcnJheSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5sZW5ndGhLbm93bil7dGhpcy5jYWNoZUxlbmd0aCgpO31yZXR1cm4gdGhpcy5fbGVuZ3RofX0sY2h1bmtTaXplOntnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5sZW5ndGhLbm93bil7dGhpcy5jYWNoZUxlbmd0aCgpO31yZXR1cm4gdGhpcy5fY2h1bmtTaXplfX19KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fTt9ZWxzZSB7dmFyIHByb3BlcnRpZXM9e2lzRGV2aWNlOmZhbHNlLHVybDp1cmx9O312YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzO31lbHNlIGlmKHByb3BlcnRpZXMudXJsKXtub2RlLmNvbnRlbnRzPW51bGw7bm9kZS51cmw9cHJvcGVydGllcy51cmw7fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG5vZGUse3VzZWRCeXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudHMubGVuZ3RofX19KTt2YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaChrZXk9Pnt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7RlMuZm9yY2VMb2FkRmlsZShub2RlKTtyZXR1cm4gZm4uYXBwbHkobnVsbCxhcmd1bWVudHMpfTt9KTtmdW5jdGlvbiB3cml0ZUNodW5rcyhzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2lmKGNvbnRlbnRzLnNsaWNlKXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzW3Bvc2l0aW9uK2ldO319ZWxzZSB7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50cy5nZXQocG9zaXRpb24raSk7fX1yZXR1cm4gc2l6ZX1zdHJlYW1fb3BzLnJlYWQ9KHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik9PntGUy5mb3JjZUxvYWRGaWxlKG5vZGUpO3JldHVybiB3cml0ZUNodW5rcyhzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pfTtzdHJlYW1fb3BzLm1tYXA9KHN0cmVhbSxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyk9PntGUy5mb3JjZUxvYWRGaWxlKG5vZGUpO3ZhciBwdHI9bW1hcEFsbG9jKGxlbmd0aCk7aWYoIXB0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDgpfXdyaXRlQ2h1bmtzKHN0cmVhbSxIRUFQOCxwdHIsbGVuZ3RoLHBvc2l0aW9uKTtyZXR1cm4ge3B0cjpwdHIsYWxsb2NhdGVkOnRydWV9fTtub2RlLnN0cmVhbV9vcHM9c3RyZWFtX29wcztyZXR1cm4gbm9kZX0sY3JlYXRlUHJlbG9hZGVkRmlsZToocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duLHByZUZpbmlzaCk9Pnt2YXIgZnVsbG5hbWU9bmFtZT9QQVRIX0ZTLnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKHByZUZpbmlzaClwcmVGaW5pc2goKTtpZighZG9udENyZWF0ZUZpbGUpe0ZTLmNyZWF0ZURhdGFGaWxlKHBhcmVudCxuYW1lLGJ5dGVBcnJheSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bik7fWlmKG9ubG9hZClvbmxvYWQoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCk7fWlmKEJyb3dzZXIuaGFuZGxlZEJ5UHJlbG9hZFBsdWdpbihieXRlQXJyYXksZnVsbG5hbWUsZmluaXNoLCgpPT57aWYob25lcnJvcilvbmVycm9yKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgpO30pKXtyZXR1cm59ZmluaXNoKGJ5dGVBcnJheSk7fWFkZFJ1bkRlcGVuZGVuY3koKTtpZih0eXBlb2YgdXJsPT0ic3RyaW5nIil7YXN5bmNMb2FkKHVybCxieXRlQXJyYXk9PnByb2Nlc3NEYXRhKGJ5dGVBcnJheSksb25lcnJvcik7fWVsc2Uge3Byb2Nlc3NEYXRhKHVybCk7fX0saW5kZXhlZERCOigpPT57cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0sREJfTkFNRTooKT0+e3JldHVybiAiRU1fRlNfIit3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9LERCX1ZFUlNJT046MjAsREJfU1RPUkVfTkFNRToiRklMRV9EQVRBIixzYXZlRmlsZXNUb0RCOihwYXRocyxvbmxvYWQsb25lcnJvcik9PntvbmxvYWQ9b25sb2FkfHwoKCk9Pnt9KTtvbmVycm9yPW9uZXJyb3J8fCgoKT0+e30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTik7fWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD0oKT0+e291dCgiY3JlYXRpbmcgZGIiKTt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O2RiLmNyZWF0ZU9iamVjdFN0b3JlKEZTLkRCX1NUT1JFX05BTUUpO307b3BlblJlcXVlc3Qub25zdWNjZXNzPSgpPT57dmFyIGRiPW9wZW5SZXF1ZXN0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkd3JpdGUiKTt2YXIgZmlsZXM9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSk7dmFyIG9rPTAsZmFpbD0wLHRvdGFsPXBhdGhzLmxlbmd0aDtmdW5jdGlvbiBmaW5pc2goKXtpZihmYWlsPT0wKW9ubG9hZCgpO2Vsc2Ugb25lcnJvcigpO31wYXRocy5mb3JFYWNoKHBhdGg9Pnt2YXIgcHV0UmVxdWVzdD1maWxlcy5wdXQoRlMuYW5hbHl6ZVBhdGgocGF0aCkub2JqZWN0LmNvbnRlbnRzLHBhdGgpO3B1dFJlcXVlc3Qub25zdWNjZXNzPSgpPT57b2srKztpZihvaytmYWlsPT10b3RhbClmaW5pc2goKTt9O3B1dFJlcXVlc3Qub25lcnJvcj0oKT0+e2ZhaWwrKztpZihvaytmYWlsPT10b3RhbClmaW5pc2goKTt9O30pO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcjt9O29wZW5SZXF1ZXN0Lm9uZXJyb3I9b25lcnJvcjt9LGxvYWRGaWxlc0Zyb21EQjoocGF0aHMsb25sb2FkLG9uZXJyb3IpPT57b25sb2FkPW9ubG9hZHx8KCgpPT57fSk7b25lcnJvcj1vbmVycm9yfHwoKCk9Pnt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pO31jYXRjaChlKXtyZXR1cm4gb25lcnJvcihlKX1vcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQ9b25lcnJvcjtvcGVuUmVxdWVzdC5vbnN1Y2Nlc3M9KCk9Pnt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpO31jYXRjaChlKXtvbmVycm9yKGUpO3JldHVybn12YXIgZmlsZXM9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSk7dmFyIG9rPTAsZmFpbD0wLHRvdGFsPXBhdGhzLmxlbmd0aDtmdW5jdGlvbiBmaW5pc2goKXtpZihmYWlsPT0wKW9ubG9hZCgpO2Vsc2Ugb25lcnJvcigpO31wYXRocy5mb3JFYWNoKHBhdGg9Pnt2YXIgZ2V0UmVxdWVzdD1maWxlcy5nZXQocGF0aCk7Z2V0UmVxdWVzdC5vbnN1Y2Nlc3M9KCk9PntpZihGUy5hbmFseXplUGF0aChwYXRoKS5leGlzdHMpe0ZTLnVubGluayhwYXRoKTt9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCk7fTtnZXRSZXF1ZXN0Lm9uZXJyb3I9KCk9PntmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCk7fTt9KTt0cmFuc2FjdGlvbi5vbmVycm9yPW9uZXJyb3I7fTtvcGVuUmVxdWVzdC5vbmVycm9yPW9uZXJyb3I7fX07dmFyIFNZU0NBTExTPXtERUZBVUxUX1BPTExNQVNLOjUsY2FsY3VsYXRlQXQ6ZnVuY3Rpb24oZGlyZmQscGF0aCxhbGxvd0VtcHR5KXtpZihQQVRILmlzQWJzKHBhdGgpKXtyZXR1cm4gcGF0aH12YXIgZGlyO2lmKGRpcmZkPT09LTEwMCl7ZGlyPUZTLmN3ZCgpO31lbHNlIHt2YXIgZGlyc3RyZWFtPVNZU0NBTExTLmdldFN0cmVhbUZyb21GRChkaXJmZCk7ZGlyPWRpcnN0cmVhbS5wYXRoO31pZihwYXRoLmxlbmd0aD09MCl7aWYoIWFsbG93RW1wdHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1yZXR1cm4gZGlyfXJldHVybiBQQVRILmpvaW4yKGRpcixwYXRoKX0sZG9TdGF0OmZ1bmN0aW9uKGZ1bmMscGF0aCxidWYpe3RyeXt2YXIgc3RhdD1mdW5jKHBhdGgpO31jYXRjaChlKXtpZihlJiZlLm5vZGUmJlBBVEgubm9ybWFsaXplKHBhdGgpIT09UEFUSC5ub3JtYWxpemUoRlMuZ2V0UGF0aChlLm5vZGUpKSl7cmV0dXJuIC01NH10aHJvdyBlfUhFQVAzMltidWY+PjJdPXN0YXQuZGV2O0hFQVAzMltidWYrOD4+Ml09c3RhdC5pbm87SEVBUDMyW2J1ZisxMj4+Ml09c3RhdC5tb2RlO0hFQVBVMzJbYnVmKzE2Pj4yXT1zdGF0Lm5saW5rO0hFQVAzMltidWYrMjA+PjJdPXN0YXQudWlkO0hFQVAzMltidWYrMjQ+PjJdPXN0YXQuZ2lkO0hFQVAzMltidWYrMjg+PjJdPXN0YXQucmRldjt0ZW1wSTY0PVtzdGF0LnNpemU+Pj4wLCh0ZW1wRG91YmxlPXN0YXQuc2l6ZSwrTWF0aC5hYnModGVtcERvdWJsZSk+PTE/dGVtcERvdWJsZT4wPyhNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpfDApPj4+MDp+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUtKyh+fnRlbXBEb3VibGU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbYnVmKzQwPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltidWYrNDQ+PjJdPXRlbXBJNjRbMV07SEVBUDMyW2J1Zis0OD4+Ml09NDA5NjtIRUFQMzJbYnVmKzUyPj4yXT1zdGF0LmJsb2Nrczt0ZW1wSTY0PVtNYXRoLmZsb29yKHN0YXQuYXRpbWUuZ2V0VGltZSgpLzFlMyk+Pj4wLCh0ZW1wRG91YmxlPU1hdGguZmxvb3Ioc3RhdC5hdGltZS5nZXRUaW1lKCkvMWUzKSwrTWF0aC5hYnModGVtcERvdWJsZSk+PTE/dGVtcERvdWJsZT4wPyhNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpfDApPj4+MDp+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUtKyh+fnRlbXBEb3VibGU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbYnVmKzU2Pj4yXT10ZW1wSTY0WzBdLEhFQVAzMltidWYrNjA+PjJdPXRlbXBJNjRbMV07SEVBUFUzMltidWYrNjQ+PjJdPTA7dGVtcEk2ND1bTWF0aC5mbG9vcihzdGF0Lm10aW1lLmdldFRpbWUoKS8xZTMpPj4+MCwodGVtcERvdWJsZT1NYXRoLmZsb29yKHN0YXQubXRpbWUuZ2V0VGltZSgpLzFlMyksK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2J1Zis3Mj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYnVmKzc2Pj4yXT10ZW1wSTY0WzFdO0hFQVBVMzJbYnVmKzgwPj4yXT0wO3RlbXBJNjQ9W01hdGguZmxvb3Ioc3RhdC5jdGltZS5nZXRUaW1lKCkvMWUzKT4+PjAsKHRlbXBEb3VibGU9TWF0aC5mbG9vcihzdGF0LmN0aW1lLmdldFRpbWUoKS8xZTMpLCtNYXRoLmFicyh0ZW1wRG91YmxlKT49MT90ZW1wRG91YmxlPjA/KE1hdGgubWluKCtNYXRoLmZsb29yKHRlbXBEb3VibGUvNDI5NDk2NzI5NiksNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGguY2VpbCgodGVtcERvdWJsZS0rKH5+dGVtcERvdWJsZT4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLEhFQVAzMltidWYrODg+PjJdPXRlbXBJNjRbMF0sSEVBUDMyW2J1Zis5Mj4+Ml09dGVtcEk2NFsxXTtIRUFQVTMyW2J1Zis5Nj4+Ml09MDt0ZW1wSTY0PVtzdGF0Lmlubz4+PjAsKHRlbXBEb3VibGU9c3RhdC5pbm8sK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2J1ZisxMDQ+PjJdPXRlbXBJNjRbMF0sSEVBUDMyW2J1ZisxMDg+PjJdPXRlbXBJNjRbMV07cmV0dXJuIDB9LGRvTXN5bmM6ZnVuY3Rpb24oYWRkcixzdHJlYW0sbGVuLGZsYWdzLG9mZnNldCl7aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpfWlmKGZsYWdzJjIpe3JldHVybiAwfXZhciBidWZmZXI9SEVBUFU4LnNsaWNlKGFkZHIsYWRkcitsZW4pO0ZTLm1zeW5jKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbixmbGFncyk7fSx2YXJhcmdzOnVuZGVmaW5lZCxnZXQ6ZnVuY3Rpb24oKXtTWVNDQUxMUy52YXJhcmdzKz00O3ZhciByZXQ9SEVBUDMyW1NZU0NBTExTLnZhcmFyZ3MtND4+Ml07cmV0dXJuIHJldH0sZ2V0U3RyOmZ1bmN0aW9uKHB0cil7dmFyIHJldD1VVEY4VG9TdHJpbmcocHRyKTtyZXR1cm4gcmV0fSxnZXRTdHJlYW1Gcm9tRkQ6ZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtKXRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO3JldHVybiBzdHJlYW19fTtmdW5jdGlvbiBfcHJvY19leGl0KGNvZGUpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDEsMSxjb2RlKTtFWElUU1RBVFVTPWNvZGU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7UFRocmVhZC50ZXJtaW5hdGVBbGxUaHJlYWRzKCk7aWYoTW9kdWxlWyJvbkV4aXQiXSlNb2R1bGVbIm9uRXhpdCJdKGNvZGUpO0FCT1JUPXRydWU7fXF1aXRfKGNvZGUsbmV3IEV4aXRTdGF0dXMoY29kZSkpO31mdW5jdGlvbiBleGl0SlMoc3RhdHVzLGltcGxpY2l0KXtFWElUU1RBVFVTPXN0YXR1cztpZighaW1wbGljaXQpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe2V4aXRPbk1haW5UaHJlYWQoc3RhdHVzKTt0aHJvdyAidW53aW5kIn19X3Byb2NfZXhpdChzdGF0dXMpO312YXIgX2V4aXQ9ZXhpdEpTO2Z1bmN0aW9uIGhhbmRsZUV4Y2VwdGlvbihlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8ZT09InVud2luZCIpe3JldHVybiBFWElUU1RBVFVTfXF1aXRfKDEsZSk7fXZhciBQVGhyZWFkPXt1bnVzZWRXb3JrZXJzOltdLHJ1bm5pbmdXb3JrZXJzOltdLHRsc0luaXRGdW5jdGlvbnM6W10scHRocmVhZHM6e30saW5pdDpmdW5jdGlvbigpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe1BUaHJlYWQuaW5pdFdvcmtlcigpO31lbHNlIHtQVGhyZWFkLmluaXRNYWluVGhyZWFkKCk7fX0saW5pdE1haW5UaHJlYWQ6ZnVuY3Rpb24oKXt9LGluaXRXb3JrZXI6ZnVuY3Rpb24oKXtub0V4aXRSdW50aW1lPWZhbHNlO30sc2V0RXhpdFN0YXR1czpmdW5jdGlvbihzdGF0dXMpe0VYSVRTVEFUVVM9c3RhdHVzO30sdGVybWluYXRlQWxsVGhyZWFkczpmdW5jdGlvbigpe2Zvcih2YXIgd29ya2VyIG9mIE9iamVjdC52YWx1ZXMoUFRocmVhZC5wdGhyZWFkcykpe1BUaHJlYWQucmV0dXJuV29ya2VyVG9Qb29sKHdvcmtlcik7fWZvcih2YXIgd29ya2VyIG9mIFBUaHJlYWQudW51c2VkV29ya2Vycyl7d29ya2VyLnRlcm1pbmF0ZSgpO31QVGhyZWFkLnVudXNlZFdvcmtlcnM9W107fSxyZXR1cm5Xb3JrZXJUb1Bvb2w6ZnVuY3Rpb24od29ya2VyKXt2YXIgcHRocmVhZF9wdHI9d29ya2VyLnB0aHJlYWRfcHRyO2RlbGV0ZSBQVGhyZWFkLnB0aHJlYWRzW3B0aHJlYWRfcHRyXTtQVGhyZWFkLnVudXNlZFdvcmtlcnMucHVzaCh3b3JrZXIpO1BUaHJlYWQucnVubmluZ1dvcmtlcnMuc3BsaWNlKFBUaHJlYWQucnVubmluZ1dvcmtlcnMuaW5kZXhPZih3b3JrZXIpLDEpO3dvcmtlci5wdGhyZWFkX3B0cj0wO19fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhKHB0aHJlYWRfcHRyKTt9LHJlY2VpdmVPYmplY3RUcmFuc2ZlcjpmdW5jdGlvbihkYXRhKXt9LHRocmVhZEluaXRUTFM6ZnVuY3Rpb24oKXtQVGhyZWFkLnRsc0luaXRGdW5jdGlvbnMuZm9yRWFjaChmPT5mKCkpO30sbG9hZFdhc21Nb2R1bGVUb1dvcmtlcjpmdW5jdGlvbih3b3JrZXIsb25GaW5pc2hlZExvYWRpbmcpe3dvcmtlci5vbm1lc3NhZ2U9ZT0+e3ZhciBkPWVbImRhdGEiXTt2YXIgY21kPWRbImNtZCJdO2lmKHdvcmtlci5wdGhyZWFkX3B0cilQVGhyZWFkLmN1cnJlbnRQcm94aWVkT3BlcmF0aW9uQ2FsbGVyVGhyZWFkPXdvcmtlci5wdGhyZWFkX3B0cjtpZihkWyJ0YXJnZXRUaHJlYWQiXSYmZFsidGFyZ2V0VGhyZWFkIl0hPV9wdGhyZWFkX3NlbGYoKSl7dmFyIHRhcmdldFdvcmtlcj1QVGhyZWFkLnB0aHJlYWRzW2QudGFyZ2V0VGhyZWFkXTtpZih0YXJnZXRXb3JrZXIpe3RhcmdldFdvcmtlci5wb3N0TWVzc2FnZShkLGRbInRyYW5zZmVyTGlzdCJdKTt9ZWxzZSB7ZXJyKCdJbnRlcm5hbCBlcnJvciEgV29ya2VyIHNlbnQgYSBtZXNzYWdlICInK2NtZCsnIiB0byB0YXJnZXQgcHRocmVhZCAnK2RbInRhcmdldFRocmVhZCJdKyIsIGJ1dCB0aGF0IHRocmVhZCBubyBsb25nZXIgZXhpc3RzISIpO31QVGhyZWFkLmN1cnJlbnRQcm94aWVkT3BlcmF0aW9uQ2FsbGVyVGhyZWFkPXVuZGVmaW5lZDtyZXR1cm59aWYoY21kPT09InByb2Nlc3NQcm94eWluZ1F1ZXVlIil7ZXhlY3V0ZU5vdGlmaWVkUHJveHlpbmdRdWV1ZShkWyJxdWV1ZSJdKTt9ZWxzZSBpZihjbWQ9PT0ic3Bhd25UaHJlYWQiKXtzcGF3blRocmVhZChkKTt9ZWxzZSBpZihjbWQ9PT0iY2xlYW51cFRocmVhZCIpe2NsZWFudXBUaHJlYWQoZFsidGhyZWFkIl0pO31lbHNlIGlmKGNtZD09PSJraWxsVGhyZWFkIil7a2lsbFRocmVhZChkWyJ0aHJlYWQiXSk7fWVsc2UgaWYoY21kPT09ImNhbmNlbFRocmVhZCIpe2NhbmNlbFRocmVhZChkWyJ0aHJlYWQiXSk7fWVsc2UgaWYoY21kPT09ImxvYWRlZCIpe3dvcmtlci5sb2FkZWQ9dHJ1ZTtpZihvbkZpbmlzaGVkTG9hZGluZylvbkZpbmlzaGVkTG9hZGluZyh3b3JrZXIpO2lmKHdvcmtlci5ydW5QdGhyZWFkKXt3b3JrZXIucnVuUHRocmVhZCgpO2RlbGV0ZSB3b3JrZXIucnVuUHRocmVhZDt9fWVsc2UgaWYoY21kPT09InByaW50Iil7b3V0KCJUaHJlYWQgIitkWyJ0aHJlYWRJZCJdKyI6ICIrZFsidGV4dCJdKTt9ZWxzZSBpZihjbWQ9PT0icHJpbnRFcnIiKXtlcnIoIlRocmVhZCAiK2RbInRocmVhZElkIl0rIjogIitkWyJ0ZXh0Il0pO31lbHNlIGlmKGNtZD09PSJhbGVydCIpe2FsZXJ0KCJUaHJlYWQgIitkWyJ0aHJlYWRJZCJdKyI6ICIrZFsidGV4dCJdKTt9ZWxzZSBpZihkLnRhcmdldD09PSJzZXRpbW1lZGlhdGUiKXt3b3JrZXIucG9zdE1lc3NhZ2UoZCk7fWVsc2UgaWYoY21kPT09ImNhbGxIYW5kbGVyIil7TW9kdWxlW2RbImhhbmRsZXIiXV0oLi4uZFsiYXJncyJdKTt9ZWxzZSBpZihjbWQpe2Vycigid29ya2VyIHNlbnQgYW4gdW5rbm93biBjb21tYW5kICIrY21kKTt9UFRocmVhZC5jdXJyZW50UHJveGllZE9wZXJhdGlvbkNhbGxlclRocmVhZD11bmRlZmluZWQ7fTt3b3JrZXIub25lcnJvcj1lPT57dmFyIG1lc3NhZ2U9IndvcmtlciBzZW50IGFuIGVycm9yISI7ZXJyKG1lc3NhZ2UrIiAiK2UuZmlsZW5hbWUrIjoiK2UubGluZW5vKyI6ICIrZS5tZXNzYWdlKTt0aHJvdyBlfTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt3b3JrZXIub24oIm1lc3NhZ2UiLGZ1bmN0aW9uKGRhdGEpe3dvcmtlci5vbm1lc3NhZ2Uoe2RhdGE6ZGF0YX0pO30pO3dvcmtlci5vbigiZXJyb3IiLGZ1bmN0aW9uKGUpe3dvcmtlci5vbmVycm9yKGUpO30pO3dvcmtlci5vbigiZGV0YWNoZWRFeGl0IixmdW5jdGlvbigpe30pO312YXIgaGFuZGxlcnM9W107dmFyIGtub3duSGFuZGxlcnM9WyJvbkV4aXQiLCJvbkFib3J0IiwicHJpbnQiLCJwcmludEVyciJdO2Zvcih2YXIgaGFuZGxlciBvZiBrbm93bkhhbmRsZXJzKXtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkoaGFuZGxlcikpe2hhbmRsZXJzLnB1c2goaGFuZGxlcik7fX13b3JrZXIucG9zdE1lc3NhZ2UoeyJjbWQiOiJsb2FkIiwiaGFuZGxlcnMiOmhhbmRsZXJzLCJ1cmxPckJsb2IiOk1vZHVsZVsibWFpblNjcmlwdFVybE9yQmxvYiJdLCJ3YXNtTWVtb3J5Ijp3YXNtTWVtb3J5LCJ3YXNtTW9kdWxlIjp3YXNtTW9kdWxlfSk7fSxhbGxvY2F0ZVVudXNlZFdvcmtlcjpmdW5jdGlvbigpe2lmKCFNb2R1bGVbImxvY2F0ZUZpbGUiXSl7UFRocmVhZC51bnVzZWRXb3JrZXJzLnB1c2gobmV3IFdvcmtlcihuZXcgVVJMKCJseXJhLndvcmtlci5qcyIsKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJyA/IG5ldyAocmVxdWlyZSgndScgKyAncmwnKS5VUkwpKCdmaWxlOicgKyBfX2ZpbGVuYW1lKS5ocmVmIDogdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLmhyZWYgOiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyB8fCBuZXcgVVJMKCdseXJhX3N5bmNfd29ya2VyLmpzJywgZG9jdW1lbnQuYmFzZVVSSSkuaHJlZikpKSkpO3JldHVybn12YXIgcHRocmVhZE1haW5Kcz1sb2NhdGVGaWxlKCJseXJhLndvcmtlci5qcyIpO1BUaHJlYWQudW51c2VkV29ya2Vycy5wdXNoKG5ldyBXb3JrZXIocHRocmVhZE1haW5KcykpO30sZ2V0TmV3V29ya2VyOmZ1bmN0aW9uKCl7aWYoUFRocmVhZC51bnVzZWRXb3JrZXJzLmxlbmd0aD09MCl7UFRocmVhZC5hbGxvY2F0ZVVudXNlZFdvcmtlcigpO1BUaHJlYWQubG9hZFdhc21Nb2R1bGVUb1dvcmtlcihQVGhyZWFkLnVudXNlZFdvcmtlcnNbMF0pO31yZXR1cm4gUFRocmVhZC51bnVzZWRXb3JrZXJzLnBvcCgpfX07TW9kdWxlWyJQVGhyZWFkIl09UFRocmVhZDtmdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNrcyhjYWxsYmFja3Mpe3doaWxlKGNhbGxiYWNrcy5sZW5ndGg+MCl7Y2FsbGJhY2tzLnNoaWZ0KCkoTW9kdWxlKTt9fWZ1bmN0aW9uIGVzdGFibGlzaFN0YWNrU3BhY2UoKXt2YXIgcHRocmVhZF9wdHI9X3B0aHJlYWRfc2VsZigpO3ZhciBzdGFja1RvcD1IRUFQMzJbcHRocmVhZF9wdHIrNTI+PjJdO3ZhciBzdGFja1NpemU9SEVBUDMyW3B0aHJlYWRfcHRyKzU2Pj4yXTt2YXIgc3RhY2tNYXg9c3RhY2tUb3Atc3RhY2tTaXplO19lbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHMoc3RhY2tUb3Asc3RhY2tNYXgpO3N0YWNrUmVzdG9yZShzdGFja1RvcCk7fU1vZHVsZVsiZXN0YWJsaXNoU3RhY2tTcGFjZSJdPWVzdGFibGlzaFN0YWNrU3BhY2U7ZnVuY3Rpb24gZXhpdE9uTWFpblRocmVhZChyZXR1cm5Db2RlKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygyLDAscmV0dXJuQ29kZSk7dHJ5e19leGl0KHJldHVybkNvZGUpO31jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSk7fX12YXIgd2FzbVRhYmxlTWlycm9yPVtdO2Z1bmN0aW9uIGdldFdhc21UYWJsZUVudHJ5KGZ1bmNQdHIpe3ZhciBmdW5jPXdhc21UYWJsZU1pcnJvcltmdW5jUHRyXTtpZighZnVuYyl7aWYoZnVuY1B0cj49d2FzbVRhYmxlTWlycm9yLmxlbmd0aCl3YXNtVGFibGVNaXJyb3IubGVuZ3RoPWZ1bmNQdHIrMTt3YXNtVGFibGVNaXJyb3JbZnVuY1B0cl09ZnVuYz13YXNtVGFibGUuZ2V0KGZ1bmNQdHIpO31yZXR1cm4gZnVuY31mdW5jdGlvbiBpbnZva2VFbnRyeVBvaW50KHB0cixhcmcpe3ZhciByZXN1bHQ9Z2V0V2FzbVRhYmxlRW50cnkocHRyKShhcmcpO2lmKGtlZXBSdW50aW1lQWxpdmUoKSl7UFRocmVhZC5zZXRFeGl0U3RhdHVzKHJlc3VsdCk7fWVsc2Uge19fZW1zY3JpcHRlbl90aHJlYWRfZXhpdChyZXN1bHQpO319TW9kdWxlWyJpbnZva2VFbnRyeVBvaW50Il09aW52b2tlRW50cnlQb2ludDtmdW5jdGlvbiByZWdpc3RlclRMU0luaXQodGxzSW5pdEZ1bmMpe1BUaHJlYWQudGxzSW5pdEZ1bmN0aW9ucy5wdXNoKHRsc0luaXRGdW5jKTt9ZnVuY3Rpb24gdHJhdmVyc2VTdGFjayhhcmdzKXtpZighYXJnc3x8IWFyZ3MuY2FsbGVlfHwhYXJncy5jYWxsZWUubmFtZSl7cmV0dXJuIFtudWxsLCIiLCIiXX1hcmdzLmNhbGxlZS50b1N0cmluZygpO3ZhciBmdW5jbmFtZT1hcmdzLmNhbGxlZS5uYW1lO3ZhciBzdHI9IigiO3ZhciBmaXJzdD10cnVlO2Zvcih2YXIgaSBpbiBhcmdzKXt2YXIgYT1hcmdzW2ldO2lmKCFmaXJzdCl7c3RyKz0iLCAiO31maXJzdD1mYWxzZTtpZih0eXBlb2YgYT09Im51bWJlciJ8fHR5cGVvZiBhPT0ic3RyaW5nIil7c3RyKz1hO31lbHNlIHtzdHIrPSIoIit0eXBlb2YgYSsiKSI7fX1zdHIrPSIpIjt2YXIgY2FsbGVyPWFyZ3MuY2FsbGVlLmNhbGxlcjthcmdzPWNhbGxlcj9jYWxsZXIuYXJndW1lbnRzOltdO2lmKGZpcnN0KXN0cj0iIjtyZXR1cm4gW2FyZ3MsZnVuY25hbWUsc3RyXX1mdW5jdGlvbiBqc1N0YWNrVHJhY2UoKXt2YXIgZXJyb3I9bmV3IEVycm9yO2lmKCFlcnJvci5zdGFjayl7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChlKXtlcnJvcj1lO31pZighZXJyb3Iuc3RhY2spe3JldHVybiAiKG5vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSkifX1yZXR1cm4gZXJyb3Iuc3RhY2sudG9TdHJpbmcoKX1mdW5jdGlvbiB3YXJuT25jZSh0ZXh0KXtpZighd2Fybk9uY2Uuc2hvd24pd2Fybk9uY2Uuc2hvd249e307aWYoIXdhcm5PbmNlLnNob3duW3RleHRdKXt3YXJuT25jZS5zaG93blt0ZXh0XT0xO2lmKEVOVklST05NRU5UX0lTX05PREUpdGV4dD0id2FybmluZzogIit0ZXh0O2Vycih0ZXh0KTt9fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX2dldF9jYWxsc3RhY2tfanMoZmxhZ3Mpe3ZhciBjYWxsc3RhY2s9anNTdGFja1RyYWNlKCk7dmFyIGlUaGlzRnVuYz1jYWxsc3RhY2subGFzdEluZGV4T2YoIl9lbXNjcmlwdGVuX2xvZyIpO3ZhciBpVGhpc0Z1bmMyPWNhbGxzdGFjay5sYXN0SW5kZXhPZigiX2Vtc2NyaXB0ZW5fZ2V0X2NhbGxzdGFjayIpO3ZhciBpTmV4dExpbmU9Y2FsbHN0YWNrLmluZGV4T2YoIlxuIixNYXRoLm1heChpVGhpc0Z1bmMsaVRoaXNGdW5jMikpKzE7Y2FsbHN0YWNrPWNhbGxzdGFjay5zbGljZShpTmV4dExpbmUpO2lmKGZsYWdzJjMyKXt3YXJuT25jZSgiRU1fTE9HX0RFTUFOR0xFIGlzIGRlcHJlY2F0ZWQ7IGlnbm9yaW5nIik7fWlmKGZsYWdzJjgmJnR5cGVvZiBlbXNjcmlwdGVuX3NvdXJjZV9tYXA9PSJ1bmRlZmluZWQiKXt3YXJuT25jZSgnU291cmNlIG1hcCBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBlbXNjcmlwdGVuX2xvZyB3aXRoIEVNX0xPR19DX1NUQUNLIHdpbGwgYmUgaWdub3JlZC4gQnVpbGQgd2l0aCAiLS1wcmUtanMgJEVNU0NSSVBURU4vc3JjL2Vtc2NyaXB0ZW4tc291cmNlLW1hcC5taW4uanMiIGxpbmtlciBmbGFnIHRvIGFkZCBzb3VyY2UgbWFwIGxvYWRpbmcgdG8gY29kZS4nKTtmbGFnc149ODtmbGFnc3w9MTY7fXZhciBzdGFja19hcmdzPW51bGw7aWYoZmxhZ3MmMTI4KXtzdGFja19hcmdzPXRyYXZlcnNlU3RhY2soYXJndW1lbnRzKTt3aGlsZShzdGFja19hcmdzWzFdLmluY2x1ZGVzKCJfZW1zY3JpcHRlbl8iKSlzdGFja19hcmdzPXRyYXZlcnNlU3RhY2soc3RhY2tfYXJnc1swXSk7fXZhciBsaW5lcz1jYWxsc3RhY2suc3BsaXQoIlxuIik7Y2FsbHN0YWNrPSIiO3ZhciBuZXdGaXJlZm94UmU9bmV3IFJlZ0V4cCgiXFxzKiguKj8pQCguKj8pOihbMC05XSspOihbMC05XSspIik7dmFyIGZpcmVmb3hSZT1uZXcgUmVnRXhwKCJcXHMqKC4qPylAKC4qKTooLiopKDooLiopKT8iKTt2YXIgY2hyb21lUmU9bmV3IFJlZ0V4cCgiXFxzKmF0ICguKj8pIFxcKCguKik6KC4qKTooLiopXFwpIik7Zm9yKHZhciBsIGluIGxpbmVzKXt2YXIgbGluZT1saW5lc1tsXTt2YXIgc3ltYm9sTmFtZT0iIjt2YXIgZmlsZT0iIjt2YXIgbGluZW5vPTA7dmFyIGNvbHVtbj0wO3ZhciBwYXJ0cz1jaHJvbWVSZS5leGVjKGxpbmUpO2lmKHBhcnRzJiZwYXJ0cy5sZW5ndGg9PTUpe3N5bWJvbE5hbWU9cGFydHNbMV07ZmlsZT1wYXJ0c1syXTtsaW5lbm89cGFydHNbM107Y29sdW1uPXBhcnRzWzRdO31lbHNlIHtwYXJ0cz1uZXdGaXJlZm94UmUuZXhlYyhsaW5lKTtpZighcGFydHMpcGFydHM9ZmlyZWZveFJlLmV4ZWMobGluZSk7aWYocGFydHMmJnBhcnRzLmxlbmd0aD49NCl7c3ltYm9sTmFtZT1wYXJ0c1sxXTtmaWxlPXBhcnRzWzJdO2xpbmVubz1wYXJ0c1szXTtjb2x1bW49cGFydHNbNF18MDt9ZWxzZSB7Y2FsbHN0YWNrKz1saW5lKyJcbiI7Y29udGludWV9fXZhciBoYXZlU291cmNlTWFwPWZhbHNlO2lmKGZsYWdzJjgpe3ZhciBvcmlnPWVtc2NyaXB0ZW5fc291cmNlX21hcC5vcmlnaW5hbFBvc2l0aW9uRm9yKHtsaW5lOmxpbmVubyxjb2x1bW46Y29sdW1ufSk7aGF2ZVNvdXJjZU1hcD1vcmlnJiZvcmlnLnNvdXJjZTtpZihoYXZlU291cmNlTWFwKXtpZihmbGFncyY2NCl7b3JpZy5zb3VyY2U9b3JpZy5zb3VyY2Uuc3Vic3RyaW5nKG9yaWcuc291cmNlLnJlcGxhY2UoL1xcL2csIi8iKS5sYXN0SW5kZXhPZigiLyIpKzEpO31jYWxsc3RhY2srPSIgICAgYXQgIitzeW1ib2xOYW1lKyIgKCIrb3JpZy5zb3VyY2UrIjoiK29yaWcubGluZSsiOiIrb3JpZy5jb2x1bW4rIilcbiI7fX1pZihmbGFncyYxNnx8IWhhdmVTb3VyY2VNYXApe2lmKGZsYWdzJjY0KXtmaWxlPWZpbGUuc3Vic3RyaW5nKGZpbGUucmVwbGFjZSgvXFwvZywiLyIpLmxhc3RJbmRleE9mKCIvIikrMSk7fWNhbGxzdGFjays9KGhhdmVTb3VyY2VNYXA/IiAgICAgPSAiK3N5bWJvbE5hbWU6IiAgICBhdCAiK3N5bWJvbE5hbWUpKyIgKCIrZmlsZSsiOiIrbGluZW5vKyI6Iitjb2x1bW4rIilcbiI7fWlmKGZsYWdzJjEyOCYmc3RhY2tfYXJnc1swXSl7aWYoc3RhY2tfYXJnc1sxXT09c3ltYm9sTmFtZSYmc3RhY2tfYXJnc1syXS5sZW5ndGg+MCl7Y2FsbHN0YWNrPWNhbGxzdGFjay5yZXBsYWNlKC9ccyskLywiIik7Y2FsbHN0YWNrKz0iIHdpdGggdmFsdWVzOiAiK3N0YWNrX2FyZ3NbMV0rc3RhY2tfYXJnc1syXSsiXG4iO31zdGFja19hcmdzPXRyYXZlcnNlU3RhY2soc3RhY2tfYXJnc1swXSk7fX1jYWxsc3RhY2s9Y2FsbHN0YWNrLnJlcGxhY2UoL1xzKyQvLCIiKTtyZXR1cm4gY2FsbHN0YWNrfWZ1bmN0aW9uIF9fVW53aW5kX0JhY2t0cmFjZShmdW5jLGFyZyl7dmFyIHRyYWNlPV9lbXNjcmlwdGVuX2dldF9jYWxsc3RhY2tfanMoKTt2YXIgcGFydHM9dHJhY2Uuc3BsaXQoIlxuIik7Zm9yKHZhciBpPTA7aTxwYXJ0cy5sZW5ndGg7aSsrKXt2YXIgcmV0PWdldFdhc21UYWJsZUVudHJ5KGZ1bmMpKDAsYXJnKTtpZihyZXQhPT0wKXJldHVybn19ZnVuY3Rpb24gX19VbndpbmRfR2V0SVAoKXtlcnIoIm1pc3NpbmcgZnVuY3Rpb246IF9VbndpbmRfR2V0SVAiKTthYm9ydCgtMSk7fWZ1bmN0aW9uIF9fX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qcyh0Yil7X19lbXNjcmlwdGVuX3RocmVhZF9pbml0KHRiLCFFTlZJUk9OTUVOVF9JU19XT1JLRVIsMSwhRU5WSVJPTk1FTlRfSVNfV0VCKTtQVGhyZWFkLnRocmVhZEluaXRUTFMoKTt9ZnVuY3Rpb24gX19fZW1zY3JpcHRlbl90aHJlYWRfY2xlYW51cCh0aHJlYWQpe2lmKCFFTlZJUk9OTUVOVF9JU19QVEhSRUFEKWNsZWFudXBUaHJlYWQodGhyZWFkKTtlbHNlIHBvc3RNZXNzYWdlKHsiY21kIjoiY2xlYW51cFRocmVhZCIsInRocmVhZCI6dGhyZWFkfSk7fWZ1bmN0aW9uIHB0aHJlYWRDcmVhdGVQcm94aWVkKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoMywxLHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyk7cmV0dXJuIF9fX3B0aHJlYWRfY3JlYXRlX2pzKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl9ZnVuY3Rpb24gX19fcHRocmVhZF9jcmVhdGVfanMocHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKXtpZih0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI9PSJ1bmRlZmluZWQiKXtlcnIoIkN1cnJlbnQgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBTaGFyZWRBcnJheUJ1ZmZlciwgcHRocmVhZHMgYXJlIG5vdCBhdmFpbGFibGUhIik7cmV0dXJuIDZ9dmFyIHRyYW5zZmVyTGlzdD1bXTt2YXIgZXJyb3I9MDtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEJiYodHJhbnNmZXJMaXN0Lmxlbmd0aD09PTB8fGVycm9yKSl7cmV0dXJuIHB0aHJlYWRDcmVhdGVQcm94aWVkKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl9dmFyIHRocmVhZFBhcmFtcz17c3RhcnRSb3V0aW5lOnN0YXJ0Um91dGluZSxwdGhyZWFkX3B0cjpwdGhyZWFkX3B0cixhcmc6YXJnLHRyYW5zZmVyTGlzdDp0cmFuc2Zlckxpc3R9O2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3RocmVhZFBhcmFtcy5jbWQ9InNwYXduVGhyZWFkIjtwb3N0TWVzc2FnZSh0aHJlYWRQYXJhbXMsdHJhbnNmZXJMaXN0KTtyZXR1cm4gMH1yZXR1cm4gc3Bhd25UaHJlYWQodGhyZWFkUGFyYW1zKX1mdW5jdGlvbiBzZXRFcnJObyh2YWx1ZSl7SEVBUDMyW19fX2Vycm5vX2xvY2F0aW9uKCk+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX1mdW5jdGlvbiBfX19zeXNjYWxsX2ZjbnRsNjQoZmQsY21kLHZhcmFyZ3Mpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDQsMSxmZCxjbWQsdmFyYXJncyk7U1lTQ0FMTFMudmFyYXJncz12YXJhcmdzO3RyeXt2YXIgc3RyZWFtPVNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7c3dpdGNoKGNtZCl7Y2FzZSAwOnt2YXIgYXJnPVNZU0NBTExTLmdldCgpO2lmKGFyZzwwKXtyZXR1cm4gLTI4fXZhciBuZXdTdHJlYW07bmV3U3RyZWFtPUZTLmNyZWF0ZVN0cmVhbShzdHJlYW0sYXJnKTtyZXR1cm4gbmV3U3RyZWFtLmZkfWNhc2UgMTpjYXNlIDI6cmV0dXJuIDA7Y2FzZSAzOnJldHVybiBzdHJlYW0uZmxhZ3M7Y2FzZSA0Ont2YXIgYXJnPVNZU0NBTExTLmdldCgpO3N0cmVhbS5mbGFnc3w9YXJnO3JldHVybiAwfWNhc2UgNTp7dmFyIGFyZz1TWVNDQUxMUy5nZXQoKTt2YXIgb2Zmc2V0PTA7SEVBUDE2W2FyZytvZmZzZXQ+PjFdPTI7cmV0dXJuIDB9Y2FzZSA2OmNhc2UgNzpyZXR1cm4gMDtjYXNlIDE2OmNhc2UgODpyZXR1cm4gLTI4O2Nhc2UgOTpzZXRFcnJObygyOCk7cmV0dXJuIC0xO2RlZmF1bHQ6e3JldHVybiAtMjh9fX1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19fc3lzY2FsbF9mc3RhdDY0KGZkLGJ1Zil7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoNSwxLGZkLGJ1Zik7dHJ5e3ZhciBzdHJlYW09U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTtyZXR1cm4gU1lTQ0FMTFMuZG9TdGF0KEZTLnN0YXQsc3RyZWFtLnBhdGgsYnVmKX1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19fc3lzY2FsbF9nZXRkZW50czY0KGZkLGRpcnAsY291bnQpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDYsMSxmZCxkaXJwLGNvdW50KTt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO2lmKCFzdHJlYW0uZ2V0ZGVudHMpe3N0cmVhbS5nZXRkZW50cz1GUy5yZWFkZGlyKHN0cmVhbS5wYXRoKTt9dmFyIHN0cnVjdF9zaXplPTI4MDt2YXIgcG9zPTA7dmFyIG9mZj1GUy5sbHNlZWsoc3RyZWFtLDAsMSk7dmFyIGlkeD1NYXRoLmZsb29yKG9mZi9zdHJ1Y3Rfc2l6ZSk7d2hpbGUoaWR4PHN0cmVhbS5nZXRkZW50cy5sZW5ndGgmJnBvcytzdHJ1Y3Rfc2l6ZTw9Y291bnQpe3ZhciBpZDt2YXIgdHlwZTt2YXIgbmFtZT1zdHJlYW0uZ2V0ZGVudHNbaWR4XTtpZihuYW1lPT09Ii4iKXtpZD1zdHJlYW0ubm9kZS5pZDt0eXBlPTQ7fWVsc2UgaWYobmFtZT09PSIuLiIpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChzdHJlYW0ucGF0aCx7cGFyZW50OnRydWV9KTtpZD1sb29rdXAubm9kZS5pZDt0eXBlPTQ7fWVsc2Uge3ZhciBjaGlsZD1GUy5sb29rdXBOb2RlKHN0cmVhbS5ub2RlLG5hbWUpO2lkPWNoaWxkLmlkO3R5cGU9RlMuaXNDaHJkZXYoY2hpbGQubW9kZSk/MjpGUy5pc0RpcihjaGlsZC5tb2RlKT80OkZTLmlzTGluayhjaGlsZC5tb2RlKT8xMDo4O310ZW1wSTY0PVtpZD4+PjAsKHRlbXBEb3VibGU9aWQsK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2RpcnArcG9zPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltkaXJwK3Bvcys0Pj4yXT10ZW1wSTY0WzFdO3RlbXBJNjQ9WyhpZHgrMSkqc3RydWN0X3NpemU+Pj4wLCh0ZW1wRG91YmxlPShpZHgrMSkqc3RydWN0X3NpemUsK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2RpcnArcG9zKzg+PjJdPXRlbXBJNjRbMF0sSEVBUDMyW2RpcnArcG9zKzEyPj4yXT10ZW1wSTY0WzFdO0hFQVAxNltkaXJwK3BvcysxNj4+MV09MjgwO0hFQVA4W2RpcnArcG9zKzE4Pj4wXT10eXBlO3N0cmluZ1RvVVRGOChuYW1lLGRpcnArcG9zKzE5LDI1Nik7cG9zKz1zdHJ1Y3Rfc2l6ZTtpZHgrPTE7fUZTLmxsc2VlayhzdHJlYW0saWR4KnN0cnVjdF9zaXplLDApO3JldHVybiBwb3N9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfaW9jdGwoZmQsb3AsdmFyYXJncyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoNywxLGZkLG9wLHZhcmFyZ3MpO1NZU0NBTExTLnZhcmFyZ3M9dmFyYXJnczt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO3N3aXRjaChvcCl7Y2FzZSAyMTUwOTpjYXNlIDIxNTA1OntpZighc3RyZWFtLnR0eSlyZXR1cm4gLTU5O3JldHVybiAwfWNhc2UgMjE1MTA6Y2FzZSAyMTUxMTpjYXNlIDIxNTEyOmNhc2UgMjE1MDY6Y2FzZSAyMTUwNzpjYXNlIDIxNTA4OntpZighc3RyZWFtLnR0eSlyZXR1cm4gLTU5O3JldHVybiAwfWNhc2UgMjE1MTk6e2lmKCFzdHJlYW0udHR5KXJldHVybiAtNTk7dmFyIGFyZ3A9U1lTQ0FMTFMuZ2V0KCk7SEVBUDMyW2FyZ3A+PjJdPTA7cmV0dXJuIDB9Y2FzZSAyMTUyMDp7aWYoIXN0cmVhbS50dHkpcmV0dXJuIC01OTtyZXR1cm4gLTI4fWNhc2UgMjE1MzE6e3ZhciBhcmdwPVNZU0NBTExTLmdldCgpO3JldHVybiBGUy5pb2N0bChzdHJlYW0sb3AsYXJncCl9Y2FzZSAyMTUyMzp7aWYoIXN0cmVhbS50dHkpcmV0dXJuIC01OTtyZXR1cm4gMH1jYXNlIDIxNTI0OntpZighc3RyZWFtLnR0eSlyZXR1cm4gLTU5O3JldHVybiAwfWRlZmF1bHQ6cmV0dXJuIC0yOH19Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfbHN0YXQ2NChwYXRoLGJ1Zil7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoOCwxLHBhdGgsYnVmKTt0cnl7cGF0aD1TWVNDQUxMUy5nZXRTdHIocGF0aCk7cmV0dXJuIFNZU0NBTExTLmRvU3RhdChGUy5sc3RhdCxwYXRoLGJ1Zil9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfbmV3ZnN0YXRhdChkaXJmZCxwYXRoLGJ1ZixmbGFncyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoOSwxLGRpcmZkLHBhdGgsYnVmLGZsYWdzKTt0cnl7cGF0aD1TWVNDQUxMUy5nZXRTdHIocGF0aCk7dmFyIG5vZm9sbG93PWZsYWdzJjI1Njt2YXIgYWxsb3dFbXB0eT1mbGFncyY0MDk2O2ZsYWdzPWZsYWdzJn40MzUyO3BhdGg9U1lTQ0FMTFMuY2FsY3VsYXRlQXQoZGlyZmQscGF0aCxhbGxvd0VtcHR5KTtyZXR1cm4gU1lTQ0FMTFMuZG9TdGF0KG5vZm9sbG93P0ZTLmxzdGF0OkZTLnN0YXQscGF0aCxidWYpfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIC1lLmVycm5vfX1mdW5jdGlvbiBfX19zeXNjYWxsX29wZW5hdChkaXJmZCxwYXRoLGZsYWdzLHZhcmFyZ3Mpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDEwLDEsZGlyZmQscGF0aCxmbGFncyx2YXJhcmdzKTtTWVNDQUxMUy52YXJhcmdzPXZhcmFyZ3M7dHJ5e3BhdGg9U1lTQ0FMTFMuZ2V0U3RyKHBhdGgpO3BhdGg9U1lTQ0FMTFMuY2FsY3VsYXRlQXQoZGlyZmQscGF0aCk7dmFyIG1vZGU9dmFyYXJncz9TWVNDQUxMUy5nZXQoKTowO3JldHVybiBGUy5vcGVuKHBhdGgsZmxhZ3MsbW9kZSkuZmR9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfc3RhdDY0KHBhdGgsYnVmKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygxMSwxLHBhdGgsYnVmKTt0cnl7cGF0aD1TWVNDQUxMUy5nZXRTdHIocGF0aCk7cmV0dXJuIFNZU0NBTExTLmRvU3RhdChGUy5zdGF0LHBhdGgsYnVmKX1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19fc3lzY2FsbF91bmxpbmthdChkaXJmZCxwYXRoLGZsYWdzKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygxMiwxLGRpcmZkLHBhdGgsZmxhZ3MpO3RyeXtwYXRoPVNZU0NBTExTLmdldFN0cihwYXRoKTtwYXRoPVNZU0NBTExTLmNhbGN1bGF0ZUF0KGRpcmZkLHBhdGgpO2lmKGZsYWdzPT09MCl7RlMudW5saW5rKHBhdGgpO31lbHNlIGlmKGZsYWdzPT09NTEyKXtGUy5ybWRpcihwYXRoKTt9ZWxzZSB7YWJvcnQoIkludmFsaWQgZmxhZ3MgcGFzc2VkIHRvIHVubGlua2F0Iik7fXJldHVybiAwfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIC1lLmVycm5vfX1mdW5jdGlvbiBfX2RsaW5pdChtYWluX2Rzb19oYW5kbGUpe312YXIgZGxvcGVuTWlzc2luZ0Vycm9yPSJUbyB1c2UgZGxvcGVuLCB5b3UgbmVlZCBlbmFibGUgZHluYW1pYyBsaW5raW5nLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Vtc2NyaXB0ZW4tY29yZS9lbXNjcmlwdGVuL3dpa2kvTGlua2luZyI7ZnVuY3Rpb24gX19kbG9wZW5fanMoZmlsZW5hbWUsZmxhZyl7YWJvcnQoZGxvcGVuTWlzc2luZ0Vycm9yKTt9ZnVuY3Rpb24gX19kbHN5bV9qcyhoYW5kbGUsc3ltYm9sKXthYm9ydChkbG9wZW5NaXNzaW5nRXJyb3IpO31mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9iaWdpbnQocHJpbWl0aXZlVHlwZSxuYW1lLHNpemUsbWluUmFuZ2UsbWF4UmFuZ2Upe31mdW5jdGlvbiBnZXRTaGlmdEZyb21TaXplKHNpemUpe3N3aXRjaChzaXplKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDg6cmV0dXJuIDM7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIHR5cGUgc2l6ZTogIitzaXplKX19ZnVuY3Rpb24gZW1iaW5kX2luaXRfY2hhckNvZGVzKCl7dmFyIGNvZGVzPW5ldyBBcnJheSgyNTYpO2Zvcih2YXIgaT0wO2k8MjU2OysraSl7Y29kZXNbaV09U3RyaW5nLmZyb21DaGFyQ29kZShpKTt9ZW1iaW5kX2NoYXJDb2Rlcz1jb2Rlczt9dmFyIGVtYmluZF9jaGFyQ29kZXM9dW5kZWZpbmVkO2Z1bmN0aW9uIHJlYWRMYXRpbjFTdHJpbmcocHRyKXt2YXIgcmV0PSIiO3ZhciBjPXB0cjt3aGlsZShIRUFQVThbY10pe3JldCs9ZW1iaW5kX2NoYXJDb2Rlc1tIRUFQVThbYysrXV07fXJldHVybiByZXR9dmFyIGF3YWl0aW5nRGVwZW5kZW5jaWVzPXt9O3ZhciByZWdpc3RlcmVkVHlwZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIGNoYXJfMD00ODt2YXIgY2hhcl85PTU3O2Z1bmN0aW9uIG1ha2VMZWdhbEZ1bmN0aW9uTmFtZShuYW1lKXtpZih1bmRlZmluZWQ9PT1uYW1lKXtyZXR1cm4gIl91bmtub3duIn1uYW1lPW5hbWUucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCIkIik7dmFyIGY9bmFtZS5jaGFyQ29kZUF0KDApO2lmKGY+PWNoYXJfMCYmZjw9Y2hhcl85KXtyZXR1cm4gIl8iK25hbWV9cmV0dXJuIG5hbWV9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybiBuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKGJvZHkpfWZ1bmN0aW9uIGV4dGVuZEVycm9yKGJhc2VFcnJvclR5cGUsZXJyb3JOYW1lKXt2YXIgZXJyb3JDbGFzcz1jcmVhdGVOYW1lZEZ1bmN0aW9uKGVycm9yTmFtZSxmdW5jdGlvbihtZXNzYWdlKXt0aGlzLm5hbWU9ZXJyb3JOYW1lO3RoaXMubWVzc2FnZT1tZXNzYWdlO3ZhciBzdGFjaz1uZXcgRXJyb3IobWVzc2FnZSkuc3RhY2s7aWYoc3RhY2shPT11bmRlZmluZWQpe3RoaXMuc3RhY2s9dGhpcy50b1N0cmluZygpKyJcbiIrc3RhY2sucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywiIik7fX0pO2Vycm9yQ2xhc3MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZUVycm9yVHlwZS5wcm90b3R5cGUpO2Vycm9yQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yPWVycm9yQ2xhc3M7ZXJyb3JDbGFzcy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLm1lc3NhZ2U9PT11bmRlZmluZWQpe3JldHVybiB0aGlzLm5hbWV9ZWxzZSB7cmV0dXJuIHRoaXMubmFtZSsiOiAiK3RoaXMubWVzc2FnZX19O3JldHVybiBlcnJvckNsYXNzfXZhciBCaW5kaW5nRXJyb3I9dW5kZWZpbmVkO2Z1bmN0aW9uIHRocm93QmluZGluZ0Vycm9yKG1lc3NhZ2Upe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IobWVzc2FnZSl9dmFyIEludGVybmFsRXJyb3I9dW5kZWZpbmVkO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChteVR5cGVzLGRlcGVuZGVudFR5cGVzLGdldFR5cGVDb252ZXJ0ZXJzKXtteVR5cGVzLmZvckVhY2goZnVuY3Rpb24odHlwZSl7dHlwZURlcGVuZGVuY2llc1t0eXBlXT1kZXBlbmRlbnRUeXBlczt9KTtmdW5jdGlvbiBvbkNvbXBsZXRlKHR5cGVDb252ZXJ0ZXJzKXt2YXIgbXlUeXBlQ29udmVydGVycz1nZXRUeXBlQ29udmVydGVycyh0eXBlQ29udmVydGVycyk7aWYobXlUeXBlQ29udmVydGVycy5sZW5ndGghPT1teVR5cGVzLmxlbmd0aCl7dGhyb3dJbnRlcm5hbEVycm9yKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7fWZvcih2YXIgaT0wO2k8bXlUeXBlcy5sZW5ndGg7KytpKXtyZWdpc3RlclR5cGUobXlUeXBlc1tpXSxteVR5cGVDb252ZXJ0ZXJzW2ldKTt9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChkdCxpKT0+e2lmKHJlZ2lzdGVyZWRUeXBlcy5oYXNPd25Qcm9wZXJ0eShkdCkpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07fWVsc2Uge3VucmVnaXN0ZXJlZFR5cGVzLnB1c2goZHQpO2lmKCFhd2FpdGluZ0RlcGVuZGVuY2llcy5oYXNPd25Qcm9wZXJ0eShkdCkpe2F3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XT1bXTt9YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdLnB1c2goKCk9Pnt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdOysrcmVnaXN0ZXJlZDtpZihyZWdpc3RlcmVkPT09dW5yZWdpc3RlcmVkVHlwZXMubGVuZ3RoKXtvbkNvbXBsZXRlKHR5cGVDb252ZXJ0ZXJzKTt9fSk7fX0pO2lmKDA9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpO319ZnVuY3Rpb24gcmVnaXN0ZXJUeXBlKHJhd1R5cGUscmVnaXN0ZXJlZEluc3RhbmNlLG9wdGlvbnM9e30pe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyk7fWlmKHJlZ2lzdGVyZWRUeXBlcy5oYXNPd25Qcm9wZXJ0eShyYXdUeXBlKSl7aWYob3B0aW9ucy5pZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zKXtyZXR1cm59ZWxzZSB7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciB0eXBlICciK25hbWUrIicgdHdpY2UiKTt9fXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKGNiPT5jYigpKTt9fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2wocmF3VHlwZSxuYW1lLHNpemUsdHJ1ZVZhbHVlLGZhbHNlVmFsdWUpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOmZ1bmN0aW9uKHd0KXtyZXR1cm4gISF3dH0sInRvV2lyZVR5cGUiOmZ1bmN0aW9uKGRlc3RydWN0b3JzLG8pe3JldHVybiBvP3RydWVWYWx1ZTpmYWxzZVZhbHVlfSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQODt9ZWxzZSBpZihzaXplPT09Mil7aGVhcD1IRUFQMTY7fWVsc2UgaWYoc2l6ZT09PTQpe2hlYXA9SEVBUDMyO31lbHNlIHt0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGJvb2xlYW4gdHlwZSBzaXplOiAiK25hbWUpfXJldHVybiB0aGlzWyJmcm9tV2lyZVR5cGUiXShoZWFwW3BvaW50ZXI+PnNoaWZ0XSl9LGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSk7fWZ1bmN0aW9uIENsYXNzSGFuZGxlX2lzQWxpYXNPZihvdGhlcil7aWYoISh0aGlzIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9aWYoIShvdGhlciBpbnN0YW5jZW9mIENsYXNzSGFuZGxlKSl7cmV0dXJuIGZhbHNlfXZhciBsZWZ0Q2xhc3M9dGhpcy4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzczt2YXIgbGVmdD10aGlzLiQkLnB0cjt2YXIgcmlnaHRDbGFzcz1vdGhlci4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzczt2YXIgcmlnaHQ9b3RoZXIuJCQucHRyO3doaWxlKGxlZnRDbGFzcy5iYXNlQ2xhc3Mpe2xlZnQ9bGVmdENsYXNzLnVwY2FzdChsZWZ0KTtsZWZ0Q2xhc3M9bGVmdENsYXNzLmJhc2VDbGFzczt9d2hpbGUocmlnaHRDbGFzcy5iYXNlQ2xhc3Mpe3JpZ2h0PXJpZ2h0Q2xhc3MudXBjYXN0KHJpZ2h0KTtyaWdodENsYXNzPXJpZ2h0Q2xhc3MuYmFzZUNsYXNzO31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fWZ1bmN0aW9uIHNoYWxsb3dDb3B5SW50ZXJuYWxQb2ludGVyKG8pe3JldHVybiB7Y291bnQ6by5jb3VudCxkZWxldGVTY2hlZHVsZWQ6by5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6by5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSxwdHI6by5wdHIscHRyVHlwZTpvLnB0clR5cGUsc21hcnRQdHI6by5zbWFydFB0cixzbWFydFB0clR5cGU6by5zbWFydFB0clR5cGV9fWZ1bmN0aW9uIHRocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZChvYmope2Z1bmN0aW9uIGdldEluc3RhbmNlVHlwZU5hbWUoaGFuZGxlKXtyZXR1cm4gaGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLm5hbWV9dGhyb3dCaW5kaW5nRXJyb3IoZ2V0SW5zdGFuY2VUeXBlTmFtZShvYmopKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIik7fXZhciBmaW5hbGl6YXRpb25SZWdpc3RyeT1mYWxzZTtmdW5jdGlvbiBkZXRhY2hGaW5hbGl6ZXIoaGFuZGxlKXt9ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcigkJCl7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKTt9ZWxzZSB7JCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MucmF3RGVzdHJ1Y3RvcigkJC5wdHIpO319ZnVuY3Rpb24gcmVsZWFzZUNsYXNzSGFuZGxlKCQkKXskJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PSQkLmNvdW50LnZhbHVlO2lmKHRvRGVsZXRlKXtydW5EZXN0cnVjdG9yKCQkKTt9fWZ1bmN0aW9uIGRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzKXtpZihwdHJDbGFzcz09PWRlc2lyZWRDbGFzcyl7cmV0dXJuIHB0cn1pZih1bmRlZmluZWQ9PT1kZXNpcmVkQ2xhc3MuYmFzZUNsYXNzKXtyZXR1cm4gbnVsbH12YXIgcnY9ZG93bmNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3MuYmFzZUNsYXNzKTtpZihydj09PW51bGwpe3JldHVybiBudWxsfXJldHVybiBkZXNpcmVkQ2xhc3MuZG93bmNhc3QocnYpfXZhciByZWdpc3RlcmVkUG9pbnRlcnM9e307ZnVuY3Rpb24gZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCgpe3JldHVybiBPYmplY3Qua2V5cyhyZWdpc3RlcmVkSW5zdGFuY2VzKS5sZW5ndGh9ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKTt9fXJldHVybiBydn12YXIgZGVsZXRpb25RdWV1ZT1bXTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKTt9fXZhciBkZWxheUZ1bmN0aW9uPXVuZGVmaW5lZDtmdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpO319ZnVuY3Rpb24gaW5pdF9lbWJpbmQoKXtNb2R1bGVbImdldEluaGVyaXRlZEluc3RhbmNlQ291bnQiXT1nZXRJbmhlcml0ZWRJbnN0YW5jZUNvdW50O01vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlcztNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1zZXREZWxheUZ1bmN0aW9uO312YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpO313aGlsZShjbGFzc18uYmFzZUNsYXNzKXtwdHI9Y2xhc3NfLnVwY2FzdChwdHIpO2NsYXNzXz1jbGFzc18uYmFzZUNsYXNzO31yZXR1cm4gcHRyfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO3JldHVybiByZWdpc3RlcmVkSW5zdGFuY2VzW3B0cl19ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpO312YXIgaGFzU21hcnRQdHJUeXBlPSEhcmVjb3JkLnNtYXJ0UHRyVHlwZTt2YXIgaGFzU21hcnRQdHI9ISFyZWNvcmQuc21hcnRQdHI7aWYoaGFzU21hcnRQdHJUeXBlIT09aGFzU21hcnRQdHIpe3Rocm93SW50ZXJuYWxFcnJvcigiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIik7fXJlY29yZC5jb3VudD17dmFsdWU6MX07cmV0dXJuIGF0dGFjaEZpbmFsaXplcihPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KSl9ZnVuY3Rpb24gUmVnaXN0ZXJlZFBvaW50ZXJfZnJvbVdpcmVUeXBlKHB0cil7dmFyIHJhd1BvaW50ZXI9dGhpcy5nZXRQb2ludGVlKHB0cik7aWYoIXJhd1BvaW50ZXIpe3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBudWxsfXZhciByZWdpc3RlcmVkSW5zdGFuY2U9Z2V0SW5oZXJpdGVkSW5zdGFuY2UodGhpcy5yZWdpc3RlcmVkQ2xhc3MscmF3UG9pbnRlcik7aWYodW5kZWZpbmVkIT09cmVnaXN0ZXJlZEluc3RhbmNlKXtpZigwPT09cmVnaXN0ZXJlZEluc3RhbmNlLiQkLmNvdW50LnZhbHVlKXtyZWdpc3RlcmVkSW5zdGFuY2UuJCQucHRyPXJhd1BvaW50ZXI7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnNtYXJ0UHRyPXB0cjtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlWyJjbG9uZSJdKCl9ZWxzZSB7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZSB7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0aGlzLHB0cjpwdHJ9KX19dmFyIGFjdHVhbFR5cGU9dGhpcy5yZWdpc3RlcmVkQ2xhc3MuZ2V0QWN0dWFsVHlwZShyYXdQb2ludGVyKTt2YXIgcmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQ9cmVnaXN0ZXJlZFBvaW50ZXJzW2FjdHVhbFR5cGVdO2lmKCFyZWdpc3RlcmVkUG9pbnRlclJlY29yZCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9dmFyIHRvVHlwZTtpZih0aGlzLmlzQ29uc3Qpe3RvVHlwZT1yZWdpc3RlcmVkUG9pbnRlclJlY29yZC5jb25zdFBvaW50ZXJUeXBlO31lbHNlIHt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGU7fXZhciBkcD1kb3duY2FzdFBvaW50ZXIocmF3UG9pbnRlcix0aGlzLnJlZ2lzdGVyZWRDbGFzcyx0b1R5cGUucmVnaXN0ZXJlZENsYXNzKTtpZihkcD09PW51bGwpe3JldHVybiBtYWtlRGVmYXVsdEhhbmRsZS5jYWxsKHRoaXMpfWlmKHRoaXMuaXNTbWFydFBvaW50ZXIpe3JldHVybiBtYWtlQ2xhc3NIYW5kbGUodG9UeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0b1R5cGUscHRyOmRwLHNtYXJ0UHRyVHlwZTp0aGlzLHNtYXJ0UHRyOnB0cn0pfWVsc2Uge3JldHVybiBtYWtlQ2xhc3NIYW5kbGUodG9UeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0b1R5cGUscHRyOmRwfSl9fWZ1bmN0aW9uIGF0dGFjaEZpbmFsaXplcihoYW5kbGUpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5KXthdHRhY2hGaW5hbGl6ZXI9aGFuZGxlPT5oYW5kbGU7cmV0dXJuIGhhbmRsZX1maW5hbGl6YXRpb25SZWdpc3RyeT1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoaW5mbz0+e3JlbGVhc2VDbGFzc0hhbmRsZShpbmZvLiQkKTt9KTthdHRhY2hGaW5hbGl6ZXI9aGFuZGxlPT57dmFyICQkPWhhbmRsZS4kJDt2YXIgaGFzU21hcnRQdHI9ISEkJC5zbWFydFB0cjtpZihoYXNTbWFydFB0cil7dmFyIGluZm89eyQkOiQkfTtmaW5hbGl6YXRpb25SZWdpc3RyeS5yZWdpc3RlcihoYW5kbGUsaW5mbyxoYW5kbGUpO31yZXR1cm4gaGFuZGxlfTtkZXRhY2hGaW5hbGl6ZXI9aGFuZGxlPT5maW5hbGl6YXRpb25SZWdpc3RyeS51bnJlZ2lzdGVyKGhhbmRsZSk7cmV0dXJuIGF0dGFjaEZpbmFsaXplcihoYW5kbGUpfWZ1bmN0aW9uIENsYXNzSGFuZGxlX2Nsb25lKCl7aWYoIXRoaXMuJCQucHRyKXt0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQodGhpcyk7fWlmKHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIHRoaXN9ZWxzZSB7dmFyIGNsb25lPWF0dGFjaEZpbmFsaXplcihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSx7JCQ6e3ZhbHVlOnNoYWxsb3dDb3B5SW50ZXJuYWxQb2ludGVyKHRoaXMuJCQpfX0pKTtjbG9uZS4kJC5jb3VudC52YWx1ZSs9MTtjbG9uZS4kJC5kZWxldGVTY2hlZHVsZWQ9ZmFsc2U7cmV0dXJuIGNsb25lfX1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKTt9aWYodGhpcy4kJC5kZWxldGVTY2hlZHVsZWQmJiF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aHJvd0JpbmRpbmdFcnJvcigiT2JqZWN0IGFscmVhZHkgc2NoZWR1bGVkIGZvciBkZWxldGlvbiIpO31kZXRhY2hGaW5hbGl6ZXIodGhpcyk7cmVsZWFzZUNsYXNzSGFuZGxlKHRoaXMuJCQpO2lmKCF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLnNtYXJ0UHRyPXVuZGVmaW5lZDt0aGlzLiQkLnB0cj11bmRlZmluZWQ7fX1mdW5jdGlvbiBDbGFzc0hhbmRsZV9pc0RlbGV0ZWQoKXtyZXR1cm4gIXRoaXMuJCQucHRyfWZ1bmN0aW9uIENsYXNzSGFuZGxlX2RlbGV0ZUxhdGVyKCl7aWYoIXRoaXMuJCQucHRyKXt0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQodGhpcyk7fWlmKHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkJiYhdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSl7dGhyb3dCaW5kaW5nRXJyb3IoIk9iamVjdCBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24iKTt9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKTt9dGhpcy4kJC5kZWxldGVTY2hlZHVsZWQ9dHJ1ZTtyZXR1cm4gdGhpc31mdW5jdGlvbiBpbml0X0NsYXNzSGFuZGxlKCl7Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJpc0FsaWFzT2YiXT1DbGFzc0hhbmRsZV9pc0FsaWFzT2Y7Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJjbG9uZSJdPUNsYXNzSGFuZGxlX2Nsb25lO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiZGVsZXRlIl09Q2xhc3NIYW5kbGVfZGVsZXRlO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09Q2xhc3NIYW5kbGVfaXNEZWxldGVkO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiZGVsZXRlTGF0ZXIiXT1DbGFzc0hhbmRsZV9kZWxldGVMYXRlcjt9ZnVuY3Rpb24gQ2xhc3NIYW5kbGUoKXt9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7aWYoIXByb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGUuaGFzT3duUHJvcGVydHkoYXJndW1lbnRzLmxlbmd0aCkpe3Rocm93QmluZGluZ0Vycm9yKCJGdW5jdGlvbiAnIitodW1hbk5hbWUrIicgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzICgiK2FyZ3VtZW50cy5sZW5ndGgrIikgLSBleHBlY3RzIG9uZSBvZiAoIitwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlKyIpISIpO31yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGU9W107cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVtwcmV2RnVuYy5hcmdDb3VudF09cHJldkZ1bmM7fX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIik7fWVuc3VyZU92ZXJsb2FkVGFibGUoTW9kdWxlLG5hbWUsbmFtZSk7aWYoTW9kdWxlLmhhc093blByb3BlcnR5KG51bUFyZ3VtZW50cykpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgb3ZlcmxvYWRzIG9mIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzICgiK251bUFyZ3VtZW50cysiKSEiKTt9TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXT12YWx1ZTt9ZWxzZSB7TW9kdWxlW25hbWVdPXZhbHVlO2lmKHVuZGVmaW5lZCE9PW51bUFyZ3VtZW50cyl7TW9kdWxlW25hbWVdLm51bUFyZ3VtZW50cz1udW1Bcmd1bWVudHM7fX19ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXTt9ZnVuY3Rpb24gdXBjYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzKXt3aGlsZShwdHJDbGFzcyE9PWRlc2lyZWRDbGFzcyl7aWYoIXB0ckNsYXNzLnVwY2FzdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkV4cGVjdGVkIG51bGwgb3IgaW5zdGFuY2Ugb2YgIitkZXNpcmVkQ2xhc3MubmFtZSsiLCBnb3QgYW4gaW5zdGFuY2Ugb2YgIitwdHJDbGFzcy5uYW1lKTt9cHRyPXB0ckNsYXNzLnVwY2FzdChwdHIpO3B0ckNsYXNzPXB0ckNsYXNzLmJhc2VDbGFzczt9cmV0dXJuIHB0cn1mdW5jdGlvbiBjb25zdE5vU21hcnRQdHJSYXdQb2ludGVyVG9XaXJlVHlwZShkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKTt9cmV0dXJuIDB9aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK2VtYmluZFJlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKTt9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSk7fXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9ZnVuY3Rpb24gZ2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlKGRlc3RydWN0b3JzLGhhbmRsZSl7dmFyIHB0cjtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSk7fWlmKHRoaXMuaXNTbWFydFBvaW50ZXIpe3B0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpO31yZXR1cm4gcHRyfWVsc2Uge3JldHVybiAwfX1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrZW1iaW5kUmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpO31pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt9aWYoIXRoaXMuaXNDb25zdCYmaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSk7fXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7cHRyPXVwY2FzdFBvaW50ZXIoaGFuZGxlLiQkLnB0cixoYW5kbGVDbGFzcyx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7aWYodW5kZWZpbmVkPT09aGFuZGxlLiQkLnNtYXJ0UHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiUGFzc2luZyByYXcgcG9pbnRlciB0byBzbWFydCBwb2ludGVyIGlzIGlsbGVnYWwiKTt9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyO31lbHNlIHt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyhoYW5kbGUuJCQuc21hcnRQdHJUeXBlP2hhbmRsZS4kJC5zbWFydFB0clR5cGUubmFtZTpoYW5kbGUuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyO31lbHNlIHt2YXIgY2xvbmVkSGFuZGxlPWhhbmRsZVsiY2xvbmUiXSgpO3B0cj10aGlzLnJhd1NoYXJlKHB0cixFbXZhbC50b0hhbmRsZShmdW5jdGlvbigpe2Nsb25lZEhhbmRsZVsiZGVsZXRlIl0oKTt9KSk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpO319YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iik7fX1yZXR1cm4gcHRyfWZ1bmN0aW9uIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpO31yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrZW1iaW5kUmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpO31pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpO312YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfWZ1bmN0aW9uIHNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiB0aGlzWyJmcm9tV2lyZVR5cGUiXShIRUFQMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIFJlZ2lzdGVyZWRQb2ludGVyX2dldFBvaW50ZWUocHRyKXtpZih0aGlzLnJhd0dldFBvaW50ZWUpe3B0cj10aGlzLnJhd0dldFBvaW50ZWUocHRyKTt9cmV0dXJuIHB0cn1mdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcl9kZXN0cnVjdG9yKHB0cil7aWYodGhpcy5yYXdEZXN0cnVjdG9yKXt0aGlzLnJhd0Rlc3RydWN0b3IocHRyKTt9fWZ1bmN0aW9uIFJlZ2lzdGVyZWRQb2ludGVyX2RlbGV0ZU9iamVjdChoYW5kbGUpe2lmKGhhbmRsZSE9PW51bGwpe2hhbmRsZVsiZGVsZXRlIl0oKTt9fWZ1bmN0aW9uIGluaXRfUmVnaXN0ZXJlZFBvaW50ZXIoKXtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1SZWdpc3RlcmVkUG9pbnRlcl9nZXRQb2ludGVlO1JlZ2lzdGVyZWRQb2ludGVyLnByb3RvdHlwZS5kZXN0cnVjdG9yPVJlZ2lzdGVyZWRQb2ludGVyX2Rlc3RydWN0b3I7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJhcmdQYWNrQWR2YW5jZSJdPTg7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJyZWFkVmFsdWVGcm9tUG9pbnRlciJdPXNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyO1JlZ2lzdGVyZWRQb2ludGVyLnByb3RvdHlwZVsiZGVsZXRlT2JqZWN0Il09UmVnaXN0ZXJlZFBvaW50ZXJfZGVsZXRlT2JqZWN0O1JlZ2lzdGVyZWRQb2ludGVyLnByb3RvdHlwZVsiZnJvbVdpcmVUeXBlIl09UmVnaXN0ZXJlZFBvaW50ZXJfZnJvbVdpcmVUeXBlO31mdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGw7fWVsc2Uge3RoaXNbInRvV2lyZVR5cGUiXT1ub25Db25zdE5vU21hcnRQdHJSYXdQb2ludGVyVG9XaXJlVHlwZTt0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsO319ZWxzZSB7dGhpc1sidG9XaXJlVHlwZSJdPWdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZTt9fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKTt9aWYodW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGUmJnVuZGVmaW5lZCE9PW51bUFyZ3VtZW50cyl7TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXT12YWx1ZTt9ZWxzZSB7TW9kdWxlW25hbWVdPXZhbHVlO01vZHVsZVtuYW1lXS5hcmdDb3VudD1udW1Bcmd1bWVudHM7fX1mdW5jdGlvbiBkeW5DYWxsTGVnYWN5KHNpZyxwdHIsYXJncyl7dmFyIGY9TW9kdWxlWyJkeW5DYWxsXyIrc2lnXTtyZXR1cm4gYXJncyYmYXJncy5sZW5ndGg/Zi5hcHBseShudWxsLFtwdHJdLmNvbmNhdChhcmdzKSk6Zi5jYWxsKG51bGwscHRyKX1mdW5jdGlvbiBkeW5DYWxsKHNpZyxwdHIsYXJncyl7aWYoc2lnLmluY2x1ZGVzKCJqIikpe3JldHVybiBkeW5DYWxsTGVnYWN5KHNpZyxwdHIsYXJncyl9dmFyIHJ0bj1nZXRXYXNtVGFibGVFbnRyeShwdHIpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIHJ0bn1mdW5jdGlvbiBnZXREeW5DYWxsZXIoc2lnLHB0cil7dmFyIGFyZ0NhY2hlPVtdO3JldHVybiBmdW5jdGlvbigpe2FyZ0NhY2hlLmxlbmd0aD0wO09iamVjdC5hc3NpZ24oYXJnQ2FjaGUsYXJndW1lbnRzKTtyZXR1cm4gZHluQ2FsbChzaWcscHRyLGFyZ0NhY2hlKX19ZnVuY3Rpb24gZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0Z1bmN0aW9uKXtzaWduYXR1cmU9cmVhZExhdGluMVN0cmluZyhzaWduYXR1cmUpO2Z1bmN0aW9uIG1ha2VEeW5DYWxsZXIoKXtpZihzaWduYXR1cmUuaW5jbHVkZXMoImoiKSl7cmV0dXJuIGdldER5bkNhbGxlcihzaWduYXR1cmUscmF3RnVuY3Rpb24pfXJldHVybiBnZXRXYXNtVGFibGVFbnRyeShyYXdGdW5jdGlvbil9dmFyIGZwPW1ha2VEeW5DYWxsZXIoKTtpZih0eXBlb2YgZnAhPSJmdW5jdGlvbiIpe3Rocm93QmluZGluZ0Vycm9yKCJ1bmtub3duIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aCBzaWduYXR1cmUgIitzaWduYXR1cmUrIjogIityYXdGdW5jdGlvbik7fXJldHVybiBmcH12YXIgVW5ib3VuZFR5cGVFcnJvcj11bmRlZmluZWQ7ZnVuY3Rpb24gZ2V0VHlwZU5hbWUodHlwZSl7dmFyIHB0cj1fX19nZXRUeXBlTmFtZSh0eXBlKTt2YXIgcnY9cmVhZExhdGluMVN0cmluZyhwdHIpO19mcmVlKHB0cik7cmV0dXJuIHJ2fWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWU7fXR5cGVzLmZvckVhY2godmlzaXQpO3Rocm93IG5ldyBVbmJvdW5kVHlwZUVycm9yKG1lc3NhZ2UrIjogIit1bmJvdW5kVHlwZXMubWFwKGdldFR5cGVOYW1lKS5qb2luKFsiLCAiXSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKHJhd1R5cGUscmF3UG9pbnRlclR5cGUscmF3Q29uc3RQb2ludGVyVHlwZSxiYXNlQ2xhc3NSYXdUeXBlLGdldEFjdHVhbFR5cGVTaWduYXR1cmUsZ2V0QWN0dWFsVHlwZSx1cGNhc3RTaWduYXR1cmUsdXBjYXN0LGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0LG5hbWUsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7Z2V0QWN0dWFsVHlwZT1lbWJpbmRfX3JlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PWVtYmluZF9fcmVxdWlyZUZ1bmN0aW9uKHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QpO31pZihkb3duY2FzdCl7ZG93bmNhc3Q9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QpO31yYXdEZXN0cnVjdG9yPWVtYmluZF9fcmVxdWlyZUZ1bmN0aW9uKGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcik7dmFyIGxlZ2FsRnVuY3Rpb25OYW1lPW1ha2VMZWdhbEZ1bmN0aW9uTmFtZShuYW1lKTtleHBvc2VQdWJsaWNTeW1ib2wobGVnYWxGdW5jdGlvbk5hbWUsZnVuY3Rpb24oKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtiYXNlQ2xhc3NSYXdUeXBlXSk7fSk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW3Jhd1R5cGUscmF3UG9pbnRlclR5cGUscmF3Q29uc3RQb2ludGVyVHlwZV0sYmFzZUNsYXNzUmF3VHlwZT9bYmFzZUNsYXNzUmF3VHlwZV06W10sZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlO31lbHNlIHtiYXNlUHJvdG90eXBlPUNsYXNzSGFuZGxlLnByb3RvdHlwZTt9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsZnVuY3Rpb24oKXtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykhPT1pbnN0YW5jZVByb3RvdHlwZSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcigiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiK25hbWUpfWlmKHVuZGVmaW5lZD09PXJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG5hbWUrIiBoYXMgbm8gYWNjZXNzaWJsZSBjb25zdHJ1Y3RvciIpfXZhciBib2R5PXJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ3VtZW50cy5sZW5ndGhdO2lmKHVuZGVmaW5lZD09PWJvZHkpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIGludm9rZSBjdG9yIG9mICIrbmFtZSsiIHdpdGggaW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVycyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0ZWQgKCIrT2JqZWN0LmtleXMocmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHkpLnRvU3RyaW5nKCkrIikgcGFyYW1ldGVycyBpbnN0ZWFkISIpfXJldHVybiBib2R5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3ZhciBpbnN0YW5jZVByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VQcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpjb25zdHJ1Y3Rvcn19KTtjb25zdHJ1Y3Rvci5wcm90b3R5cGU9aW5zdGFuY2VQcm90b3R5cGU7dmFyIHJlZ2lzdGVyZWRDbGFzcz1uZXcgUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3QpO3ZhciByZWZlcmVuY2VDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUscmVnaXN0ZXJlZENsYXNzLHRydWUsZmFsc2UsZmFsc2UpO3ZhciBwb2ludGVyQ29udmVydGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lKyIqIixyZWdpc3RlcmVkQ2xhc3MsZmFsc2UsZmFsc2UsZmFsc2UpO3ZhciBjb25zdFBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIiBjb25zdCoiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSx0cnVlLGZhbHNlKTtyZWdpc3RlcmVkUG9pbnRlcnNbcmF3VHlwZV09e3BvaW50ZXJUeXBlOnBvaW50ZXJDb252ZXJ0ZXIsY29uc3RQb2ludGVyVHlwZTpjb25zdFBvaW50ZXJDb252ZXJ0ZXJ9O3JlcGxhY2VQdWJsaWNTeW1ib2wobGVnYWxGdW5jdGlvbk5hbWUsY29uc3RydWN0b3IpO3JldHVybiBbcmVmZXJlbmNlQ29udmVydGVyLHBvaW50ZXJDb252ZXJ0ZXIsY29uc3RQb2ludGVyQ29udmVydGVyXX0pO31mdW5jdGlvbiBuZXdfKGNvbnN0cnVjdG9yLGFyZ3VtZW50TGlzdCl7aWYoIShjb25zdHJ1Y3RvciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigibmV3XyBjYWxsZWQgd2l0aCBjb25zdHJ1Y3RvciB0eXBlICIrdHlwZW9mIGNvbnN0cnVjdG9yKyIgd2hpY2ggaXMgbm90IGEgZnVuY3Rpb24iKX12YXIgZHVtbXk9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvci5uYW1lfHwidW5rbm93bkZ1bmN0aW9uTmFtZSIsZnVuY3Rpb24oKXt9KTtkdW1teS5wcm90b3R5cGU9Y29uc3RydWN0b3IucHJvdG90eXBlO3ZhciBvYmo9bmV3IGR1bW15O3ZhciByPWNvbnN0cnVjdG9yLmFwcGx5KG9iaixhcmd1bWVudExpc3QpO3JldHVybiByIGluc3RhbmNlb2YgT2JqZWN0P3I6b2JqfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKTt9fWZ1bmN0aW9uIGNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxhcmdUeXBlcyxjbGFzc1R5cGUsY3BwSW52b2tlckZ1bmMsY3BwVGFyZ2V0RnVuYyl7dmFyIGFyZ0NvdW50PWFyZ1R5cGVzLmxlbmd0aDtpZihhcmdDb3VudDwyKXt0aHJvd0JpbmRpbmdFcnJvcigiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIik7fXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fXZhciByZXR1cm5zPWFyZ1R5cGVzWzBdLm5hbWUhPT0idm9pZCI7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQiO312YXIgaW52b2tlckZuQm9keT0icmV0dXJuIGZ1bmN0aW9uICIrbWFrZUxlZ2FsRnVuY3Rpb25OYW1lKGh1bWFuTmFtZSkrIigiK2FyZ3NMaXN0KyIpIHtcbiIrImlmIChhcmd1bWVudHMubGVuZ3RoICE9PSAiKyhhcmdDb3VudC0yKSsiKSB7XG4iKyJ0aHJvd0JpbmRpbmdFcnJvcignZnVuY3Rpb24gIitodW1hbk5hbWUrIiBjYWxsZWQgd2l0aCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0yKSsiIGFyZ3MhJyk7XG4iKyJ9XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4iO312YXIgZHRvclN0YWNrPW5lZWRzRGVzdHJ1Y3RvclN0YWNrPyJkZXN0cnVjdG9ycyI6Im51bGwiO3ZhciBhcmdzMT1bInRocm93QmluZGluZ0Vycm9yIiwiaW52b2tlciIsImZuIiwicnVuRGVzdHJ1Y3RvcnMiLCJyZXRUeXBlIiwiY2xhc3NQYXJhbSJdO3ZhciBhcmdzMj1bdGhyb3dCaW5kaW5nRXJyb3IsY3BwSW52b2tlckZ1bmMsY3BwVGFyZ2V0RnVuYyxydW5EZXN0cnVjdG9ycyxhcmdUeXBlc1swXSxhcmdUeXBlc1sxXV07aWYoaXNDbGFzc01ldGhvZEZ1bmMpe2ludm9rZXJGbkJvZHkrPSJ2YXIgdGhpc1dpcmVkID0gY2xhc3NQYXJhbS50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIHRoaXMpO1xuIjt9Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0yOysraSl7aW52b2tlckZuQm9keSs9InZhciBhcmciK2krIldpcmVkID0gYXJnVHlwZSIraSsiLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgYXJnIitpKyIpOyAvLyAiK2FyZ1R5cGVzW2krMl0ubmFtZSsiXG4iO2FyZ3MxLnB1c2goImFyZ1R5cGUiK2kpO2FyZ3MyLnB1c2goYXJnVHlwZXNbaSsyXSk7fWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQ7fWludm9rZXJGbkJvZHkrPShyZXR1cm5zPyJ2YXIgcnYgPSAiOiIiKSsiaW52b2tlcihmbiIrKGFyZ3NMaXN0V2lyZWQubGVuZ3RoPjA/IiwgIjoiIikrYXJnc0xpc3RXaXJlZCsiKTtcbiI7aWYobmVlZHNEZXN0cnVjdG9yU3RhY2spe2ludm9rZXJGbkJvZHkrPSJydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7XG4iO31lbHNlIHtmb3IodmFyIGk9aXNDbGFzc01ldGhvZEZ1bmM/MToyO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7dmFyIHBhcmFtTmFtZT1pPT09MT8idGhpc1dpcmVkIjoiYXJnIisoaS0yKSsiV2lyZWQiO2lmKGFyZ1R5cGVzW2ldLmRlc3RydWN0b3JGdW5jdGlvbiE9PW51bGwpe2ludm9rZXJGbkJvZHkrPXBhcmFtTmFtZSsiX2R0b3IoIitwYXJhbU5hbWUrIik7IC8vICIrYXJnVHlwZXNbaV0ubmFtZSsiXG4iO2FyZ3MxLnB1c2gocGFyYW1OYW1lKyJfZHRvciIpO2FyZ3MyLnB1c2goYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uKTt9fX1pZihyZXR1cm5zKXtpbnZva2VyRm5Cb2R5Kz0idmFyIHJldCA9IHJldFR5cGUuZnJvbVdpcmVUeXBlKHJ2KTtcbiIrInJldHVybiByZXQ7XG4iO31pbnZva2VyRm5Cb2R5Kz0ifVxuIjthcmdzMS5wdXNoKGludm9rZXJGbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixhcmdzMSkuYXBwbHkobnVsbCxhcmdzMik7cmV0dXJuIGludm9rZXJGdW5jdGlvbn1mdW5jdGlvbiBoZWFwMzJWZWN0b3JUb0FycmF5KGNvdW50LGZpcnN0RWxlbWVudCl7dmFyIGFycmF5PVtdO2Zvcih2YXIgaT0wO2k8Y291bnQ7aSsrKXthcnJheS5wdXNoKEhFQVBVMzJbZmlyc3RFbGVtZW50K2kqND4+Ml0pO31yZXR1cm4gYXJyYXl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1lbWJpbmRfX3JlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLGZ1bmN0aW9uKGNsYXNzVHlwZSl7Y2xhc3NUeXBlPWNsYXNzVHlwZVswXTt2YXIgaHVtYW5OYW1lPWNsYXNzVHlwZS5uYW1lKyIuIittZXRob2ROYW1lO2Z1bmN0aW9uIHVuYm91bmRUeXBlc0hhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjYWxsICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLHJhd0FyZ1R5cGVzKTt9aWYobWV0aG9kTmFtZS5zdGFydHNXaXRoKCJAQCIpKXttZXRob2ROYW1lPVN5bWJvbFttZXRob2ROYW1lLnN1YnN0cmluZygyKV07fXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcjt9ZWxzZSB7ZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSk7cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmdDb3VudC0xXT11bmJvdW5kVHlwZXNIYW5kbGVyO313aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcyxmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7dmFyIGZ1bmM9Y3JhZnRJbnZva2VyRnVuY3Rpb24oaHVtYW5OYW1lLGludm9rZXJBcmdzQXJyYXksbnVsbCxyYXdJbnZva2VyLGZuKTtpZih1bmRlZmluZWQ9PT1wcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlKXtmdW5jLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09ZnVuYzt9ZWxzZSB7cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmdDb3VudC0xXT1mdW5jO31yZXR1cm4gW119KTtyZXR1cm4gW119KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe2Fzc2VydChhcmdDb3VudD4wKTt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO2ludm9rZXI9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSxmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT0iY29uc3RydWN0b3IgIitjbGFzc1R5cGUubmFtZTtpZih1bmRlZmluZWQ9PT1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHkpe2NsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT1bXTt9aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT0oKT0+e3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK2NsYXNzVHlwZS5uYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLHJhd0FyZ1R5cGVzKTt9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLGZ1bmN0aW9uKGFyZ1R5cGVzKXthcmdUeXBlcy5zcGxpY2UoMSwwLG51bGwpO2NsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsbnVsbCxpbnZva2VyLHJhd0NvbnN0cnVjdG9yKTtyZXR1cm4gW119KTtyZXR1cm4gW119KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixjb250ZXh0LGlzUHVyZVZpcnR1YWwpe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7bWV0aG9kTmFtZT1yZWFkTGF0aW4xU3RyaW5nKG1ldGhvZE5hbWUpO3Jhd0ludm9rZXI9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSxmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihtZXRob2ROYW1lLnN0YXJ0c1dpdGgoIkBAIikpe21ldGhvZE5hbWU9U3ltYm9sW21ldGhvZE5hbWUuc3Vic3RyaW5nKDIpXTt9aWYoaXNQdXJlVmlydHVhbCl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5wdXNoKG1ldGhvZE5hbWUpO31mdW5jdGlvbiB1bmJvdW5kVHlwZXNIYW5kbGVyKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgY2FsbCAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyk7fXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcjt9ZWxzZSB7ZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSk7cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmdDb3VudC0yXT11bmJvdW5kVHlwZXNIYW5kbGVyO313aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcyxmdW5jdGlvbihhcmdUeXBlcyl7dmFyIG1lbWJlckZ1bmN0aW9uPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxhcmdUeXBlcyxjbGFzc1R5cGUscmF3SW52b2tlcixjb250ZXh0KTtpZih1bmRlZmluZWQ9PT1wcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlKXttZW1iZXJGdW5jdGlvbi5hcmdDb3VudD1hcmdDb3VudC0yO3Byb3RvW21ldGhvZE5hbWVdPW1lbWJlckZ1bmN0aW9uO31lbHNlIHtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9uO31yZXR1cm4gW119KTtyZXR1cm4gW119KTt9dmFyIGVtdmFsX2ZyZWVfbGlzdD1bXTt2YXIgZW12YWxfaGFuZGxlX2FycmF5PVt7fSx7dmFsdWU6dW5kZWZpbmVkfSx7dmFsdWU6bnVsbH0se3ZhbHVlOnRydWV9LHt2YWx1ZTpmYWxzZX1dO2Z1bmN0aW9uIF9fZW12YWxfZGVjcmVmKGhhbmRsZSl7aWYoaGFuZGxlPjQmJjA9PT0tLWVtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtlbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT11bmRlZmluZWQ7ZW12YWxfZnJlZV9saXN0LnB1c2goaGFuZGxlKTt9fWZ1bmN0aW9uIGNvdW50X2VtdmFsX2hhbmRsZXMoKXt2YXIgY291bnQ9MDtmb3IodmFyIGk9NTtpPGVtdmFsX2hhbmRsZV9hcnJheS5sZW5ndGg7KytpKXtpZihlbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnQ7fX1yZXR1cm4gY291bnR9ZnVuY3Rpb24gZ2V0X2ZpcnN0X2VtdmFsKCl7Zm9yKHZhciBpPTU7aTxlbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoOysraSl7aWYoZW12YWxfaGFuZGxlX2FycmF5W2ldIT09dW5kZWZpbmVkKXtyZXR1cm4gZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBpbml0X2VtdmFsKCl7TW9kdWxlWyJjb3VudF9lbXZhbF9oYW5kbGVzIl09Y291bnRfZW12YWxfaGFuZGxlcztNb2R1bGVbImdldF9maXJzdF9lbXZhbCJdPWdldF9maXJzdF9lbXZhbDt9dmFyIEVtdmFsPXt0b1ZhbHVlOmhhbmRsZT0+e2lmKCFoYW5kbGUpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgdXNlIGRlbGV0ZWQgdmFsLiBoYW5kbGUgPSAiK2hhbmRsZSk7fXJldHVybiBlbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXS52YWx1ZX0sdG9IYW5kbGU6dmFsdWU9Pntzd2l0Y2godmFsdWUpe2Nhc2UgdW5kZWZpbmVkOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlIHRydWU6cmV0dXJuIDM7Y2FzZSBmYWxzZTpyZXR1cm4gNDtkZWZhdWx0Ont2YXIgaGFuZGxlPWVtdmFsX2ZyZWVfbGlzdC5sZW5ndGg/ZW12YWxfZnJlZV9saXN0LnBvcCgpOmVtdmFsX2hhbmRsZV9hcnJheS5sZW5ndGg7ZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09e3JlZmNvdW50OjEsdmFsdWU6dmFsdWV9O3JldHVybiBoYW5kbGV9fX19O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsKHJhd1R5cGUsbmFtZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9RW12YWwudG9WYWx1ZShoYW5kbGUpO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSwidG9XaXJlVHlwZSI6ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3JldHVybiBFbXZhbC50b0hhbmRsZSh2YWx1ZSl9LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSk7fWZ1bmN0aW9uIGVtYmluZFJlcHIodil7aWYodj09PW51bGwpe3JldHVybiAibnVsbCJ9dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZSB7cmV0dXJuICIiK3Z9fWZ1bmN0aW9uIGZsb2F0UmVhZFZhbHVlRnJvbVBvaW50ZXIobmFtZSxzaGlmdCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHBvaW50ZXIpe3JldHVybiB0aGlzWyJmcm9tV2lyZVR5cGUiXShIRUFQRjMyW3BvaW50ZXI+PjJdKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBmbG9hdCB0eXBlOiAiK25hbWUpfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0sInRvV2lyZVR5cGUiOmZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtyZXR1cm4gdmFsdWV9LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmZsb2F0UmVhZFZhbHVlRnJvbVBvaW50ZXIobmFtZSxzaGlmdCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZnVuY3Rpb24obmFtZSxhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIsc2lnbmF0dXJlLHJhd0ludm9rZXIsZm4pe3ZhciBhcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3Jhd0ludm9rZXI9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgY2FsbCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsYXJnVHlwZXMpO30sYXJnQ291bnQtMSk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sYXJnVHlwZXMsZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3JlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSxjcmFmdEludm9rZXJGdW5jdGlvbihuYW1lLGludm9rZXJBcmdzQXJyYXksbnVsbCxyYXdJbnZva2VyLGZuKSxhcmdDb3VudC0xKTtyZXR1cm4gW119KTt9ZnVuY3Rpb24gaW50ZWdlclJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQsc2lnbmVkKXtzd2l0Y2goc2hpZnQpe2Nhc2UgMDpyZXR1cm4gc2lnbmVkP2Z1bmN0aW9uIHJlYWRTOEZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiBIRUFQOFtwb2ludGVyXX06ZnVuY3Rpb24gcmVhZFU4RnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIEhFQVBVOFtwb2ludGVyXX07Y2FzZSAxOnJldHVybiBzaWduZWQ/ZnVuY3Rpb24gcmVhZFMxNkZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiBIRUFQMTZbcG9pbnRlcj4+MV19OmZ1bmN0aW9uIHJlYWRVMTZGcm9tUG9pbnRlcihwb2ludGVyKXtyZXR1cm4gSEVBUFUxNltwb2ludGVyPj4xXX07Y2FzZSAyOnJldHVybiBzaWduZWQ/ZnVuY3Rpb24gcmVhZFMzMkZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiBIRUFQMzJbcG9pbnRlcj4+Ml19OmZ1bmN0aW9uIHJlYWRVMzJGcm9tUG9pbnRlcihwb2ludGVyKXtyZXR1cm4gSEVBUFUzMltwb2ludGVyPj4yXX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO3ZhciBmcm9tV2lyZVR5cGU9dmFsdWU9PnZhbHVlO2lmKG1pblJhbmdlPT09MCl7dmFyIGJpdHNoaWZ0PTMyLTgqc2l6ZTtmcm9tV2lyZVR5cGU9dmFsdWU9PnZhbHVlPDxiaXRzaGlmdD4+PmJpdHNoaWZ0O312YXIgaXNVbnNpZ25lZFR5cGU9bmFtZS5pbmNsdWRlcygidW5zaWduZWQiKTt2YXIgY2hlY2tBc3NlcnRpb25zPSh2YWx1ZSx0b1R5cGVOYW1lKT0+e307dmFyIHRvV2lyZVR5cGU7aWYoaXNVbnNpZ25lZFR5cGUpe3RvV2lyZVR5cGU9ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2NoZWNrQXNzZXJ0aW9ucyh2YWx1ZSx0aGlzLm5hbWUpO3JldHVybiB2YWx1ZT4+PjB9O31lbHNlIHt0b1dpcmVUeXBlPWZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtjaGVja0Fzc2VydGlvbnModmFsdWUsdGhpcy5uYW1lKTtyZXR1cm4gdmFsdWV9O31yZWdpc3RlclR5cGUocHJpbWl0aXZlVHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOmZyb21XaXJlVHlwZSwidG9XaXJlVHlwZSI6dG9XaXJlVHlwZSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjppbnRlZ2VyUmVhZFZhbHVlRnJvbVBvaW50ZXIobmFtZSxzaGlmdCxtaW5SYW5nZSE9PTApLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSk7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX21lbW9yeV92aWV3KHJhd1R5cGUsZGF0YVR5cGVJbmRleCxuYW1lKXt2YXIgdHlwZU1hcHBpbmc9W0ludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5XTt2YXIgVEE9dHlwZU1hcHBpbmdbZGF0YVR5cGVJbmRleF07ZnVuY3Rpb24gZGVjb2RlTWVtb3J5VmlldyhoYW5kbGUpe2hhbmRsZT1oYW5kbGU+PjI7dmFyIGhlYXA9SEVBUFUzMjt2YXIgc2l6ZT1oZWFwW2hhbmRsZV07dmFyIGRhdGE9aGVhcFtoYW5kbGUrMV07cmV0dXJuIG5ldyBUQShidWZmZXIsZGF0YSxzaXplKX1uYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjpkZWNvZGVNZW1vcnlWaWV3LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmRlY29kZU1lbW9yeVZpZXd9LHtpZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zOnRydWV9KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyhyYXdUeXBlLG5hbWUpe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTt2YXIgc3RkU3RyaW5nSXNVVEY4PW5hbWU9PT0ic3RkOjpzdHJpbmciO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIHBheWxvYWQ9dmFsdWUrNDt2YXIgc3RyO2lmKHN0ZFN0cmluZ0lzVVRGOCl7dmFyIGRlY29kZVN0YXJ0UHRyPXBheWxvYWQ7Zm9yKHZhciBpPTA7aTw9bGVuZ3RoOysraSl7dmFyIGN1cnJlbnRCeXRlUHRyPXBheWxvYWQraTtpZihpPT1sZW5ndGh8fEhFQVBVOFtjdXJyZW50Qnl0ZVB0cl09PTApe3ZhciBtYXhSZWFkPWN1cnJlbnRCeXRlUHRyLWRlY29kZVN0YXJ0UHRyO3ZhciBzdHJpbmdTZWdtZW50PVVURjhUb1N0cmluZyhkZWNvZGVTdGFydFB0cixtYXhSZWFkKTtpZihzdHI9PT11bmRlZmluZWQpe3N0cj1zdHJpbmdTZWdtZW50O31lbHNlIHtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoMCk7c3RyKz1zdHJpbmdTZWdtZW50O31kZWNvZGVTdGFydFB0cj1jdXJyZW50Qnl0ZVB0cisxO319fWVsc2Uge3ZhciBhPW5ldyBBcnJheShsZW5ndGgpO2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBVOFtwYXlsb2FkK2ldKTt9c3RyPWEuam9pbigiIik7fV9mcmVlKHZhbHVlKTtyZXR1cm4gc3RyfSwidG9XaXJlVHlwZSI6ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKTt9dmFyIGxlbmd0aDt2YXIgdmFsdWVJc09mVHlwZVN0cmluZz10eXBlb2YgdmFsdWU9PSJzdHJpbmciO2lmKCEodmFsdWVJc09mVHlwZVN0cmluZ3x8dmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx2YWx1ZSBpbnN0YW5jZW9mIEludDhBcnJheSkpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIHN0ZDo6c3RyaW5nIik7fWlmKHN0ZFN0cmluZ0lzVVRGOCYmdmFsdWVJc09mVHlwZVN0cmluZyl7bGVuZ3RoPWxlbmd0aEJ5dGVzVVRGOCh2YWx1ZSk7fWVsc2Uge2xlbmd0aD12YWx1ZS5sZW5ndGg7fXZhciBiYXNlPV9tYWxsb2MoNCtsZW5ndGgrMSk7dmFyIHB0cj1iYXNlKzQ7SEVBUFUzMltiYXNlPj4yXT1sZW5ndGg7aWYoc3RkU3RyaW5nSXNVVEY4JiZ2YWx1ZUlzT2ZUeXBlU3RyaW5nKXtzdHJpbmdUb1VURjgodmFsdWUscHRyLGxlbmd0aCsxKTt9ZWxzZSB7aWYodmFsdWVJc09mVHlwZVN0cmluZyl7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXt2YXIgY2hhckNvZGU9dmFsdWUuY2hhckNvZGVBdChpKTtpZihjaGFyQ29kZT4yNTUpe19mcmVlKHB0cik7dGhyb3dCaW5kaW5nRXJyb3IoIlN0cmluZyBoYXMgVVRGLTE2IGNvZGUgdW5pdHMgdGhhdCBkbyBub3QgZml0IGluIDggYml0cyIpO31IRUFQVThbcHRyK2ldPWNoYXJDb2RlO319ZWxzZSB7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXtIRUFQVThbcHRyK2ldPXZhbHVlW2ldO319fWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxiYXNlKTt9cmV0dXJuIGJhc2V9LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbihwdHIpe19mcmVlKHB0cik7fX0pO312YXIgVVRGMTZEZWNvZGVyPXR5cGVvZiBUZXh0RGVjb2RlciE9InVuZGVmaW5lZCI/bmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOnVuZGVmaW5lZDtmdW5jdGlvbiBVVEYxNlRvU3RyaW5nKHB0cixtYXhCeXRlc1RvUmVhZCl7dmFyIGVuZFB0cj1wdHI7dmFyIGlkeD1lbmRQdHI+PjE7dmFyIG1heElkeD1pZHgrbWF4Qnl0ZXNUb1JlYWQvMjt3aGlsZSghKGlkeD49bWF4SWR4KSYmSEVBUFUxNltpZHhdKSsraWR4O2VuZFB0cj1pZHg8PDE7aWYoZW5kUHRyLXB0cj4zMiYmVVRGMTZEZWNvZGVyKXJldHVybiBVVEYxNkRlY29kZXIuZGVjb2RlKEhFQVBVOC5zbGljZShwdHIsZW5kUHRyKSk7dmFyIHN0cj0iIjtmb3IodmFyIGk9MDshKGk+PW1heEJ5dGVzVG9SZWFkLzIpOysraSl7dmFyIGNvZGVVbml0PUhFQVAxNltwdHIraSoyPj4xXTtpZihjb2RlVW5pdD09MClicmVhaztzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVVuaXQpO31yZXR1cm4gc3RyfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTYoc3RyLG91dFB0cixtYXhCeXRlc1RvV3JpdGUpe2lmKG1heEJ5dGVzVG9Xcml0ZT09PXVuZGVmaW5lZCl7bWF4Qnl0ZXNUb1dyaXRlPTIxNDc0ODM2NDc7fWlmKG1heEJ5dGVzVG9Xcml0ZTwyKXJldHVybiAwO21heEJ5dGVzVG9Xcml0ZS09Mjt2YXIgc3RhcnRQdHI9b3V0UHRyO3ZhciBudW1DaGFyc1RvV3JpdGU9bWF4Qnl0ZXNUb1dyaXRlPHN0ci5sZW5ndGgqMj9tYXhCeXRlc1RvV3JpdGUvMjpzdHIubGVuZ3RoO2Zvcih2YXIgaT0wO2k8bnVtQ2hhcnNUb1dyaXRlOysraSl7dmFyIGNvZGVVbml0PXN0ci5jaGFyQ29kZUF0KGkpO0hFQVAxNltvdXRQdHI+PjFdPWNvZGVVbml0O291dFB0cis9Mjt9SEVBUDE2W291dFB0cj4+MV09MDtyZXR1cm4gb3V0UHRyLXN0YXJ0UHRyfWZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGMTYoc3RyKXtyZXR1cm4gc3RyLmxlbmd0aCoyfWZ1bmN0aW9uIFVURjMyVG9TdHJpbmcocHRyLG1heEJ5dGVzVG9SZWFkKXt2YXIgaT0wO3ZhciBzdHI9IiI7d2hpbGUoIShpPj1tYXhCeXRlc1RvUmVhZC80KSl7dmFyIHV0ZjMyPUhFQVAzMltwdHIraSo0Pj4yXTtpZih1dGYzMj09MClicmVhazsrK2k7aWYodXRmMzI+PTY1NTM2KXt2YXIgY2g9dXRmMzItNjU1MzY7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGNoPj4xMCw1NjMyMHxjaCYxMDIzKTt9ZWxzZSB7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHV0ZjMyKTt9fXJldHVybiBzdHJ9ZnVuY3Rpb24gc3RyaW5nVG9VVEYzMihzdHIsb3V0UHRyLG1heEJ5dGVzVG9Xcml0ZSl7aWYobWF4Qnl0ZXNUb1dyaXRlPT09dW5kZWZpbmVkKXttYXhCeXRlc1RvV3JpdGU9MjE0NzQ4MzY0Nzt9aWYobWF4Qnl0ZXNUb1dyaXRlPDQpcmV0dXJuIDA7dmFyIHN0YXJ0UHRyPW91dFB0cjt2YXIgZW5kUHRyPXN0YXJ0UHRyK21heEJ5dGVzVG9Xcml0ZS00O2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDsrK2kpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpKTtpZihjb2RlVW5pdD49NTUyOTYmJmNvZGVVbml0PD01NzM0Myl7dmFyIHRyYWlsU3Vycm9nYXRlPXN0ci5jaGFyQ29kZUF0KCsraSk7Y29kZVVuaXQ9NjU1MzYrKChjb2RlVW5pdCYxMDIzKTw8MTApfHRyYWlsU3Vycm9nYXRlJjEwMjM7fUhFQVAzMltvdXRQdHI+PjJdPWNvZGVVbml0O291dFB0cis9NDtpZihvdXRQdHIrND5lbmRQdHIpYnJlYWt9SEVBUDMyW291dFB0cj4+Ml09MDtyZXR1cm4gb3V0UHRyLXN0YXJ0UHRyfWZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGMzIoc3RyKXt2YXIgbGVuPTA7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoOysraSl7dmFyIGNvZGVVbml0PXN0ci5jaGFyQ29kZUF0KGkpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKSsraTtsZW4rPTQ7fXJldHVybiBsZW59ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIGRlY29kZVN0cmluZyxlbmNvZGVTdHJpbmcsZ2V0SGVhcCxsZW5ndGhCeXRlc1VURixzaGlmdDtpZihjaGFyU2l6ZT09PTIpe2RlY29kZVN0cmluZz1VVEYxNlRvU3RyaW5nO2VuY29kZVN0cmluZz1zdHJpbmdUb1VURjE2O2xlbmd0aEJ5dGVzVVRGPWxlbmd0aEJ5dGVzVVRGMTY7Z2V0SGVhcD0oKT0+SEVBUFUxNjtzaGlmdD0xO31lbHNlIGlmKGNoYXJTaXplPT09NCl7ZGVjb2RlU3RyaW5nPVVURjMyVG9TdHJpbmc7ZW5jb2RlU3RyaW5nPXN0cmluZ1RvVVRGMzI7bGVuZ3RoQnl0ZXNVVEY9bGVuZ3RoQnl0ZXNVVEYzMjtnZXRIZWFwPSgpPT5IRUFQVTMyO3NoaWZ0PTI7fXJlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIEhFQVA9Z2V0SGVhcCgpO3ZhciBzdHI7dmFyIGRlY29kZVN0YXJ0UHRyPXZhbHVlKzQ7Zm9yKHZhciBpPTA7aTw9bGVuZ3RoOysraSl7dmFyIGN1cnJlbnRCeXRlUHRyPXZhbHVlKzQraSpjaGFyU2l6ZTtpZihpPT1sZW5ndGh8fEhFQVBbY3VycmVudEJ5dGVQdHI+PnNoaWZ0XT09MCl7dmFyIG1heFJlYWRCeXRlcz1jdXJyZW50Qnl0ZVB0ci1kZWNvZGVTdGFydFB0cjt2YXIgc3RyaW5nU2VnbWVudD1kZWNvZGVTdHJpbmcoZGVjb2RlU3RhcnRQdHIsbWF4UmVhZEJ5dGVzKTtpZihzdHI9PT11bmRlZmluZWQpe3N0cj1zdHJpbmdTZWdtZW50O31lbHNlIHtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoMCk7c3RyKz1zdHJpbmdTZWdtZW50O31kZWNvZGVTdGFydFB0cj1jdXJyZW50Qnl0ZVB0citjaGFyU2l6ZTt9fV9mcmVlKHZhbHVlKTtyZXR1cm4gc3RyfSwidG9XaXJlVHlwZSI6ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKCEodHlwZW9mIHZhbHVlPT0ic3RyaW5nIikpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAiK25hbWUpO312YXIgbGVuZ3RoPWxlbmd0aEJ5dGVzVVRGKHZhbHVlKTt2YXIgcHRyPV9tYWxsb2MoNCtsZW5ndGgrY2hhclNpemUpO0hFQVBVMzJbcHRyPj4yXT1sZW5ndGg+PnNoaWZ0O2VuY29kZVN0cmluZyh2YWx1ZSxwdHIrNCxsZW5ndGgrY2hhclNpemUpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpO31yZXR1cm4gcHRyfSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246ZnVuY3Rpb24ocHRyKXtfZnJlZShwdHIpO319KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZChyYXdUeXBlLG5hbWUpe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7aXNWb2lkOnRydWUsbmFtZTpuYW1lLCJhcmdQYWNrQWR2YW5jZSI6MCwiZnJvbVdpcmVUeXBlIjpmdW5jdGlvbigpe3JldHVybiB1bmRlZmluZWR9LCJ0b1dpcmVUeXBlIjpmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gdW5kZWZpbmVkfX0pO31mdW5jdGlvbiBfX2Vtc2NyaXB0ZW5fZGVmYXVsdF9wdGhyZWFkX3N0YWNrX3NpemUoKXtyZXR1cm4gMjA5NzE1Mn12YXIgbm93SXNNb25vdG9uaWM9dHJ1ZTtmdW5jdGlvbiBfX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWMoKXtyZXR1cm4gbm93SXNNb25vdG9uaWN9ZnVuY3Rpb24gZXhlY3V0ZU5vdGlmaWVkUHJveHlpbmdRdWV1ZShxdWV1ZSl7QXRvbWljcy5zdG9yZShIRUFQMzIscXVldWU+PjIsMSk7aWYoX3B0aHJlYWRfc2VsZigpKXtfX2Vtc2NyaXB0ZW5fcHJveHlfZXhlY3V0ZV90YXNrX3F1ZXVlKHF1ZXVlKTt9QXRvbWljcy5jb21wYXJlRXhjaGFuZ2UoSEVBUDMyLHF1ZXVlPj4yLDEsMCk7fU1vZHVsZVsiZXhlY3V0ZU5vdGlmaWVkUHJveHlpbmdRdWV1ZSJdPWV4ZWN1dGVOb3RpZmllZFByb3h5aW5nUXVldWU7ZnVuY3Rpb24gX19lbXNjcmlwdGVuX25vdGlmeV90YXNrX3F1ZXVlKHRhcmdldFRocmVhZElkLGN1cnJUaHJlYWRJZCxtYWluVGhyZWFkSWQscXVldWUpe2lmKHRhcmdldFRocmVhZElkPT1jdXJyVGhyZWFkSWQpe3NldFRpbWVvdXQoKCk9PmV4ZWN1dGVOb3RpZmllZFByb3h5aW5nUXVldWUocXVldWUpKTt9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtwb3N0TWVzc2FnZSh7InRhcmdldFRocmVhZCI6dGFyZ2V0VGhyZWFkSWQsImNtZCI6InByb2Nlc3NQcm94eWluZ1F1ZXVlIiwicXVldWUiOnF1ZXVlfSk7fWVsc2Uge3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1t0YXJnZXRUaHJlYWRJZF07aWYoIXdvcmtlcil7cmV0dXJufXdvcmtlci5wb3N0TWVzc2FnZSh7ImNtZCI6InByb2Nlc3NQcm94eWluZ1F1ZXVlIiwicXVldWUiOnF1ZXVlfSk7fXJldHVybiAxfWZ1bmN0aW9uIF9fZW1zY3JpcHRlbl9zZXRfb2Zmc2NyZWVuY2FudmFzX3NpemUodGFyZ2V0LHdpZHRoLGhlaWdodCl7cmV0dXJuIC0xfXZhciBlbXZhbF9zeW1ib2xzPXt9O2Z1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9ZW12YWxfc3ltYm9sc1thZGRyZXNzXTtpZihzeW1ib2w9PT11bmRlZmluZWQpe3JldHVybiByZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfXJldHVybiBzeW1ib2x9dmFyIGVtdmFsX21ldGhvZENhbGxlcnM9W107ZnVuY3Rpb24gX19lbXZhbF9jYWxsX3ZvaWRfbWV0aG9kKGNhbGxlcixoYW5kbGUsbWV0aG9kTmFtZSxhcmdzKXtjYWxsZXI9ZW12YWxfbWV0aG9kQ2FsbGVyc1tjYWxsZXJdO2hhbmRsZT1FbXZhbC50b1ZhbHVlKGhhbmRsZSk7bWV0aG9kTmFtZT1nZXRTdHJpbmdPclN5bWJvbChtZXRob2ROYW1lKTtjYWxsZXIoaGFuZGxlLG1ldGhvZE5hbWUsbnVsbCxhcmdzKTt9ZnVuY3Rpb24gZW12YWxfYWRkTWV0aG9kQ2FsbGVyKGNhbGxlcil7dmFyIGlkPWVtdmFsX21ldGhvZENhbGxlcnMubGVuZ3RoO2VtdmFsX21ldGhvZENhbGxlcnMucHVzaChjYWxsZXIpO3JldHVybiBpZH1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpO31yZXR1cm4gaW1wbH1mdW5jdGlvbiBlbXZhbF9sb29rdXBUeXBlcyhhcmdDb3VudCxhcmdUeXBlcyl7dmFyIGE9bmV3IEFycmF5KGFyZ0NvdW50KTtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YVtpXT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUoSEVBUFUzMlthcmdUeXBlcytpKlBPSU5URVJfU0laRT4+Ml0sInBhcmFtZXRlciAiK2kpO31yZXR1cm4gYX12YXIgZW12YWxfcmVnaXN0ZXJlZE1ldGhvZHM9W107ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWVtdmFsX2xvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pLmpvaW4oIl8iKSsiJCI7dmFyIHJldHVybklkPWVtdmFsX3JlZ2lzdGVyZWRNZXRob2RzW3NpZ25hdHVyZU5hbWVdO2lmKHJldHVybklkIT09dW5kZWZpbmVkKXtyZXR1cm4gcmV0dXJuSWR9dmFyIHBhcmFtcz1bInJldFR5cGUiXTt2YXIgYXJncz1bcmV0VHlwZV07dmFyIGFyZ3NMaXN0PSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTtwYXJhbXMucHVzaCgiYXJnVHlwZSIraSk7YXJncy5wdXNoKHR5cGVzWzEraV0pO312YXIgZnVuY3Rpb25OYW1lPW1ha2VMZWdhbEZ1bmN0aW9uTmFtZSgibWV0aG9kQ2FsbGVyXyIrc2lnbmF0dXJlTmFtZSk7dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uICIrZnVuY3Rpb25OYW1lKyIoaGFuZGxlLCBuYW1lLCBkZXN0cnVjdG9ycywgYXJncykge1xuIjt2YXIgb2Zmc2V0PTA7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7ZnVuY3Rpb25Cb2R5Kz0iICAgIHZhciBhcmciK2krIiA9IGFyZ1R5cGUiK2krIi5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzIisob2Zmc2V0PyIrIitvZmZzZXQ6IiIpKyIpO1xuIjtvZmZzZXQrPXR5cGVzW2krMV1bImFyZ1BhY2tBZHZhbmNlIl07fWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiI7fX1pZighcmV0VHlwZS5pc1ZvaWQpe2Z1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iO31mdW5jdGlvbkJvZHkrPSJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuSWQ9ZW12YWxfYWRkTWV0aG9kQ2FsbGVyKGludm9rZXJGdW5jdGlvbik7ZW12YWxfcmVnaXN0ZXJlZE1ldGhvZHNbc2lnbmF0dXJlTmFtZV09cmV0dXJuSWQ7cmV0dXJuIHJldHVybklkfWZ1bmN0aW9uIF9fZW12YWxfaW5jcmVmKGhhbmRsZSl7aWYoaGFuZGxlPjQpe2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xO319ZnVuY3Rpb24gX19lbXZhbF90YWtlX3ZhbHVlKHR5cGUsYXJnKXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJnKTtyZXR1cm4gRW12YWwudG9IYW5kbGUodil9ZnVuY3Rpb24gcmVhZEk1M0Zyb21JNjQocHRyKXtyZXR1cm4gSEVBUFUzMltwdHI+PjJdK0hFQVAzMltwdHIrND4+Ml0qNDI5NDk2NzI5Nn1mdW5jdGlvbiBfX2dtdGltZV9qcyh0aW1lLHRtUHRyKXt2YXIgZGF0ZT1uZXcgRGF0ZShyZWFkSTUzRnJvbUk2NCh0aW1lKSoxZTMpO0hFQVAzMlt0bVB0cj4+Ml09ZGF0ZS5nZXRVVENTZWNvbmRzKCk7SEVBUDMyW3RtUHRyKzQ+PjJdPWRhdGUuZ2V0VVRDTWludXRlcygpO0hFQVAzMlt0bVB0cis4Pj4yXT1kYXRlLmdldFVUQ0hvdXJzKCk7SEVBUDMyW3RtUHRyKzEyPj4yXT1kYXRlLmdldFVUQ0RhdGUoKTtIRUFQMzJbdG1QdHIrMTY+PjJdPWRhdGUuZ2V0VVRDTW9udGgoKTtIRUFQMzJbdG1QdHIrMjA+PjJdPWRhdGUuZ2V0VVRDRnVsbFllYXIoKS0xOTAwO0hFQVAzMlt0bVB0cisyND4+Ml09ZGF0ZS5nZXRVVENEYXkoKTt2YXIgc3RhcnQ9RGF0ZS5VVEMoZGF0ZS5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKTt2YXIgeWRheT0oZGF0ZS5nZXRUaW1lKCktc3RhcnQpLygxZTMqNjAqNjAqMjQpfDA7SEVBUDMyW3RtUHRyKzI4Pj4yXT15ZGF5O31mdW5jdGlvbiBfX2lzTGVhcFllYXIoeWVhcil7cmV0dXJuIHllYXIlND09PTAmJih5ZWFyJTEwMCE9PTB8fHllYXIlNDAwPT09MCl9dmFyIF9fTU9OVEhfREFZU19MRUFQX0NVTVVMQVRJVkU9WzAsMzEsNjAsOTEsMTIxLDE1MiwxODIsMjEzLDI0NCwyNzQsMzA1LDMzNV07dmFyIF9fTU9OVEhfREFZU19SRUdVTEFSX0NVTVVMQVRJVkU9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF07ZnVuY3Rpb24gX195ZGF5X2Zyb21fZGF0ZShkYXRlKXt2YXIgaXNMZWFwWWVhcj1fX2lzTGVhcFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKTt2YXIgbW9udGhEYXlzQ3VtdWxhdGl2ZT1pc0xlYXBZZWFyP19fTU9OVEhfREFZU19MRUFQX0NVTVVMQVRJVkU6X19NT05USF9EQVlTX1JFR1VMQVJfQ1VNVUxBVElWRTt2YXIgeWRheT1tb250aERheXNDdW11bGF0aXZlW2RhdGUuZ2V0TW9udGgoKV0rZGF0ZS5nZXREYXRlKCktMTtyZXR1cm4geWRheX1mdW5jdGlvbiBfX2xvY2FsdGltZV9qcyh0aW1lLHRtUHRyKXt2YXIgZGF0ZT1uZXcgRGF0ZShyZWFkSTUzRnJvbUk2NCh0aW1lKSoxZTMpO0hFQVAzMlt0bVB0cj4+Ml09ZGF0ZS5nZXRTZWNvbmRzKCk7SEVBUDMyW3RtUHRyKzQ+PjJdPWRhdGUuZ2V0TWludXRlcygpO0hFQVAzMlt0bVB0cis4Pj4yXT1kYXRlLmdldEhvdXJzKCk7SEVBUDMyW3RtUHRyKzEyPj4yXT1kYXRlLmdldERhdGUoKTtIRUFQMzJbdG1QdHIrMTY+PjJdPWRhdGUuZ2V0TW9udGgoKTtIRUFQMzJbdG1QdHIrMjA+PjJdPWRhdGUuZ2V0RnVsbFllYXIoKS0xOTAwO0hFQVAzMlt0bVB0cisyND4+Ml09ZGF0ZS5nZXREYXkoKTt2YXIgeWRheT1fX3lkYXlfZnJvbV9kYXRlKGRhdGUpfDA7SEVBUDMyW3RtUHRyKzI4Pj4yXT15ZGF5O0hFQVAzMlt0bVB0ciszNj4+Ml09LShkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkqNjApO3ZhciBzdGFydD1uZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksMCwxKTt2YXIgc3VtbWVyT2Zmc2V0PW5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIHdpbnRlck9mZnNldD1zdGFydC5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciBkc3Q9KHN1bW1lck9mZnNldCE9d2ludGVyT2Zmc2V0JiZkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk9PU1hdGgubWluKHdpbnRlck9mZnNldCxzdW1tZXJPZmZzZXQpKXwwO0hFQVAzMlt0bVB0ciszMj4+Ml09ZHN0O31mdW5jdGlvbiBfX21rdGltZV9qcyh0bVB0cil7dmFyIGRhdGU9bmV3IERhdGUoSEVBUDMyW3RtUHRyKzIwPj4yXSsxOTAwLEhFQVAzMlt0bVB0cisxNj4+Ml0sSEVBUDMyW3RtUHRyKzEyPj4yXSxIRUFQMzJbdG1QdHIrOD4+Ml0sSEVBUDMyW3RtUHRyKzQ+PjJdLEhFQVAzMlt0bVB0cj4+Ml0sMCk7dmFyIGRzdD1IRUFQMzJbdG1QdHIrMzI+PjJdO3ZhciBndWVzc2VkT2Zmc2V0PWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgc3RhcnQ9bmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLDAsMSk7dmFyIHN1bW1lck9mZnNldD1uZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksNiwxKS5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciB3aW50ZXJPZmZzZXQ9c3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgZHN0T2Zmc2V0PU1hdGgubWluKHdpbnRlck9mZnNldCxzdW1tZXJPZmZzZXQpO2lmKGRzdDwwKXtIRUFQMzJbdG1QdHIrMzI+PjJdPU51bWJlcihzdW1tZXJPZmZzZXQhPXdpbnRlck9mZnNldCYmZHN0T2Zmc2V0PT1ndWVzc2VkT2Zmc2V0KTt9ZWxzZSBpZihkc3Q+MCE9KGRzdE9mZnNldD09Z3Vlc3NlZE9mZnNldCkpe3ZhciBub25Ec3RPZmZzZXQ9TWF0aC5tYXgod2ludGVyT2Zmc2V0LHN1bW1lck9mZnNldCk7dmFyIHRydWVPZmZzZXQ9ZHN0PjA/ZHN0T2Zmc2V0Om5vbkRzdE9mZnNldDtkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkrKHRydWVPZmZzZXQtZ3Vlc3NlZE9mZnNldCkqNmU0KTt9SEVBUDMyW3RtUHRyKzI0Pj4yXT1kYXRlLmdldERheSgpO3ZhciB5ZGF5PV9feWRheV9mcm9tX2RhdGUoZGF0ZSl8MDtIRUFQMzJbdG1QdHIrMjg+PjJdPXlkYXk7SEVBUDMyW3RtUHRyPj4yXT1kYXRlLmdldFNlY29uZHMoKTtIRUFQMzJbdG1QdHIrND4+Ml09ZGF0ZS5nZXRNaW51dGVzKCk7SEVBUDMyW3RtUHRyKzg+PjJdPWRhdGUuZ2V0SG91cnMoKTtIRUFQMzJbdG1QdHIrMTI+PjJdPWRhdGUuZ2V0RGF0ZSgpO0hFQVAzMlt0bVB0cisxNj4+Ml09ZGF0ZS5nZXRNb250aCgpO0hFQVAzMlt0bVB0cisyMD4+Ml09ZGF0ZS5nZXRZZWFyKCk7cmV0dXJuIGRhdGUuZ2V0VGltZSgpLzFlM3wwfWZ1bmN0aW9uIF9fbW1hcF9qcyhsZW4scHJvdCxmbGFncyxmZCxvZmYsYWxsb2NhdGVkLGFkZHIpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDEzLDEsbGVuLHByb3QsZmxhZ3MsZmQsb2ZmLGFsbG9jYXRlZCxhZGRyKTt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO3ZhciByZXM9RlMubW1hcChzdHJlYW0sbGVuLG9mZixwcm90LGZsYWdzKTt2YXIgcHRyPXJlcy5wdHI7SEVBUDMyW2FsbG9jYXRlZD4+Ml09cmVzLmFsbG9jYXRlZDtIRUFQVTMyW2FkZHI+PjJdPXB0cjtyZXR1cm4gMH1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19tdW5tYXBfanMoYWRkcixsZW4scHJvdCxmbGFncyxmZCxvZmZzZXQpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE0LDEsYWRkcixsZW4scHJvdCxmbGFncyxmZCxvZmZzZXQpO3RyeXt2YXIgc3RyZWFtPVNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7aWYocHJvdCYyKXtTWVNDQUxMUy5kb01zeW5jKGFkZHIsc3RyZWFtLGxlbixmbGFncyxvZmZzZXQpO31GUy5tdW5tYXAoc3RyZWFtKTt9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIGFsbG9jYXRlVVRGOChzdHIpe3ZhciBzaXplPWxlbmd0aEJ5dGVzVVRGOChzdHIpKzE7dmFyIHJldD1fbWFsbG9jKHNpemUpO2lmKHJldClzdHJpbmdUb1VURjhBcnJheShzdHIsSEVBUDgscmV0LHNpemUpO3JldHVybiByZXR9ZnVuY3Rpb24gX190enNldF9qcyh0aW1lem9uZSxkYXlsaWdodCx0em5hbWUpe3ZhciBjdXJyZW50WWVhcj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7dmFyIHdpbnRlcj1uZXcgRGF0ZShjdXJyZW50WWVhciwwLDEpO3ZhciBzdW1tZXI9bmV3IERhdGUoY3VycmVudFllYXIsNiwxKTt2YXIgd2ludGVyT2Zmc2V0PXdpbnRlci5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciBzdW1tZXJPZmZzZXQ9c3VtbWVyLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIHN0ZFRpbWV6b25lT2Zmc2V0PU1hdGgubWF4KHdpbnRlck9mZnNldCxzdW1tZXJPZmZzZXQpO0hFQVBVMzJbdGltZXpvbmU+PjJdPXN0ZFRpbWV6b25lT2Zmc2V0KjYwO0hFQVAzMltkYXlsaWdodD4+Ml09TnVtYmVyKHdpbnRlck9mZnNldCE9c3VtbWVyT2Zmc2V0KTtmdW5jdGlvbiBleHRyYWN0Wm9uZShkYXRlKXt2YXIgbWF0Y2g9ZGF0ZS50b1RpbWVTdHJpbmcoKS5tYXRjaCgvXCgoW0EtWmEteiBdKylcKSQvKTtyZXR1cm4gbWF0Y2g/bWF0Y2hbMV06IkdNVCJ9dmFyIHdpbnRlck5hbWU9ZXh0cmFjdFpvbmUod2ludGVyKTt2YXIgc3VtbWVyTmFtZT1leHRyYWN0Wm9uZShzdW1tZXIpO3ZhciB3aW50ZXJOYW1lUHRyPWFsbG9jYXRlVVRGOCh3aW50ZXJOYW1lKTt2YXIgc3VtbWVyTmFtZVB0cj1hbGxvY2F0ZVVURjgoc3VtbWVyTmFtZSk7aWYoc3VtbWVyT2Zmc2V0PHdpbnRlck9mZnNldCl7SEVBUFUzMlt0em5hbWU+PjJdPXdpbnRlck5hbWVQdHI7SEVBUFUzMlt0em5hbWUrND4+Ml09c3VtbWVyTmFtZVB0cjt9ZWxzZSB7SEVBUFUzMlt0em5hbWU+PjJdPXN1bW1lck5hbWVQdHI7SEVBUFUzMlt0em5hbWUrND4+Ml09d2ludGVyTmFtZVB0cjt9fWZ1bmN0aW9uIF9hYm9ydCgpe2Fib3J0KCIiKTt9dmFyIHJlYWRBc21Db25zdEFyZ3NBcnJheT1bXTtmdW5jdGlvbiByZWFkQXNtQ29uc3RBcmdzKHNpZ1B0cixidWYpe3JlYWRBc21Db25zdEFyZ3NBcnJheS5sZW5ndGg9MDt2YXIgY2g7YnVmPj49Mjt3aGlsZShjaD1IRUFQVThbc2lnUHRyKytdKXtidWYrPWNoIT0xMDUmYnVmO3JlYWRBc21Db25zdEFyZ3NBcnJheS5wdXNoKGNoPT0xMDU/SEVBUDMyW2J1Zl06SEVBUEY2NFtidWYrKz4+MV0pOysrYnVmO31yZXR1cm4gcmVhZEFzbUNvbnN0QXJnc0FycmF5fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX2FzbV9jb25zdF9pbnQoY29kZSxzaWdQdHIsYXJnYnVmKXt2YXIgYXJncz1yZWFkQXNtQ29uc3RBcmdzKHNpZ1B0cixhcmdidWYpO3JldHVybiBBU01fQ09OU1RTW2NvZGVdLmFwcGx5KG51bGwsYXJncyl9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fY2hlY2tfYmxvY2tpbmdfYWxsb3dlZCgpe2lmKEVOVklST05NRU5UX0lTX05PREUpcmV0dXJuO2lmKEVOVklST05NRU5UX0lTX1dPUktFUilyZXR1cm47d2Fybk9uY2UoIkJsb2NraW5nIG9uIHRoZSBtYWluIHRocmVhZCBpcyB2ZXJ5IGRhbmdlcm91cywgc2VlIGh0dHBzOi8vZW1zY3JpcHRlbi5vcmcvZG9jcy9wb3J0aW5nL3B0aHJlYWRzLmh0bWwjYmxvY2tpbmctb24tdGhlLW1haW4tYnJvd3Nlci10aHJlYWQiKTt9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fZGF0ZV9ub3coKXtyZXR1cm4gRGF0ZS5ub3coKX1mdW5jdGlvbiBnZXRIZWFwTWF4KCl7cmV0dXJuIEhFQVBVOC5sZW5ndGh9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fZ2V0X2hlYXBfbWF4KCl7cmV0dXJuIGdldEhlYXBNYXgoKX12YXIgX2Vtc2NyaXB0ZW5fZ2V0X25vdztpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtfZW1zY3JpcHRlbl9nZXRfbm93PSgpPT57dmFyIHQ9cHJvY2Vzc1siaHJ0aW1lIl0oKTtyZXR1cm4gdFswXSoxZTMrdFsxXS8xZTZ9O31lbHNlIGlmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe19lbXNjcmlwdGVuX2dldF9ub3c9KCk9PnBlcmZvcm1hbmNlLm5vdygpLU1vZHVsZVsiX19wZXJmb3JtYW5jZV9ub3dfY2xvY2tfZHJpZnQiXTt9ZWxzZSBfZW1zY3JpcHRlbl9nZXRfbm93PSgpPT5wZXJmb3JtYW5jZS5ub3coKTtmdW5jdGlvbiBfZW1zY3JpcHRlbl9tZW1jcHlfYmlnKGRlc3Qsc3JjLG51bSl7SEVBUFU4LmNvcHlXaXRoaW4oZGVzdCxzcmMsc3JjK251bSk7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX251bV9sb2dpY2FsX2NvcmVzKCl7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSlyZXR1cm4gcmVxdWlyZSgib3MiKS5jcHVzKCkubGVuZ3RoO3JldHVybiBuYXZpZ2F0b3JbImhhcmR3YXJlQ29uY3VycmVuY3kiXX1mdW5jdGlvbiB3aXRoU3RhY2tTYXZlKGYpe3ZhciBzdGFjaz1zdGFja1NhdmUoKTt2YXIgcmV0PWYoKTtzdGFja1Jlc3RvcmUoc3RhY2spO3JldHVybiByZXR9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoaW5kZXgsc3luYyl7dmFyIG51bUNhbGxBcmdzPWFyZ3VtZW50cy5sZW5ndGgtMjt2YXIgb3V0ZXJBcmdzPWFyZ3VtZW50cztyZXR1cm4gd2l0aFN0YWNrU2F2ZSgoKT0+e3ZhciBzZXJpYWxpemVkTnVtQ2FsbEFyZ3M9bnVtQ2FsbEFyZ3M7dmFyIGFyZ3M9c3RhY2tBbGxvYyhzZXJpYWxpemVkTnVtQ2FsbEFyZ3MqOCk7dmFyIGI9YXJncz4+Mztmb3IodmFyIGk9MDtpPG51bUNhbGxBcmdzO2krKyl7dmFyIGFyZz1vdXRlckFyZ3NbMitpXTtIRUFQRjY0W2IraV09YXJnO31yZXR1cm4gX2Vtc2NyaXB0ZW5fcnVuX2luX21haW5fcnVudGltZV90aHJlYWRfanMoaW5kZXgsc2VyaWFsaXplZE51bUNhbGxBcmdzLGFyZ3Msc3luYyl9KX12YXIgX2Vtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qc19jYWxsQXJncz1bXTtmdW5jdGlvbiBfZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzKGluZGV4LG51bUNhbGxBcmdzLGFyZ3Mpe19lbXNjcmlwdGVuX3JlY2VpdmVfb25fbWFpbl90aHJlYWRfanNfY2FsbEFyZ3MubGVuZ3RoPW51bUNhbGxBcmdzO3ZhciBiPWFyZ3M+PjM7Zm9yKHZhciBpPTA7aTxudW1DYWxsQXJncztpKyspe19lbXNjcmlwdGVuX3JlY2VpdmVfb25fbWFpbl90aHJlYWRfanNfY2FsbEFyZ3NbaV09SEVBUEY2NFtiK2ldO312YXIgaXNFbUFzbUNvbnN0PWluZGV4PDA7dmFyIGZ1bmM9IWlzRW1Bc21Db25zdD9wcm94aWVkRnVuY3Rpb25UYWJsZVtpbmRleF06QVNNX0NPTlNUU1staW5kZXgtMV07cmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxfZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzX2NhbGxBcmdzKX1mdW5jdGlvbiBhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeShyZXF1ZXN0ZWRTaXplKXthYm9ydCgiT09NIik7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwKHJlcXVlc3RlZFNpemUpe0hFQVBVOC5sZW5ndGg7YWJvcnRPbkNhbm5vdEdyb3dNZW1vcnkoKTt9ZnVuY3Rpb24gY29udmVydEZyYW1lVG9QQyhmcmFtZSl7YWJvcnQoIkNhbm5vdCB1c2UgY29udmVydEZyYW1lVG9QQyAobmVlZGVkIGJ5IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcykgd2l0aG91dCAtc1VTRV9PRkZTRVRfQ09OVkVSVEVSIik7cmV0dXJuIDB9dmFyIFVOV0lORF9DQUNIRT17fTtmdW5jdGlvbiBzYXZlSW5VbndpbmRDYWNoZShjYWxsc3RhY2spe2NhbGxzdGFjay5mb3JFYWNoKGZyYW1lPT57Y29udmVydEZyYW1lVG9QQygpO30pO31mdW5jdGlvbiBfZW1zY3JpcHRlbl9zdGFja19zbmFwc2hvdCgpe3ZhciBjYWxsc3RhY2s9anNTdGFja1RyYWNlKCkuc3BsaXQoIlxuIik7aWYoY2FsbHN0YWNrWzBdPT0iRXJyb3IiKXtjYWxsc3RhY2suc2hpZnQoKTt9c2F2ZUluVW53aW5kQ2FjaGUoY2FsbHN0YWNrKTtVTldJTkRfQ0FDSEUubGFzdF9hZGRyPWNvbnZlcnRGcmFtZVRvUEMoY2FsbHN0YWNrWzNdKTtVTldJTkRfQ0FDSEUubGFzdF9zdGFjaz1jYWxsc3RhY2s7cmV0dXJuIFVOV0lORF9DQUNIRS5sYXN0X2FkZHJ9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fc3RhY2tfdW53aW5kX2J1ZmZlcihhZGRyLGJ1ZmZlcixjb3VudCl7dmFyIHN0YWNrO2lmKFVOV0lORF9DQUNIRS5sYXN0X2FkZHI9PWFkZHIpe3N0YWNrPVVOV0lORF9DQUNIRS5sYXN0X3N0YWNrO31lbHNlIHtzdGFjaz1qc1N0YWNrVHJhY2UoKS5zcGxpdCgiXG4iKTtpZihzdGFja1swXT09IkVycm9yIil7c3RhY2suc2hpZnQoKTt9c2F2ZUluVW53aW5kQ2FjaGUoc3RhY2spO312YXIgb2Zmc2V0PTM7d2hpbGUoc3RhY2tbb2Zmc2V0XSYmY29udmVydEZyYW1lVG9QQyhzdGFja1tvZmZzZXRdKSE9YWRkcil7KytvZmZzZXQ7fWZvcih2YXIgaT0wO2k8Y291bnQmJnN0YWNrW2krb2Zmc2V0XTsrK2kpe0hFQVAzMltidWZmZXIraSo0Pj4yXT1jb252ZXJ0RnJhbWVUb1BDKHN0YWNrW2krb2Zmc2V0XSk7fXJldHVybiBpfWZ1bmN0aW9uIF9lbXNjcmlwdGVuX3Vud2luZF90b19qc19ldmVudF9sb29wKCl7dGhyb3cgInVud2luZCJ9dmFyIEVOVj17fTtmdW5jdGlvbiBnZXRFeGVjdXRhYmxlTmFtZSgpe3JldHVybiB0aGlzUHJvZ3JhbXx8Ii4vdGhpcy5wcm9ncmFtIn1mdW5jdGlvbiBnZXRFbnZTdHJpbmdzKCl7aWYoIWdldEVudlN0cmluZ3Muc3RyaW5ncyl7dmFyIGxhbmc9KHR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCI7dmFyIGVudj17IlVTRVIiOiJ3ZWJfdXNlciIsIkxPR05BTUUiOiJ3ZWJfdXNlciIsIlBBVEgiOiIvIiwiUFdEIjoiLyIsIkhPTUUiOiIvaG9tZS93ZWJfdXNlciIsIkxBTkciOmxhbmcsIl8iOmdldEV4ZWN1dGFibGVOYW1lKCl9O2Zvcih2YXIgeCBpbiBFTlYpe2lmKEVOVlt4XT09PXVuZGVmaW5lZClkZWxldGUgZW52W3hdO2Vsc2UgZW52W3hdPUVOVlt4XTt9dmFyIHN0cmluZ3M9W107Zm9yKHZhciB4IGluIGVudil7c3RyaW5ncy5wdXNoKHgrIj0iK2Vudlt4XSk7fWdldEVudlN0cmluZ3Muc3RyaW5ncz1zdHJpbmdzO31yZXR1cm4gZ2V0RW52U3RyaW5ncy5zdHJpbmdzfWZ1bmN0aW9uIHdyaXRlQXNjaWlUb01lbW9yeShzdHIsYnVmZmVyLGRvbnRBZGROdWxsKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXtIRUFQOFtidWZmZXIrKz4+MF09c3RyLmNoYXJDb2RlQXQoaSk7fWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXI+PjBdPTA7fWZ1bmN0aW9uIF9lbnZpcm9uX2dldChfX2Vudmlyb24sZW52aXJvbl9idWYpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE1LDEsX19lbnZpcm9uLGVudmlyb25fYnVmKTt2YXIgYnVmU2l6ZT0wO2dldEVudlN0cmluZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uKHN0cmluZyxpKXt2YXIgcHRyPWVudmlyb25fYnVmK2J1ZlNpemU7SEVBUFUzMltfX2Vudmlyb24raSo0Pj4yXT1wdHI7d3JpdGVBc2NpaVRvTWVtb3J5KHN0cmluZyxwdHIpO2J1ZlNpemUrPXN0cmluZy5sZW5ndGgrMTt9KTtyZXR1cm4gMH1mdW5jdGlvbiBfZW52aXJvbl9zaXplc19nZXQocGVudmlyb25fY291bnQscGVudmlyb25fYnVmX3NpemUpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE2LDEscGVudmlyb25fY291bnQscGVudmlyb25fYnVmX3NpemUpO3ZhciBzdHJpbmdzPWdldEVudlN0cmluZ3MoKTtIRUFQVTMyW3BlbnZpcm9uX2NvdW50Pj4yXT1zdHJpbmdzLmxlbmd0aDt2YXIgYnVmU2l6ZT0wO3N0cmluZ3MuZm9yRWFjaChmdW5jdGlvbihzdHJpbmcpe2J1ZlNpemUrPXN0cmluZy5sZW5ndGgrMTt9KTtIRUFQVTMyW3BlbnZpcm9uX2J1Zl9zaXplPj4yXT1idWZTaXplO3JldHVybiAwfWZ1bmN0aW9uIF9mZF9jbG9zZShmZCl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoMTcsMSxmZCk7dHJ5e3ZhciBzdHJlYW09U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTtGUy5jbG9zZShzdHJlYW0pO3JldHVybiAwfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIGUuZXJybm99fWZ1bmN0aW9uIGRvUmVhZHYoc3RyZWFtLGlvdixpb3ZjbnQsb2Zmc2V0KXt2YXIgcmV0PTA7Zm9yKHZhciBpPTA7aTxpb3ZjbnQ7aSsrKXt2YXIgcHRyPUhFQVBVMzJbaW92Pj4yXTt2YXIgbGVuPUhFQVBVMzJbaW92KzQ+PjJdO2lvdis9ODt2YXIgY3Vycj1GUy5yZWFkKHN0cmVhbSxIRUFQOCxwdHIsbGVuLG9mZnNldCk7aWYoY3VycjwwKXJldHVybiAtMTtyZXQrPWN1cnI7aWYoY3VycjxsZW4pYnJlYWt9cmV0dXJuIHJldH1mdW5jdGlvbiBfZmRfcmVhZChmZCxpb3YsaW92Y250LHBudW0pe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE4LDEsZmQsaW92LGlvdmNudCxwbnVtKTt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO3ZhciBudW09ZG9SZWFkdihzdHJlYW0saW92LGlvdmNudCk7SEVBUFUzMltwbnVtPj4yXT1udW07cmV0dXJuIDB9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319ZnVuY3Rpb24gY29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQobG8saGkpe3JldHVybiBoaSsyMDk3MTUyPj4+MDw0MTk0MzA1LSEhbG8/KGxvPj4+MCkraGkqNDI5NDk2NzI5NjpOYU59ZnVuY3Rpb24gX2ZkX3NlZWsoZmQsb2Zmc2V0X2xvdyxvZmZzZXRfaGlnaCx3aGVuY2UsbmV3T2Zmc2V0KXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygxOSwxLGZkLG9mZnNldF9sb3csb2Zmc2V0X2hpZ2gsd2hlbmNlLG5ld09mZnNldCk7dHJ5e3ZhciBvZmZzZXQ9Y29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQob2Zmc2V0X2xvdyxvZmZzZXRfaGlnaCk7aWYoaXNOYU4ob2Zmc2V0KSlyZXR1cm4gNjE7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO0ZTLmxsc2VlayhzdHJlYW0sb2Zmc2V0LHdoZW5jZSk7dGVtcEk2ND1bc3RyZWFtLnBvc2l0aW9uPj4+MCwodGVtcERvdWJsZT1zdHJlYW0ucG9zaXRpb24sK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW25ld09mZnNldD4+Ml09dGVtcEk2NFswXSxIRUFQMzJbbmV3T2Zmc2V0KzQ+PjJdPXRlbXBJNjRbMV07aWYoc3RyZWFtLmdldGRlbnRzJiZvZmZzZXQ9PT0wJiZ3aGVuY2U9PT0wKXN0cmVhbS5nZXRkZW50cz1udWxsO3JldHVybiAwfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIGUuZXJybm99fWZ1bmN0aW9uIGRvV3JpdGV2KHN0cmVhbSxpb3YsaW92Y250LG9mZnNldCl7dmFyIHJldD0wO2Zvcih2YXIgaT0wO2k8aW92Y250O2krKyl7dmFyIHB0cj1IRUFQVTMyW2lvdj4+Ml07dmFyIGxlbj1IRUFQVTMyW2lvdis0Pj4yXTtpb3YrPTg7dmFyIGN1cnI9RlMud3JpdGUoc3RyZWFtLEhFQVA4LHB0cixsZW4sb2Zmc2V0KTtpZihjdXJyPDApcmV0dXJuIC0xO3JldCs9Y3Vycjt9cmV0dXJuIHJldH1mdW5jdGlvbiBfZmRfd3JpdGUoZmQsaW92LGlvdmNudCxwbnVtKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygyMCwxLGZkLGlvdixpb3ZjbnQscG51bSk7dHJ5e3ZhciBzdHJlYW09U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTt2YXIgbnVtPWRvV3JpdGV2KHN0cmVhbSxpb3YsaW92Y250KTtIRUFQVTMyW3BudW0+PjJdPW51bTtyZXR1cm4gMH1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiBlLmVycm5vfX1mdW5jdGlvbiBfZ2V0ZW50cm9weShidWZmZXIsc2l6ZSl7aWYoIV9nZXRlbnRyb3B5LnJhbmRvbURldmljZSl7X2dldGVudHJvcHkucmFuZG9tRGV2aWNlPWdldFJhbmRvbURldmljZSgpO31mb3IodmFyIGk9MDtpPHNpemU7aSsrKXtIRUFQOFtidWZmZXIraT4+MF09X2dldGVudHJvcHkucmFuZG9tRGV2aWNlKCk7fXJldHVybiAwfWZ1bmN0aW9uIF9fYXJyYXlTdW0oYXJyYXksaW5kZXgpe3ZhciBzdW09MDtmb3IodmFyIGk9MDtpPD1pbmRleDtzdW0rPWFycmF5W2krK10pe31yZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpO31lbHNlIHtuZXdEYXRlLnNldE1vbnRoKDApO25ld0RhdGUuc2V0RnVsbFllYXIobmV3RGF0ZS5nZXRGdWxsWWVhcigpKzEpO319ZWxzZSB7bmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpK2RheXMpO3JldHVybiBuZXdEYXRlfX1yZXR1cm4gbmV3RGF0ZX1mdW5jdGlvbiB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXksYnVmZmVyKXtIRUFQOC5zZXQoYXJyYXksYnVmZmVyKTt9ZnVuY3Rpb24gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pe3ZhciB0bV96b25lPUhFQVAzMlt0bSs0MD4+Ml07dmFyIGRhdGU9e3RtX3NlYzpIRUFQMzJbdG0+PjJdLHRtX21pbjpIRUFQMzJbdG0rND4+Ml0sdG1faG91cjpIRUFQMzJbdG0rOD4+Ml0sdG1fbWRheTpIRUFQMzJbdG0rMTI+PjJdLHRtX21vbjpIRUFQMzJbdG0rMTY+PjJdLHRtX3llYXI6SEVBUDMyW3RtKzIwPj4yXSx0bV93ZGF5OkhFQVAzMlt0bSsyND4+Ml0sdG1feWRheTpIRUFQMzJbdG0rMjg+PjJdLHRtX2lzZHN0OkhFQVAzMlt0bSszMj4+Ml0sdG1fZ210b2ZmOkhFQVAzMlt0bSszNj4+Ml0sdG1fem9uZTp0bV96b25lP1VURjhUb1N0cmluZyh0bV96b25lKToiIn07dmFyIHBhdHRlcm49VVRGOFRvU3RyaW5nKGZvcm1hdCk7dmFyIEVYUEFOU0lPTl9SVUxFU18xPXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZLSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIsIiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIlZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKTt9dmFyIFdFRUtEQVlTPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXTt2YXIgTU9OVEhTPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXTtmdW5jdGlvbiBsZWFkaW5nU29tZXRoaW5nKHZhbHVlLGRpZ2l0cyxjaGFyYWN0ZXIpe3ZhciBzdHI9dHlwZW9mIHZhbHVlPT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHI7fXJldHVybiBzdHJ9ZnVuY3Rpb24gbGVhZGluZ051bGxzKHZhbHVlLGRpZ2l0cyl7cmV0dXJuIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLCIwIil9ZnVuY3Rpb24gY29tcGFyZUJ5RGF5KGRhdGUxLGRhdGUyKXtmdW5jdGlvbiBzZ24odmFsdWUpe3JldHVybiB2YWx1ZTwwPy0xOnZhbHVlPjA/MTowfXZhciBjb21wYXJlO2lmKChjb21wYXJlPXNnbihkYXRlMS5nZXRGdWxsWWVhcigpLWRhdGUyLmdldEZ1bGxZZWFyKCkpKT09PTApe2lmKChjb21wYXJlPXNnbihkYXRlMS5nZXRNb250aCgpLWRhdGUyLmdldE1vbnRoKCkpKT09PTApe2NvbXBhcmU9c2duKGRhdGUxLmdldERhdGUoKS1kYXRlMi5nZXREYXRlKCkpO319cmV0dXJuIGNvbXBhcmV9ZnVuY3Rpb24gZ2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aCl7c3dpdGNoKGphbkZvdXJ0aC5nZXREYXkoKSl7Y2FzZSAwOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIGphbkZvdXJ0aDtjYXNlIDI6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMyk7Y2FzZSAzOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzEpO2Nhc2UgNjpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIGdldFdlZWtCYXNlZFllYXIoZGF0ZSl7dmFyIHRoaXNEYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCksMCw0KTt2YXIgamFuRm91cnRoTmV4dFllYXI9bmV3IERhdGUodGhpc0RhdGUuZ2V0RnVsbFllYXIoKSsxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydFRoaXNZZWFyLHRoaXNEYXRlKTw9MCl7aWYoY29tcGFyZUJ5RGF5KGZpcnN0V2Vla1N0YXJ0TmV4dFllYXIsdGhpc0RhdGUpPD0wKXtyZXR1cm4gdGhpc0RhdGUuZ2V0RnVsbFllYXIoKSsxfXJldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfXJldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9dmFyIEVYUEFOU0lPTl9SVUxFU18yPXsiJWEiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBXRUVLREFZU1tkYXRlLnRtX3dkYXldLnN1YnN0cmluZygwLDMpfSwiJUEiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBXRUVLREFZU1tkYXRlLnRtX3dkYXldfSwiJWIiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSwiJUIiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dfSwiJUMiOmZ1bmN0aW9uKGRhdGUpe3ZhciB5ZWFyPWRhdGUudG1feWVhcisxOTAwO3JldHVybiBsZWFkaW5nTnVsbHMoeWVhci8xMDB8MCwyKX0sIiVkIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fbWRheSwyKX0sIiVlIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSwiJWciOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpfSwiJUciOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpfSwiJUgiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSwiJUkiOmZ1bmN0aW9uKGRhdGUpe3ZhciB0d2VsdmVIb3VyPWRhdGUudG1faG91cjtpZih0d2VsdmVIb3VyPT0wKXR3ZWx2ZUhvdXI9MTI7ZWxzZSBpZih0d2VsdmVIb3VyPjEyKXR3ZWx2ZUhvdXItPTEyO3JldHVybiBsZWFkaW5nTnVsbHModHdlbHZlSG91ciwyKX0sIiVqIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fbWRheStfX2FycmF5U3VtKF9faXNMZWFwWWVhcihkYXRlLnRtX3llYXIrMTkwMCk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZGF0ZS50bV9tb24tMSksMyl9LCIlbSI6ZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21vbisxLDIpfSwiJU0iOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9LCIlbiI6ZnVuY3Rpb24oKXtyZXR1cm4gIlxuIn0sIiVwIjpmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+PTAmJmRhdGUudG1faG91cjwxMil7cmV0dXJuICJBTSJ9cmV0dXJuICJQTSJ9LCIlUyI6ZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX3NlYywyKX0sIiV0IjpmdW5jdGlvbigpe3JldHVybiAiXHQifSwiJXUiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBkYXRlLnRtX3dkYXl8fDd9LCIlVSI6ZnVuY3Rpb24oZGF0ZSl7dmFyIGRheXM9ZGF0ZS50bV95ZGF5KzctZGF0ZS50bV93ZGF5O3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5mbG9vcihkYXlzLzcpLDIpfSwiJVYiOmZ1bmN0aW9uKGRhdGUpe3ZhciB2YWw9TWF0aC5mbG9vcigoZGF0ZS50bV95ZGF5KzctKGRhdGUudG1fd2RheSs2KSU3KS83KTtpZigoZGF0ZS50bV93ZGF5KzM3MS1kYXRlLnRtX3lkYXktMiklNzw9Mil7dmFsKys7fWlmKCF2YWwpe3ZhbD01Mjt2YXIgZGVjMzE9KGRhdGUudG1fd2RheSs3LWRhdGUudG1feWRheS0xKSU3O2lmKGRlYzMxPT00fHxkZWMzMT09NSYmX19pc0xlYXBZZWFyKGRhdGUudG1feWVhciU0MDAtMSkpe3ZhbCsrO319ZWxzZSBpZih2YWw9PTUzKXt2YXIgamFuMT0oZGF0ZS50bV93ZGF5KzM3MS1kYXRlLnRtX3lkYXkpJTc7aWYoamFuMSE9NCYmKGphbjEhPTN8fCFfX2lzTGVhcFllYXIoZGF0ZS50bV95ZWFyKSkpdmFsPTE7fXJldHVybiBsZWFkaW5nTnVsbHModmFsLDIpfSwiJXciOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBkYXRlLnRtX3dkYXl9LCIlVyI6ZnVuY3Rpb24oZGF0ZSl7dmFyIGRheXM9ZGF0ZS50bV95ZGF5KzctKGRhdGUudG1fd2RheSs2KSU3O3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5mbG9vcihkYXlzLzcpLDIpfSwiJXkiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiAoZGF0ZS50bV95ZWFyKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpfSwiJVkiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBkYXRlLnRtX3llYXIrMTkwMH0sIiV6IjpmdW5jdGlvbihkYXRlKXt2YXIgb2ZmPWRhdGUudG1fZ210b2ZmO3ZhciBhaGVhZD1vZmY+PTA7b2ZmPU1hdGguYWJzKG9mZikvNjA7b2ZmPW9mZi82MCoxMDArb2ZmJTYwO3JldHVybiAoYWhlYWQ/IisiOiItIikrU3RyaW5nKCIwMDAwIitvZmYpLnNsaWNlKC00KX0sIiVaIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV96b25lfSwiJSUiOmZ1bmN0aW9uKCl7cmV0dXJuICIlIn19O3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKC8lJS9nLCJcMFwwIik7Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluY2x1ZGVzKHJ1bGUpKXtwYXR0ZXJuPXBhdHRlcm4ucmVwbGFjZShuZXcgUmVnRXhwKHJ1bGUsImciKSxFWFBBTlNJT05fUlVMRVNfMltydWxlXShkYXRlKSk7fX1wYXR0ZXJuPXBhdHRlcm4ucmVwbGFjZSgvXDBcMC9nLCIlIik7dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtLGxvYyl7cmV0dXJuIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKX1QVGhyZWFkLmluaXQoKTt2YXIgRlNOb2RlPWZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIXBhcmVudCl7cGFyZW50PXRoaXM7fXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2O307dmFyIHJlYWRNb2RlPTI5Mnw3Mzt2YXIgd3JpdGVNb2RlPTE0NjtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGU05vZGUucHJvdG90eXBlLHtyZWFkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gKHRoaXMubW9kZSZyZWFkTW9kZSk9PT1yZWFkTW9kZX0sc2V0OmZ1bmN0aW9uKHZhbCl7dmFsP3RoaXMubW9kZXw9cmVhZE1vZGU6dGhpcy5tb2RlJj1+cmVhZE1vZGU7fX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAodGhpcy5tb2RlJndyaXRlTW9kZSk9PT13cml0ZU1vZGV9LHNldDpmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGU7fX0saXNGb2xkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBGUy5pc0Rpcih0aGlzLm1vZGUpfX0saXNEZXZpY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfX19KTtGUy5GU05vZGU9RlNOb2RlO0ZTLnN0YXRpY0luaXQoKTtNb2R1bGVbIkZTX2NyZWF0ZVBhdGgiXT1GUy5jcmVhdGVQYXRoO01vZHVsZVsiRlNfY3JlYXRlRGF0YUZpbGUiXT1GUy5jcmVhdGVEYXRhRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZVByZWxvYWRlZEZpbGUiXT1GUy5jcmVhdGVQcmVsb2FkZWRGaWxlO01vZHVsZVsiRlNfdW5saW5rIl09RlMudW5saW5rO01vZHVsZVsiRlNfY3JlYXRlTGF6eUZpbGUiXT1GUy5jcmVhdGVMYXp5RmlsZTtNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtlbWJpbmRfaW5pdF9jaGFyQ29kZXMoKTtCaW5kaW5nRXJyb3I9TW9kdWxlWyJCaW5kaW5nRXJyb3IiXT1leHRlbmRFcnJvcihFcnJvciwiQmluZGluZ0Vycm9yIik7SW50ZXJuYWxFcnJvcj1Nb2R1bGVbIkludGVybmFsRXJyb3IiXT1leHRlbmRFcnJvcihFcnJvciwiSW50ZXJuYWxFcnJvciIpO2luaXRfQ2xhc3NIYW5kbGUoKTtpbml0X2VtYmluZCgpO2luaXRfUmVnaXN0ZXJlZFBvaW50ZXIoKTtVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEVycm9yLCJVbmJvdW5kVHlwZUVycm9yIik7aW5pdF9lbXZhbCgpO3ZhciBwcm94aWVkRnVuY3Rpb25UYWJsZT1bbnVsbCxfcHJvY19leGl0LGV4aXRPbk1haW5UaHJlYWQscHRocmVhZENyZWF0ZVByb3hpZWQsX19fc3lzY2FsbF9mY250bDY0LF9fX3N5c2NhbGxfZnN0YXQ2NCxfX19zeXNjYWxsX2dldGRlbnRzNjQsX19fc3lzY2FsbF9pb2N0bCxfX19zeXNjYWxsX2xzdGF0NjQsX19fc3lzY2FsbF9uZXdmc3RhdGF0LF9fX3N5c2NhbGxfb3BlbmF0LF9fX3N5c2NhbGxfc3RhdDY0LF9fX3N5c2NhbGxfdW5saW5rYXQsX19tbWFwX2pzLF9fbXVubWFwX2pzLF9lbnZpcm9uX2dldCxfZW52aXJvbl9zaXplc19nZXQsX2ZkX2Nsb3NlLF9mZF9yZWFkLF9mZF9zZWVrLF9mZF93cml0ZV07dmFyIGFzbUxpYnJhcnlBcmc9eyJIYXZlT2Zmc2V0Q29udmVydGVyIjpIYXZlT2Zmc2V0Q29udmVydGVyLCJfVW53aW5kX0JhY2t0cmFjZSI6X19VbndpbmRfQmFja3RyYWNlLCJfVW53aW5kX0dldElQIjpfX1Vud2luZF9HZXRJUCwiX19lbXNjcmlwdGVuX2luaXRfbWFpbl90aHJlYWRfanMiOl9fX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qcywiX19lbXNjcmlwdGVuX3RocmVhZF9jbGVhbnVwIjpfX19lbXNjcmlwdGVuX3RocmVhZF9jbGVhbnVwLCJfX3B0aHJlYWRfY3JlYXRlX2pzIjpfX19wdGhyZWFkX2NyZWF0ZV9qcywiX19zeXNjYWxsX2ZjbnRsNjQiOl9fX3N5c2NhbGxfZmNudGw2NCwiX19zeXNjYWxsX2ZzdGF0NjQiOl9fX3N5c2NhbGxfZnN0YXQ2NCwiX19zeXNjYWxsX2dldGRlbnRzNjQiOl9fX3N5c2NhbGxfZ2V0ZGVudHM2NCwiX19zeXNjYWxsX2lvY3RsIjpfX19zeXNjYWxsX2lvY3RsLCJfX3N5c2NhbGxfbHN0YXQ2NCI6X19fc3lzY2FsbF9sc3RhdDY0LCJfX3N5c2NhbGxfbmV3ZnN0YXRhdCI6X19fc3lzY2FsbF9uZXdmc3RhdGF0LCJfX3N5c2NhbGxfb3BlbmF0IjpfX19zeXNjYWxsX29wZW5hdCwiX19zeXNjYWxsX3N0YXQ2NCI6X19fc3lzY2FsbF9zdGF0NjQsIl9fc3lzY2FsbF91bmxpbmthdCI6X19fc3lzY2FsbF91bmxpbmthdCwiX2RsaW5pdCI6X19kbGluaXQsIl9kbG9wZW5fanMiOl9fZGxvcGVuX2pzLCJfZGxzeW1fanMiOl9fZGxzeW1fanMsIl9lbWJpbmRfcmVnaXN0ZXJfYmlnaW50IjpfX2VtYmluZF9yZWdpc3Rlcl9iaWdpbnQsIl9lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX2VtYmluZF9yZWdpc3Rlcl9jbGFzcyI6X19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MsIl9lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24iOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NsYXNzX2Z1bmN0aW9uLCJfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19jb25zdHJ1Y3RvciwiX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiI6X19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb24sIl9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiOl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsLCJfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbiI6X19lbWJpbmRfcmVnaXN0ZXJfZnVuY3Rpb24sIl9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciI6X19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciwiX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyI6X19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZywiX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyI6X19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcsIl9lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX2Vtc2NyaXB0ZW5fZGVmYXVsdF9wdGhyZWFkX3N0YWNrX3NpemUiOl9fZW1zY3JpcHRlbl9kZWZhdWx0X3B0aHJlYWRfc3RhY2tfc2l6ZSwiX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWMiOl9fZW1zY3JpcHRlbl9nZXRfbm93X2lzX21vbm90b25pYywiX2Vtc2NyaXB0ZW5fbm90aWZ5X3Rhc2tfcXVldWUiOl9fZW1zY3JpcHRlbl9ub3RpZnlfdGFza19xdWV1ZSwiX2Vtc2NyaXB0ZW5fc2V0X29mZnNjcmVlbmNhbnZhc19zaXplIjpfX2Vtc2NyaXB0ZW5fc2V0X29mZnNjcmVlbmNhbnZhc19zaXplLCJfZW12YWxfY2FsbF92b2lkX21ldGhvZCI6X19lbXZhbF9jYWxsX3ZvaWRfbWV0aG9kLCJfZW12YWxfZGVjcmVmIjpfX2VtdmFsX2RlY3JlZiwiX2VtdmFsX2dldF9tZXRob2RfY2FsbGVyIjpfX2VtdmFsX2dldF9tZXRob2RfY2FsbGVyLCJfZW12YWxfaW5jcmVmIjpfX2VtdmFsX2luY3JlZiwiX2VtdmFsX3Rha2VfdmFsdWUiOl9fZW12YWxfdGFrZV92YWx1ZSwiX2dtdGltZV9qcyI6X19nbXRpbWVfanMsIl9sb2NhbHRpbWVfanMiOl9fbG9jYWx0aW1lX2pzLCJfbWt0aW1lX2pzIjpfX21rdGltZV9qcywiX21tYXBfanMiOl9fbW1hcF9qcywiX211bm1hcF9qcyI6X19tdW5tYXBfanMsIl90enNldF9qcyI6X190enNldF9qcywiYWJvcnQiOl9hYm9ydCwiZW1zY3JpcHRlbl9hc21fY29uc3RfaW50IjpfZW1zY3JpcHRlbl9hc21fY29uc3RfaW50LCJlbXNjcmlwdGVuX2NoZWNrX2Jsb2NraW5nX2FsbG93ZWQiOl9lbXNjcmlwdGVuX2NoZWNrX2Jsb2NraW5nX2FsbG93ZWQsImVtc2NyaXB0ZW5fZGF0ZV9ub3ciOl9lbXNjcmlwdGVuX2RhdGVfbm93LCJlbXNjcmlwdGVuX2dldF9oZWFwX21heCI6X2Vtc2NyaXB0ZW5fZ2V0X2hlYXBfbWF4LCJlbXNjcmlwdGVuX2dldF9ub3ciOl9lbXNjcmlwdGVuX2dldF9ub3csImVtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiZW1zY3JpcHRlbl9udW1fbG9naWNhbF9jb3JlcyI6X2Vtc2NyaXB0ZW5fbnVtX2xvZ2ljYWxfY29yZXMsImVtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qcyI6X2Vtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qcywiZW1zY3JpcHRlbl9yZXNpemVfaGVhcCI6X2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAsImVtc2NyaXB0ZW5fc3RhY2tfc25hcHNob3QiOl9lbXNjcmlwdGVuX3N0YWNrX3NuYXBzaG90LCJlbXNjcmlwdGVuX3N0YWNrX3Vud2luZF9idWZmZXIiOl9lbXNjcmlwdGVuX3N0YWNrX3Vud2luZF9idWZmZXIsImVtc2NyaXB0ZW5fdW53aW5kX3RvX2pzX2V2ZW50X2xvb3AiOl9lbXNjcmlwdGVuX3Vud2luZF90b19qc19ldmVudF9sb29wLCJlbnZpcm9uX2dldCI6X2Vudmlyb25fZ2V0LCJlbnZpcm9uX3NpemVzX2dldCI6X2Vudmlyb25fc2l6ZXNfZ2V0LCJleGl0IjpfZXhpdCwiZmRfY2xvc2UiOl9mZF9jbG9zZSwiZmRfcmVhZCI6X2ZkX3JlYWQsImZkX3NlZWsiOl9mZF9zZWVrLCJmZF93cml0ZSI6X2ZkX3dyaXRlLCJnZXRlbnRyb3B5IjpfZ2V0ZW50cm9weSwibWVtb3J5Ijp3YXNtTWVtb3J5fHxNb2R1bGVbIndhc21NZW1vcnkiXSwic3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2x9O2NyZWF0ZVdhc20oKTtNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdPU1vZHVsZVsiYXNtIl1bIl9fd2FzbV9jYWxsX2N0b3JzIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9fX2Vycm5vX2xvY2F0aW9uPU1vZHVsZVsiX19fZXJybm9fbG9jYXRpb24iXT1mdW5jdGlvbigpe3JldHVybiAoX19fZXJybm9fbG9jYXRpb249TW9kdWxlWyJfX19lcnJub19sb2NhdGlvbiJdPU1vZHVsZVsiYXNtIl1bIl9fZXJybm9fbG9jYXRpb24iXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX21hbGxvYz1Nb2R1bGVbIl9tYWxsb2MiXT1mdW5jdGlvbigpe3JldHVybiAoX21hbGxvYz1Nb2R1bGVbIl9tYWxsb2MiXT1Nb2R1bGVbImFzbSJdWyJtYWxsb2MiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2ZyZWU9TW9kdWxlWyJfZnJlZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfZnJlZT1Nb2R1bGVbIl9mcmVlIl09TW9kdWxlWyJhc20iXVsiZnJlZSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfcHRocmVhZF9zZWxmPU1vZHVsZVsiX3B0aHJlYWRfc2VsZiJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfcHRocmVhZF9zZWxmPU1vZHVsZVsiX3B0aHJlYWRfc2VsZiJdPU1vZHVsZVsiYXNtIl1bInB0aHJlYWRfc2VsZiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19lbXNjcmlwdGVuX3Rsc19pbml0Il09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX19lbXNjcmlwdGVuX3Rsc19pbml0Il09TW9kdWxlWyJhc20iXVsiX2Vtc2NyaXB0ZW5fdGxzX2luaXQiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2Vtc2NyaXB0ZW5fYnVpbHRpbl9tZW1hbGlnbj1Nb2R1bGVbIl9lbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24iXT1mdW5jdGlvbigpe3JldHVybiAoX2Vtc2NyaXB0ZW5fYnVpbHRpbl9tZW1hbGlnbj1Nb2R1bGVbIl9lbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24iXT1Nb2R1bGVbImFzbSJdWyJlbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24iXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX19fZ2V0VHlwZU5hbWU9TW9kdWxlWyJfX19nZXRUeXBlTmFtZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX19nZXRUeXBlTmFtZT1Nb2R1bGVbIl9fX2dldFR5cGVOYW1lIl09TW9kdWxlWyJhc20iXVsiX19nZXRUeXBlTmFtZSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19lbWJpbmRfaW5pdGlhbGl6ZV9iaW5kaW5ncyJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbIl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MiXT1Nb2R1bGVbImFzbSJdWyJfZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbIl9fX2RsX3NldGVyciJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbIl9fX2RsX3NldGVyciJdPU1vZHVsZVsiYXNtIl1bIl9fZGxfc2V0ZXJyIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdD1Nb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdCJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQ9TW9kdWxlWyJfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQiXT1Nb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90aHJlYWRfaW5pdCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkIl09TW9kdWxlWyJhc20iXVsiX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbIl9lbXNjcmlwdGVuX21haW5fdGhyZWFkX3Byb2Nlc3NfcXVldWVkX2NhbGxzIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX2Vtc2NyaXB0ZW5fbWFpbl90aHJlYWRfcHJvY2Vzc19xdWV1ZWRfY2FsbHMiXT1Nb2R1bGVbImFzbSJdWyJlbXNjcmlwdGVuX21haW5fdGhyZWFkX3Byb2Nlc3NfcXVldWVkX2NhbGxzIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJfZW1zY3JpcHRlbl9tYWluX2Jyb3dzZXJfdGhyZWFkX2lkIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX2Vtc2NyaXB0ZW5fbWFpbl9icm93c2VyX3RocmVhZF9pZCJdPU1vZHVsZVsiYXNtIl1bImVtc2NyaXB0ZW5fbWFpbl9icm93c2VyX3RocmVhZF9pZCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfZW1zY3JpcHRlbl9ydW5faW5fbWFpbl9ydW50aW1lX3RocmVhZF9qcz1Nb2R1bGVbIl9lbXNjcmlwdGVuX3J1bl9pbl9tYWluX3J1bnRpbWVfdGhyZWFkX2pzIl09ZnVuY3Rpb24oKXtyZXR1cm4gKF9lbXNjcmlwdGVuX3J1bl9pbl9tYWluX3J1bnRpbWVfdGhyZWFkX2pzPU1vZHVsZVsiX2Vtc2NyaXB0ZW5fcnVuX2luX21haW5fcnVudGltZV90aHJlYWRfanMiXT1Nb2R1bGVbImFzbSJdWyJlbXNjcmlwdGVuX3J1bl9pbl9tYWluX3J1bnRpbWVfdGhyZWFkX2pzIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJfZW1zY3JpcHRlbl9kaXNwYXRjaF90b190aHJlYWRfIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX2Vtc2NyaXB0ZW5fZGlzcGF0Y2hfdG9fdGhyZWFkXyJdPU1vZHVsZVsiYXNtIl1bImVtc2NyaXB0ZW5fZGlzcGF0Y2hfdG9fdGhyZWFkXyJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfX2Vtc2NyaXB0ZW5fcHJveHlfZXhlY3V0ZV90YXNrX3F1ZXVlPU1vZHVsZVsiX19lbXNjcmlwdGVuX3Byb3h5X2V4ZWN1dGVfdGFza19xdWV1ZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX2Vtc2NyaXB0ZW5fcHJveHlfZXhlY3V0ZV90YXNrX3F1ZXVlPU1vZHVsZVsiX19lbXNjcmlwdGVuX3Byb3h5X2V4ZWN1dGVfdGFza19xdWV1ZSJdPU1vZHVsZVsiYXNtIl1bIl9lbXNjcmlwdGVuX3Byb3h5X2V4ZWN1dGVfdGFza19xdWV1ZSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YT1Nb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhIl09ZnVuY3Rpb24oKXtyZXR1cm4gKF9fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhPU1vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9mcmVlX2RhdGEiXT1Nb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdD1Nb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdCJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQ9TW9kdWxlWyJfX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQiXT1Nb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90aHJlYWRfZXhpdCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzPU1vZHVsZVsiX2Vtc2NyaXB0ZW5fc3RhY2tfc2V0X2xpbWl0cyJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzPU1vZHVsZVsiX2Vtc2NyaXB0ZW5fc3RhY2tfc2V0X2xpbWl0cyJdPU1vZHVsZVsiYXNtIl1bImVtc2NyaXB0ZW5fc3RhY2tfc2V0X2xpbWl0cyJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBzdGFja1NhdmU9TW9kdWxlWyJzdGFja1NhdmUiXT1mdW5jdGlvbigpe3JldHVybiAoc3RhY2tTYXZlPU1vZHVsZVsic3RhY2tTYXZlIl09TW9kdWxlWyJhc20iXVsic3RhY2tTYXZlIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIHN0YWNrUmVzdG9yZT1Nb2R1bGVbInN0YWNrUmVzdG9yZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChzdGFja1Jlc3RvcmU9TW9kdWxlWyJzdGFja1Jlc3RvcmUiXT1Nb2R1bGVbImFzbSJdWyJzdGFja1Jlc3RvcmUiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgc3RhY2tBbGxvYz1Nb2R1bGVbInN0YWNrQWxsb2MiXT1mdW5jdGlvbigpe3JldHVybiAoc3RhY2tBbGxvYz1Nb2R1bGVbInN0YWNrQWxsb2MiXT1Nb2R1bGVbImFzbSJdWyJzdGFja0FsbG9jIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX2pqaiJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfampqIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF9qamoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfamlpaSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfamlpaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfamlpaSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF9paWlpamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlqaiJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfaWlpaWpqIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX3ZpaWpqIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiZHluQ2FsbF92aWlqaiJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfdmlpamoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfdmlpaWpqamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpaWlqampqIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF92aWlpampqaiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF9qaWkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2ppaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfamlpIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX3ZpamkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpamkiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZpamkiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfamkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2ppIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF9qaSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF92aiJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfdmoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZqIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX3ZpaWoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpaWoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZpaWoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfdmlqIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiZHluQ2FsbF92aWoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZpaiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF92aWlqaWkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpaWppaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfdmlpamlpIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX2lpamppaWlpIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiZHluQ2FsbF9paWpqaWlpaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfaWlqamlpaWkiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfamlqaSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfamlqaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfamlqaSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF9paWlpaWoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlpaiJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfaWlpaWlqIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX2lpaWlpamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlpamoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX2lpaWlpamoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfaWlpaWlpamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlpaWpqIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF9paWlpaWlqaiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19fc3RhcnRfZW1fanMiXT0yMDk2NTc7TW9kdWxlWyJfX19zdG9wX2VtX2pzIl09MjA5NzE4O01vZHVsZVsiYWRkUnVuRGVwZW5kZW5jeSJdPWFkZFJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJyZW1vdmVSdW5EZXBlbmRlbmN5Il09cmVtb3ZlUnVuRGVwZW5kZW5jeTtNb2R1bGVbIkZTX2NyZWF0ZVBhdGgiXT1GUy5jcmVhdGVQYXRoO01vZHVsZVsiRlNfY3JlYXRlRGF0YUZpbGUiXT1GUy5jcmVhdGVEYXRhRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZVByZWxvYWRlZEZpbGUiXT1GUy5jcmVhdGVQcmVsb2FkZWRGaWxlO01vZHVsZVsiRlNfY3JlYXRlTGF6eUZpbGUiXT1GUy5jcmVhdGVMYXp5RmlsZTtNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtNb2R1bGVbIkZTX3VubGluayJdPUZTLnVubGluaztNb2R1bGVbImtlZXBSdW50aW1lQWxpdmUiXT1rZWVwUnVudGltZUFsaXZlO01vZHVsZVsid2FzbU1lbW9yeSJdPXdhc21NZW1vcnk7TW9kdWxlWyJFeGl0U3RhdHVzIl09RXhpdFN0YXR1cztNb2R1bGVbIlBUaHJlYWQiXT1QVGhyZWFkO3ZhciBjYWxsZWRSdW47ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPWZ1bmN0aW9uIHJ1bkNhbGxlcigpe2lmKCFjYWxsZWRSdW4pcnVuKCk7aWYoIWNhbGxlZFJ1bilkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyO307ZnVuY3Rpb24gcnVuKGFyZ3Mpe2lmKHJ1bkRlcGVuZGVuY2llcz4wKXtyZXR1cm59aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7cmVhZHlQcm9taXNlUmVzb2x2ZShNb2R1bGUpO2luaXRSdW50aW1lKCk7cG9zdE1lc3NhZ2UoeyJjbWQiOiJsb2FkZWQifSk7cmV0dXJufXByZVJ1bigpO2lmKHJ1bkRlcGVuZGVuY2llcz4wKXtyZXR1cm59ZnVuY3Rpb24gZG9SdW4oKXtpZihjYWxsZWRSdW4pcmV0dXJuO2NhbGxlZFJ1bj10cnVlO01vZHVsZVsiY2FsbGVkUnVuIl09dHJ1ZTtpZihBQk9SVClyZXR1cm47aW5pdFJ1bnRpbWUoKTtyZWFkeVByb21pc2VSZXNvbHZlKE1vZHVsZSk7aWYoTW9kdWxlWyJvblJ1bnRpbWVJbml0aWFsaXplZCJdKU1vZHVsZVsib25SdW50aW1lSW5pdGlhbGl6ZWQiXSgpO3Bvc3RSdW4oKTt9aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIik7fSwxKTtkb1J1bigpO30sMSk7fWVsc2Uge2RvUnVuKCk7fX1pZihNb2R1bGVbInByZUluaXQiXSl7aWYodHlwZW9mIE1vZHVsZVsicHJlSW5pdCJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlSW5pdCJdPVtNb2R1bGVbInByZUluaXQiXV07d2hpbGUoTW9kdWxlWyJwcmVJbml0Il0ubGVuZ3RoPjApe01vZHVsZVsicHJlSW5pdCJdLnBvcCgpKCk7fX1ydW4oKTsKCgogICAgcmV0dXJuIEx5cmFXYXNtTW9kdWxlLnJlYWR5CiAgfQogICk7CiAgfSkoKTsKCiAgLyoqCiAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4nlvaLlvI/jga7jg5Djg7zjgrjjg6fjg7PjgIIKICAgKgogICAqIOOCqOODs+OCs+ODvOODieW9ouW8j+OBq+mdnuS6kuaPm+OBquWkieabtOOBjOWFpeOBo+OBn+aZgueCueOBp+OBriBnb29nbGUvbHlyYSDjga7jg5Djg7zjgrjjg6fjg7PjgYzmoLzntI3jgZXjgozjgabjgYTjgovjgIIKICAgKi8KICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgY29uc3QgREVGQVVMVF9CSVRSQVRFID0gOTIwMDsKICBjb25zdCBERUZBVUxUX0VOQUJMRV9EVFggPSBmYWxzZTsKICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHMpIHsKICAgICAgaWYgKHMuc2xpY2UoLTEpID09PSAiLyIpIHsKICAgICAgICAgIHJldHVybiBzLnNsaWNlKDAsIC0xKTsKICAgICAgfQogICAgICByZXR1cm4gczsKICB9CiAgZnVuY3Rpb24gY2hlY2tTYW1wbGVSYXRlKG4pIHsKICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDoKICAgICAgICAgIGNhc2UgODAwMDoKICAgICAgICAgIGNhc2UgMTYwMDA6CiAgICAgICAgICBjYXNlIDMyMDAwOgogICAgICAgICAgY2FzZSA0ODAwMDoKICAgICAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBzYW1wbGUgcmF0ZTogZXhwZWN0ZWQgb25lIG9mIDgwMDAsIDE2MDAwLCAzMjAwMCBvciA0ODAwMCwgYnV0IGdvdCAke259YCk7CiAgfQogIGZ1bmN0aW9uIGNoZWNrTnVtYmVyT2ZDaGFubmVscyhuKSB7CiAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgY2FzZSB1bmRlZmluZWQ6CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoYW5uZWxzOiBleHBlY3RlZCAxLCBidXQgZ290ICR7bn1gKTsKICB9CiAgZnVuY3Rpb24gY2hlY2tCaXRyYXRlKG4pIHsKICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDoKICAgICAgICAgIGNhc2UgMzIwMDoKICAgICAgICAgIGNhc2UgNjAwMDoKICAgICAgICAgIGNhc2UgOTIwMDoKICAgICAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBiaXRyYXRlOiBleHBlY3RlZCBvbmUgb2YgMzIwMCwgNjAwMCBvciA5MjAwLCBidXQgZ290ICR7bn1gKTsKICB9CgogIGNvbnN0IE1FTUZTX01PREVMX1BBVEggPSAiL3RtcC8iOwogIGNvbnN0IEZSQU1FX0RVUkFUSU9OX01TID0gMjA7CiAgY2xhc3MgTHlyYVN5bmNNb2R1bGUgewogICAgICB3YXNtTW9kdWxlOwogICAgICBjb25zdHJ1Y3Rvcih3YXNtTW9kdWxlKSB7CiAgICAgICAgICB0aGlzLndhc21Nb2R1bGUgPSB3YXNtTW9kdWxlOwogICAgICB9CiAgICAgIHN0YXRpYyBhc3luYyBsb2FkKHdhc21QYXRoLCBtb2RlbFBhdGgpIHsKICAgICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBMeXJhV2FzbU1vZHVsZSh7CiAgICAgICAgICAgICAgbG9jYXRlRmlsZTogKHBhdGgpID0+IHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyaW1MYXN0U2xhc2god2FzbVBhdGgpICsgIi8iICsgcGF0aDsKICAgICAgICAgICAgICB9LAogICAgICAgICAgfSk7CiAgICAgICAgICBjb25zdCBtb2RlbEZpbGVOYW1lcyA9IFsibHlyYV9jb25maWcuYmluYXJ5cGIiLCAic291bmRzdHJlYW1fZW5jb2Rlci50ZmxpdGUiLCAicXVhbnRpemVyLnRmbGl0ZSIsICJseXJhZ2FuLnRmbGl0ZSJdOwogICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobW9kZWxGaWxlTmFtZXMubWFwKChuYW1lKSA9PiB7CiAgICAgICAgICAgICAgY29uc3QgdXJsID0gdHJpbUxhc3RTbGFzaChtb2RlbFBhdGgpICsgIi8iICsgbmFtZTsKICAgICAgICAgICAgICByZXR1cm4gZmV0Y2godXJsKS50aGVuKGFzeW5jIChyZXMpID0+IHsKICAgICAgICAgICAgICAgICAgaWYgKCFyZXMub2spIHsKICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGZldGNoICR7dXJsfTogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHdhc21Nb2R1bGUuRlNfY3JlYXRlRGF0YUZpbGUoTUVNRlNfTU9ERUxfUEFUSCwgbmFtZSwgbmV3IFVpbnQ4QXJyYXkoYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgfSkpOwogICAgICAgICAgcmV0dXJuIG5ldyBMeXJhU3luY01vZHVsZSh3YXNtTW9kdWxlKTsKICAgICAgfQogICAgICBjcmVhdGVFbmNvZGVyKG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgY2hlY2tTYW1wbGVSYXRlKG9wdGlvbnMuc2FtcGxlUmF0ZSk7CiAgICAgICAgICBjaGVja051bWJlck9mQ2hhbm5lbHMob3B0aW9ucy5udW1iZXJPZkNoYW5uZWxzKTsKICAgICAgICAgIGNoZWNrQml0cmF0ZShvcHRpb25zLmJpdHJhdGUpOwogICAgICAgICAgY29uc3QgZW5jb2RlciA9IHRoaXMud2FzbU1vZHVsZS5MeXJhRW5jb2Rlci5jcmVhdGUob3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEUsIG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTLCBvcHRpb25zLmJpdHJhdGUgfHwgREVGQVVMVF9CSVRSQVRFLCBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFgsIE1FTUZTX01PREVMX1BBVEgpOwogICAgICAgICAgaWYgKGVuY29kZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBseXJhIGVuY29kZXIiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGNvbnN0IGZyYW1lU2l6ZSA9ICgob3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEUpICogRlJBTUVfRFVSQVRJT05fTVMpIC8gMTAwMDsKICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLndhc21Nb2R1bGUubmV3QXVkaW9EYXRhKGZyYW1lU2l6ZSk7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMeXJhU3luY0VuY29kZXIodGhpcy53YXNtTW9kdWxlLCBlbmNvZGVyLCBidWZmZXIsIG9wdGlvbnMpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGNyZWF0ZURlY29kZXIob3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICBjaGVja1NhbXBsZVJhdGUob3B0aW9ucy5zYW1wbGVSYXRlKTsKICAgICAgICAgIGNoZWNrTnVtYmVyT2ZDaGFubmVscyhvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICAgY29uc3QgZGVjb2RlciA9IHRoaXMud2FzbU1vZHVsZS5MeXJhRGVjb2Rlci5jcmVhdGUob3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEUsIG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTLCBNRU1GU19NT0RFTF9QQVRIKTsKICAgICAgICAgIGlmIChkZWNvZGVyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBjcmVhdGUgbHlyYSBkZWNvZGVyIik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLndhc21Nb2R1bGUubmV3Qnl0ZXMoKTsKICAgICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFTeW5jRGVjb2Rlcih0aGlzLndhc21Nb2R1bGUsIGRlY29kZXIsIGJ1ZmZlciwgb3B0aW9ucyk7CiAgICAgICAgICB9CiAgICAgIH0KICB9CiAgY2xhc3MgTHlyYVN5bmNFbmNvZGVyIHsKICAgICAgd2FzbU1vZHVsZTsKICAgICAgZW5jb2RlcjsKICAgICAgYnVmZmVyOwogICAgICBzYW1wbGVSYXRlOwogICAgICBudW1iZXJPZkNoYW5uZWxzOwogICAgICBiaXRyYXRlOwogICAgICBlbmFibGVEdHg7CiAgICAgIGZyYW1lU2l6ZTsKICAgICAgY29uc3RydWN0b3Iod2FzbU1vZHVsZSwgZW5jb2RlciwgYnVmZmVyLCBvcHRpb25zKSB7CiAgICAgICAgICB0aGlzLndhc21Nb2R1bGUgPSB3YXNtTW9kdWxlOwogICAgICAgICAgdGhpcy5lbmNvZGVyID0gZW5jb2RlcjsKICAgICAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyOwogICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgIHRoaXMuYml0cmF0ZSA9IG9wdGlvbnMuYml0cmF0ZSB8fCBERUZBVUxUX0JJVFJBVEU7CiAgICAgICAgICB0aGlzLmVuYWJsZUR0eCA9IG9wdGlvbnMuZW5hYmxlRHR4IHx8IERFRkFVTFRfRU5BQkxFX0RUWDsKICAgICAgICAgIHRoaXMuZnJhbWVTaXplID0gYnVmZmVyLnNpemUoKTsKICAgICAgfQogICAgICBlbmNvZGUoYXVkaW9EYXRhKSB7CiAgICAgICAgICBpZiAoYXVkaW9EYXRhLmxlbmd0aCAhPT0gdGhpcy5mcmFtZVNpemUpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGFuIGF1ZGlvIGRhdGEgd2l0aCAke3RoaXMuZnJhbWVTaXplfSBzYW1wbGVzLCBidXQgZ290IG9uZSB3aXRoICR7YXVkaW9EYXRhLmxlbmd0aH0gc2FtcGxlc2ApOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy53YXNtTW9kdWxlLmNvcHlJbnQxNkFycmF5VG9BdWRpb0RhdGEodGhpcy5idWZmZXIsIGF1ZGlvRGF0YSk7CiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmVuY29kZXIuZW5jb2RlKHRoaXMuYnVmZmVyKTsKICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIGVuY29kZSIpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZEF1ZGlvRGF0YSA9IG5ldyBVaW50OEFycmF5KHJlc3VsdC5zaXplKCkpOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVuY29kZWRBdWRpb0RhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRBdWRpb0RhdGFbaV0gPSByZXN1bHQuZ2V0KGkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgLy8gRFRYIOOBjOacieWKueOAgeOBi+OBpOOAgSBhdWRpb0RhdGEg44GM54Sh6Z+z44Gq44GE44GX44OO44Kk44K644Gg44GR44KS5ZCr44KT44Gn44GE44KL5aC05ZCI44Gr44Gv44GT44GT44Gr5p2l44KLCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkQXVkaW9EYXRhOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LmRlbGV0ZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICBzZXRCaXRyYXRlKGJpdHJhdGUpIHsKICAgICAgICAgIGNoZWNrQml0cmF0ZShiaXRyYXRlKTsKICAgICAgICAgIGlmICghdGhpcy5lbmNvZGVyLnNldEJpdHJhdGUoYml0cmF0ZSkpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byB1cGRhdGUgYml0cmF0ZSBmcm9tICR7dGhpcy5iaXRyYXRlfSB0byAke2JpdHJhdGV9YCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgIHRoaXMuZW5jb2Rlci5kZWxldGUoKTsKICAgICAgICAgIHRoaXMuYnVmZmVyLmRlbGV0ZSgpOwogICAgICB9CiAgfQogIGNsYXNzIEx5cmFTeW5jRGVjb2RlciB7CiAgICAgIHdhc21Nb2R1bGU7CiAgICAgIGRlY29kZXI7CiAgICAgIGJ1ZmZlcjsKICAgICAgc2FtcGxlUmF0ZTsKICAgICAgbnVtYmVyT2ZDaGFubmVsczsKICAgICAgZnJhbWVTaXplOwogICAgICBjb25zdHJ1Y3Rvcih3YXNtTW9kdWxlLCBkZWNvZGVyLCBidWZmZXIsIG9wdGlvbnMpIHsKICAgICAgICAgIHRoaXMud2FzbU1vZHVsZSA9IHdhc21Nb2R1bGU7CiAgICAgICAgICB0aGlzLmRlY29kZXIgPSBkZWNvZGVyOwogICAgICAgICAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgICAgICAgICB0aGlzLnNhbXBsZVJhdGUgPSBvcHRpb25zLnNhbXBsZVJhdGUgfHwgREVGQVVMVF9TQU1QTEVfUkFURTsKICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSAodGhpcy5zYW1wbGVSYXRlICogRlJBTUVfRFVSQVRJT05fTVMpIC8gMTAwMDsKICAgICAgfQogICAgICBkZWNvZGUoZW5jb2RlZEF1ZGlvRGF0YSkgewogICAgICAgICAgaWYgKGVuY29kZWRBdWRpb0RhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHRoaXMuYnVmZmVyLnJlc2l6ZSgwLCAwKTsgLy8gY2xlYXIoKSDjgpLkvb/jgYbjgajjgIzplqLmlbDjgYzlrZjlnKjjgZfjgarjgYTjgI3jgajjgYTjgYbjgqjjg6njg7zjgYzlh7rjgovjga7jgacgcmVzaXplKCkg44Gn5Luj55SoCiAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXIucHVzaF9iYWNrKHYpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXRoaXMuZGVjb2Rlci5zZXRFbmNvZGVkUGFja2V0KHRoaXMuYnVmZmVyKSkgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBzZXQgZW5jb2RlZCBwYWNrZXQiKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmRlY29kZXIuZGVjb2RlU2FtcGxlcyh0aGlzLmZyYW1lU2l6ZSk7CiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiZmFpbGVkIHRvIGRlY29kZSBzYW1wbGVzIik7CiAgICAgICAgICB9CiAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGNvbnN0IGF1ZGlvRGF0YSA9IG5ldyBJbnQxNkFycmF5KHRoaXMuZnJhbWVTaXplKTsKICAgICAgICAgICAgICB0aGlzLndhc21Nb2R1bGUuY29weUF1ZGlvRGF0YVRvSW50MTZBcnJheShhdWRpb0RhdGEsIHJlc3VsdCk7CiAgICAgICAgICAgICAgcmV0dXJuIGF1ZGlvRGF0YTsKICAgICAgICAgIH0KICAgICAgICAgIGZpbmFsbHkgewogICAgICAgICAgICAgIHJlc3VsdC5kZWxldGUoKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBkZXN0cm95KCkgewogICAgICAgICAgdGhpcy5kZWNvZGVyLmRlbGV0ZSgpOwogICAgICAgICAgdGhpcy5idWZmZXIuZGVsZXRlKCk7CiAgICAgIH0KICB9CgogIC8vIOOCqOODs+OCs+ODvOODgOOBqOODh+OCs+ODvOODgOOBruOCpOODs+OCueOCv+ODs+OCueOBruWQiOioiOaVsOOBruacgOWkp+WApAogIC8vCiAgLy8g44GT44Gu5YCk44KS5aSJ5pu044GZ44KL5aC05ZCI44Gr44GvIHdhc20vQlVJTEQg44Gr44GC44KLIGAtcyBJTklUSUFMX01FTU9SWWAg44Gu5YCk44KC5ZCI44KP44Gb44Gm5aSJ5pu044GZ44KL44GT44GoCiAgY29uc3QgTUFYX1JFU09VUkNFUyA9IDEwOwogIGxldCBSRVNPVVJDRV9NQU5BR0VSOwogIGNsYXNzIFJlc291cmNlTWFuYWdlciB7CiAgICAgIGx5cmFNb2R1bGU7CiAgICAgIGVuY29kZXJzID0gbmV3IE1hcCgpOwogICAgICBkZWNvZGVycyA9IG5ldyBNYXAoKTsKICAgICAgY29uc3RydWN0b3IobHlyYU1vZHVsZSkgewogICAgICAgICAgdGhpcy5seXJhTW9kdWxlID0gbHlyYU1vZHVsZTsKICAgICAgfQogICAgICBjcmVhdGVFbmNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIHRoaXMuZXZpY3RJZk5lZWQoKTsKICAgICAgICAgIGNvbnN0IGVuY29kZXIgPSB0aGlzLmx5cmFNb2R1bGUuY3JlYXRlRW5jb2RlcihvcHRpb25zKTsKICAgICAgICAgIHRoaXMuZW5jb2RlcnMuc2V0KHBvcnQsIG5ldyBSZXNvdXJjZShlbmNvZGVyKSk7CiAgICAgICAgICByZXR1cm4gZW5jb2RlcjsKICAgICAgfQogICAgICBjcmVhdGVEZWNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIHRoaXMuZXZpY3RJZk5lZWQoKTsKICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSB0aGlzLmx5cmFNb2R1bGUuY3JlYXRlRGVjb2RlcihvcHRpb25zKTsKICAgICAgICAgIHRoaXMuZGVjb2RlcnMuc2V0KHBvcnQsIG5ldyBSZXNvdXJjZShkZWNvZGVyKSk7CiAgICAgICAgICByZXR1cm4gZGVjb2RlcjsKICAgICAgfQogICAgICBnZXRFbmNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIGNvbnN0IGVuY29kZXIgPSB0aGlzLmVuY29kZXJzLmdldChwb3J0KTsKICAgICAgICAgIGlmIChlbmNvZGVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICBlbmNvZGVyLmxhc3RBY2Nlc3NlZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgICAgICAgICByZXR1cm4gZW5jb2Rlci5pdGVtOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRW5jb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBnZXREZWNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSB0aGlzLmRlY29kZXJzLmdldChwb3J0KTsKICAgICAgICAgIGlmIChkZWNvZGVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICBkZWNvZGVyLmxhc3RBY2Nlc3NlZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgICAgICAgICByZXR1cm4gZGVjb2Rlci5pdGVtOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGVjb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZW1vdmUocG9ydCkgewogICAgICAgICAgewogICAgICAgICAgICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5lbmNvZGVycy5nZXQocG9ydCk7CiAgICAgICAgICAgICAgaWYgKHJlc291cmNlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgcmVzb3VyY2UuaXRlbS5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RlcnMuZGVsZXRlKHBvcnQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHsKICAgICAgICAgICAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuZGVjb2RlcnMuZ2V0KHBvcnQpOwogICAgICAgICAgICAgIGlmIChyZXNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgIHJlc291cmNlLml0ZW0uZGVzdHJveSgpOwogICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZXJzLmRlbGV0ZShwb3J0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZXZpY3RJZk5lZWQoKSB7CiAgICAgICAgICBpZiAodGhpcy5lbmNvZGVycy5zaXplICsgdGhpcy5kZWNvZGVycy5zaXplIDwgTUFYX1JFU09VUkNFUykgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIC8vIOOCpOODs+OCueOCv+ODs+OCueaVsOOBruS4iumZkOOBq+mBlOOBl+OBpuOBhOOCi+WgtOWQiOOBq+OBr+OAgeS9v+eUqOOBleOCjOOBn+aZguWIu+OBjOS4gOeVquWPpOOBhOOCguOBruOCkuWJiumZpOOBmeOCiwogICAgICAgICAgbGV0IG9sZGVzdFBvcnQ7CiAgICAgICAgICBsZXQgb2xkZXN0VGltZTsKICAgICAgICAgIGZvciAoY29uc3QgW3BvcnQsIHJlc291cmNlXSBvZiB0aGlzLmVuY29kZXJzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgIGlmIChvbGRlc3RUaW1lID09PSB1bmRlZmluZWQgfHwgcmVzb3VyY2UubGFzdEFjY2Vzc2VkVGltZSA8IG9sZGVzdFRpbWUpIHsKICAgICAgICAgICAgICAgICAgb2xkZXN0UG9ydCA9IHBvcnQ7CiAgICAgICAgICAgICAgICAgIG9sZGVzdFRpbWUgPSByZXNvdXJjZS5sYXN0QWNjZXNzZWRUaW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGZvciAoY29uc3QgW3BvcnQsIHJlc291cmNlXSBvZiB0aGlzLmRlY29kZXJzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgIGlmIChvbGRlc3RUaW1lID09PSB1bmRlZmluZWQgfHwgcmVzb3VyY2UubGFzdEFjY2Vzc2VkVGltZSA8IG9sZGVzdFRpbWUpIHsKICAgICAgICAgICAgICAgICAgb2xkZXN0UG9ydCA9IHBvcnQ7CiAgICAgICAgICAgICAgICAgIG9sZGVzdFRpbWUgPSByZXNvdXJjZS5sYXN0QWNjZXNzZWRUaW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChvbGRlc3RQb3J0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICB0aGlzLnJlbW92ZShvbGRlc3RQb3J0KTsKICAgICAgICAgIH0KICAgICAgfQogIH0KICBjbGFzcyBSZXNvdXJjZSB7CiAgICAgIGl0ZW07CiAgICAgIGxhc3RBY2Nlc3NlZFRpbWU7CiAgICAgIGNvbnN0cnVjdG9yKGl0ZW0pIHsKICAgICAgICAgIHRoaXMuaXRlbSA9IGl0ZW07CiAgICAgICAgICB0aGlzLmxhc3RBY2Nlc3NlZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgfQogIH0KICBhc3luYyBmdW5jdGlvbiBpbml0UmVzb3VyY2VNYW5hZ2VyKHdhc21QYXRoLCBtb2RlbFBhdGgpIHsKICAgICAgUkVTT1VSQ0VfTUFOQUdFUiA9IG5ldyBSZXNvdXJjZU1hbmFnZXIoYXdhaXQgTHlyYVN5bmNNb2R1bGUubG9hZCh3YXNtUGF0aCwgbW9kZWxQYXRoKSk7CiAgfQogIHNlbGYub25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24gaGFuZGxlTW9kdWxlTWVzc2FnZShtc2cpIHsKICAgICAgc3dpdGNoIChtc2cuZGF0YS50eXBlKSB7CiAgICAgICAgICBjYXNlICJMeXJhTW9kdWxlLmxvYWQiOgogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIGF3YWl0IGluaXRSZXNvdXJjZU1hbmFnZXIobXNnLmRhdGEud2FzbVBhdGgsIG1zZy5kYXRhLm1vZGVsUGF0aCk7CiAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHt9IH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IHR5cGU6IGAke21zZy5kYXRhLnR5cGV9LnJlc3VsdGAsIHJlc3VsdDogeyBlcnJvciB9IH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgIkx5cmFNb2R1bGUuY3JlYXRlRW5jb2RlciI6CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjb25zdCBwb3J0ID0gbXNnLmRhdGEucG9ydDsKICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBSRVNPVVJDRV9NQU5BR0VSOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG1hbmFnZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUkVTT1VSQ0VfTUFOQUdFUiBpcyB1bmRlZmluZWQiKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBtc2cuZGF0YS5vcHRpb25zOwogICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlciA9IG1hbmFnZXIuY3JlYXRlRW5jb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgIHBvcnQub25tZXNzYWdlID0gKG1zZykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUVuY29kZXJNZXNzYWdlKG1hbmFnZXIsIHBvcnQsIG9wdGlvbnMsIG1zZyk7CiAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6IGAke21zZy5kYXRhLnR5cGV9LnJlc3VsdGAsIHJlc3VsdDogeyBmcmFtZVNpemU6IGVuY29kZXIuZnJhbWVTaXplIH0gfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogYCR7bXNnLmRhdGEudHlwZX0ucmVzdWx0YCwgcmVzdWx0OiB7IGVycm9yIH0gfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJMeXJhTW9kdWxlLmNyZWF0ZURlY29kZXIiOgogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgY29uc3QgcG9ydCA9IG1zZy5kYXRhLnBvcnQ7CiAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gUkVTT1VSQ0VfTUFOQUdFUjsKICAgICAgICAgICAgICAgICAgICAgIGlmIChtYW5hZ2VyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlJFU09VUkNFX01BTkFHRVIgaXMgdW5kZWZpbmVkIik7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gbXNnLmRhdGEub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSBtYW5hZ2VyLmNyZWF0ZURlY29kZXIocG9ydCwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICBwb3J0Lm9ubWVzc2FnZSA9IChtc2cpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWNvZGVyTWVzc2FnZShtYW5hZ2VyLCBwb3J0LCBvcHRpb25zLCBtc2cpOwogICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHsgZnJhbWVTaXplOiBkZWNvZGVyLmZyYW1lU2l6ZSB9IH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6IGAke21zZy5kYXRhLnR5cGV9LnJlc3VsdGAsIHJlc3VsdDogeyBlcnJvciB9IH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBjb25zb2xlLndhcm4oInJlY2VpdmVkIHVua25vd24gbWVzc2FnZSIpOwogICAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICB9CiAgfTsKICBmdW5jdGlvbiBoYW5kbGVFbmNvZGVyTWVzc2FnZShtYW5hZ2VyLCBwb3J0LCBvcHRpb25zLCBtc2cpIHsKICAgICAgc3dpdGNoIChtc2cuZGF0YS50eXBlKSB7CiAgICAgICAgICBjYXNlICJMeXJhRW5jb2Rlci5lbmNvZGUiOgogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZXIgPSBtYW5hZ2VyLmdldEVuY29kZXIocG9ydCwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRBdWRpb0RhdGEgPSBlbmNvZGVyLmVuY29kZShtc2cuZGF0YS5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHsgdHlwZTogYCR7bXNnLmRhdGEudHlwZX0ucmVzdWx0YCwgcmVzdWx0OiB7IGVuY29kZWRBdWRpb0RhdGEgfSB9OwogICAgICAgICAgICAgICAgICBpZiAoZW5jb2RlZEF1ZGlvRGF0YSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UocmVzcG9uc2UsIFtlbmNvZGVkQXVkaW9EYXRhLmJ1ZmZlcl0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogYCR7bXNnLmRhdGEudHlwZX0ucmVzdWx0YCwgcmVzdWx0OiB7IGVycm9yIH0gfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAiTHlyYUVuY29kZXIuZGVzdHJveSI6CiAgICAgICAgICAgICAgbWFuYWdlci5yZW1vdmUocG9ydCk7CiAgICAgICAgICAgICAgcG9ydC5vbm1lc3NhZ2UgPSBudWxsOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBjb25zb2xlLndhcm4oInJlY2VpdmVkIHVua25vd24gbWVzc2FnZSIpOwogICAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGhhbmRsZURlY29kZXJNZXNzYWdlKG1hbmFnZXIsIHBvcnQsIG9wdGlvbnMsIG1zZykgewogICAgICBzd2l0Y2ggKG1zZy5kYXRhLnR5cGUpIHsKICAgICAgICAgIGNhc2UgIkx5cmFEZWNvZGVyLmRlY29kZSI6CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlciA9IG1hbmFnZXIuZ2V0RGVjb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgY29uc3QgYXVkaW9EYXRhID0gZGVjb2Rlci5kZWNvZGUobXNnLmRhdGEuZW5jb2RlZEF1ZGlvRGF0YSk7CiAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHsgYXVkaW9EYXRhIH0gfSwgW2F1ZGlvRGF0YS5idWZmZXJdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHsgZXJyb3IgfSB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJMeXJhRGVjb2Rlci5kZXN0cm95IjoKICAgICAgICAgICAgICBtYW5hZ2VyLnJlbW92ZShwb3J0KTsKICAgICAgICAgICAgICBwb3J0Lm9ubWVzc2FnZSA9IG51bGw7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIGNvbnNvbGUud2FybigicmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlIik7CiAgICAgICAgICAgICAgY29uc29sZS53YXJuKG1zZyk7CiAgICAgIH0KICB9Cgp9KSk7Cg=="; - /** - * Lyra 用の WebAssembly ファイルやモデルファイルのロードや web worker の管理を行うためのクラス - */ - class LyraModule { - worker; - constructor(worker) { - this.worker = worker; - } - /** - * Lyra の WebAssembly ファイルやモデルファイルをロードや web worker の起動を行い、 {@link LyraModule} のインスタンスを生成する - * - * @param wasmPath lyra.wasm および lyra.worker.js が配置されているディレクトリのパスないし URL - * @param modelPath Lyra 用の *.binarypb および *.tflite が配置されているディレクトリのパスないし URL - * @returns 生成された {@link LyraModule} インスタンス - */ - static load(wasmPath, modelPath) { - // lyra は SharedArrayBufffer を使うので COEP / COOP 応答ヘッダ周りの対処が必要になるが、 - // chrome / firefox と safari で挙動が異なる(前者は COEP / COOP ヘッダが必要で、後者はそれがあるとエラーになる)ので - // その問題を回避するために object url で worker を生成するようにする - const webWorkerScriptObjectUrl = URL.createObjectURL(new Blob([atob(WEB_WORKER_SCRIPT)], { type: "application/javascript" })); - const worker = new Worker(webWorkerScriptObjectUrl, { - name: "lyra_sync_worker", - }); - // 各種ファイルは web worker の中でロードされることになるので、 - // 事前に絶対 URL に変換しておく必要がある - wasmPath = new URL(wasmPath, document.location.href).toString(); - modelPath = new URL(modelPath, document.location.href).toString(); - const promise = new Promise((resolve, reject) => { - worker.addEventListener("message", (res) => { - const error = res.data.result.error; - if (error === undefined) { - resolve(new LyraModule(worker)); - } - else { - reject(error); - } - }, { once: true }); - }); - worker.postMessage({ type: "LyraModule.load", modelPath, wasmPath }); - return promise; - } - /** - * {@link LyraEncoder} のインスタンスを生成する - * - * 生成したインスタンスが不要になったら {@link LyraEncoder.destroy} メソッドを呼び出してリソースを解放すること - * - * なお、同じオプションで複数回 {@link createEncoder} メソッドが呼び出された場合には、 - * 内部的には(wasm レベルでは)同じエンコーダインスタンスが共有して使い回されることになり、 - * エンコーダ用に確保された wasm メモリ領域は、生成された全ての {@link LyraEncoder} が - * {@link LyraEncoder.destroy} を呼び出すまでは解放されない - * - * @params options エンコーダに指定するオプション - * @returns 生成された {@link LyraEncoder} インスタンス - */ - createEncoder(options = {}) { - const channel = new MessageChannel(); - const promise = new Promise((resolve, reject) => { - channel.port1.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(new LyraEncoder(channel.port1, result.frameSize, options)); - } - }, { once: true }); - channel.port1.start(); - }); - this.worker.postMessage({ type: "LyraModule.createEncoder", port: channel.port2, options }, [channel.port2]); - return promise; - } - /** - * {@link LyraDecoder} のインスタンスを生成する - * - * 生成したインスタンスが不要になったら {@link LyraDecoder.destroy} メソッドを呼び出してリソースを解放すること - * - * なお、同じオプションで複数回 {@link createDecoder} メソッドが呼び出された場合には、 - * 内部的には(wasm レベルでは)同じデコーダインスタンスが共有して使い回されることになり、 - * エンコーダ用に確保された wasm メモリ領域は、生成された全ての {@link LyraDecoder} が - * {@link LyraDecoder.destroy} を呼び出すまでは解放されない - * - * @params options デコーダに指定するオプション - * @returns 生成された {@link LyraDecoder} インスタンス - */ - createDecoder(options = {}) { - const channel = new MessageChannel(); - const promise = new Promise((resolve, reject) => { - channel.port1.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(new LyraDecoder(channel.port1, result.frameSize, options)); - } - }, { once: true }); - channel.port1.start(); - }); - this.worker.postMessage({ type: "LyraModule.createDecoder", port: channel.port2, options }, [channel.port2]); - return promise; - } - } - /** - * Lyra のエンコーダ - */ - class LyraEncoder { - /** - * wasm でのエンコード処理を実行する web worker と通信するためのポート - */ - port; - /** - * 現在のサンププリングレート - */ - sampleRate; - /** - * 現在のチャネル数 - */ - numberOfChannels; - /** - * 現在のエンコードビットレート - */ - bitrate; - /** - * DTX が有効になっているかどうか - */ - enableDtx; - /** - * 一つのフレーム({@link LyraEncoder.encode} メソッドに渡す音声データ)に含めるサンプル数 - */ - frameSize; - /** - * @internal - */ - constructor(port, frameSize, options) { - this.port = port; - this.frameSize = frameSize; - this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE; - this.numberOfChannels = options.numberOfChannels || DEFAULT_CHANNELS; - this.bitrate = options.bitrate || DEFAULT_BITRATE; - this.enableDtx = options.enableDtx || DEFAULT_ENABLE_DTX; - } - /** - * 20ms 分の音声データをエンコードする - * - * なお audioData の所有権は web worker に移転されるので、 - * このメソッド呼び出し後には呼び出しもとスレッドからはデータに参照できなくなります - * (つまり同じ audioData インスタンスの使い回しはできない) - * - * @params audioData エンコード対象の音声データ - * @returns エンコード後のバイト列。もし DTX が有効で音声データが無音な場合には undefined が代わりに返される。 - * - * @throws - * - * 以下のいずれかに該当する場合には例外が送出される: - * - 入力音声データが 20ms 単位(サンプル数としては {@link LyraEncoder.frameSize})ではない - * - その他、何らかの理由でエンコードに失敗した場合 - */ - encode(audioData) { - const promise = new Promise((resolve, reject) => { - this.port.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(result.encodedAudioData); - } - }, { once: true }); - }); - this.port.postMessage({ type: "LyraEncoder.encode", audioData }, [audioData.buffer]); - return promise; - } - /** - * エンコーダ用に確保したリソースを解放する - */ - destroy() { - this.port.postMessage({ type: "LyraEncoder.destroy" }); - this.port.close(); - } - /** - * {@link LyraEncoderState} から {@link LyraEncoder} を復元する - * - * {@link LyraEncoder} は {@link MessagePort.postMessage()} を使って、 - * 別の web worker に転送することが可能。 - * ただし、転送時にはクラスやメソッドの状態は落ちてしまうので、 - * それを復元して再び利用可能にするための関数。 - * なお、転送の際には {@link LyraEncoder.port} の所有権を移譲する必要がある。 - * - * @param state エンコーダの状態 - * @return 復元されたエンコーダ - */ - static fromState(state) { - state.port.start(); - return new LyraEncoder(state.port, state.frameSize, state); - } - } - /** - * Lyra のデコーダ - */ - class LyraDecoder { - /** - * wasm でのデコード処理を実行する web worker と通信するためのポート - */ - port; - /** - * 現在のサンププリングレート - */ - sampleRate; - /** - * 現在のチャネル数 - */ - numberOfChannels; - /** - * 一つのフレーム({@link LyraEncoder.decode} メソッドの返り値の音声データ)に含まれるサンプル数 - */ - frameSize; - /** - * @internal - */ - constructor(port, frameSize, options) { - this.port = port; - this.frameSize = frameSize; - this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE; - this.numberOfChannels = options.numberOfChannels || DEFAULT_CHANNELS; - } - /** - * {@link LyraEncoder.encode} メソッドによってエンコードされた音声データをデコードする - * - * なお encodedAudioData の所有権は web worker に移転されるので、 - * このメソッド呼び出し後には呼び出しもとスレッドからはデータに参照できなくなります - * (つまり同じ encodedAudioData インスタンスの使い回しはできない) - * - * @params encodedAudioData デコード対象のバイナリ列ないし undefined - * @returns デコードされた 20ms 分の音声データ。undefined が渡された場合には代わりにコンフォートノイズが生成される。 - */ - decode(encodedAudioData) { - const promise = new Promise((resolve, reject) => { - this.port.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(result.audioData); - } - }, { once: true }); - }); - if (encodedAudioData === undefined) { - this.port.postMessage({ type: "LyraDecoder.decode", encodedAudioData }); - } - else { - this.port.postMessage({ type: "LyraDecoder.decode", encodedAudioData }, [encodedAudioData.buffer]); - } - return promise; - } - /** - * デコーダ用に確保したリソースを解放する - */ - destroy() { - this.port.postMessage({ type: "LyraDecoder.destroy" }); - this.port.close(); - } - /** - * {@link LyraDecoderState} から {@link LyraDecoder} を復元する - * - * {@link LyraDecoder} は {@link MessagePort.postMessage()} を使って、 - * 別の web worker に転送することが可能。 - * ただし、転送時にはクラスやメソッドの状態は落ちてしまうので、 - * それを復元して再び利用可能にするための関数。 - * なお、転送の際には {@link LyraDecoder.port} の所有権を移譲する必要がある。 - * - * @param state デコーダの状態 - * @return 復元されたデコーダ - */ - static fromState(state) { - state.port.start(); - return new LyraDecoder(state.port, state.frameSize, state); - } - } - - /** - * ビルド時に lyra_worker.ts のビルド結果(の base64 )で置換される文字列 - */ - const LYRA_WORKER_SCRIPT = 'KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOgogICAgZmFjdG9yeSgpOwp9KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBAc2hpZ3VyZWRvL2x5cmEtd2FzbQogICAgICogTHlyYSBWMiBXZWJBc3NlbWJseSBidWlsZAogICAgICogQHZlcnNpb246IDIwMjIuMi4wCiAgICAgKiBAYXV0aG9yOiBTaGlndXJlZG8gSW5jLgogICAgICogQGxpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICAqKi8KCiAgICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgICBjb25zdCBERUZBVUxUX0JJVFJBVEUgPSA5MjAwOwogICAgY29uc3QgREVGQVVMVF9FTkFCTEVfRFRYID0gZmFsc2U7CiAgICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICAgIC8qKgogICAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYUVuY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44Ko44Oz44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog54++5Zyo44Gu44Ko44Oz44Kz44O844OJ44OT44OD44OI44Os44O844OICiAgICAgICAgICovCiAgICAgICAgYml0cmF0ZTsKICAgICAgICAvKioKICAgICAgICAgKiBEVFgg44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44Gp44GG44GLCiAgICAgICAgICovCiAgICAgICAgZW5hYmxlRHR4OwogICAgICAgIC8qKgogICAgICAgICAqIOS4gOOBpOOBruODleODrOODvOODoO+8iHtAbGluayBMeXJhRW5jb2Rlci5lbmNvZGV9IOODoeOCveODg+ODieOBq+a4oeOBmemfs+WjsOODh+ODvOOCv++8ieOBq+WQq+OCgeOCi+OCteODs+ODl+ODq+aVsAogICAgICAgICAqLwogICAgICAgIGZyYW1lU2l6ZTsKICAgICAgICAvKioKICAgICAgICAgKiBAaW50ZXJuYWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwb3J0LCBmcmFtZVNpemUsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDsKICAgICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSBmcmFtZVNpemU7CiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IG9wdGlvbnMuc2FtcGxlUmF0ZSB8fCBERUZBVUxUX1NBTVBMRV9SQVRFOwogICAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gb3B0aW9ucy5iaXRyYXRlIHx8IERFRkFVTFRfQklUUkFURTsKICAgICAgICAgICAgdGhpcy5lbmFibGVEdHggPSBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFg7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIDIwbXMg5YiG44Gu6Z+z5aOw44OH44O844K/44KS44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiDjgarjgYogYXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBhdWRpb0RhdGEg44Kk44Oz44K544K/44Oz44K544Gu5L2/44GE5Zue44GX44Gv44Gn44GN44Gq44GE77yJCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW1zIGF1ZGlvRGF0YSDjgqjjg7PjgrPjg7zjg4nlr77osaHjga7pn7Plo7Djg4fjg7zjgr8KICAgICAgICAgKiBAcmV0dXJucyDjgqjjg7PjgrPjg7zjg4nlvozjga7jg5DjgqTjg4jliJfjgILjgoLjgZcgRFRYIOOBjOacieWKueOBp+mfs+WjsOODh+ODvOOCv+OBjOeEoemfs+OBquWgtOWQiOOBq+OBryB1bmRlZmluZWQg44GM5Luj44KP44KK44Gr6L+U44GV44KM44KL44CCCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzCiAgICAgICAgICoKICAgICAgICAgKiDku6XkuIvjga7jgYTjgZrjgozjgYvjgavoqbLlvZPjgZnjgovloLTlkIjjgavjga/kvovlpJbjgYzpgIHlh7rjgZXjgozjgos6CiAgICAgICAgICogLSDlhaXlipvpn7Plo7Djg4fjg7zjgr/jgYwgMjBtcyDljZjkvY3vvIjjgrXjg7Pjg5fjg6vmlbDjgajjgZfjgabjga8ge0BsaW5rIEx5cmFFbmNvZGVyLmZyYW1lU2l6ZX3vvInjgafjga/jgarjgYQKICAgICAgICAgKiAtIOOBneOBruS7luOAgeS9leOCieOBi+OBrueQhueUseOBp+OCqOODs+OCs+ODvOODieOBq+WkseaVl+OBl+OBn+WgtOWQiAogICAgICAgICAqLwogICAgICAgIGVuY29kZShhdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5lbmNvZGVkQXVkaW9EYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZW5jb2RlIiwgYXVkaW9EYXRhIH0sIFthdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiDjgqjjg7PjgrPjg7zjg4DnlKjjgavnorrkv53jgZfjgZ/jg6rjgr3jg7zjgrnjgpLop6PmlL7jgZnjgosKICAgICAgICAgKi8KICAgICAgICBkZXN0cm95KCkgewogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZGVzdHJveSIgfSk7CiAgICAgICAgICAgIHRoaXMucG9ydC5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJTdGF0ZX0g44GL44KJIHtAbGluayBMeXJhRW5jb2Rlcn0g44KS5b6p5YWD44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJ9IOOBryB7QGxpbmsgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKX0g44KS5L2/44Gj44Gm44CBCiAgICAgICAgICog5Yil44GuIHdlYiB3b3JrZXIg44Gr6Lui6YCB44GZ44KL44GT44Go44GM5Y+v6IO944CCCiAgICAgICAgICog44Gf44Gg44GX44CB6Lui6YCB5pmC44Gr44Gv44Kv44Op44K544KE44Oh44K944OD44OJ44Gu54q25oWL44Gv6JC944Gh44Gm44GX44G+44GG44Gu44Gn44CBCiAgICAgICAgICog44Gd44KM44KS5b6p5YWD44GX44Gm5YaN44Gz5Yip55So5Y+v6IO944Gr44GZ44KL44Gf44KB44Gu6Zai5pWw44CCCiAgICAgICAgICog44Gq44GK44CB6Lui6YCB44Gu6Zqb44Gr44GvIHtAbGluayBMeXJhRW5jb2Rlci5wb3J0fSDjga7miYDmnInmqKnjgpLnp7vorbLjgZnjgovlv4XopoHjgYzjgYLjgovjgIIKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdGF0ZSDjgqjjg7PjgrPjg7zjg4Djga7nirbmhYsKICAgICAgICAgKiBAcmV0dXJuIOW+qeWFg+OBleOCjOOBn+OCqOODs+OCs+ODvOODgAogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBmcm9tU3RhdGUoc3RhdGUpIHsKICAgICAgICAgICAgc3RhdGUucG9ydC5zdGFydCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFFbmNvZGVyKHN0YXRlLnBvcnQsIHN0YXRlLmZyYW1lU2l6ZSwgc3RhdGUpOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjga7jg4fjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYURlY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44OH44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog5LiA44Gk44Gu44OV44Os44O844Og77yIe0BsaW5rIEx5cmFFbmNvZGVyLmRlY29kZX0g44Oh44K944OD44OJ44Gu6L+U44KK5YCk44Gu6Z+z5aOw44OH44O844K/77yJ44Gr5ZCr44G+44KM44KL44K144Oz44OX44Or5pWwCiAgICAgICAgICovCiAgICAgICAgZnJhbWVTaXplOwogICAgICAgIC8qKgogICAgICAgICAqIEBpbnRlcm5hbAogICAgICAgICAqLwogICAgICAgIGNvbnN0cnVjdG9yKHBvcnQsIGZyYW1lU2l6ZSwgb3B0aW9ucykgewogICAgICAgICAgICB0aGlzLnBvcnQgPSBwb3J0OwogICAgICAgICAgICB0aGlzLmZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXIuZW5jb2RlfSDjg6Hjgr3jg4Pjg4njgavjgojjgaPjgabjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZnjgosKICAgICAgICAgKgogICAgICAgICAqIOOBquOBiiBlbmNvZGVkQXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBlbmNvZGVkQXVkaW9EYXRhIOOCpOODs+OCueOCv+ODs+OCueOBruS9v+OBhOWbnuOBl+OBr+OBp+OBjeOBquOBhO+8iQogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtcyBlbmNvZGVkQXVkaW9EYXRhIOODh+OCs+ODvOODieWvvuixoeOBruODkOOCpOODiuODquWIl+OBquOBhOOBlyB1bmRlZmluZWQKICAgICAgICAgKiBAcmV0dXJucyDjg4fjgrPjg7zjg4njgZXjgozjgZ8gMjBtcyDliIbjga7pn7Plo7Djg4fjg7zjgr/jgIJ1bmRlZmluZWQg44GM5rih44GV44KM44Gf5aC05ZCI44Gr44Gv5Luj44KP44KK44Gr44Kz44Oz44OV44Kp44O844OI44OO44Kk44K644GM55Sf5oiQ44GV44KM44KL44CCCiAgICAgICAgICovCiAgICAgICAgZGVjb2RlKGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZWNvZGUiLCBlbmNvZGVkQXVkaW9EYXRhIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogIkx5cmFEZWNvZGVyLmRlY29kZSIsIGVuY29kZWRBdWRpb0RhdGEgfSwgW2VuY29kZWRBdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIOODh+OCs+ODvOODgOeUqOOBq+eiuuS/neOBl+OBn+ODquOCveODvOOCueOCkuino+aUvuOBmeOCiwogICAgICAgICAqLwogICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZXN0cm95IiB9KTsKICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2RlclN0YXRlfSDjgYvjgokge0BsaW5rIEx5cmFEZWNvZGVyfSDjgpLlvqnlhYPjgZnjgosKICAgICAgICAgKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2Rlcn0g44GvIHtAbGluayBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpfSDjgpLkvb/jgaPjgabjgIEKICAgICAgICAgKiDliKXjga4gd2ViIHdvcmtlciDjgavou6LpgIHjgZnjgovjgZPjgajjgYzlj6/og73jgIIKICAgICAgICAgKiDjgZ/jgaDjgZfjgIHou6LpgIHmmYLjgavjga/jgq/jg6njgrnjgoTjg6Hjgr3jg4Pjg4njga7nirbmhYvjga/okL3jgaHjgabjgZfjgb7jgYbjga7jgafjgIEKICAgICAgICAgKiDjgZ3jgozjgpLlvqnlhYPjgZfjgablho3jgbPliKnnlKjlj6/og73jgavjgZnjgovjgZ/jgoHjga7plqLmlbDjgIIKICAgICAgICAgKiDjgarjgYrjgIHou6LpgIHjga7pmpvjgavjga8ge0BsaW5rIEx5cmFEZWNvZGVyLnBvcnR9IOOBruaJgOacieaoqeOCkuenu+itsuOBmeOCi+W/heimgeOBjOOBguOCi+OAggogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0YXRlIOODh+OCs+ODvOODgOOBrueKtuaFiwogICAgICAgICAqIEByZXR1cm4g5b6p5YWD44GV44KM44Gf44OH44Kz44O844OACiAgICAgICAgICovCiAgICAgICAgc3RhdGljIGZyb21TdGF0ZShzdGF0ZSkgewogICAgICAgICAgICBzdGF0ZS5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgTHlyYURlY29kZXIoc3RhdGUucG9ydCwgc3RhdGUuZnJhbWVTaXplLCBzdGF0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUENN77yITDE277yJ44Gu6Z+z5aOw44OH44O844K/44KSIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGVuY29kZXIgTHlyYSDjgqjjg7PjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgUENNIOmfs+WjsOODh+ODvOOCvwogICAgICogQHBhcmFtIGNvbnRyb2xsZXIg6Z+z5aOw44OH44O844K/44Gu5Ye65Yqb44Kt44Ol44O8CiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoZW5jb2RlZEZyYW1lLmRhdGEpOwogICAgICAgIGNvbnN0IHJhd0RhdGEgPSBuZXcgSW50MTZBcnJheShlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoIC8gMik7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICAgICAgcmF3RGF0YVtpIC8gMl0gPSB2aWV3LmdldEludDE2KGksIGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgZW5jb2RlZCA9IGF3YWl0IGVuY29kZXIuZW5jb2RlKHJhd0RhdGEpOwogICAgICAgIGlmIChlbmNvZGVkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgLy8gRFRYIOOBjOacieWKueOAgeOBi+OBpOOAgSBlbmNvZGVkRnJhbWUg44GM54Sh6Z+z77yI44Gq44GE44GX44OO44Kk44K644Gu44G/44KS5ZCr44KT44Gn44GE44KL77yJ5aC05ZCI44Gr44Gv44GT44GT44Gr5p2l44KLCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBlbmNvZGVkLmJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZfjgaYgUENN77yITDE277yJ44Gr5aSJ5o+b44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGRlY29kZXIgTHlyYSDjg4fjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr8KICAgICAqIEBwYXJhbSBjb250cm9sbGVyIOmfs+WjsOODh+ODvOOCv+OBruWHuuWKm+OCreODpeODvAogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUx5cmFUb1BjbShkZWNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICBpZiAoZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aCA9PT0gMykgewogICAgICAgICAgICAvLyBlMmVlIOOCkuacieWKueOBq+OBl+OBn+WgtOWQiOOBq+OBr+OAgWUyZWUg44Oi44K444Ol44O844Or44GM5LiN5piO44Gq44OR44Kx44OD44OI44KS5Y+X5L+h44GX44Gf5aC05ZCI44GrCiAgICAgICAgICAgIC8vIG9wdXMg44Gu54Sh6Z+z44OR44Kx44OD44OI44KS55Sf5oiQ44GZ44KL44Gu44Gn44Gd44KM44KS54Sh6KaW44GZ44KL44CCCiAgICAgICAgICAgIC8vIOOBquOBiuOAgXNlbmRyZWN2IG9yIHNlbmRvbmx5IOOBp+aOpee2muebtOW+jOOBq+eUn+aIkOOBleOCjOOBn+ODkeOCseODg+ODiOOCkuWPl+S/oeOBmeOCi+OBqOW4uOOBq+OBk+OBk+OBq+OBj+OCi+aooeanmOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBMeXJhIOOBp+OBr+Wcp+e4ruW+jOOBrumfs+WjsOODh+ODvOOCv+OCteOCpOOCuuOBjOWbuuWumuiqv+OBp+OAgTMg44OQ44Kk44OI44Go44Gq44KL44GT44Go44Gv44Gq44GE44Gu44Gn44CBCiAgICAgICAgICAgIC8vIOOBk+OBruadoeS7tuOBp+ato+W4uOOBqiBMeXJhIOODkeOCseODg+ODiOOBjOaNqOOBpuOCieOCjOOCi+OBk+OBqOOBr+OBquOBhOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBGSVhNRShzaXplKTogZTJlZSDlgbTjgYvjgokgb3B1cyDjgpLku67lrprjgZfjgZ/nhKHpn7PnlJ/miJDjgrPjg7zjg4njgYzjgarjgY/jgarjgaPjgZ/jgonjgZPjga7jg6/jg7zjgq/jgqLjg6njgqbjg7Pjg4njgoLpmaTljrvjgZnjgosKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBkZWNvZGVkID0gYXdhaXQgZGVjb2Rlci5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoZW5jb2RlZEZyYW1lLmRhdGEpKTsKICAgICAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZGVjb2RlZC5sZW5ndGggKiAyKTsKICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICAgICAgZm9yIChjb25zdCBbaSwgdl0gb2YgZGVjb2RlZC5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgdmlldy5zZXRJbnQxNihpICogMiwgdiwgZmFsc2UpOwogICAgICAgIH0KICAgICAgICBlbmNvZGVkRnJhbWUuZGF0YSA9IGJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVTZW5kZXJUcmFuc2Zvcm0oZW5jb2RlclN0YXRlKSB7CiAgICAgICAgY29uc3QgZW5jb2RlciA9IEx5cmFFbmNvZGVyLmZyb21TdGF0ZShlbmNvZGVyU3RhdGUpOwogICAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKICAgICAgICAgICAgYXN5bmMgdHJhbnNmb3JtKGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgICAgICAgICAgYXdhaXQgdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsdXNoKCkgewogICAgICAgICAgICAgICAgZW5jb2Rlci5kZXN0cm95KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBjcmVhdGVSZWNlaXZlclRyYW5zZm9ybShkZWNvZGVyU3RhdGUpIHsKICAgICAgICBjb25zdCBkZWNvZGVyID0gTHlyYURlY29kZXIuZnJvbVN0YXRlKGRlY29kZXJTdGF0ZSk7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICBhc3luYyB0cmFuc2Zvcm0oZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc2Zvcm1MeXJhVG9QY20oZGVjb2RlciwgZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2goKSB7CiAgICAgICAgICAgICAgICBkZWNvZGVyLmRlc3Ryb3koKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIH0KICAgIG9ucnRjdHJhbnNmb3JtID0gKG1zZykgPT4gewogICAgICAgIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdzZW5kZXJUcmFuc2Zvcm0nKSB7CiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNyZWF0ZVNlbmRlclRyYW5zZm9ybShtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5seXJhRW5jb2Rlcik7CiAgICAgICAgICAgIG1zZy50cmFuc2Zvcm1lci5yZWFkYWJsZQogICAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgIC5waXBlVG8obXNnLnRyYW5zZm9ybWVyLndyaXRhYmxlKQogICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLndhcm4oZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdyZWNlaXZlclRyYW5zZm9ybScpIHsKICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlUmVjZWl2ZXJUcmFuc2Zvcm0obXNnLnRyYW5zZm9ybWVyLm9wdGlvbnMubHlyYURlY29kZXIpOwogICAgICAgICAgICBtc2cudHJhbnNmb3JtZXIucmVhZGFibGUKICAgICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAucGlwZVRvKG1zZy50cmFuc2Zvcm1lci53cml0YWJsZSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS53YXJuKGUpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUud2FybigndW5rbm93biBtZXNzYWdlJyk7CiAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICAgIH0KICAgIH07Cgp9KSk7Cg=='; - /** - * Lyra を使用するために必要な設定を保持するためのグローバル変数 - * - * undefined の場合には Lyra が無効になっていると判断され、 - * その状態で Lyra で音声をエンコード・デコード使用とすると実行時エラーとなる - */ - let LYRA_CONFIG; - /** - * Lyra のエンコード・デコードに必要な WebAssembly インスタンスを保持するためのグローバル変数 - */ - let LYRA_MODULE; - /** - * Lyra の初期化を行うメソッド - * - * このメソッドの呼び出し時には設定情報の保存のみを行い、 - * Lyra での音声エンコード・デコードに必要な WebAssembly ファイルおよびモデルファイルは、 - * 実際に必要になったタイミングで初めてロードされます - * - * Lyra を使うためには以下の機能がブラウザで利用可能である必要があります: - * - クロスオリジン分離(内部で SharedArrayBuffer クラスを使用しているため) - * - WebRTC Encoded Transform - * - * これらの機能が利用不可の場合には、このメソッドは警告メッセージを出力した上で、 - * 返り値として false を返します - * - * @param config Lyra の設定情報 - * @returns Lyra の初期化に成功したかどうか - * - * @public - */ - function initLyra(config) { - if (!('createEncodedStreams' in RTCRtpSender.prototype || 'transform' in RTCRtpSender.prototype)) { - console.warn("This browser doesn't support WebRTC Encoded Transform feature that Lyra requires."); - return false; - } - if (typeof SharedArrayBuffer === 'undefined') { - console.warn('Lyra requires cross-origin isolation to use SharedArrayBuffer.'); - return false; - } - LYRA_CONFIG = config; - LYRA_MODULE = undefined; - return true; - } - /*** - * Lyra が初期化済みかどうか - * - * @returns Lyra が初期化済みかどうか - * @internal - */ - function isLyraInitialized() { - return LYRA_CONFIG !== undefined; - } - /** - * Lyra のエンコーダを生成して返す - * - * @param options エンコーダに指定するオプション - * @returns Lyra エンコーダのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - * @internal - */ - async function createLyraEncoder(options = {}) { - return (await loadLyraModule()).createEncoder(options); - } - /** - * Lyra のデコーダを生成して返す - * - * @param options デコーダに指定するオプション - * @returns Lyra デコーダのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - * @internal - */ - async function createLyraDecoder(options = {}) { - return (await loadLyraModule()).createDecoder(options); - } - /** - * Lyra 用の WebAssembly インスタンスをロードする - * - * 既にロード済みの場合には、そのインスタンスを返す - * - * @returns LyraModule インスタンスのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - * @internal - */ - async function loadLyraModule() { - if (LYRA_CONFIG === undefined) { - throw new Error('Lyra has not been initialized. Please call `Sora.initLyra()` beforehand.'); - } - if (LYRA_MODULE === undefined) { - LYRA_MODULE = await LyraModule.load(LYRA_CONFIG.wasmPath, LYRA_CONFIG.modelPath); - } - return LYRA_MODULE; - } - /** - * WebRTC Encoded Transform に渡される Lyra 用の web worker を生成する - * - * @returns Lyra でエンコードおよびデコードを行う web worker インスタンス - * @internal - */ - function createLyraWorker() { - const lyraWorkerScript = atob(LYRA_WORKER_SCRIPT); - const lyraWorker = new Worker(URL.createObjectURL(new Blob([lyraWorkerScript], { type: 'application/javascript' }))); - return lyraWorker; - } - /** - * PCM(L16)の音声データを Lyra でエンコードする - * - * @param encoder Lyra エンコーダ - * @param encodedFrame PCM 音声データ - * @param controller 音声データの出力キュー - * @internal - */ - async function transformPcmToLyra(encoder, encodedFrame, controller) { - const view = new DataView(encodedFrame.data); - const rawData = new Int16Array(encodedFrame.data.byteLength / 2); - for (let i = 0; i < encodedFrame.data.byteLength; i += 2) { - rawData[i / 2] = view.getInt16(i, false); - } - const encoded = await encoder.encode(rawData); - if (encoded === undefined) { - // DTX が有効、かつ、 encodedFrame が無音(ないしノイズのみを含んでいる)場合にはここに来る - return; - } - encodedFrame.data = encoded.buffer; - controller.enqueue(encodedFrame); - } - /** - * Lyra でエンコードされた音声データをデコードして PCM(L16)に変換する - * - * @param decoder Lyra デコーダ - * @param encodedFrame Lyra でエンコードされた音声データ - * @param controller 音声データの出力キュー - * @internal - */ - async function transformLyraToPcm(decoder, encodedFrame, controller) { - if (encodedFrame.data.byteLength === 3) { - // e2ee を有効にした場合には、e2ee モジュールが不明なパケットを受信した場合に - // opus の無音パケットを生成するのでそれを無視する。 - // なお、sendrecv or sendonly で接続直後に生成されたパケットを受信すると常にここにくる模様。 - // - // Lyra では圧縮後の音声データサイズが固定調で、3 バイトとなることはないので、 - // この条件で正常な Lyra パケットが捨てられることはない。 - // - // FIXME(size): e2ee 側から opus を仮定した無音生成コードがなくなったらこのワークアラウンドも除去する - return; - } - const decoded = await decoder.decode(new Uint8Array(encodedFrame.data)); - const buffer = new ArrayBuffer(decoded.length * 2); - const view = new DataView(buffer); - for (const [i, v] of decoded.entries()) { - view.setInt16(i * 2, v, false); - } - encodedFrame.data = buffer; - controller.enqueue(encodedFrame); - } - /** - * SDP に記載される Lyra のエンコードパラメータ - * @internal - */ - class LyraParams { - constructor(version, bitrate, enableDtx) { - if (version !== LYRA_VERSION) { - throw new Error(`Unsupported Lyra version: ${version} (supported version is ${LYRA_VERSION})`); - } - if (bitrate !== 3200 && bitrate !== 6000 && bitrate !== 9200) { - throw new Error(`Unsupported Lyra bitrate: ${bitrate} (must be one of 3200, 6000, or 9200)`); - } - this.version = version; - this.bitrate = bitrate; - this.enableDtx = enableDtx; - } - /** - * SDP の media description 部分をパースして Lyra のエンコードパラメータを取得する - * - * @param media SDP の media description 部分 - * @returns パース結果 - * @throws SDP の内容が期待通りではなくパースに失敗した場合 - */ - static parseMediaDescription(media) { - const version = /^a=fmtp:109.*[ ;]version=([0-9.]+)([;]|$)/m.exec(media); - if (!version) { - throw new Error(`Lyra parameter 'version' is not found in media description: ${media}`); - } - const bitrate = /^a=fmtp:109.*[ ;]bitrate=([0-9]+)([;]|$)/m.exec(media); - if (!bitrate) { - throw new Error(`Lyra parameter 'bitrate' is not found in media description: ${media}`); - } - const usedtx = /^a=fmtp:109.*[ ;]usedtx=([01])([;]|$)/m.exec(media); - if (!usedtx) { - throw new Error(`Lyra parameter 'usedtx' is not found in media description: ${media}`); - } - return new LyraParams(version[1], Number(bitrate[1]), usedtx[1] == '1'); - } - /** - * このエンコードパラメータに対応する SDP の fmtp 行を生成する - * - * @returns SDP の fmtp 行 - */ - toFmtpString() { - return `a=fmtp:109 version=${this.version};bitrate=${this.bitrate};usedtx=${this.enableDtx ? 1 : 0}`; - } - } - /** - * 接続単位の Lyra 関連の状態を保持するためのクラス - * - * @internal - */ - class LyraState { - constructor() { - this.encoderOptions = {}; - this.midToLyraParams = new Map(); - } - /** - * offer SDP を受け取り Lyra 対応のために必要な置換や情報の収集を行う - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - processOfferSdp(sdp) { - if (!sdp.includes('109 lyra/')) { - // 対象外なので処理する必要はない - return sdp; - } - this.midToLyraParams = new Map(); - const splited = sdp.split(/^m=/m); - let replacedSdp = splited[0]; - for (let media of splited.slice(1)) { - const midResult = /a=mid:(.*)/.exec(media); - if (midResult === null) { - continue; - } - const mid = midResult[1]; - if (media.startsWith('audio') && media.includes('109 lyra/')) { - if (media.includes('a=fmtp:109 ')) { - const params = LyraParams.parseMediaDescription(media); - if (media.includes('a=recvonly')) { - // sora からの offer SDP で recvonly ということは client から見れば送信側なので - // このパラメータをエンコード用に保存しておく - this.encoderOptions.bitrate = params.bitrate; - this.encoderOptions.enableDtx = params.enableDtx; - } - this.midToLyraParams.set(mid, params); - } - // SDP を置換する: - // - libwebrtc は lyra を認識しないので L16 に置き換える - // - ただし SDP に L16 しか含まれていないと音声なし扱いになってしまうので、それを防ぐために 110 で opus を追加する - media = media - .replace(/SAVPF([0-9 ]*) 109/, 'SAVPF$1 109 110') - .replace(/109 lyra[/]16000[/]1/, '110 opus/48000/2') - .replace(/a=fmtp:109 .*/, 'a=rtpmap:109 L16/16000\r\na=ptime:20'); - } - replacedSdp += 'm=' + media; - } - return replacedSdp; - } - /** - * setLocalDescription() に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForLocal(sdp) { - if (!sdp.includes('a=rtpmap:110 ')) { - // Lyra は使われていないので書き換えは不要 - return sdp; - } - const splited = sdp.split(/^m=/m); - let replacedSdp = splited[0]; - for (let media of splited.slice(1)) { - if (media.startsWith('audio') && media.includes('a=rtpmap:110 ')) { - // opus(110) ではなく L16(109) を使うように SDP を書き換える - // - // なお libwebrtc 的にはこの置換を行わなくても内部的には L16 が採用されるが、 - // SDP と実際の動作を一致させるためにここで SDP を置換しておく - media = media - .replace(/SAVPF([0-9 ]*) 110/, 'SAVPF$1 109') - .replace(/a=rtpmap:110 opus[/]48000[/]2/, 'a=rtpmap:109 L16/16000') - .replace(/a=fmtp:110 .*/, 'a=ptime:20'); - } - replacedSdp += 'm=' + media; - } - return replacedSdp; - } - /** - * Sora に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForSora(sdp) { - if (!sdp.includes('a=rtpmap:109 L16/16000')) { - // Lyra は使われていないので書き換えは不要 - return sdp; - } - const splited = sdp.split(/^m=/m); - let replacedSdp = splited[0]; - for (let media of splited.splice(1)) { - const midResult = /a=mid:(.*)/.exec(media); - if (midResult === null) { - continue; - } - const mid = midResult[1]; - if (mid && media.startsWith('audio') && media.includes('a=rtpmap:109 L16/16000')) { - // Sora 用に L16 を Lyra に置換する - const params = this.midToLyraParams.get(mid); - if (params === undefined) { - throw new Error(`Unknown audio mid ${mid}`); - } - media = media - .replace(/a=rtpmap:109 L16[/]16000/, 'a=rtpmap:109 lyra/16000/1') - .replace(/a=ptime:20/, params.toFmtpString()); - } - replacedSdp += 'm=' + media; - } - return replacedSdp; - } - /** - * Lyra のエンコーダを生成する - * - * @returns 生成されたエンコーダ - */ - async createEncoder() { - return await createLyraEncoder(this.encoderOptions); - } - /** - * Lyra のデコーダを生成する - * - * @returns 生成されたデコーダ - */ - async createDecoder() { - return await createLyraDecoder({}); - } - } - - // DEFLATE is a complex format; to read this code, you should probably check the RFC first: - // https://tools.ietf.org/html/rfc1951 - // You may also wish to take a look at the guide I made about this program: - // https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad - // Some of the following code is similar to that of UZIP.js: - // https://github.com/photopea/UZIP.js - // However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size. - // Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint - // is better for memory in most engines (I *think*). - - // aliases for shorter compressed code (most minifers don't do this) - var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; - // fixed length extra bits - var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]); - // fixed distance extra bits - var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]); - // code length index map - var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); - // get base, reverse index map from extra bits - var freb = function (eb, start) { - var b = new u16(31); - for (var i = 0; i < 31; ++i) { - b[i] = start += 1 << eb[i - 1]; - } - // numbers here are at max 18 bits - var r = new i32(b[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b[i]; j < b[i + 1]; ++j) { - r[j] = ((j - b[i]) << 5) | i; - } - } - return { b: b, r: r }; - }; - var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; - // we can ignore the fact that the other numbers are wrong; they never happen anyway - fl[28] = 258, revfl[258] = 28; - var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r; - // map of value to reverse (assuming 16 bits) - var rev = new u16(32768); - for (var i = 0; i < 32768; ++i) { - // reverse table algorithm from SO - var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1); - x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2); - x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4); - rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1; - } - // create huffman tree from u8 "map": index -> code length for code index - // mb (max bits) must be at most 15 - // TODO: optimize/split up? - var hMap = (function (cd, mb, r) { - var s = cd.length; - // index - var i = 0; - // u16 "map": index -> # of codes with bit length = index - var l = new u16(mb); - // length of cd must be 288 (total # of codes) - for (; i < s; ++i) { - if (cd[i]) - ++l[cd[i] - 1]; - } - // u16 "map": index -> minimum code for bit length = index - var le = new u16(mb); - for (i = 1; i < mb; ++i) { - le[i] = (le[i - 1] + l[i - 1]) << 1; - } - var co; - if (r) { - // u16 "map": index -> number of actual bits, symbol for code - co = new u16(1 << mb); - // bits to remove for reverser - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - // ignore 0 lengths - if (cd[i]) { - // num encoding both symbol and bits read - var sv = (i << 4) | cd[i]; - // free bits - var r_1 = mb - cd[i]; - // start value - var v = le[cd[i] - 1]++ << r_1; - // m is end value - for (var m = v | ((1 << r_1) - 1); v <= m; ++v) { - // every 16 bit value starting with the code yields the same result - co[rev[v] >> rvb] = sv; - } - } - } - } - else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]); - } - } - } - return co; - }); - // fixed length tree - var flt = new u8(288); - for (var i = 0; i < 144; ++i) - flt[i] = 8; - for (var i = 144; i < 256; ++i) - flt[i] = 9; - for (var i = 256; i < 280; ++i) - flt[i] = 7; - for (var i = 280; i < 288; ++i) - flt[i] = 8; - // fixed distance tree - var fdt = new u8(32); - for (var i = 0; i < 32; ++i) - fdt[i] = 5; - // fixed length map - var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1); - // fixed distance map - var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1); - // find max of array - var max = function (a) { - var m = a[0]; - for (var i = 1; i < a.length; ++i) { - if (a[i] > m) - m = a[i]; - } - return m; - }; - // read d, starting at bit p and mask with m - var bits = function (d, p, m) { - var o = (p / 8) | 0; - return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m; - }; - // read d, starting at bit p continuing for at least 16 bits - var bits16 = function (d, p) { - var o = (p / 8) | 0; - return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7)); - }; - // get end of byte - var shft = function (p) { return ((p + 7) / 8) | 0; }; - // typed array slice - allows garbage collector to free original reference, - // while being more compatible than .slice - var slc = function (v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - // can't use .constructor in case user-supplied - var n = new u8(e - s); - n.set(v.subarray(s, e)); - return n; - }; - // error codes - var ec = [ - 'unexpected EOF', - 'invalid block type', - 'invalid length/literal', - 'invalid distance', - 'stream finished', - 'no stream handler', - , - 'no callback', - 'invalid UTF-8 data', - 'extra field too long', - 'date not in range 1980-2099', - 'filename too long', - 'stream finishing', - 'invalid zip data' - // determined by unknown compression method - ]; - var err = function (ind, msg, nt) { - var e = new Error(msg || ec[ind]); - e.code = ind; - if (Error.captureStackTrace) - Error.captureStackTrace(e, err); - if (!nt) - throw e; - return e; - }; - // expands raw DEFLATE data - var inflt = function (dat, st, buf, dict) { - // source length dict length - var sl = dat.length, dl = dict ? dict.length : 0; - if (!sl || st.f && !st.l) - return buf || new u8(0); - // have to estimate size - var noBuf = !buf || st.i != 2; - // no state - var noSt = st.i; - // Assumes roughly 33% compression ratio average - if (!buf) - buf = new u8(sl * 3); - // ensure buffer can fit at least l elements - var cbuf = function (l) { - var bl = buf.length; - // need to increase size to fit - if (l > bl) { - // Double or set to necessary, whichever is greater - var nbuf = new u8(Math.max(bl * 2, l)); - nbuf.set(buf); - buf = nbuf; - } - }; - // last chunk bitpos bytes - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - // total bits - var tbts = sl * 8; - do { - if (!lm) { - // BFINAL - this is only 1 when last chunk is next - final = bits(dat, pos, 1); - // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - // go to end of byte boundary - var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l; - if (t > sl) { - if (noSt) - err(0); - break; - } - // ensure size - if (noBuf) - cbuf(bt + l); - // Copy over uncompressed data - buf.set(dat.subarray(s, t), bt); - // Get new bitpos, update byte count - st.b = bt += l, st.p = pos = t * 8, st.f = final; - continue; - } - else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - // literal lengths - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - // length+distance tree - var ldt = new u8(tl); - // code length tree - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - // use index map to get real code - clt[clim[i]] = bits(dat, pos + i * 3, 7); - } - pos += hcLen * 3; - // code lengths bits - var clb = max(clt), clbmsk = (1 << clb) - 1; - // code lengths map - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl;) { - var r = clm[bits(dat, pos, clbmsk)]; - // bits read - pos += r & 15; - // symbol - var s = r >> 4; - // code length to copy - if (s < 16) { - ldt[i++] = s; - } - else { - // copy count - var c = 0, n = 0; - if (s == 16) - n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; - else if (s == 17) - n = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n = 11 + bits(dat, pos, 127), pos += 7; - while (n--) - ldt[i++] = c; - } - } - // length tree distance tree - var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); - // max length bits - lbt = max(lt); - // max dist bits - dbt = max(dt); - lm = hMap(lt, lbt, 1); - dm = hMap(dt, dbt, 1); - } - else - err(1); - if (pos > tbts) { - if (noSt) - err(0); - break; - } - } - // Make sure the buffer can hold this + the largest possible addition - // Maximum chunk size (practically, theoretically infinite) is 2^17 - if (noBuf) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (;; lpos = pos) { - // bits read, code - var c = lm[bits16(dat, pos) & lms], sym = c >> 4; - pos += c & 15; - if (pos > tbts) { - if (noSt) - err(0); - break; - } - if (!c) - err(2); - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } - else { - var add = sym - 254; - // no extra bits needed if less - if (sym > 264) { - // index - var i = sym - 257, b = fleb[i]; - add = bits(dat, pos, (1 << b) - 1) + fl[i]; - pos += b; - } - // dist - var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; - if (!d) - err(3); - pos += d & 15; - var dt = fd[dsym]; - if (dsym > 3) { - var b = fdeb[dsym]; - dt += bits16(dat, pos) & (1 << b) - 1, pos += b; - } - if (pos > tbts) { - if (noSt) - err(0); - break; - } - if (noBuf) - cbuf(bt + 131072); - var end = bt + add; - if (bt < dt) { - var shift = dl - dt, dend = Math.min(dt, end); - if (shift + bt < 0) - err(3); - for (; bt < dend; ++bt) - buf[bt] = dict[shift + bt]; - } - for (; bt < end; bt += 4) { - buf[bt] = buf[bt - dt]; - buf[bt + 1] = buf[bt + 1 - dt]; - buf[bt + 2] = buf[bt + 2 - dt]; - buf[bt + 3] = buf[bt + 3 - dt]; - } - bt = end; - } - } - st.l = lm, st.p = lpos, st.b = bt, st.f = final; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt == buf.length ? buf : slc(buf, 0, bt); - }; - // starting at p, write the minimum number of bits that can hold v to d - var wbits = function (d, p, v) { - v <<= p & 7; - var o = (p / 8) | 0; - d[o] |= v; - d[o + 1] |= v >> 8; - }; - // starting at p, write the minimum number of bits (>8) that can hold v to d - var wbits16 = function (d, p, v) { - v <<= p & 7; - var o = (p / 8) | 0; - d[o] |= v; - d[o + 1] |= v >> 8; - d[o + 2] |= v >> 16; - }; - // creates code lengths from a frequency table - var hTree = function (d, mb) { - // Need extra info to make a tree - var t = []; - for (var i = 0; i < d.length; ++i) { - if (d[i]) - t.push({ s: i, f: d[i] }); - } - var s = t.length; - var t2 = t.slice(); - if (!s) - return { t: et, l: 0 }; - if (s == 1) { - var v = new u8(t[0].s + 1); - v[t[0].s] = 1; - return { t: v, l: 1 }; - } - t.sort(function (a, b) { return a.f - b.f; }); - // after i2 reaches last ind, will be stopped - // freq must be greater than largest possible number of symbols - t.push({ s: -1, f: 25001 }); - var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2; - t[0] = { s: -1, f: l.f + r.f, l: l, r: r }; - // efficient algorithm from UZIP.js - // i0 is lookbehind, i2 is lookahead - after processing two low-freq - // symbols that combined have high freq, will start processing i2 (high-freq, - // non-composite) symbols instead - // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/ - while (i1 != s - 1) { - l = t[t[i0].f < t[i2].f ? i0++ : i2++]; - r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++]; - t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r }; - } - var maxSym = t2[0].s; - for (var i = 1; i < s; ++i) { - if (t2[i].s > maxSym) - maxSym = t2[i].s; - } - // code lengths - var tr = new u16(maxSym + 1); - // max bits in tree - var mbt = ln(t[i1 - 1], tr, 0); - if (mbt > mb) { - // more algorithms from UZIP.js - // TODO: find out how this code works (debt) - // ind debt - var i = 0, dt = 0; - // left cost - var lft = mbt - mb, cst = 1 << lft; - t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; }); - for (; i < s; ++i) { - var i2_1 = t2[i].s; - if (tr[i2_1] > mb) { - dt += cst - (1 << (mbt - tr[i2_1])); - tr[i2_1] = mb; - } - else - break; - } - dt >>= lft; - while (dt > 0) { - var i2_2 = t2[i].s; - if (tr[i2_2] < mb) - dt -= 1 << (mb - tr[i2_2]++ - 1); - else - ++i; - } - for (; i >= 0 && dt; --i) { - var i2_3 = t2[i].s; - if (tr[i2_3] == mb) { - --tr[i2_3]; - ++dt; - } - } - mbt = mb; - } - return { t: new u8(tr), l: mbt }; - }; - // get the max length and assign length codes - var ln = function (n, l, d) { - return n.s == -1 - ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) - : (l[n.s] = d); - }; - // length codes generation - var lc = function (c) { - var s = c.length; - // Note that the semicolon was intentional - while (s && !c[--s]) - ; - var cl = new u16(++s); - // ind num streak - var cli = 0, cln = c[0], cls = 1; - var w = function (v) { cl[cli++] = v; }; - for (var i = 1; i <= s; ++i) { - if (c[i] == cln && i != s) - ++cls; - else { - if (!cln && cls > 2) { - for (; cls > 138; cls -= 138) - w(32754); - if (cls > 2) { - w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305); - cls = 0; - } - } - else if (cls > 3) { - w(cln), --cls; - for (; cls > 6; cls -= 6) - w(8304); - if (cls > 2) - w(((cls - 3) << 5) | 8208), cls = 0; - } - while (cls--) - w(cln); - cls = 1; - cln = c[i]; - } - } - return { c: cl.subarray(0, cli), n: s }; - }; - // calculate the length of output from tree, code lengths - var clen = function (cf, cl) { - var l = 0; - for (var i = 0; i < cl.length; ++i) - l += cf[i] * cl[i]; - return l; - }; - // writes a fixed block - // returns the new bit pos - var wfblk = function (out, pos, dat) { - // no need to write 00 as type: TypedArray defaults to 0 - var s = dat.length; - var o = shft(pos + 2); - out[o] = s & 255; - out[o + 1] = s >> 8; - out[o + 2] = out[o] ^ 255; - out[o + 3] = out[o + 1] ^ 255; - for (var i = 0; i < s; ++i) - out[o + i + 4] = dat[i]; - return (o + 4 + s) * 8; - }; - // writes a block - var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { - wbits(out, p++, final); - ++lf[256]; - var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l; - var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l; - var _c = lc(dlt), lclt = _c.c, nlc = _c.n; - var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; - var lcfreq = new u16(19); - for (var i = 0; i < lclt.length; ++i) - ++lcfreq[lclt[i] & 31]; - for (var i = 0; i < lcdt.length; ++i) - ++lcfreq[lcdt[i] & 31]; - var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; - var nlcc = 19; - for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) - ; - var flen = (bl + 5) << 3; - var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; - if (bs >= 0 && flen <= ftlen && flen <= dtlen) - return wfblk(out, p, dat.subarray(bs, bs + bl)); - var lm, ll, dm, dl; - wbits(out, p, 1 + (dtlen < ftlen)), p += 2; - if (dtlen < ftlen) { - lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt; - var llm = hMap(lct, mlcb, 0); - wbits(out, p, nlc - 257); - wbits(out, p + 5, ndc - 1); - wbits(out, p + 10, nlcc - 4); - p += 14; - for (var i = 0; i < nlcc; ++i) - wbits(out, p + 3 * i, lct[clim[i]]); - p += 3 * nlcc; - var lcts = [lclt, lcdt]; - for (var it = 0; it < 2; ++it) { - var clct = lcts[it]; - for (var i = 0; i < clct.length; ++i) { - var len = clct[i] & 31; - wbits(out, p, llm[len]), p += lct[len]; - if (len > 15) - wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12; - } - } - } - else { - lm = flm, ll = flt, dm = fdm, dl = fdt; - } - for (var i = 0; i < li; ++i) { - var sym = syms[i]; - if (sym > 255) { - var len = (sym >> 18) & 31; - wbits16(out, p, lm[len + 257]), p += ll[len + 257]; - if (len > 7) - wbits(out, p, (sym >> 23) & 31), p += fleb[len]; - var dst = sym & 31; - wbits16(out, p, dm[dst]), p += dl[dst]; - if (dst > 3) - wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst]; - } - else { - wbits16(out, p, lm[sym]), p += ll[sym]; - } - } - wbits16(out, p, lm[256]); - return p + ll[256]; - }; - // deflate options (nice << 13) | chain - var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); - // empty - var et = /*#__PURE__*/ new u8(0); - // compresses data into a raw DEFLATE buffer - var dflt = function (dat, lvl, plvl, pre, post, st) { - var s = st.z || dat.length; - var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post); - // writing to this writes to the output buffer - var w = o.subarray(pre, o.length - post); - var lst = st.l; - var pos = (st.r || 0) & 7; - if (lvl) { - if (pos) - w[0] = st.r >> 3; - var opt = deo[lvl - 1]; - var n = opt >> 13, c = opt & 8191; - var msk_1 = (1 << plvl) - 1; - // prev 2-byte val map curr 2-byte val map - var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1); - var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; - var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; }; - // 24576 is an arbitrary number of maximum symbols per block - // 424 buffer for last block - var syms = new i32(25000); - // length/literal freq distance freq - var lf = new u16(288), df = new u16(32); - // l/lcnt exbits index l/lind waitdx blkpos - var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; - for (; i + 2 < s; ++i) { - // hash value - var hv = hsh(i); - // index mod 32768 previous index mod - var imod = i & 32767, pimod = head[hv]; - prev[imod] = pimod; - head[hv] = imod; - // We always should modify head and prev, but only add symbols if - // this data is not yet processed ("wait" for wait index) - if (wi <= i) { - // bytes remaining - var rem = s - i; - if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) { - pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); - li = lc_1 = eb = 0, bs = i; - for (var j = 0; j < 286; ++j) - lf[j] = 0; - for (var j = 0; j < 30; ++j) - df[j] = 0; - } - // len dist chain - var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767; - if (rem > 2 && hv == hsh(i - dif)) { - var maxn = Math.min(n, rem) - 1; - var maxd = Math.min(32767, i); - // max possible length - // not capped at dif because decompressors implement "rolling" index population - var ml = Math.min(258, rem); - while (dif <= maxd && --ch_1 && imod != pimod) { - if (dat[i + l] == dat[i + l - dif]) { - var nl = 0; - for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) - ; - if (nl > l) { - l = nl, d = dif; - // break out early when we reach "nice" (we are satisfied enough) - if (nl > maxn) - break; - // now, find the rarest 2-byte sequence within this - // length of literals and search for that instead. - // Much faster than just using the start - var mmd = Math.min(dif, nl - 2); - var md = 0; - for (var j = 0; j < mmd; ++j) { - var ti = i - dif + j & 32767; - var pti = prev[ti]; - var cd = ti - pti & 32767; - if (cd > md) - md = cd, pimod = ti; - } - } - } - // check the previous match - imod = pimod, pimod = prev[imod]; - dif += imod - pimod & 32767; - } - } - // d will be nonzero only when a match was found - if (d) { - // store both dist and len data in one int32 - // Make sure this is recognized as a len/dist with 28th bit (2^28) - syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d]; - var lin = revfl[l] & 31, din = revfd[d] & 31; - eb += fleb[lin] + fdeb[din]; - ++lf[257 + lin]; - ++df[din]; - wi = i + l; - ++lc_1; - } - else { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - } - } - for (i = Math.max(i, wi); i < s; ++i) { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - if (!lst) { - st.r = (pos & 7) | w[(pos / 8) | 0] << 3; - // shft(pos) now 1 less if pos & 7 != 0 - pos -= 7; - st.h = head, st.p = prev, st.i = i, st.w = wi; - } - } - else { - for (var i = st.w || 0; i < s + lst; i += 65535) { - // end - var e = i + 65535; - if (e >= s) { - // write final block - w[(pos / 8) | 0] = lst; - e = s; - } - pos = wfblk(w, pos + 1, dat.subarray(i, e)); - } - st.i = s; - } - return slc(o, 0, pre + shft(pos) + post); - }; - // Adler32 - var adler = function () { - var a = 1, b = 0; - return { - p: function (d) { - // closures have awful performance - var n = a, m = b; - var l = d.length | 0; - for (var i = 0; i != l;) { - var e = Math.min(i + 2655, l); - for (; i < e; ++i) - m += n += d[i]; - n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16); - } - a = n, b = m; - }, - d: function () { - a %= 65521, b %= 65521; - return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8); - } - }; - }; - // deflate with opts - var dopt = function (dat, opt, pre, post, st) { - if (!st) { - st = { l: 1 }; - if (opt.dictionary) { - var dict = opt.dictionary.subarray(-32768); - var newDat = new u8(dict.length + dat.length); - newDat.set(dict); - newDat.set(dat, dict.length); - dat = newDat; - st.w = dict.length; - } - } - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, st); - }; - // write bytes - var wbytes = function (d, b, v) { - for (; v; ++b) - d[b] = v, v >>>= 8; - }; - // zlib header - var zlh = function (c, o) { - var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; - c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32); - c[1] |= 31 - ((c[0] << 8) | c[1]) % 31; - if (o.dictionary) { - var h = adler(); - h.p(o.dictionary); - wbytes(c, 2, h.d()); - } - }; - // zlib start - var zls = function (d, dict) { - if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) - err(6, 'invalid zlib data'); - if ((d[1] >> 5 & 1) == +!dict) - err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary'); - return (d[1] >> 3 & 4) + 2; - }; - /** - * Compress data with Zlib - * @param data The data to compress - * @param opts The compression options - * @returns The zlib-compressed version of the data - */ - function zlibSync(data, opts) { - if (!opts) - opts = {}; - var a = adler(); - a.p(data); - var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4); - return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d; - } - /** - * Expands Zlib data - * @param data The data to decompress - * @param opts The decompression options - * @returns The decompressed version of the data - */ - function unzlibSync(data, opts) { - return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); - } - // text decoder - var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder(); - // text decoder stream - var tds = 0; - try { - td.decode(et, { stream: true }); - tds = 1; - } - catch (e) { } - - function browser() { - const ua = window.navigator.userAgent.toLocaleLowerCase(); - if (ua.indexOf('edge') !== -1) { - return 'edge'; - } - else if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { - return 'chrome'; - } - else if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { - return 'safari'; - } - else if (ua.indexOf('opera') !== -1) { - return 'opera'; - } - else if (ua.indexOf('firefox') !== -1) { - return 'firefox'; - } - return null; - } - function enabledSimulcast() { - const REQUIRED_HEADER_EXTEMSIONS = [ - 'urn:ietf:params:rtp-hdrext:sdes:mid', - 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', - 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id', - ]; - if (!window.RTCRtpSender) { - return false; - } - if (!RTCRtpSender.getCapabilities) { - return false; - } - const capabilities = RTCRtpSender.getCapabilities('video'); - if (!capabilities) { - return false; - } - const headerExtensions = capabilities.headerExtensions.map((h) => h.uri); - const hasAllRequiredHeaderExtensions = REQUIRED_HEADER_EXTEMSIONS.every((h) => headerExtensions.includes(h)); - return hasAllRequiredHeaderExtensions; - } - function parseDataChannelConfiguration(dataChannelConfiguration) { - if (typeof dataChannelConfiguration !== 'object' || dataChannelConfiguration === null) { - throw new Error("Failed to parse options dataChannels. Options dataChannels element must be type 'object'"); - } - const configuration = dataChannelConfiguration; - const result = {}; - if (typeof configuration.label === 'string') { - result.label = configuration.label; - } - if (typeof configuration.direction === 'string') { - result.direction = configuration.direction; - } - if (typeof configuration.ordered === 'boolean') { - result.ordered = configuration.ordered; - } - if (typeof configuration.compress === 'boolean') { - result.compress = configuration.compress; - } - if (typeof configuration.maxPacketLifeTime === 'number') { - result.max_packet_life_time = configuration.maxPacketLifeTime; - } - if (typeof configuration.maxRetransmits === 'number') { - result.max_retransmits = configuration.maxRetransmits; - } - if (typeof configuration.protocol === 'string') { - result.protocol = configuration.protocol; - } - return result; - } - function parseDataChannelConfigurations(dataChannelConfigurations) { - const result = []; - for (const dataChannelConfiguration of dataChannelConfigurations) { - result.push(parseDataChannelConfiguration(dataChannelConfiguration)); - } - return result; - } - function isSafari() { - return browser() === 'safari'; - } - function isFirefox() { - return browser() === 'firefox'; - } - function createSignalingMessage(offerSDP, role, channelId, metadata, options, redirect) { - if (role !== 'sendrecv' && role !== 'sendonly' && role !== 'recvonly') { - throw new Error('Unknown role type'); - } - if (channelId === null || channelId === undefined) { - throw new Error('channelId can not be null or undefined'); - } - const message = { - type: 'connect', - sora_client: 'Sora JavaScript SDK 2023.2.0-canary.0', - environment: window.navigator.userAgent, - role: role, - channel_id: channelId, - sdp: offerSDP, - audio: true, - video: true, - }; - // role: sendrecv で multistream: false の場合は例外を発生させる - if (role === 'sendrecv' && options.multistream !== true) { - throw new Error("Failed to parse options. Options multistream must be true when connecting using 'sendrecv'"); - } - if (redirect === true) { - message.redirect = true; - } - if (typeof options.multistream === 'boolean') { - message.multistream = options.multistream; - } - if (typeof options.simulcast === 'boolean') { - message.simulcast = options.simulcast; - } - const simalcastRids = ['r0', 'r1', 'r2']; - if (options.simulcastRid !== undefined && 0 <= simalcastRids.indexOf(options.simulcastRid)) { - message.simulcast_rid = options.simulcastRid; - } - if (typeof options.spotlight === 'boolean') { - message.spotlight = options.spotlight; - } - if ('spotlightNumber' in options) { - message.spotlight_number = options.spotlightNumber; - } - const spotlightFocusRids = ['none', 'r0', 'r1', 'r2']; - if (options.spotlightFocusRid !== undefined && - 0 <= spotlightFocusRids.indexOf(options.spotlightFocusRid)) { - message.spotlight_focus_rid = options.spotlightFocusRid; - } - if (options.spotlightUnfocusRid !== undefined && - 0 <= spotlightFocusRids.indexOf(options.spotlightUnfocusRid)) { - message.spotlight_unfocus_rid = options.spotlightUnfocusRid; - } - if (metadata !== undefined) { - message.metadata = metadata; - } - if (options.signalingNotifyMetadata !== undefined) { - message.signaling_notify_metadata = options.signalingNotifyMetadata; - } - if (options.forwardingFilter !== undefined) { - message.forwarding_filter = options.forwardingFilter; - } - if (options.clientId !== undefined) { - message.client_id = options.clientId; - } - if (options.bundleId !== undefined) { - message.bundle_id = options.bundleId; - } - if (typeof options.dataChannelSignaling === 'boolean') { - message.data_channel_signaling = options.dataChannelSignaling; - } - if (typeof options.ignoreDisconnectWebSocket === 'boolean') { - message.ignore_disconnect_websocket = options.ignoreDisconnectWebSocket; - } - // parse options - const audioPropertyKeys = ['audioCodecType', 'audioBitRate']; - const audioOpusParamsPropertyKeys = [ - 'audioOpusParamsChannels', - 'audioOpusParamsMaxplaybackrate', - 'audioOpusParamsStereo', - 'audioOpusParamsSpropStereo', - 'audioOpusParamsMinptime', - 'audioOpusParamsPtime', - 'audioOpusParamsUseinbandfec', - 'audioOpusParamsUsedtx', - ]; - const audioLyraParamsPropertyKeys = ['audioLyraParamsBitrate', 'audioLyraParamsUsedtx']; - const videoPropertyKeys = [ - 'videoCodecType', - 'videoBitRate', - 'videoVP9Params', - 'videoH264Params', - 'videoAV1Params', - ]; - const copyOptions = Object.assign({}, options); - Object.keys(copyOptions).forEach((key) => { - if (key === 'audio' && typeof copyOptions[key] === 'boolean') { - return; - } - if (key === 'video' && typeof copyOptions[key] === 'boolean') { - return; - } - if (0 <= audioPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - if (0 <= audioOpusParamsPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - if (0 <= audioLyraParamsPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - if (0 <= videoPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - delete copyOptions[key]; - }); - if (copyOptions.audio !== undefined) { - message.audio = copyOptions.audio; - } - const hasAudioProperty = Object.keys(copyOptions).some((key) => { - return 0 <= audioPropertyKeys.indexOf(key); - }); - if (message.audio && hasAudioProperty) { - message.audio = {}; - if ('audioCodecType' in copyOptions) { - message.audio['codec_type'] = copyOptions.audioCodecType; - } - if ('audioBitRate' in copyOptions) { - message.audio['bit_rate'] = copyOptions.audioBitRate; - } - } - const hasAudioOpusParamsProperty = Object.keys(copyOptions).some((key) => { - return 0 <= audioOpusParamsPropertyKeys.indexOf(key); - }); - if (message.audio && hasAudioOpusParamsProperty) { - if (typeof message.audio != 'object') { - message.audio = {}; - } - message.audio.opus_params = {}; - if ('audioOpusParamsChannels' in copyOptions) { - message.audio.opus_params.channels = copyOptions.audioOpusParamsChannels; - } - if ('audioOpusParamsMaxplaybackrate' in copyOptions) { - message.audio.opus_params.maxplaybackrate = copyOptions.audioOpusParamsMaxplaybackrate; - } - if ('audioOpusParamsStereo' in copyOptions) { - message.audio.opus_params.stereo = copyOptions.audioOpusParamsStereo; - } - if ('audioOpusParamsSpropStereo' in copyOptions) { - message.audio.opus_params.sprop_stereo = copyOptions.audioOpusParamsSpropStereo; - } - if ('audioOpusParamsMinptime' in copyOptions) { - message.audio.opus_params.minptime = copyOptions.audioOpusParamsMinptime; - } - if ('audioOpusParamsPtime' in copyOptions) { - message.audio.opus_params.ptime = copyOptions.audioOpusParamsPtime; - } - if ('audioOpusParamsUseinbandfec' in copyOptions) { - message.audio.opus_params.useinbandfec = copyOptions.audioOpusParamsUseinbandfec; - } - if ('audioOpusParamsUsedtx' in copyOptions) { - message.audio.opus_params.usedtx = copyOptions.audioOpusParamsUsedtx; - } - } - if (message.audio && options.audioCodecType == 'LYRA') { - if (typeof message.audio != 'object') { - message.audio = {}; - } - message.audio.lyra_params = { version: LYRA_VERSION }; - if ('audioLyraParamsBitrate' in copyOptions) { - message.audio.lyra_params.bitrate = copyOptions.audioLyraParamsBitrate; - } - if ('audioLyraParamsUsedtx' in copyOptions) { - message.audio.lyra_params.usedtx = copyOptions.audioLyraParamsUsedtx; - } - } - if (copyOptions.video !== undefined) { - message.video = copyOptions.video; - } - const hasVideoProperty = Object.keys(copyOptions).some((key) => { - return 0 <= videoPropertyKeys.indexOf(key); - }); - if (message.video && hasVideoProperty) { - message.video = {}; - if ('videoCodecType' in copyOptions) { - message.video['codec_type'] = copyOptions.videoCodecType; - } - if ('videoBitRate' in copyOptions) { - message.video['bit_rate'] = copyOptions.videoBitRate; - } - if ('videoVP9Params' in copyOptions) { - message.video['vp9_params'] = copyOptions.videoVP9Params; - } - if ('videoH264Params' in copyOptions) { - message.video['h264_params'] = copyOptions.videoH264Params; - } - if ('videoAV1Params' in copyOptions) { - message.video['av1_params'] = copyOptions.videoAV1Params; - } - } - if (message.simulcast && !enabledSimulcast() && role !== 'recvonly') { - throw new Error('Simulcast can not be used with this browser'); - } - if (typeof options.e2ee === 'boolean') { - message.e2ee = options.e2ee; - } - if (options.e2ee === true) { - if (message.signaling_notify_metadata === undefined) { - message.signaling_notify_metadata = {}; - } - if (message.signaling_notify_metadata === null || - typeof message.signaling_notify_metadata !== 'object') { - throw new Error("E2EE failed. Options signalingNotifyMetadata must be type 'object'"); - } - if (message.video === true) { - message.video = {}; - } - if (message.video) { - message.video['codec_type'] = 'VP8'; - } - } - if (Array.isArray(options.dataChannels) && 0 < options.dataChannels.length) { - message.data_channels = parseDataChannelConfigurations(options.dataChannels); - } - if (options.audioStreamingLanguageCode !== undefined) { - message.audio_streaming_language_code = options.audioStreamingLanguageCode; - } - return message; - } - function getSignalingNotifyAuthnMetadata(message) { - if (message.authn_metadata !== undefined) { - return message.authn_metadata; - } - else if (message.metadata !== undefined) { - return message.metadata; - } - return null; - } - function getSignalingNotifyData(message) { - if (message.data && Array.isArray(message.data)) { - return message.data; - } - else if (message.metadata_list && Array.isArray(message.metadata_list)) { - return message.metadata_list; - } - return []; - } - function getPreKeyBundle(message) { - if (typeof message === 'object' && message !== null && 'pre_key_bundle' in message) { - return message.pre_key_bundle; - } - return null; - } - function trace(clientId, title, value) { - const dump = (record) => { - if (record && typeof record === 'object') { - let keys = null; - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - keys = Object.keys(JSON.parse(JSON.stringify(record))); - } - catch (_) { - // 何もしない - } - if (keys && Array.isArray(keys)) { - keys.forEach((key) => { - console.group(key); - dump(record[key]); - console.groupEnd(); - }); - } - else { - console.info(record); - } - } - else { - console.info(record); - } - }; - let prefix = ''; - if (window.performance) { - prefix = '[' + (window.performance.now() / 1000).toFixed(3) + ']'; - } - if (clientId) { - prefix = prefix + '[' + clientId + ']'; - } - if (console.info !== undefined && console.group !== undefined) { - console.group(prefix + ' ' + title); - dump(value); - console.groupEnd(); - } - else { - console.log(prefix + ' ' + title + '\n', value); - } - } - class ConnectError extends Error { - } - function createSignalingEvent(eventType, data, transportType) { - const event = new Event(eventType); - // data をコピーする - try { - event.data = JSON.parse(JSON.stringify(data)); - } - catch (_) { - event.data = data; - } - event.transportType = transportType; - return event; - } - function createDataChannelData(channel) { - return { - binaryType: channel.binaryType, - bufferedAmount: channel.bufferedAmount, - bufferedAmountLowThreshold: channel.bufferedAmountLowThreshold, - id: channel.id, - label: channel.label, - maxPacketLifeTime: channel.maxPacketLifeTime, - maxRetransmits: channel.maxRetransmits, - negotiated: channel.negotiated, - ordered: channel.ordered, - protocol: channel.protocol, - readyState: channel.readyState, - // @ts-ignore w3c 仕様には存在しない property - reliable: channel.reliable, - }; - } - function createTimelineEvent(eventType, data, logType, dataChannelId, dataChannelLabel) { - const event = new Event(eventType); - // data をコピーする - try { - event.data = JSON.parse(JSON.stringify(data)); - } - catch (_) { - event.data = data; - } - event.logType = logType; - event.dataChannelId = dataChannelId; - event.dataChannelLabel = dataChannelLabel; - return event; - } - function createDataChannelMessageEvent(label, data) { - const event = new Event('message'); - event.label = label; - event.data = data; - return event; - } - function createDataChannelEvent(channel) { - const event = new Event('datachannel'); - event.datachannel = channel; - return event; - } - function parseDataChannelEventData(eventData, compress) { - if (compress) { - const unzlibMessage = unzlibSync(new Uint8Array(eventData)); - return new TextDecoder().decode(unzlibMessage); - } - return eventData; - } - - /** - * Sora との WebRTC 接続を扱う基底クラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param role - ロール - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * @param debug - デバッグフラグ - */ - class ConnectionBase { - constructor(signalingUrlCandidates, role, channelId, metadata, options, debug) { - /** - * mid と AudioCodecType の対応づけを保持するマップ - * - * Lyra などのカスタム音声コーデック使用時に RTCRtpReceiver をどのコーデックでデコードすべきかを - * 判別するために使われる - * - * カスタム音声コーデックが有効になっていない場合には空のままとなる - */ - this.midToAudioCodecType = new Map(); - /** - * キーとなる sender が setupSenderTransform で初期化済みかどうか - */ - this.senderStreamInitialized = new WeakSet(); - this.role = role; - this.channelId = channelId; - this.metadata = metadata; - this.signalingUrlCandidates = signalingUrlCandidates; - this.options = options; - // connection timeout の初期値をセットする - this.connectionTimeout = 60000; - if (typeof this.options.timeout === 'number') { - console.warn('@deprecated timeout option will be removed in a future version. Use connectionTimeout.'); - this.connectionTimeout = this.options.timeout; - } - if (typeof this.options.connectionTimeout === 'number') { - this.connectionTimeout = this.options.connectionTimeout; - } - // WebSocket/DataChannel の disconnect timeout の初期値をセットする - this.disconnectWaitTimeout = 3000; - if (typeof this.options.disconnectWaitTimeout === 'number') { - this.disconnectWaitTimeout = this.options.disconnectWaitTimeout; - } - // signalingUrlCandidates に設定されている URL への接続チェック timeout の初期値をセットする - this.signalingCandidateTimeout = 3000; - if (typeof this.options.signalingCandidateTimeout === 'number') { - this.signalingCandidateTimeout = this.options.signalingCandidateTimeout; - } - this.constraints = null; - this.debug = debug; - this.clientId = null; - this.connectionId = null; - this.remoteConnectionIds = []; - this.stream = null; - this.ws = null; - this.pc = null; - this.encodings = []; - this.callbacks = { - disconnect: () => { }, - push: () => { }, - addstream: () => { }, - track: () => { }, - removestream: () => { }, - removetrack: () => { }, - notify: () => { }, - log: () => { }, - timeout: () => { }, - timeline: () => { }, - signaling: () => { }, - message: () => { }, - datachannel: () => { }, - }; - this.authMetadata = null; - this.e2ee = null; - this.connectionTimeoutTimerId = 0; - this.monitorSignalingWebSocketEventTimerId = 0; - this.monitorIceConnectionStateChangeTimerId = 0; - this.soraDataChannels = {}; - this.mids = { - audio: '', - video: '', - }; - this.signalingSwitched = false; - this.signalingOfferMessageDataChannels = {}; - this.connectedSignalingUrl = ''; - this.contactSignalingUrl = ''; - if (isLyraInitialized()) { - this.lyra = new LyraState(); - } - } - /** - * SendRecv Object で発火するイベントのコールバックを設定するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * sendrecv.on("track", (event) => { - * // callback 処理 - * }); - * ``` - * - * @remarks - * addstream イベントは非推奨です. track イベントを使用してください - * - * removestream イベントは非推奨です. removetrack イベントを使用してください - * - * @param kind - イベントの種類(disconnect, push, track, removetrack, notify, log, timeout, timeline, signaling, message, datachannel) - * @param callback - コールバック関数 - * - * @public - */ - on(kind, callback) { - // @deprecated message - if (kind === 'addstream') { - console.warn('@deprecated addstream callback will be removed in a future version. Use track callback.'); - } - else if (kind === 'removestream') { - console.warn('@deprecated removestream callback will be removed in a future version. Use removetrack callback.'); - } - if (kind in this.callbacks) { - this.callbacks[kind] = callback; - } - } - /** - * audio track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopAudioTrack(mediaStream); - * ``` - * - * @remarks - * stream の audio track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - audio track を削除する MediaStream - * - * @public - */ - stopAudioTrack(stream) { - for (const track of stream.getAudioTracks()) { - track.enabled = false; - } - return new Promise((resolve) => { - // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する - setTimeout(async () => { - for (const track of stream.getAudioTracks()) { - track.stop(); - stream.removeTrack(track); - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id; - }); - if (sender) { - await sender.replaceTrack(null); - } - } - } - resolve(); - }, 100); - }); - } - /** - * video track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopVideoTrack(mediaStream); - * ``` - * - * @remarks - * stream の video track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - video track を削除する MediaStream - * - * @public - */ - stopVideoTrack(stream) { - for (const track of stream.getVideoTracks()) { - track.enabled = false; - } - return new Promise((resolve) => { - // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する - setTimeout(async () => { - for (const track of stream.getVideoTracks()) { - track.stop(); - stream.removeTrack(track); - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id; - }); - if (sender) { - await sender.replaceTrack(null); - } - } - } - resolve(); - }, 100); - }); - } - /** - * audio track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({audio: true}); - * await sendrecv.replaceAudioTrack(mediaStream, replacedMediaStream.getAudioTracks()[0]); - * ``` - * - * @remarks - * stream の audio track を停止後、新しい audio track をセットします - * - * @param stream - audio track を削除する MediaStream - * @param audioTrack - 新しい audio track - * - * @public - */ - async replaceAudioTrack(stream, audioTrack) { - await this.stopAudioTrack(stream); - const transceiver = this.getAudioTransceiver(); - if (transceiver === null) { - throw new Error('Unable to set an audio track. Audio track sender is undefined'); - } - stream.addTrack(audioTrack); - await transceiver.sender.replaceTrack(audioTrack); - await this.setupSenderTransform(transceiver.sender); - } - /** - * video track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({video: true}); - * await sendrecv.replaceVideoTrack(mediaStream, replacedMediaStream.getVideoTracks()[0]); - * ``` - * - * @remarks - * stream の video track を停止後、新しい video track をセットします - * - * @param stream - video track を削除する MediaStream - * @param videoTrack - 新しい video track - * - * @public - */ - async replaceVideoTrack(stream, videoTrack) { - await this.stopVideoTrack(stream); - const transceiver = this.getVideoTransceiver(); - if (transceiver === null) { - throw new Error('Unable to set video track. Video track sender is undefined'); - } - stream.addTrack(videoTrack); - await transceiver.sender.replaceTrack(videoTrack); - await this.setupSenderTransform(transceiver.sender); - } - /** - * connect 処理中に例外が発生した場合の切断処理をするメソッド - */ - signalingTerminate() { - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - if (this.ws) { - this.ws.close(); - this.ws = null; - } - if (this.pc) { - this.pc.close(); - } - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - } - /** - * PeerConnection の state に異常が発生した場合の切断処理をするメソッド - * - * @param title - disconnect callback に渡すイベントのタイトル - */ - abendPeerConnectionState(title) { - this.clearMonitorIceConnectionStateChange(); - // callback を止める - if (this.pc) { - this.pc.ondatachannel = null; - this.pc.oniceconnectionstatechange = null; - this.pc.onicegatheringstatechange = null; - this.pc.onconnectionstatechange = null; - } - if (this.ws) { - // onclose はログを吐く専用に残す - this.ws.onclose = (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - }; - this.ws.onmessage = null; - this.ws.onerror = null; - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - // onclose はログを吐く専用に残す - dataChannel.onclose = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - }; - dataChannel.onmessage = null; - dataChannel.onerror = null; - } - } - // DataChannel を終了する - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - // WebSocket を終了する - if (this.ws) { - this.ws.close(); - this.ws = null; - } - // PeerConnection を終了する - if (this.pc) { - this.pc.close(); - } - // E2EE worker を終了する - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - const event = this.soraCloseEvent('abend', title); - this.callbacks.disconnect(event); - this.writeSoraTimelineLog('disconnect-abend', event); - } - /** - * 何かしらの異常があった場合の切断処理 - * - * @param title - disconnect callback に渡すイベントのタイトル - * @param params - 切断時の状況を入れる Record - */ - async abend(title, params) { - this.clearMonitorIceConnectionStateChange(); - // callback を止める - if (this.pc) { - this.pc.ondatachannel = null; - this.pc.oniceconnectionstatechange = null; - this.pc.onicegatheringstatechange = null; - this.pc.onconnectionstatechange = null; - } - if (this.ws) { - // onclose はログを吐く専用に残す - this.ws.onclose = (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - }; - this.ws.onmessage = null; - this.ws.onerror = null; - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - // onclose はログを吐く専用に残す - dataChannel.onclose = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - }; - dataChannel.onmessage = null; - dataChannel.onerror = null; - } - } - // 終了処理を開始する - if (this.soraDataChannels.signaling) { - const message = { type: 'disconnect', reason: title }; - if (this.signalingOfferMessageDataChannels.signaling && - this.signalingOfferMessageDataChannels.signaling.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(zlibMessage); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - else { - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(JSON.stringify(message)); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.onerror = null; - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - await this.disconnectWebSocket(title); - await this.disconnectPeerConnection(); - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - if (title === 'WEBSOCKET-ONCLOSE' && params && (params.code === 1000 || params.code === 1005)) { - const event = this.soraCloseEvent('normal', 'DISCONNECT', params); - this.writeSoraTimelineLog('disconnect-normal', event); - this.callbacks.disconnect(event); - return; - } - const event = this.soraCloseEvent('abend', title, params); - this.writeSoraTimelineLog('disconnect-abend', event); - this.callbacks.disconnect(this.soraCloseEvent('abend', title, params)); - } - /** - * 接続状態の初期化をするメソッド - */ - initializeConnection() { - this.clientId = null; - this.connectionId = null; - this.remoteConnectionIds = []; - this.stream = null; - this.ws = null; - this.pc = null; - this.encodings = []; - this.authMetadata = null; - this.e2ee = null; - this.soraDataChannels = {}; - this.mids = { - audio: '', - video: '', - }; - this.signalingSwitched = false; - this.signalingOfferMessageDataChannels = {}; - this.contactSignalingUrl = ''; - this.connectedSignalingUrl = ''; - this.clearConnectionTimeout(); - } - /** - * WebSocket を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - * - * @param title - type disconnect 時の reason - */ - disconnectWebSocket(title) { - let timerId = 0; - if (this.signalingSwitched) { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - return Promise.resolve(null); - } - return new Promise((resolve, _) => { - if (!this.ws) { - return resolve(null); - } - this.ws.onclose = (event) => { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - clearTimeout(timerId); - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - return resolve({ code: event.code, reason: event.reason }); - }; - if (this.ws.readyState === 1) { - const message = { type: 'disconnect', reason: title }; - this.ws.send(JSON.stringify(message)); - this.writeWebSocketSignalingLog('send-disconnect', message); - // WebSocket 切断を待つ - timerId = setTimeout(() => { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - resolve({ code: 1006, reason: '' }); - }, this.disconnectWaitTimeout); - } - else { - // ws の state が open ではない場合は後処理をして終わる - this.ws.close(); - this.ws = null; - return resolve(null); - } - }); - } - /** - * DataChannel を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - disconnectDataChannel() { - // DataChannel の強制終了処理 - const closeDataChannels = () => { - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.onerror = null; - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - }; - return new Promise((resolve, reject) => { - // DataChannel label signaling が存在しない場合は強制終了処理をする - if (!this.soraDataChannels.signaling) { - closeDataChannels(); - return resolve({ code: 4999, reason: '' }); - } - // disconnectWaitTimeout で指定された時間経過しても切断しない場合は強制終了処理をする - const disconnectWaitTimeoutId = setTimeout(() => { - closeDataChannels(); - return reject(); - }, this.disconnectWaitTimeout); - const onClosePromises = []; - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - // onerror が発火した場合は強制終了処理をする - dataChannel.onerror = () => { - clearTimeout(disconnectWaitTimeoutId); - closeDataChannels(); - return resolve({ code: 4999, reason: '' }); - }; - // すべての DataChannel の readyState が "closed" になったことを確認する Promsie を生成する - const p = () => { - return new Promise((res, _) => { - // disconnectWaitTimeout 時間を過ぎた場合に終了させるための counter を作成する - let counter = 0; - // onclose 内で readyState の変化を待つと非同期のまま複数回 disconnect を呼んだ場合に - // callback が上書きされて必ず DISCONNECT-TIMEOUT になってしまうので setInterval を使う - const timerId = setInterval(() => { - counter++; - if (dataChannel.readyState === 'closed') { - clearInterval(timerId); - res(); - } - if (this.disconnectWaitTimeout < counter * 100) { - res(); - clearInterval(timerId); - } - }, 100); - }); - }; - onClosePromises.push(p()); - } - } - // すべての DataChannel で onclose が発火した場合は resolve にする - Promise.all(onClosePromises) - .then(() => { - // dataChannels が空の場合は切断処理が終わっているとみなす - if (0 === Object.keys(this.soraDataChannels).length) { - resolve(null); - } - else { - resolve({ code: 4999, reason: '' }); - } - }) - .finally(() => { - closeDataChannels(); - clearTimeout(disconnectWaitTimeoutId); - }); - const message = { type: 'disconnect', reason: 'NO-ERROR' }; - if (this.signalingOfferMessageDataChannels.signaling && - this.signalingOfferMessageDataChannels.signaling.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(zlibMessage); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - else { - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(JSON.stringify(message)); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - }); - } - /** - * PeerConnection を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - disconnectPeerConnection() { - return new Promise((resolve, _) => { - if (this.pc && this.pc.connectionState !== 'closed') { - this.pc.close(); - } - return resolve(); - }); - } - /** - * 切断処理をするメソッド - * - * @example - * ``` - * await sendrecv.disconnect(); - * ``` - * - * @public - */ - async disconnect() { - this.clearMonitorIceConnectionStateChange(); - // callback を止める - if (this.pc) { - this.pc.ondatachannel = null; - this.pc.oniceconnectionstatechange = null; - this.pc.onicegatheringstatechange = null; - this.pc.onconnectionstatechange = null; - } - if (this.ws) { - // onclose はログを吐く専用に残す - this.ws.onclose = (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - }; - this.ws.onmessage = null; - this.ws.onerror = null; - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.onmessage = null; - // onclose はログを吐く専用に残す - dataChannel.onclose = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - }; - } - } - let event = null; - if (this.signalingSwitched) { - // DataChannel の切断処理がタイムアウトした場合は event を abend に差し替える - try { - const reason = await this.disconnectDataChannel(); - if (reason !== null) { - event = this.soraCloseEvent('normal', 'DISCONNECT', reason); - } - } - catch (_) { - event = this.soraCloseEvent('abend', 'DISCONNECT-TIMEOUT'); - } - await this.disconnectWebSocket('NO-ERROR'); - await this.disconnectPeerConnection(); - } - else { - const reason = await this.disconnectWebSocket('NO-ERROR'); - await this.disconnectPeerConnection(); - if (reason !== null) { - event = this.soraCloseEvent('normal', 'DISCONNECT', reason); - } - } - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - if (event) { - if (event.type === 'abend') { - this.writeSoraTimelineLog('disconnect-abend', event); - } - else if (event.type === 'normal') { - this.writeSoraTimelineLog('disconnect-normal', event); - } - this.callbacks.disconnect(event); - } - } - /** - * E2EE の初期設定をするメソッド - */ - setupE2EE() { - if (this.options.e2ee === true) { - this.e2ee = new SoraE2EE(); - this.e2ee.onWorkerDisconnect = async () => { - await this.abend('INTERNAL-ERROR', { reason: 'CRASH-E2EE-WORKER' }); - }; - this.e2ee.startWorker(); - } - } - /** - * E2EE を開始するメソッド - */ - startE2EE() { - if (this.options.e2ee === true && this.e2ee) { - if (!this.connectionId) { - const error = new Error(); - error.message = `E2EE failed. Self connectionId is null`; - throw error; - } - this.e2ee.clearWorker(); - const result = this.e2ee.start(this.connectionId); - this.e2ee.postSelfSecretKeyMaterial(this.connectionId, result.selfKeyId, result.selfSecretKeyMaterial); - } - } - /** - * シグナリングに使う WebSocket インスタンスを作成するメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param signalingUrlCandidates - シグナリング候補の URL. 後方互換のため string | string[] を受け取る - * - * @returns - * 接続できた WebScoket インスタンスを返します - */ - async getSignalingWebSocket(signalingUrlCandidates) { - if (typeof signalingUrlCandidates === 'string') { - // signaling url の候補が文字列の場合 - const signalingUrl = signalingUrlCandidates; - return new Promise((resolve, reject) => { - const ws = new WebSocket(signalingUrl); - ws.onclose = (event) => { - const error = new ConnectError(`Signaling failed. CloseEventCode:${event.code} CloseEventReason:'${event.reason}'`); - error.code = event.code; - error.reason = event.reason; - this.writeWebSocketTimelineLog('onclose', error); - reject(error); - }; - ws.onopen = (_) => { - resolve(ws); - }; - }); - } - else if (Array.isArray(signalingUrlCandidates)) { - // signaling url の候補が Array の場合 - // すでに候補の WebSocket が発見されているかどうかのフラグ - let resolved = false; - const testSignalingUrlCandidate = (signalingUrl) => { - return new Promise((resolve, reject) => { - const ws = new WebSocket(signalingUrl); - // 一定時間経過しても反応がなかった場合は処理を中断する - const timerId = setTimeout(() => { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'timeout', - url: ws.url, - }); - if (ws && !resolved) { - ws.onclose = null; - ws.onerror = null; - ws.onopen = null; - ws.close(); - reject(); - } - }, this.signalingCandidateTimeout); - ws.onclose = (event) => { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'close', - url: ws.url, - message: `WebSocket closed`, - code: event.code, - reason: event.reason, - }); - if (ws) { - ws.close(); - } - clearInterval(timerId); - reject(); - }; - ws.onerror = (_) => { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'error', - url: ws.url, - message: `Failed to connect WebSocket`, - }); - if (ws) { - ws.onclose = null; - ws.close(); - } - clearInterval(timerId); - reject(); - }; - ws.onopen = (_) => { - if (ws) { - clearInterval(timerId); - if (resolved) { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'open', - url: ws.url, - selected: false, - }); - ws.onerror = null; - ws.onclose = null; - ws.onopen = null; - ws.close(); - reject(); - } - else { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'open', - url: ws.url, - selected: true, - }); - ws.onerror = null; - ws.onclose = null; - ws.onopen = null; - resolved = true; - resolve(ws); - } - } - }; - }); - }; - try { - return await Promise.any(signalingUrlCandidates.map((signalingUrl) => testSignalingUrlCandidate(signalingUrl))); - } - catch (e) { - throw new ConnectError('Signaling failed. All signaling URL candidates failed to connect'); - } - } - throw new ConnectError('Signaling failed. Invalid format signaling URL candidates'); - } - /** - * シグナリング処理を行うメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param ws - WebSocket インスタンス - * @param redirect - クラスター接続時にリダイレクトされた場合のフラグ - * - * @returns - * Sora から受け取った type offer メッセージを返します - */ - async signaling(ws, redirect = false) { - const offer = await this.createOffer(); - this.trace('CREATE OFFER', offer); - return new Promise((resolve, reject) => { - this.writeWebSocketSignalingLog('new-websocket', ws.url); - // websocket の各 callback を設定する - ws.binaryType = 'arraybuffer'; - ws.onclose = (event) => { - const error = new ConnectError(`Signaling failed. CloseEventCode:${event.code} CloseEventReason:'${event.reason}'`); - error.code = event.code; - error.reason = event.reason; - this.writeWebSocketTimelineLog('onclose', error); - this.signalingTerminate(); - reject(error); - }; - ws.onmessage = async (event) => { - // E2EE 時専用処理 - if (event.data instanceof ArrayBuffer) { - this.writeWebSocketSignalingLog('onmessage-e2ee', event.data); - this.signalingOnMessageE2EE(event.data); - return; - } - if (typeof event.data !== 'string') { - throw new Error('Received invalid signaling data'); - } - const message = JSON.parse(event.data); - if (message.type == 'offer') { - this.writeWebSocketSignalingLog('onmessage-offer', message); - this.signalingOnMessageTypeOffer(message); - this.connectedSignalingUrl = ws.url; - resolve(message); - } - else if (message.type == 'update') { - this.writeWebSocketSignalingLog('onmessage-update', message); - await this.signalingOnMessageTypeUpdate(message); - } - else if (message.type == 're-offer') { - this.writeWebSocketSignalingLog('onmessage-re-offer', message); - await this.signalingOnMessageTypeReOffer(message); - } - else if (message.type == 'ping') { - await this.signalingOnMessageTypePing(message); - } - else if (message.type == 'push') { - this.callbacks.push(message, 'websocket'); - } - else if (message.type == 'notify') { - if (message.event_type === 'connection.created') { - this.writeWebSocketTimelineLog('notify-connection.created', message); - } - else if (message.event_type === 'connection.destroyed') { - this.writeWebSocketTimelineLog('notify-connection.destroyed', message); - } - this.signalingOnMessageTypeNotify(message, 'websocket'); - } - else if (message.type == 'switched') { - this.writeWebSocketSignalingLog('onmessage-switched', message); - this.signalingOnMessageTypeSwitched(message); - } - else if (message.type == 'redirect') { - this.writeWebSocketSignalingLog('onmessage-redirect', message); - try { - const redirectMessage = await this.signalingOnMessageTypeRedirect(message); - resolve(redirectMessage); - } - catch (error) { - reject(error); - } - } - }; - (async () => { - let signalingMessage; - try { - signalingMessage = createSignalingMessage(offer.sdp || '', this.role, this.channelId, this.metadata, this.options, redirect); - } - catch (error) { - reject(error); - return; - } - if (signalingMessage.e2ee && this.e2ee) { - const initResult = await this.e2ee.init(); - // @ts-ignore signalingMessage の e2ee が true の場合は signalingNotifyMetadata が必ず object になる - signalingMessage['signaling_notify_metadata']['pre_key_bundle'] = initResult; - } - this.trace('SIGNALING CONNECT MESSAGE', signalingMessage); - if (ws) { - ws.send(JSON.stringify(signalingMessage)); - this.writeWebSocketSignalingLog(`send-${signalingMessage.type}`, signalingMessage); - this.ws = ws; - // 初回に接続した URL を状態管理する - if (!redirect) { - this.contactSignalingUrl = ws.url; - this.writeWebSocketSignalingLog('contact-signaling-url', this.contactSignalingUrl); - } - } - })(); - }); - } - /** - * PeerConnection 接続処理をするメソッド - * - * @param message - シグナリング処理で受け取った type offer メッセージ - */ - async connectPeerConnection(message) { - let config = Object.assign({}, message.config); - if (this.e2ee || this.lyra) { - // @ts-ignore https://w3c.github.io/webrtc-encoded-transform/#specification - config = Object.assign({ encodedInsertableStreams: true }, config); - } - if (window.RTCPeerConnection.generateCertificate !== undefined) { - const certificate = await window.RTCPeerConnection.generateCertificate({ - name: 'ECDSA', - namedCurve: 'P-256', - }); - config = Object.assign({ certificates: [certificate] }, config); - } - this.trace('PEER CONNECTION CONFIG', config); - this.writePeerConnectionTimelineLog('new-peerconnection', config); - // @ts-ignore Chrome の場合は第2引数に goog オプションを渡すことができる - this.pc = new window.RTCPeerConnection(config, this.constraints); - this.pc.oniceconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('oniceconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - this.trace('ONICECONNECTIONSTATECHANGE ICECONNECTIONSTATE', this.pc.iceConnectionState); - } - }; - this.pc.onicegatheringstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('onicegatheringstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - } - }; - this.pc.onconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('onconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - } - }; - this.pc.ondatachannel = (event) => { - this.onDataChannel(event); - }; - return; - } - /** - * setRemoteDescription 処理を行うメソッド - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - async setRemoteDescription(message) { - if (!this.pc) { - return; - } - const sdp = this.processOfferSdp(message.sdp); - const sessionDescription = new RTCSessionDescription({ type: 'offer', sdp }); - await this.pc.setRemoteDescription(sessionDescription); - this.writePeerConnectionTimelineLog('set-remote-description', sessionDescription); - return; - } - /** - * createAnswer 処理を行うメソッド - * - * @remarks - * サイマルキャスト用の setParameters 処理もここで行う - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - async createAnswer(message) { - if (!this.pc) { - return; - } - // mid と transceiver.direction を合わせる - for (const mid of Object.values(this.mids)) { - const transceiver = this.pc.getTransceivers().find((t) => t.mid === mid); - if (transceiver && transceiver.direction === 'recvonly') { - transceiver.direction = 'sendrecv'; - } - } - // simulcast の場合 - if (this.options.simulcast && (this.role === 'sendrecv' || this.role === 'sendonly')) { - const transceiver = this.pc.getTransceivers().find((t) => { - if (t.mid === null) { - return; - } - if (t.sender.track === null) { - return; - } - if (t.currentDirection !== null && t.currentDirection !== 'sendonly') { - return; - } - if (this.mids.video !== '' && this.mids.video === t.mid) { - return t; - } - if (0 <= t.mid.indexOf('video')) { - return t; - } - }); - if (transceiver) { - await this.setSenderParameters(transceiver, this.encodings); - await this.setRemoteDescription(message); - this.trace('TRANSCEIVER SENDER GET_PARAMETERS', transceiver.sender.getParameters()); - // setRemoteDescription 後でないと active が反映されないのでもう一度呼ぶ - await this.setSenderParameters(transceiver, this.encodings); - const sessionDescription = await this.pc.createAnswer(); - // TODO(sile): 動作確認 - if (sessionDescription.sdp !== undefined) { - sessionDescription.sdp = this.processAnswerSdpForLocal(sessionDescription.sdp); - } - await this.pc.setLocalDescription(sessionDescription); - this.trace('TRANSCEIVER SENDER GET_PARAMETERS', transceiver.sender.getParameters()); - return; - } - } - const sessionDescription = await this.pc.createAnswer(); - if (sessionDescription.sdp !== undefined) { - sessionDescription.sdp = this.processAnswerSdpForLocal(sessionDescription.sdp); - } - this.writePeerConnectionTimelineLog('create-answer', sessionDescription); - await this.pc.setLocalDescription(sessionDescription); - this.writePeerConnectionTimelineLog('set-local-description', sessionDescription); - return; - } - /** - * カスタムコーデック対応用に offer SDP を処理するメソッド - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - processOfferSdp(sdp) { - if (isFirefox()) { - // 同じ mid が採用される際にはもう使用されない transceiver を解放するために - // port に 0 が指定された SDP が送られてくる。 - // ただし Firefox (バージョン 109.0 で確認) はこれを正常に処理できず、 - // port で 0 が指定された場合には onremovetrack イベントが発行されないので、 - // ワークアラウンドとしてここで SDP の置換を行っている。 - sdp = sdp.replace(/^m=(audio|video) 0 /gm, (_match, kind) => `m=${kind} 9 `); - } - this.midToAudioCodecType.clear(); - if (this.lyra === undefined || !sdp.includes('109 lyra/')) { - return sdp; - } - // mid と音声コーデックの対応を保存する - for (const media of sdp.split(/^m=/m).slice(1)) { - if (!media.startsWith('audio')) { - continue; - } - const mid = /a=mid:(.*)/.exec(media); - if (mid) { - const codecType = media.includes('109 lyra/') ? 'LYRA' : 'OPUS'; - this.midToAudioCodecType.set(mid[1], codecType); - } - } - return this.lyra.processOfferSdp(sdp); - } - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は setLocalDescription() メソッドに渡される - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForLocal(sdp) { - if (this.lyra === undefined) { - return sdp; - } - return this.lyra.processAnswerSdpForLocal(sdp); - } - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は Sora に送信される - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForSora(sdp) { - if (this.lyra === undefined) { - return sdp; - } - return this.lyra.processAnswerSdpForSora(sdp); - } - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、送信側の WebRTC Encoded Transform をセットアップする - * - * @param sender 対象となる RTCRtpSender インスタンス - */ - async setupSenderTransform(sender) { - if ((this.e2ee === null && this.lyra === undefined) || sender.track === null) { - return; - } - // 既に初期化済み - if (this.senderStreamInitialized.has(sender)) { - return; - } - const isLyraCodec = sender.track.kind === 'audio' && this.options.audioCodecType === 'LYRA'; - if ('transform' in RTCRtpSender.prototype) { - // WebRTC Encoded Transform に対応しているブラウザ - if (!isLyraCodec || this.lyra === undefined) { - return; - } - const lyraWorker = createLyraWorker(); - const lyraEncoder = await this.lyra.createEncoder(); - // @ts-ignore - sender.transform = new RTCRtpScriptTransform(lyraWorker, { - name: 'senderTransform', - lyraEncoder, - }, [lyraEncoder.port]); - } - else { - // 古い API (i.e., createEncodedStreams) を使っているブラウザ - // @ts-ignore - // eslint-disable-next-line - const senderStreams = sender.createEncodedStreams(); - let readable = senderStreams.readable; - if (isLyraCodec && this.lyra !== undefined) { - const lyraEncoder = await this.lyra.createEncoder(); - const transformStream = new TransformStream({ - transform: (data, controller) => transformPcmToLyra(lyraEncoder, data, controller), - }); - readable = senderStreams.readable.pipeThrough(transformStream); - } - if (this.e2ee) { - this.e2ee.setupSenderTransform(readable, senderStreams.writable); - } - else { - readable.pipeTo(senderStreams.writable).catch((e) => console.warn(e)); - } - } - this.senderStreamInitialized.add(sender); - } - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、受信側の WebRTC Encoded Transform をセットアップする - * - * @param mid コーデックの判別に使う mid - * @param receiver 対象となる RTCRtpReceiver インスタンス - */ - async setupReceiverTransform(mid, receiver) { - if (this.e2ee === null && this.lyra === undefined) { - return; - } - const codecType = this.midToAudioCodecType.get(mid || ''); - if ('transform' in RTCRtpSender.prototype) { - // WebRTC Encoded Transform に対応しているブラウザ - if (codecType !== 'LYRA' || this.lyra === undefined) { - return; - } - const lyraWorker = createLyraWorker(); - const lyraDecoder = await this.lyra.createDecoder(); - // @ts-ignore - receiver.transform = new RTCRtpScriptTransform(lyraWorker, { - name: 'receiverTransform', - lyraDecoder, - }, [lyraDecoder.port]); - } - else { - // 古い API (i.e., createEncodedStreams) を使っているブラウザ - // @ts-ignore - // eslint-disable-next-line - const receiverStreams = receiver.createEncodedStreams(); - let writable = receiverStreams.writable; - if (codecType === 'LYRA' && this.lyra !== undefined) { - const lyraDecoder = await this.lyra.createDecoder(); - const transformStream = new TransformStream({ - transform: (data, controller) => transformLyraToPcm(lyraDecoder, data, controller), - }); - transformStream.readable.pipeTo(receiverStreams.writable).catch((e) => console.warn(e)); - writable = transformStream.writable; - } - if (this.e2ee) { - this.e2ee.setupReceiverTransform(receiverStreams.readable, writable); - } - else { - receiverStreams.readable.pipeTo(writable).catch((e) => console.warn(e)); - } - } - } - /** - * シグナリングサーバーに type answer を投げるメソッド - */ - sendAnswer() { - if (this.pc && this.ws && this.pc.localDescription) { - this.trace('ANSWER SDP', this.pc.localDescription.sdp); - const sdp = this.processAnswerSdpForSora(this.pc.localDescription.sdp); - const message = { type: 'answer', sdp }; - this.ws.send(JSON.stringify(message)); - this.writeWebSocketSignalingLog('send-answer', message); - } - return; - } - /** - * iceCnadidate 処理をするメソッド - */ - onIceCandidate() { - return new Promise((resolve, _) => { - if (this.pc) { - this.pc.oniceconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('oniceconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - this.trace('ONICECONNECTIONSTATECHANGE ICECONNECTIONSTATE', this.pc.iceConnectionState); - if (this.pc.iceConnectionState === 'connected') { - resolve(); - } - } - }; - this.pc.onicecandidate = (event) => { - this.writePeerConnectionTimelineLog('onicecandidate', event.candidate); - if (this.pc) { - this.trace('ONICECANDIDATE ICEGATHERINGSTATE', this.pc.iceGatheringState); - } - // TODO(yuito): Firefox は を投げてくるようになったので対応する - if (event.candidate === null) { - resolve(); - } - else { - const candidate = event.candidate.toJSON(); - const message = Object.assign(candidate, { type: 'candidate' }); - this.trace('ONICECANDIDATE CANDIDATE MESSAGE', message); - this.sendSignalingMessage(message); - } - }; - } - }); - } - /** - * connectionState が "connected" になるのを監視するメソッド - * - * @remarks - * PeerConnection.connectionState が実装されていない場合は何もしない - */ - waitChangeConnectionStateConnected() { - return new Promise((resolve, reject) => { - // connectionState が存在しない場合はそのまま抜ける - if (this.pc && this.pc.connectionState === undefined) { - resolve(); - return; - } - const timerId = setInterval(() => { - if (!this.pc) { - const error = new Error(); - error.message = "PeerConnection connectionState did not change to 'connected'"; - clearInterval(timerId); - reject(error); - } - else if (this.pc && this.pc.connectionState === 'connected') { - clearInterval(timerId); - resolve(); - } - }, 10); - }); - } - /** - * 初回シグナリング接続時の WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - monitorSignalingWebSocketEvent() { - return new Promise((_, reject) => { - this.monitorSignalingWebSocketEventTimerId = setInterval(() => { - if (!this.ws) { - return; - } - this.clearMonitorSignalingWebSocketEvent(); - this.ws.onclose = (event) => { - const error = new ConnectError(`Signaling failed. CloseEventCode:${event.code} CloseEventReason:'${event.reason}'`); - error.code = event.code; - error.reason = event.reason; - this.writeWebSocketTimelineLog('onclose', error); - this.signalingTerminate(); - reject(error); - }; - this.ws.onerror = (_) => { - const error = new ConnectError(`Signaling failed. WebSocket onerror was called`); - this.writeWebSocketSignalingLog('onerror', error); - this.signalingTerminate(); - reject(error); - }; - }, 100); - }); - } - /** - * WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - monitorWebSocketEvent() { - if (!this.ws) { - return; - } - this.ws.onclose = async (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - await this.abend('WEBSOCKET-ONCLOSE', { code: event.code, reason: event.reason }); - }; - this.ws.onerror = async (_) => { - this.writeWebSocketSignalingLog('onerror'); - await this.abend('WEBSOCKET-ONERROR'); - }; - } - /** - * 初回シグナリング後 PeerConnection の state を監視するメソッド - * - * @remarks - * connectionState, iceConnectionState を監視して不正な場合に切断する - */ - monitorPeerConnectionState() { - if (!this.pc) { - return; - } - this.pc.oniceconnectionstatechange = (_) => { - // connectionState が undefined の場合は iceConnectionState を見て判定する - if (this.pc && this.pc.connectionState === undefined) { - this.writePeerConnectionTimelineLog('oniceconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - this.trace('ONICECONNECTIONSTATECHANGE ICECONNECTIONSTATE', this.pc.iceConnectionState); - clearTimeout(this.monitorIceConnectionStateChangeTimerId); - // iceConnectionState "failed" で切断する - if (this.pc.iceConnectionState === 'failed') { - this.abendPeerConnectionState('ICE-CONNECTION-STATE-FAILED'); - } - // iceConnectionState "disconnected" になってから 10000ms の間変化がない場合切断する - else if (this.pc.iceConnectionState === 'disconnected') { - this.monitorIceConnectionStateChangeTimerId = setTimeout(() => { - if (this.pc && this.pc.iceConnectionState === 'disconnected') { - this.abendPeerConnectionState('ICE-CONNECTION-STATE-DISCONNECTED-TIMEOUT'); - } - }, 10000); - } - } - }; - this.pc.onconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('onconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - if (this.pc.connectionState === 'failed') { - this.abendPeerConnectionState('CONNECTION-STATE-FAILED'); - } - } - }; - } - /** - * 初回シグナリングの接続タイムアウト処理をするメソッド - */ - setConnectionTimeout() { - return new Promise((_, reject) => { - if (0 < this.connectionTimeout) { - this.connectionTimeoutTimerId = setTimeout(() => { - if (!this.pc || - (this.pc && - this.pc.connectionState !== undefined && - this.pc.connectionState !== 'connected')) { - const error = new Error(); - error.message = 'Signaling connection timeout'; - this.callbacks.timeout(); - this.trace('DISCONNECT', 'Signaling connection timeout'); - this.writePeerConnectionTimelineLog('signaling-connection-timeout', { - connectionTimeout: this.connectionTimeout, - }); - this.signalingTerminate(); - reject(error); - } - }, this.connectionTimeout); - } - }); - } - /** - * setConnectionTimeout でセットしたタイマーを止めるメソッド - */ - clearConnectionTimeout() { - clearTimeout(this.connectionTimeoutTimerId); - } - /** - * monitorSignalingWebSocketEvent でセットしたタイマーを止めるメソッド - */ - clearMonitorSignalingWebSocketEvent() { - clearInterval(this.monitorSignalingWebSocketEventTimerId); - } - /** - * monitorPeerConnectionState でセットしたタイマーを止めるメソッド - */ - clearMonitorIceConnectionStateChange() { - clearInterval(this.monitorIceConnectionStateChangeTimerId); - } - /** - * trace log を出力するメソッド - * - * @param title - ログのタイトル - * @param message - ログの本文 - */ - trace(title, message) { - this.callbacks.log(title, message); - if (!this.debug) { - return; - } - trace(this.clientId, title, message); - } - /** - * WebSocket のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeWebSocketSignalingLog(eventType, data) { - this.callbacks.signaling(createSignalingEvent(eventType, data, 'websocket')); - this.writeWebSocketTimelineLog(eventType, data); - } - /** - * DataChannel のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeDataChannelSignalingLog(eventType, channel, data) { - this.callbacks.signaling(createSignalingEvent(eventType, data, 'datachannel')); - this.writeDataChannelTimelineLog(eventType, channel, data); - } - /** - * WebSocket のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeWebSocketTimelineLog(eventType, data) { - const event = createTimelineEvent(eventType, data, 'websocket'); - this.callbacks.timeline(event); - } - /** - * DataChannel のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeDataChannelTimelineLog(eventType, channel, data) { - const event = createTimelineEvent(eventType, data, 'datachannel', channel.id, channel.label); - this.callbacks.timeline(event); - } - /** - * PeerConnection のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writePeerConnectionTimelineLog(eventType, data) { - const event = createTimelineEvent(eventType, data, 'peerconnection'); - this.callbacks.timeline(event); - } - /** - * Sora との接続のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeSoraTimelineLog(eventType, data) { - const event = createTimelineEvent(eventType, data, 'sora'); - this.callbacks.timeline(event); - } - /** - * createOffer 処理をするメソッド - * - * @returns - * 生成した RTCSessionDescription を返します - */ - async createOffer() { - const config = { iceServers: [] }; - const pc = new window.RTCPeerConnection(config); - if (isSafari()) { - pc.addTransceiver('video', { direction: 'recvonly' }); - pc.addTransceiver('audio', { direction: 'recvonly' }); - const offer = await pc.createOffer(); - pc.close(); - this.writePeerConnectionTimelineLog('create-offer', offer); - return offer; - } - const offer = await pc.createOffer({ offerToReceiveAudio: true, offerToReceiveVideo: true }); - pc.close(); - this.writePeerConnectionTimelineLog('create-offer', offer); - return offer; - } - /** - * シグナリングサーバーから受け取った type e2ee メッセージを処理をするメソッド - * - * @param data - E2EE 用バイナリメッセージ - */ - signalingOnMessageE2EE(data) { - if (this.e2ee) { - const message = new Uint8Array(data); - const result = this.e2ee.receiveMessage(message); - this.e2ee.postRemoteSecretKeyMaterials(result); - result.messages.forEach((message) => { - this.sendE2EEMessage(message.buffer); - }); - } - } - /** - * シグナリングサーバーから受け取った type offer メッセージを処理をするメソッド - * - * @param message - type offer メッセージ - */ - signalingOnMessageTypeOffer(message) { - this.clientId = message.client_id; - this.connectionId = message.connection_id; - if (message.metadata !== undefined) { - this.authMetadata = message.metadata; - } - if (Array.isArray(message.encodings)) { - this.encodings = message.encodings; - } - if (message.mid !== undefined && message.mid.audio !== undefined) { - this.mids.audio = message.mid.audio; - } - if (message.mid !== undefined && message.mid.video !== undefined) { - this.mids.video = message.mid.video; - } - if (message.data_channels) { - for (const dc of message.data_channels) { - this.signalingOfferMessageDataChannels[dc.label] = dc; - } - } - this.trace('SIGNALING OFFER MESSAGE', message); - this.trace('OFFER SDP', message.sdp); - } - /** - * シグナリングサーバーに type update を投げるメソッド - */ - sendUpdateAnswer() { - if (this.pc && this.ws && this.pc.localDescription) { - this.trace('ANSWER SDP', this.pc.localDescription.sdp); - this.sendSignalingMessage({ type: 'update', sdp: this.pc.localDescription.sdp }); - } - } - /** - * シグナリングサーバーに type re-answer を投げるメソッド - */ - sendReAnswer() { - if (this.pc && this.pc.localDescription) { - this.trace('RE ANSWER SDP', this.pc.localDescription.sdp); - this.sendSignalingMessage({ type: 're-answer', sdp: this.pc.localDescription.sdp }); - } - } - /** - * シグナリングサーバーから受け取った type update メッセージを処理をするメソッド - * - * @param message - type update メッセージ - */ - async signalingOnMessageTypeUpdate(message) { - this.trace('SIGNALING UPDATE MESSGE', message); - this.trace('UPDATE SDP', message.sdp); - await this.setRemoteDescription(message); - await this.createAnswer(message); - this.sendUpdateAnswer(); - } - /** - * シグナリングサーバーから受け取った type re-offer メッセージを処理をするメソッド - * - * @param message - type re-offer メッセージ - */ - async signalingOnMessageTypeReOffer(message) { - this.trace('SIGNALING RE OFFER MESSGE', message); - this.trace('RE OFFER SDP', message.sdp); - await this.setRemoteDescription(message); - await this.createAnswer(message); - this.sendReAnswer(); - } - /** - * シグナリングサーバーから受け取った type ping メッセージを処理をするメソッド - * - * @param message - type ping メッセージ - */ - async signalingOnMessageTypePing(message) { - const pongMessage = { type: 'pong' }; - if (message.stats) { - const stats = await this.getStats(); - pongMessage.stats = stats; - } - if (this.ws) { - this.ws.send(JSON.stringify(pongMessage)); - } - } - /** - * シグナリングサーバーから受け取った type notify メッセージを処理をするメソッド - * - * @param message - type notify メッセージ - */ - signalingOnMessageTypeNotify(message, transportType) { - if (message.event_type === 'connection.created') { - const connectionId = message.connection_id; - if (this.connectionId !== connectionId) { - const authnMetadata = getSignalingNotifyAuthnMetadata(message); - const preKeyBundle = getPreKeyBundle(authnMetadata); - if (preKeyBundle && this.e2ee && connectionId) { - const result = this.e2ee.startSession(connectionId, preKeyBundle); - this.e2ee.postRemoteSecretKeyMaterials(result); - result.messages.forEach((message) => { - this.sendE2EEMessage(message.buffer); - }); - // messages を送信し終えてから、selfSecretKeyMaterial を更新する - this.e2ee.postSelfSecretKeyMaterial(result.selfConnectionId, result.selfKeyId, result.selfSecretKeyMaterial); - } - } - const data = getSignalingNotifyData(message); - data.forEach((metadata) => { - const authnMetadata = getSignalingNotifyAuthnMetadata(metadata); - const preKeyBundle = getPreKeyBundle(authnMetadata); - const connectionId = metadata.connection_id; - if (connectionId && this.e2ee && preKeyBundle) { - this.e2ee.addPreKeyBundle(connectionId, preKeyBundle); - } - }); - } - else if (message.event_type === 'connection.destroyed') { - const authnMetadata = getSignalingNotifyAuthnMetadata(message); - const preKeyBundle = getPreKeyBundle(authnMetadata); - const connectionId = message.connection_id; - if (preKeyBundle && this.e2ee && connectionId) { - const result = this.e2ee.stopSession(connectionId); - this.e2ee.postSelfSecretKeyMaterial(result.selfConnectionId, result.selfKeyId, result.selfSecretKeyMaterial, 5000); - result.messages.forEach((message) => { - this.sendE2EEMessage(message.buffer); - }); - this.e2ee.postRemoveRemoteDeriveKey(connectionId); - } - } - this.callbacks.notify(message, transportType); - } - /** - * シグナリングサーバーから受け取った type switched メッセージを処理をするメソッド - * - * @param message - type switched メッセージ - */ - signalingOnMessageTypeSwitched(message) { - this.signalingSwitched = true; - if (!this.ws) { - return; - } - if (message['ignore_disconnect_websocket']) { - if (this.ws) { - this.ws.onclose = null; - this.ws.close(); - this.ws = null; - } - this.writeWebSocketSignalingLog('close'); - } - for (const channel of this.datachannels) { - this.callbacks.datachannel(createDataChannelEvent(channel)); - } - } - /** - * シグナリングサーバーから受け取った type redirect メッセージを処理をするメソッド - * - * @param message - type redirect メッセージ - */ - async signalingOnMessageTypeRedirect(message) { - if (this.ws) { - this.ws.onclose = null; - this.ws.onerror = null; - this.ws.close(); - this.ws = null; - } - const ws = await this.getSignalingWebSocket(message.location); - const signalingMessage = await this.signaling(ws, true); - return signalingMessage; - } - /** - * sender の parameters に encodings をセットするメソッド - * - * @remarks - * サイマルキャスト用の処理 - */ - async setSenderParameters(transceiver, encodings) { - const originalParameters = transceiver.sender.getParameters(); - // @ts-ignore - originalParameters.encodings = encodings; - await transceiver.sender.setParameters(originalParameters); - this.trace('TRANSCEIVER SENDER SET_PARAMETERS', originalParameters); - this.writePeerConnectionTimelineLog('transceiver-sender-set-parameters', originalParameters); - return; - } - /** - * PeerConnection から RTCStatsReport を取得するためのメソッド - */ - async getStats() { - const stats = []; - if (!this.pc) { - return stats; - } - const reports = await this.pc.getStats(); - reports.forEach((s) => { - stats.push(s); - }); - return stats; - } - /** - * PeerConnection の ondatachannel callback メソッド - * - * @param dataChannelEvent - DataChannel イベント - */ - onDataChannel(dataChannelEvent) { - const dataChannel = dataChannelEvent.channel; - dataChannel.bufferedAmountLowThreshold = 65536; - dataChannel.binaryType = 'arraybuffer'; - this.soraDataChannels[dataChannel.label] = dataChannel; - this.writeDataChannelTimelineLog('ondatachannel', dataChannel, createDataChannelData(dataChannel)); - // onbufferedamountlow - dataChannelEvent.channel.onbufferedamountlow = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onbufferedamountlow', channel); - }; - // onopen - dataChannelEvent.channel.onopen = (event) => { - const channel = event.currentTarget; - this.trace('OPEN DATA CHANNEL', channel.label); - if (channel.label === 'signaling' && this.ws) { - this.writeDataChannelSignalingLog('onopen', channel); - } - else { - this.writeDataChannelTimelineLog('onopen', channel); - } - }; - // onclose - dataChannelEvent.channel.onclose = async (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - await this.disconnect(); - }; - // onerror - dataChannelEvent.channel.onerror = async (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onerror', channel); - this.trace('ERROR DATA CHANNEL', channel.label); - await this.abend('DATA-CHANNEL-ONERROR', { params: { label: channel.label } }); - }; - // onmessage - if (dataChannelEvent.channel.label === 'signaling') { - dataChannelEvent.channel.onmessage = async (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - this.writeDataChannelSignalingLog(`onmessage-${message.type}`, channel, message); - if (message.type === 're-offer') { - await this.signalingOnMessageTypeReOffer(message); - } - }; - } - else if (dataChannelEvent.channel.label === 'notify') { - dataChannelEvent.channel.onmessage = (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - if (message.event_type === 'connection.created') { - this.writeDataChannelTimelineLog('notify-connection.created', channel, message); - } - else if (message.event_type === 'connection.destroyed') { - this.writeDataChannelTimelineLog('notify-connection.destroyed', channel, message); - } - this.signalingOnMessageTypeNotify(message, 'datachannel'); - }; - } - else if (dataChannelEvent.channel.label === 'push') { - dataChannelEvent.channel.onmessage = (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - this.callbacks.push(message, 'datachannel'); - }; - } - else if (dataChannelEvent.channel.label === 'e2ee') { - dataChannelEvent.channel.onmessage = (event) => { - const channel = event.currentTarget; - const data = event.data; - this.signalingOnMessageE2EE(data); - this.writeDataChannelSignalingLog('onmessage-e2ee', channel, data); - }; - } - else if (dataChannelEvent.channel.label === 'stats') { - dataChannelEvent.channel.onmessage = async (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - if (message.type === 'req-stats') { - const stats = await this.getStats(); - this.sendStatsMessage(stats); - } - }; - } - else if (/^#.*/.exec(dataChannelEvent.channel.label)) { - dataChannelEvent.channel.onmessage = (event) => { - if (event.currentTarget === null) { - return; - } - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const dataChannel = event.target; - let data = undefined; - if (typeof event.data === 'string') { - data = new TextEncoder().encode(event.data); - } - else if (event.data instanceof ArrayBuffer) { - data = event.data; - } - else { - console.warn('Received onmessage event data is not of type String or ArrayBuffer.'); - } - if (data !== undefined) { - if (dataChannelSettings.compress === true) { - data = unzlibSync(new Uint8Array(data)).buffer; - } - this.callbacks.message(createDataChannelMessageEvent(dataChannel.label, data)); - } - }; - } - } - /** - * シグナリングサーバーへメッセージを送信するメソッド - * - * @param message - 送信するメッセージ - */ - sendSignalingMessage(message) { - if (this.soraDataChannels.signaling) { - if (this.signalingOfferMessageDataChannels.signaling && - this.signalingOfferMessageDataChannels.signaling.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - this.soraDataChannels.signaling.send(zlibMessage); - } - else { - this.soraDataChannels.signaling.send(JSON.stringify(message)); - } - this.writeDataChannelSignalingLog(`send-${message.type}`, this.soraDataChannels.signaling, message); - } - else if (this.ws !== null) { - this.ws.send(JSON.stringify(message)); - this.writeWebSocketSignalingLog(`send-${message.type}`, message); - } - } - /** - * シグナリングサーバーに E2E 用メッセージを投げるメソッド - * - * @param message - 送信するバイナリメッセージ - */ - sendE2EEMessage(message) { - if (this.soraDataChannels.e2ee) { - this.soraDataChannels.e2ee.send(message); - this.writeDataChannelSignalingLog('send-e2ee', this.soraDataChannels.e2ee, message); - } - else if (this.ws !== null) { - this.ws.send(message); - this.writeWebSocketSignalingLog('send-e2ee', message); - } - } - /** - * シグナリングサーバーに stats メッセージを投げるメソッド - * - * @param reports - RTCStatsReport のリスト - */ - sendStatsMessage(reports) { - if (this.soraDataChannels.stats) { - const message = { - type: 'stats', - reports: reports, - }; - if (this.signalingOfferMessageDataChannels.stats && - this.signalingOfferMessageDataChannels.stats.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - this.soraDataChannels.stats.send(zlibMessage); - } - else { - this.soraDataChannels.stats.send(JSON.stringify(message)); - } - } - } - /** - * audio transceiver を取得するメソッド - */ - getAudioTransceiver() { - if (this.pc && this.mids.audio) { - const transceiver = this.pc.getTransceivers().find((transceiver) => { - return transceiver.mid === this.mids.audio; - }); - return transceiver || null; - } - return null; - } - /** - * video transceiver を取得するメソッド - */ - getVideoTransceiver() { - if (this.pc && this.mids.video) { - const transceiver = this.pc.getTransceivers().find((transceiver) => { - return transceiver.mid === this.mids.video; - }); - return transceiver || null; - } - return null; - } - /** - * disconnect callback に渡す Event オブジェクトを生成するためのメソッド - * - * @param type - Event タイプ(normal | abend) - * @param title - Event タイトル - * @param initDict - Event に設定するオプションパラメーター - */ - soraCloseEvent(type, title, initDict) { - const soraCloseEvent = class SoraCloseEvent extends Event { - constructor(type, title, initDict) { - super(type); - if (initDict) { - if (initDict.code) { - this.code = initDict.code; - } - if (initDict.reason) { - this.reason = initDict.reason; - } - if (initDict.params) { - this.params = initDict.params; - } - } - this.title = title; - } - }; - return new soraCloseEvent(type, title, initDict); - } - /** - * DataChannel を使用してメッセージを送信するメソッド - * - * @param label - メッセージを送信する DataChannel のラベル - * @param message - Uint8Array - */ - sendMessage(label, message) { - const dataChannel = this.soraDataChannels[label]; - // 接続していない場合は何もしない - if (this.pc === null) { - return; - } - if (dataChannel === undefined) { - throw new Error('Could not find DataChannel'); - } - if (dataChannel.readyState !== 'open') { - throw new Error('Messaging DataChannel is not open'); - } - const settings = this.signalingOfferMessageDataChannels[label]; - if (settings !== undefined && settings.compress === true) { - const zlibMessage = zlibSync(message, {}); - dataChannel.send(zlibMessage); - } - else { - dataChannel.send(message); - } - } - /** - * E2EE の自分のフィンガープリント - */ - get e2eeSelfFingerprint() { - if (this.options.e2ee && this.e2ee) { - return this.e2ee.selfFingerprint(); - } - return; - } - /** - * E2EE のリモートのフィンガープリントリスト - */ - get e2eeRemoteFingerprints() { - if (this.options.e2ee && this.e2ee) { - return this.e2ee.remoteFingerprints(); - } - return; - } - /** - * audio が有効かどうか - */ - get audio() { - return this.getAudioTransceiver() !== null; - } - /** - * video が有効かどうか - */ - get video() { - return this.getVideoTransceiver() !== null; - } - /** - * シグナリングに使用する URL - * - * @deprecated - */ - get signalingUrl() { - return this.signalingUrlCandidates; - } - /** - * DataChannel メッセージング用の DataChannel 情報のリスト - */ - get datachannels() { - if (!this.signalingSwitched) { - return []; - } - const messagingDataChannellabels = Object.keys(this.signalingOfferMessageDataChannels).filter((label) => { - return /^#.*/.exec(label); - }); - const result = []; - for (const label of messagingDataChannellabels) { - const dataChannel = this.soraDataChannels[label]; - if (!dataChannel) { - continue; - } - const settings = this.signalingOfferMessageDataChannels[label]; - if (!settings) { - continue; - } - const messagingDataChannel = { - label: dataChannel.label, - ordered: dataChannel.ordered, - protocol: dataChannel.protocol, - compress: settings.compress, - direction: settings.direction, - }; - if (typeof dataChannel.maxPacketLifeTime === 'number') { - messagingDataChannel.maxPacketLifeTime = dataChannel.maxPacketLifeTime; - } - if (typeof dataChannel.maxRetransmits === 'number') { - messagingDataChannel.maxRetransmits = dataChannel.maxRetransmits; - } - result.push(messagingDataChannel); - } - return result; - } - } - - /** - * Role が "sendonly" または "sendrecv" の場合に Sora との WebRTC 接続を扱うクラス - */ - class ConnectionPublisher extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * ``` - * - * @param stream - メディアストリーム - * - * @public - */ - async connect(stream) { - if (this.options.multistream) { - await Promise.race([ - this.multiStream(stream).finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - } - else { - await Promise.race([ - this.singleStream(stream).finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - } - this.monitorWebSocketEvent(); - this.monitorPeerConnectionState(); - return stream; - } - /** - * シングルストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - async singleStream(stream) { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - await this.setRemoteDescription(signalingMessage); - stream.getTracks().forEach((track) => { - if (this.pc) { - this.pc.addTrack(track, stream); - } - }); - if (this.pc) { - for (const sender of this.pc.getSenders()) { - await this.setupSenderTransform(sender); - } - } - this.stream = stream; - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return stream; - } - /** - * マルチストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - async multiStream(stream) { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - if (this.pc) { - this.pc.ontrack = async (event) => { - await this.setupReceiverTransform(event.transceiver.mid, event.receiver); - const stream = event.streams[0]; - if (!stream) { - return; - } - const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'stream.id': stream.id, - id: event.track.id, - label: event.track.label, - enabled: event.track.enabled, - kind: event.track.kind, - muted: event.track.muted, - readyState: event.track.readyState, - }; - this.writePeerConnectionTimelineLog('ontrack', data); - if (stream.id === 'default') { - return; - } - if (stream.id === this.connectionId) { - return; - } - this.callbacks.track(event); - stream.onremovetrack = (event) => { - this.callbacks.removetrack(event); - if (event.target) { - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - const index = this.remoteConnectionIds.indexOf(event.target.id); - if (-1 < index) { - delete this.remoteConnectionIds[index]; - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - event.stream = event.target; - this.callbacks.removestream(event); - } - } - }; - if (-1 < this.remoteConnectionIds.indexOf(stream.id)) { - return; - } - // @ts-ignore TODO(yuito): 最新ブラウザでは無くなった API だが後方互換のため残す - event.stream = stream; - this.remoteConnectionIds.push(stream.id); - this.callbacks.addstream(event); - }; - } - await this.setRemoteDescription(signalingMessage); - stream.getTracks().forEach((track) => { - if (this.pc) { - this.pc.addTrack(track, stream); - } - }); - if (this.pc) { - for (const sender of this.pc.getSenders()) { - await this.setupSenderTransform(sender); - } - } - this.stream = stream; - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return stream; - } - } - - /** - * Role が "recvonly" の場合に Sora との WebRTC 接続を扱うクラス - */ - class ConnectionSubscriber extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const recvonly = connection.sendrecv("sora"); - * await recvonly.connect(); - * ``` - * - * @public - */ - async connect() { - if (this.options.multistream) { - await Promise.race([ - this.multiStream().finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - this.monitorWebSocketEvent(); - this.monitorPeerConnectionState(); - return; - } - else { - const stream = await Promise.race([ - this.singleStream().finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - this.monitorWebSocketEvent(); - this.monitorPeerConnectionState(); - return stream; - } - } - /** - * シングルストリームで Sora へ接続するメソッド - */ - async singleStream() { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - if (this.pc) { - this.pc.ontrack = async (event) => { - await this.setupReceiverTransform(event.transceiver.mid, event.receiver); - this.stream = event.streams[0]; - const streamId = this.stream.id; - if (streamId === 'default') { - return; - } - const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'stream.id': streamId, - id: event.track.id, - label: event.track.label, - enabled: event.track.enabled, - kind: event.track.kind, - muted: event.track.muted, - readyState: event.track.readyState, - }; - this.writePeerConnectionTimelineLog('ontrack', data); - this.callbacks.track(event); - this.stream.onremovetrack = (event) => { - this.callbacks.removetrack(event); - if (event.target) { - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - const targetId = event.target.id; - const index = this.remoteConnectionIds.indexOf(targetId); - if (-1 < index) { - delete this.remoteConnectionIds[index]; - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - event.stream = event.target; - this.callbacks.removestream(event); - } - } - }; - if (-1 < this.remoteConnectionIds.indexOf(streamId)) { - return; - } - // @ts-ignore TODO(yuito): 最新ブラウザでは無くなった API だが後方互換のため残す - event.stream = this.stream; - this.remoteConnectionIds.push(streamId); - this.callbacks.addstream(event); - }; - } - await this.setRemoteDescription(signalingMessage); - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return this.stream || new MediaStream(); - } - /** - * マルチストリームで Sora へ接続するメソッド - */ - async multiStream() { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - if (this.pc) { - this.pc.ontrack = async (event) => { - await this.setupReceiverTransform(event.transceiver.mid, event.receiver); - const stream = event.streams[0]; - if (stream.id === 'default') { - return; - } - if (stream.id === this.connectionId) { - return; - } - const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'stream.id': stream.id, - id: event.track.id, - label: event.track.label, - enabled: event.track.enabled, - kind: event.track.kind, - muted: event.track.muted, - readyState: event.track.readyState, - }; - this.writePeerConnectionTimelineLog('ontrack', data); - this.callbacks.track(event); - stream.onremovetrack = (event) => { - this.callbacks.removetrack(event); - if (event.target) { - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - const targetId = event.target.id; - const index = this.remoteConnectionIds.indexOf(targetId); - if (-1 < index) { - delete this.remoteConnectionIds[index]; - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - event.stream = event.target; - this.callbacks.removestream(event); - } - } - }; - if (-1 < this.remoteConnectionIds.indexOf(stream.id)) { - return; - } - // @ts-ignore TODO(yuito): 最新ブラウザでは無くなった API だが後方互換のため残す - event.stream = stream; - this.remoteConnectionIds.push(stream.id); - this.callbacks.addstream(event); - }; - } - await this.setRemoteDescription(signalingMessage); - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return; - } - } - - /** - * MediaStream の constraints を動的に変更するメソッド. - * - * @param mediastream - メディアストリーム - * - * @param constraints - メディアストリーム制約 - * - * @public - */ - async function applyMediaStreamConstraints(mediastream, constraints) { - if (constraints.audio && typeof constraints.audio !== 'boolean') { - for (const track of mediastream.getAudioTracks()) { - await track.applyConstraints(constraints.audio); - } - } - if (constraints.video && typeof constraints.video !== 'boolean') { - for (const track of mediastream.getVideoTracks()) { - await track.applyConstraints(constraints.video); - } - } - } - - /** - * Role 毎の Connection インスタンスを生成するためのクラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param debug - デバッグフラグ - */ - class SoraConnection { - constructor(signalingUrlCandidates, debug = false) { - this.signalingUrlCandidates = signalingUrlCandidates; - this.debug = debug; - } - /** - * role sendrecv で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendrecv = connection.sendrecv("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role sendrecv な Connection オブジェクトを返します - * - * @public - */ - sendrecv(channelId, metadata = null, options = { audio: true, video: true }) { - // sendrecv の場合、multistream に初期値を指定する - const sendrecvOptions = Object.assign({ multistream: true }, options); - return new ConnectionPublisher(this.signalingUrlCandidates, 'sendrecv', channelId, metadata, sendrecvOptions, this.debug); - } - /** - * role sendonly で接続するための Connecion インスタンスを生成するメソッド - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendonly = connection.sendonly("sora"); - * ``` - * - * @returns - * role sendonly な Connection オブジェクトを返します - * - * @public - */ - sendonly(channelId, metadata = null, options = { audio: true, video: true }) { - return new ConnectionPublisher(this.signalingUrlCandidates, 'sendonly', channelId, metadata, options, this.debug); - } - /** - * role recvonly で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const recvonly = connection.recvonly("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role recvonly な Connection オブジェクトを返します - * - * @public - */ - recvonly(channelId, metadata = null, options = { audio: true, video: true }) { - return new ConnectionSubscriber(this.signalingUrlCandidates, 'recvonly', channelId, metadata, options, this.debug); - } - /** - * シグナリングに使用する URL の候補 - * - * @public - * @deprecated - */ - get signalingUrl() { - return this.signalingUrlCandidates; - } - } - /** - * Sora JS SDK package - */ - var sora = { - /** - * E2EE で使用する WASM の読み込みを行うメソッド - * - * @example - * ```typescript - * Sora.initE2EE("http://192.0.2.100/wasm.wasm"); - * ``` - * @param wasmUrl - E2EE WASM の URL - * - * @public - */ - initE2EE: async function (wasmUrl) { - await SoraE2EE.loadWasm(wasmUrl); - }, - /** - * Lyra の初期化を行うメソッド - * - * 詳細は lyra.ts の initLyra() メソッドのドキュメントを参照 - */ - initLyra, - /** - * SoraConnection インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * ``` - * - * @param signalingUrlCandidates - シグナリングに使用する URL 候補 - * @param debug - デバッグフラグ - * - * @public - * - */ - connection: function (signalingUrlCandidates, debug = false) { - return new SoraConnection(signalingUrlCandidates, debug); - }, - /** - * SDK のバージョンを返すメソッド - * - * @public - */ - version: function () { - return '2023.2.0-canary.0'; - }, - /** - * WebRTC のユーティリティ関数群 - * - * @public - */ - helpers: { - applyMediaStreamConstraints, - }, - }; - - return sora; - -})); diff --git a/dist/sora.mjs b/dist/sora.mjs deleted file mode 100644 index fd84769a..00000000 --- a/dist/sora.mjs +++ /dev/null @@ -1,5289 +0,0 @@ -/** - * sora-js-sdk - * WebRTC SFU Sora JavaScript SDK - * @version: 2023.2.0-canary.0 - * @author: Shiguredo Inc. - * @license: Apache-2.0 - **/ - -/** - * @sora/e2ee - * WebRTC SFU Sora JavaScript E2EE Library - * @version: 2021.1.0 - * @author: Shiguredo Inc. - * @license: Apache-2.0 - **/ - -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -function WasmExec () { - (() => { - // Map multiple JavaScript environments to a single common API, - // preferring web standards over Node.js API. - // - // Environments considered: - // - Browsers - // - Node.js - // - Electron - // - Parcel - - if (typeof global !== "undefined") ; else if (typeof window !== "undefined") { - window.global = window; - } else if (typeof self !== "undefined") { - self.global = self; - } else { - throw new Error("cannot export Go (neither global, window nor self is defined)"); - } - - if (!global.require && typeof require !== "undefined") { - global.require = require; - } - - if (!global.fs && global.require) { - const fs = require("fs"); - if (Object.keys(fs) !== 0) { - global.fs = fs; - } - } - - const enosys = () => { - const err = new Error("not implemented"); - err.code = "ENOSYS"; - return err; - }; - - if (!global.fs) { - let outputBuf = ""; - global.fs = { - constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused - writeSync(fd, buf) { - outputBuf += decoder.decode(buf); - const nl = outputBuf.lastIndexOf("\n"); - if (nl != -1) { - console.log(outputBuf.substr(0, nl)); - outputBuf = outputBuf.substr(nl + 1); - } - return buf.length; - }, - write(fd, buf, offset, length, position, callback) { - if (offset !== 0 || length !== buf.length || position !== null) { - callback(enosys()); - return; - } - const n = this.writeSync(fd, buf); - callback(null, n); - }, - chmod(path, mode, callback) { callback(enosys()); }, - chown(path, uid, gid, callback) { callback(enosys()); }, - close(fd, callback) { callback(enosys()); }, - fchmod(fd, mode, callback) { callback(enosys()); }, - fchown(fd, uid, gid, callback) { callback(enosys()); }, - fstat(fd, callback) { callback(enosys()); }, - fsync(fd, callback) { callback(null); }, - ftruncate(fd, length, callback) { callback(enosys()); }, - lchown(path, uid, gid, callback) { callback(enosys()); }, - link(path, link, callback) { callback(enosys()); }, - lstat(path, callback) { callback(enosys()); }, - mkdir(path, perm, callback) { callback(enosys()); }, - open(path, flags, mode, callback) { callback(enosys()); }, - read(fd, buffer, offset, length, position, callback) { callback(enosys()); }, - readdir(path, callback) { callback(enosys()); }, - readlink(path, callback) { callback(enosys()); }, - rename(from, to, callback) { callback(enosys()); }, - rmdir(path, callback) { callback(enosys()); }, - stat(path, callback) { callback(enosys()); }, - symlink(path, link, callback) { callback(enosys()); }, - truncate(path, length, callback) { callback(enosys()); }, - unlink(path, callback) { callback(enosys()); }, - utimes(path, atime, mtime, callback) { callback(enosys()); }, - }; - } - - if (!global.process) { - global.process = { - getuid() { return -1; }, - getgid() { return -1; }, - geteuid() { return -1; }, - getegid() { return -1; }, - getgroups() { throw enosys(); }, - pid: -1, - ppid: -1, - umask() { throw enosys(); }, - cwd() { throw enosys(); }, - chdir() { throw enosys(); }, - }; - } - - if (!global.crypto) { - const nodeCrypto = require("crypto"); - global.crypto = { - getRandomValues(b) { - nodeCrypto.randomFillSync(b); - }, - }; - } - - if (!global.performance) { - global.performance = { - now() { - const [sec, nsec] = process.hrtime(); - return sec * 1000 + nsec / 1000000; - }, - }; - } - - if (!global.TextEncoder) { - global.TextEncoder = require("util").TextEncoder; - } - - if (!global.TextDecoder) { - global.TextDecoder = require("util").TextDecoder; - } - - // End of polyfills for common API. - - const encoder = new TextEncoder("utf-8"); - const decoder = new TextDecoder("utf-8"); - - global.Go = class { - constructor() { - this.argv = ["js"]; - this.env = {}; - this.exit = (code) => { - if (code !== 0) { - console.warn("exit code:", code); - } - }; - this._exitPromise = new Promise((resolve) => { - this._resolveExitPromise = resolve; - }); - this._pendingEvent = null; - this._scheduledTimeouts = new Map(); - this._nextCallbackTimeoutID = 1; - - const setInt64 = (addr, v) => { - this.mem.setUint32(addr + 0, v, true); - this.mem.setUint32(addr + 4, Math.floor(v / 4294967296), true); - }; - - const getInt64 = (addr) => { - const low = this.mem.getUint32(addr + 0, true); - const high = this.mem.getInt32(addr + 4, true); - return low + high * 4294967296; - }; - - const loadValue = (addr) => { - const f = this.mem.getFloat64(addr, true); - if (f === 0) { - return undefined; - } - if (!isNaN(f)) { - return f; - } - - const id = this.mem.getUint32(addr, true); - return this._values[id]; - }; - - const storeValue = (addr, v) => { - const nanHead = 0x7FF80000; - - if (typeof v === "number" && v !== 0) { - if (isNaN(v)) { - this.mem.setUint32(addr + 4, nanHead, true); - this.mem.setUint32(addr, 0, true); - return; - } - this.mem.setFloat64(addr, v, true); - return; - } - - if (v === undefined) { - this.mem.setFloat64(addr, 0, true); - return; - } - - let id = this._ids.get(v); - if (id === undefined) { - id = this._idPool.pop(); - if (id === undefined) { - id = this._values.length; - } - this._values[id] = v; - this._goRefCounts[id] = 0; - this._ids.set(v, id); - } - this._goRefCounts[id]++; - let typeFlag = 0; - switch (typeof v) { - case "object": - if (v !== null) { - typeFlag = 1; - } - break; - case "string": - typeFlag = 2; - break; - case "symbol": - typeFlag = 3; - break; - case "function": - typeFlag = 4; - break; - } - this.mem.setUint32(addr + 4, nanHead | typeFlag, true); - this.mem.setUint32(addr, id, true); - }; - - const loadSlice = (addr) => { - const array = getInt64(addr + 0); - const len = getInt64(addr + 8); - return new Uint8Array(this._inst.exports.mem.buffer, array, len); - }; - - const loadSliceOfValues = (addr) => { - const array = getInt64(addr + 0); - const len = getInt64(addr + 8); - const a = new Array(len); - for (let i = 0; i < len; i++) { - a[i] = loadValue(array + i * 8); - } - return a; - }; - - const loadString = (addr) => { - const saddr = getInt64(addr + 0); - const len = getInt64(addr + 8); - return decoder.decode(new DataView(this._inst.exports.mem.buffer, saddr, len)); - }; - - const timeOrigin = Date.now() - performance.now(); - this.importObject = { - go: { - // Go's SP does not change as long as no Go code is running. Some operations (e.g. calls, getters and setters) - // may synchronously trigger a Go event handler. This makes Go code get executed in the middle of the imported - // function. A goroutine can switch to a new stack if the current stack is too small (see morestack function). - // This changes the SP, thus we have to update the SP used by the imported function. - - // func wasmExit(code int32) - "runtime.wasmExit": (sp) => { - const code = this.mem.getInt32(sp + 8, true); - this.exited = true; - delete this._inst; - delete this._values; - delete this._goRefCounts; - delete this._ids; - delete this._idPool; - this.exit(code); - }, - - // func wasmWrite(fd uintptr, p unsafe.Pointer, n int32) - "runtime.wasmWrite": (sp) => { - const fd = getInt64(sp + 8); - const p = getInt64(sp + 16); - const n = this.mem.getInt32(sp + 24, true); - fs.writeSync(fd, new Uint8Array(this._inst.exports.mem.buffer, p, n)); - }, - - // func resetMemoryDataView() - "runtime.resetMemoryDataView": (sp) => { - this.mem = new DataView(this._inst.exports.mem.buffer); - }, - - // func nanotime1() int64 - "runtime.nanotime1": (sp) => { - setInt64(sp + 8, (timeOrigin + performance.now()) * 1000000); - }, - - // func walltime1() (sec int64, nsec int32) - "runtime.walltime1": (sp) => { - const msec = (new Date).getTime(); - setInt64(sp + 8, msec / 1000); - this.mem.setInt32(sp + 16, (msec % 1000) * 1000000, true); - }, - - // func scheduleTimeoutEvent(delay int64) int32 - "runtime.scheduleTimeoutEvent": (sp) => { - const id = this._nextCallbackTimeoutID; - this._nextCallbackTimeoutID++; - this._scheduledTimeouts.set(id, setTimeout( - () => { - this._resume(); - while (this._scheduledTimeouts.has(id)) { - // for some reason Go failed to register the timeout event, log and try again - // (temporary workaround for https://github.com/golang/go/issues/28975) - console.warn("scheduleTimeoutEvent: missed timeout event"); - this._resume(); - } - }, - getInt64(sp + 8) + 1, // setTimeout has been seen to fire up to 1 millisecond early - )); - this.mem.setInt32(sp + 16, id, true); - }, - - // func clearTimeoutEvent(id int32) - "runtime.clearTimeoutEvent": (sp) => { - const id = this.mem.getInt32(sp + 8, true); - clearTimeout(this._scheduledTimeouts.get(id)); - this._scheduledTimeouts.delete(id); - }, - - // func getRandomData(r []byte) - "runtime.getRandomData": (sp) => { - crypto.getRandomValues(loadSlice(sp + 8)); - }, - - // func finalizeRef(v ref) - "syscall/js.finalizeRef": (sp) => { - const id = this.mem.getUint32(sp + 8, true); - this._goRefCounts[id]--; - if (this._goRefCounts[id] === 0) { - const v = this._values[id]; - this._values[id] = null; - this._ids.delete(v); - this._idPool.push(id); - } - }, - - // func stringVal(value string) ref - "syscall/js.stringVal": (sp) => { - storeValue(sp + 24, loadString(sp + 8)); - }, - - // func valueGet(v ref, p string) ref - "syscall/js.valueGet": (sp) => { - const result = Reflect.get(loadValue(sp + 8), loadString(sp + 16)); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 32, result); - }, - - // func valueSet(v ref, p string, x ref) - "syscall/js.valueSet": (sp) => { - Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32)); - }, - - // func valueDelete(v ref, p string) - "syscall/js.valueDelete": (sp) => { - Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16)); - }, - - // func valueIndex(v ref, i int) ref - "syscall/js.valueIndex": (sp) => { - storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16))); - }, - - // valueSetIndex(v ref, i int, x ref) - "syscall/js.valueSetIndex": (sp) => { - Reflect.set(loadValue(sp + 8), getInt64(sp + 16), loadValue(sp + 24)); - }, - - // func valueCall(v ref, m string, args []ref) (ref, bool) - "syscall/js.valueCall": (sp) => { - try { - const v = loadValue(sp + 8); - const m = Reflect.get(v, loadString(sp + 16)); - const args = loadSliceOfValues(sp + 32); - const result = Reflect.apply(m, v, args); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 56, result); - this.mem.setUint8(sp + 64, 1); - } catch (err) { - storeValue(sp + 56, err); - this.mem.setUint8(sp + 64, 0); - } - }, - - // func valueInvoke(v ref, args []ref) (ref, bool) - "syscall/js.valueInvoke": (sp) => { - try { - const v = loadValue(sp + 8); - const args = loadSliceOfValues(sp + 16); - const result = Reflect.apply(v, undefined, args); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 40, result); - this.mem.setUint8(sp + 48, 1); - } catch (err) { - storeValue(sp + 40, err); - this.mem.setUint8(sp + 48, 0); - } - }, - - // func valueNew(v ref, args []ref) (ref, bool) - "syscall/js.valueNew": (sp) => { - try { - const v = loadValue(sp + 8); - const args = loadSliceOfValues(sp + 16); - const result = Reflect.construct(v, args); - sp = this._inst.exports.getsp(); // see comment above - storeValue(sp + 40, result); - this.mem.setUint8(sp + 48, 1); - } catch (err) { - storeValue(sp + 40, err); - this.mem.setUint8(sp + 48, 0); - } - }, - - // func valueLength(v ref) int - "syscall/js.valueLength": (sp) => { - setInt64(sp + 16, parseInt(loadValue(sp + 8).length)); - }, - - // valuePrepareString(v ref) (ref, int) - "syscall/js.valuePrepareString": (sp) => { - const str = encoder.encode(String(loadValue(sp + 8))); - storeValue(sp + 16, str); - setInt64(sp + 24, str.length); - }, - - // valueLoadString(v ref, b []byte) - "syscall/js.valueLoadString": (sp) => { - const str = loadValue(sp + 8); - loadSlice(sp + 16).set(str); - }, - - // func valueInstanceOf(v ref, t ref) bool - "syscall/js.valueInstanceOf": (sp) => { - this.mem.setUint8(sp + 24, (loadValue(sp + 8) instanceof loadValue(sp + 16)) ? 1 : 0); - }, - - // func copyBytesToGo(dst []byte, src ref) (int, bool) - "syscall/js.copyBytesToGo": (sp) => { - const dst = loadSlice(sp + 8); - const src = loadValue(sp + 32); - if (!(src instanceof Uint8Array || src instanceof Uint8ClampedArray)) { - this.mem.setUint8(sp + 48, 0); - return; - } - const toCopy = src.subarray(0, dst.length); - dst.set(toCopy); - setInt64(sp + 40, toCopy.length); - this.mem.setUint8(sp + 48, 1); - }, - - // func copyBytesToJS(dst ref, src []byte) (int, bool) - "syscall/js.copyBytesToJS": (sp) => { - const dst = loadValue(sp + 8); - const src = loadSlice(sp + 16); - if (!(dst instanceof Uint8Array || dst instanceof Uint8ClampedArray)) { - this.mem.setUint8(sp + 48, 0); - return; - } - const toCopy = src.subarray(0, dst.length); - dst.set(toCopy); - setInt64(sp + 40, toCopy.length); - this.mem.setUint8(sp + 48, 1); - }, - - "debug": (value) => { - console.log(value); - }, - } - }; - } - - async run(instance) { - this._inst = instance; - this.mem = new DataView(this._inst.exports.mem.buffer); - this._values = [ // JS values that Go currently has references to, indexed by reference id - NaN, - 0, - null, - true, - false, - global, - this, - ]; - this._goRefCounts = new Array(this._values.length).fill(Infinity); // number of references that Go has to a JS value, indexed by reference id - this._ids = new Map([ // mapping from JS values to reference ids - [0, 1], - [null, 2], - [true, 3], - [false, 4], - [global, 5], - [this, 6], - ]); - this._idPool = []; // unused ids that have been garbage collected - this.exited = false; // whether the Go program has exited - - // Pass command line arguments and environment variables to WebAssembly by writing them to the linear memory. - let offset = 4096; - - const strPtr = (str) => { - const ptr = offset; - const bytes = encoder.encode(str + "\0"); - new Uint8Array(this.mem.buffer, offset, bytes.length).set(bytes); - offset += bytes.length; - if (offset % 8 !== 0) { - offset += 8 - (offset % 8); - } - return ptr; - }; - - const argc = this.argv.length; - - const argvPtrs = []; - this.argv.forEach((arg) => { - argvPtrs.push(strPtr(arg)); - }); - argvPtrs.push(0); - - const keys = Object.keys(this.env).sort(); - keys.forEach((key) => { - argvPtrs.push(strPtr(`${key}=${this.env[key]}`)); - }); - argvPtrs.push(0); - - const argv = offset; - argvPtrs.forEach((ptr) => { - this.mem.setUint32(offset, ptr, true); - this.mem.setUint32(offset + 4, 0, true); - offset += 8; - }); - - this._inst.exports.run(argc, argv); - if (this.exited) { - this._resolveExitPromise(); - } - await this._exitPromise; - } - - _resume() { - if (this.exited) { - throw new Error("Go program has already exited"); - } - this._inst.exports.resume(); - if (this.exited) { - this._resolveExitPromise(); - } - } - - _makeFuncWrapper(id) { - const go = this; - return function () { - const event = { id: id, this: this, args: arguments }; - go._pendingEvent = event; - go._resume(); - return event.result; - }; - } - }; - - if ( - global.require && - global.require.main === module && - global.process && - global.process.versions && - !global.process.versions.electron - ) { - if (process.argv.length < 3) { - console.error("usage: go_js_wasm_exec [wasm binary] [arguments]"); - process.exit(1); - } - - const go = new Go(); - go.argv = process.argv.slice(2); - go.env = Object.assign({ TMPDIR: require("os").tmpdir() }, process.env); - go.exit = process.exit; - WebAssembly.instantiate(fs.readFileSync(process.argv[2]), go.importObject).then((result) => { - process.on("exit", (code) => { // Node.js exits if no event handler is pending - if (code === 0 && !go.exited) { - // deadlock, make Go print error and stack traces - go._pendingEvent = { id: 0 }; - go._resume(); - } - }); - return go.run(result.instance); - }).catch((err) => { - console.error(err); - process.exit(1); - }); - } - })(); -} - -const WORKER_SCRIPT = 'InVzZSBzdHJpY3QiOwovKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi8KY29uc3QgY29ubmVjdGlvbklkTGVuZ3RoID0gMjY7CmZ1bmN0aW9uIGJ5dGVDb3VudChuKSB7CiAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICAvLyBsb2cyNTYoeCkgPSBsb2coeCkgLyBsb2coMjU2KQogICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2cobikgLyBNYXRoLmxvZygyICoqIDgpICsgMSk7Cn0KZnVuY3Rpb24gYXJyYXlCdWZmZXJUb051bWJlcihhcnJheUJ1ZmZlcikgewogICAgLy8gMzJiaXQg44G+44Gn44KS5oOz5a6aIChCaWdJbnQg44G444Gu5pu444GN5o+b44GI5pmC44Gr6KaB5L+u5q2jKQogICAgY29uc3QgbmV3QXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQpOwogICAgY29uc3QgbmV3RGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcobmV3QXJyYXlCdWZmZXIpOwogICAgY29uc3QgZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIpOwogICAgY29uc3QgcGFkZGluZ0xlbmd0aCA9IFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UIC0gZGF0YVZpZXcuYnl0ZUxlbmd0aDsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFkZGluZ0xlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgbmV3RGF0YVZpZXcuc2V0VWludDgoaSwgMCk7CiAgICB9CiAgICBmb3IgKGxldCBpID0gcGFkZGluZ0xlbmd0aCwgaiA9IDA7IGkgPCBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDsgaSArPSAxLCBqICs9IDEpIHsKICAgICAgICBuZXdEYXRhVmlldy5zZXRVaW50OChpLCBkYXRhVmlldy5nZXRVaW50OChqKSk7CiAgICB9CiAgICByZXR1cm4gbmV3RGF0YVZpZXcuZ2V0VWludDMyKDApOwp9CmZ1bmN0aW9uIGVuY29kZVNGcmFtZUhlYWRlcihzLCBjb3VudCwga2V5SWQpIHsKICAgIC8vICAwIDEgMiAzIDQgNSA2IDcKICAgIC8vICstKy0rLSstKy0rLSstKy0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIC8vIHxTfExFTiAgfDF8S0xFTiB8ICAgS0lELi4uIChsZW5ndGg9S0xFTikgICAgfCAgICBDVFIuLi4gKGxlbmd0aD1MRU4pICAgIHwKICAgIC8vICstKy0rLSstKy0rLSstKy0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIC8vIFM6IDEgYml0CiAgICAvLyBMRU46IDMgYml0CiAgICAvLyBYOiAxIGJpdAogICAgLy8gS0xFTjogMyBiaXQKICAgIC8vIEtJRDogS0xFTiBieXRlCiAgICAvLyBDVFI6IExFTiBieXRlCiAgICAvLyBUT0RPOiBrZXlJZCAoS0lEKSDjgYwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsIDcgYnl0ZSDjgpLotoXjgYjjgabjgYTjgZ/loLTlkIjjga/jgqjjg6njg7zjgYvkvovlpJYKICAgIC8vIFRPRE86IGNvdW50IChDVFIpIOOBjCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwgNyBieXRlIOOCkui2heOBiOOBpuOBhOOBn+WgtOWQiOOBr+OCqOODqeODvOOBi+S+i+WklgogICAgaWYgKG1heEtleUlkIDwga2V5SWQgfHwgbWF4Q291bnQgPCBjb3VudCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRVhDRUVERUQtTUFYSU1VTS1CUk9BRENBU1RJTkctVElNRScpOwogICAgfQogICAgY29uc3Qga2xlbiA9IGJ5dGVDb3VudChrZXlJZCk7CiAgICBjb25zdCBsZW4gPSBieXRlQ291bnQoY291bnQpOwogICAgY29uc3QgaGVhZGVyQnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDEgKyBrbGVuICsgbGVuKTsKICAgIGNvbnN0IGhlYWRlckRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGhlYWRlckJ1ZmZlcik7CiAgICAvLyBTLCBMRU4sIDEsIEtMRU4g44GnIDEgYnl0ZQogICAgaGVhZGVyRGF0YVZpZXcuc2V0VWludDgoMCwgKHMgPDwgNykgKyAobGVuIDw8IDQpICsgKDEgPDwgMykgKyBrbGVuKTsKICAgIGNvbnN0IGhlYWRlclVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShoZWFkZXJCdWZmZXIpOwogICAgY29uc3Qga2V5SWRCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQpOwogICAgY29uc3Qga2V5SWREYXRhVmlldyA9IG5ldyBEYXRhVmlldyhrZXlJZEJ1ZmZlcik7CiAgICBrZXlJZERhdGFWaWV3LnNldFVpbnQzMigwLCBrZXlJZCk7CiAgICBjb25zdCBrZXlJZFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShrZXlJZEJ1ZmZlcik7CiAgICBoZWFkZXJVaW50OEFycmF5LnNldChrZXlJZFVpbnQ4QXJyYXkuc3ViYXJyYXkoVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQgLSBrbGVuKSwgMSk7CiAgICBjb25zdCBjb3VudEJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCk7CiAgICBjb25zdCBjb3VudERhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGNvdW50QnVmZmVyKTsKICAgIGNvdW50RGF0YVZpZXcuc2V0VWludDMyKDAsIGNvdW50KTsKICAgIGNvbnN0IGNvdW50VWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGNvdW50QnVmZmVyKTsKICAgIGhlYWRlclVpbnQ4QXJyYXkuc2V0KGNvdW50VWludDhBcnJheS5zdWJhcnJheShVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCAtIGxlbiksIGtsZW4gKyAxKTsKICAgIHJldHVybiBoZWFkZXJVaW50OEFycmF5Owp9CmZ1bmN0aW9uIHNwbGl0SGVhZGVyKHNmcmFtZSkgewogICAgY29uc3Qgc2ZyYW1lRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoc2ZyYW1lKTsKICAgIGNvbnN0IGhlYWRlciA9IHNmcmFtZURhdGFWaWV3LmdldFVpbnQ4KDApOwogICAgY29uc3QgbGVuID0gKGhlYWRlciAmIDB4NzApID4+IDQ7CiAgICBjb25zdCBrbGVuID0gaGVhZGVyICYgMHgwNzsKICAgIGNvbnN0IHNmcmFtZUhlYWRlckxlbmd0aCA9IDEgKyBrbGVuICsgbGVuOwogICAgY29uc3Qgc2ZyYW1lSGVhZGVyID0gc2ZyYW1lLnNsaWNlKDAsIHNmcmFtZUhlYWRlckxlbmd0aCk7CiAgICBpZiAoc2ZyYW1lSGVhZGVyLmJ5dGVMZW5ndGggPCBzZnJhbWVIZWFkZXJMZW5ndGgpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VORVhQRUNURUQtU0ZSQU1FLUxFTkdUSCcpOwogICAgfQogICAgY29uc3QgY29ubmVjdGlvbklkID0gc2ZyYW1lLnNsaWNlKHNmcmFtZUhlYWRlckxlbmd0aCwgc2ZyYW1lSGVhZGVyTGVuZ3RoICsgY29ubmVjdGlvbklkTGVuZ3RoKTsKICAgIGNvbnN0IGVuY3J5cHRlZEZyYW1lID0gc2ZyYW1lLnNsaWNlKHNmcmFtZUhlYWRlckxlbmd0aCArIGNvbm5lY3Rpb25JZExlbmd0aCwgc2ZyYW1lLmJ5dGVMZW5ndGgpOwogICAgcmV0dXJuIFtzZnJhbWVIZWFkZXIsIGNvbm5lY3Rpb25JZCwgZW5jcnlwdGVkRnJhbWVdOwp9CmZ1bmN0aW9uIHBhcnNlU0ZyYW1lSGVhZGVyKHNmcmFtZUhlYWRlcikgewogICAgY29uc3Qgc2ZyYW1lSGVhZGVyRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoc2ZyYW1lSGVhZGVyKTsKICAgIGNvbnN0IGhlYWRlciA9IHNmcmFtZUhlYWRlckRhdGFWaWV3LmdldFVpbnQ4KDApOwogICAgY29uc3QgcyA9IChoZWFkZXIgJiAweDgwKSA+PiA3OwogICAgY29uc3QgbGVuID0gKGhlYWRlciAmIDB4NzApID4+IDQ7CiAgICBjb25zdCB4ID0gKGhlYWRlciAmIDB4MDgpID4+IDM7CiAgICBjb25zdCBrbGVuID0gaGVhZGVyICYgMHgwNzsKICAgIC8vIHggZmxhZwogICAgaWYgKHggIT09IDEpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VORVhQRUNURUQtWC1GTEFHJyk7CiAgICB9CiAgICBjb25zdCBoZWFkZXJMZW5ndGggPSAxICsga2xlbiArIGxlbjsKICAgIGlmIChzZnJhbWVIZWFkZXJEYXRhVmlldy5ieXRlTGVuZ3RoIDwgaGVhZGVyTGVuZ3RoKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVTkVYUEVDVEVELVNGUkFNRS1IRUFERVItTEVOR1RIJyk7CiAgICB9CiAgICBjb25zdCBrZXlJZEJ1ZmZlciA9IHNmcmFtZUhlYWRlci5zbGljZSgxLCAxICsga2xlbik7CiAgICBjb25zdCBrZXlJZCA9IGFycmF5QnVmZmVyVG9OdW1iZXIoa2V5SWRCdWZmZXIpOwogICAgY29uc3QgY291bnRCdWZmZXIgPSBzZnJhbWVIZWFkZXIuc2xpY2UoMSArIGtsZW4sIGhlYWRlckxlbmd0aCk7CiAgICBjb25zdCBjb3VudCA9IGFycmF5QnVmZmVyVG9OdW1iZXIoY291bnRCdWZmZXIpOwogICAgcmV0dXJuIFtzLCBjb3VudCwga2V5SWRdOwp9Ci8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC90cmlwbGUtc2xhc2gtcmVmZXJlbmNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi8KLy8vIDxyZWZlcmVuY2UgcGF0aD0iLi9zZnJhbWUudHMiLz4KLy8gVE9ETzog5omx44GG5pWw5YCk44GM5aSn44GN44GE566H5omA44Gn44GvIE51bWJlciDjgYvjgokgQmlnSW50IOOBq+e9ruOBjeaPm+OBiOOCiwovLyBUT0RPOiBCaWdJbnQg44Gr572u44GN5o+b44GI44KL6Zqb44Gr5aSJ5pu044GZ44KLCmNvbnN0IG1heEtleUlkID0gMiAqKiAzMjsKY29uc3QgbWF4Q291bnQgPSAyICoqIDMyOwpjb25zdCBzZWxmRGVyaXZlS2V5TWFwID0gbmV3IE1hcCgpOwpjb25zdCBjb3VudE1hcCA9IG5ldyBNYXAoKTsKY29uc3Qgd3JpdGVJVk1hcCA9IG5ldyBNYXAoKTsKY29uc3QgcmVtb3RlRGVyaXZlS2V5TWFwID0gbmV3IE1hcCgpOwpjb25zdCBsYXRlc3RSZW1vdGVLZXlJZE1hcCA9IG5ldyBNYXAoKTsKY29uc3QgbGl0dGxlRW5kaWFuID0gdHJ1ZTsKY29uc3QgYmlnRW5kaWFuID0gIWxpdHRsZUVuZGlhbjsKY29uc3QgdGV4dEVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTsKY29uc3QgdGV4dERlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTsKLy8gVlA4IOOBruOBvwovLyBUT0RPKG5ha2FpKTogVlA5IC8gQVYxIOOCguWwhuadpeeahOOBq+WvvuW/nOOCguiAg+OBiOOCiwpjb25zdCB1bmVuY3J5cHRlZEJ5dGVzID0gewogICAgLy8gSSDjg5Xjg6zjg7zjg6AKICAgIGtleTogMTAsCiAgICAvLyDpnZ4gSSDjg5Xjg6zjg7zjg6AKICAgIGRlbHRhOiAzLAogICAgLy8g44Kq44O844OH44Kj44KqCiAgICB1bmRlZmluZWQ6IDEsCn07CmZ1bmN0aW9uIGdldENvdW50KGNvbm5lY3Rpb25JZCkgewogICAgcmV0dXJuIGNvdW50TWFwLmdldChjb25uZWN0aW9uSWQpIHx8IDA7Cn0KZnVuY3Rpb24gc2V0Q291bnQoY29ubmVjdGlvbklkLCBjb3VudCkgewogICAgcmV0dXJuIGNvdW50TWFwLnNldChjb25uZWN0aW9uSWQsIGNvdW50KTsKfQpmdW5jdGlvbiBnZXRSZW1vdGVEZXJpdmVLZXkoY29ubmVjdGlvbklkLCBrZXlJZCkgewogICAgaWYgKCFyZW1vdGVEZXJpdmVLZXlNYXAuaGFzKGNvbm5lY3Rpb25JZCkpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JFTU9URS1ERVJJVkVLRVktTUFQLU5PVC1GT1VORCcpOwogICAgfQogICAgY29uc3QgZGVyaXZlS2V5TWFwID0gcmVtb3RlRGVyaXZlS2V5TWFwLmdldChjb25uZWN0aW9uSWQpOwogICAgaWYgKCFkZXJpdmVLZXlNYXApIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICByZXR1cm4gZGVyaXZlS2V5TWFwLmdldChrZXlJZCk7Cn0KZnVuY3Rpb24gc2V0UmVtb3RlRGVyaXZlS2V5KGNvbm5lY3Rpb25JZCwga2V5SWQsIGRlcml2ZUtleSkgewogICAgbGV0IGRlcml2ZUtleU1hcCA9IHJlbW90ZURlcml2ZUtleU1hcC5nZXQoY29ubmVjdGlvbklkKTsKICAgIGlmICghZGVyaXZlS2V5TWFwKSB7CiAgICAgICAgZGVyaXZlS2V5TWFwID0gbmV3IE1hcCgpOwogICAgfQogICAgZGVyaXZlS2V5TWFwLnNldChrZXlJZCwgZGVyaXZlS2V5KTsKICAgIHJlbW90ZURlcml2ZUtleU1hcC5zZXQoY29ubmVjdGlvbklkLCBkZXJpdmVLZXlNYXApOwp9CmZ1bmN0aW9uIHNldExhdGVzdFJlbW90ZUtleUlkKGNvbm5lY3Rpb25JZCwga2V5SWQpIHsKICAgIGNvbnN0IGxhdGVzdFJlbW90ZUtleUlkID0gbGF0ZXN0UmVtb3RlS2V5SWRNYXAuZ2V0KGNvbm5lY3Rpb25JZCk7CiAgICBpZiAobGF0ZXN0UmVtb3RlS2V5SWQpIHsKICAgICAgICBpZiAobGF0ZXN0UmVtb3RlS2V5SWQgPCBrZXlJZCkgewogICAgICAgICAgICBsYXRlc3RSZW1vdGVLZXlJZE1hcC5zZXQoY29ubmVjdGlvbklkLCBrZXlJZCk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgbGF0ZXN0UmVtb3RlS2V5SWRNYXAuc2V0KGNvbm5lY3Rpb25JZCwga2V5SWQpOwogICAgfQp9CmZ1bmN0aW9uIHJlbW92ZU9sZFJlbW90ZURlcml2ZUtleXMoKSB7CiAgICBsYXRlc3RSZW1vdGVLZXlJZE1hcC5mb3JFYWNoKChsYXRlc3RLZXlJZCwgY29ubmVjdGlvbklkKSA9PiB7CiAgICAgICAgY29uc3QgZGVyaXZlS2V5TWFwID0gcmVtb3RlRGVyaXZlS2V5TWFwLmdldChjb25uZWN0aW9uSWQpOwogICAgICAgIGlmIChkZXJpdmVLZXlNYXApIHsKICAgICAgICAgICAgZGVyaXZlS2V5TWFwLmZvckVhY2goKF8sIGtleUlkKSA9PiB7CiAgICAgICAgICAgICAgICBpZiAobGF0ZXN0S2V5SWQgIT09IGtleUlkKSB7CiAgICAgICAgICAgICAgICAgICAgZGVyaXZlS2V5TWFwLmRlbGV0ZShrZXlJZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0pOwp9CmZ1bmN0aW9uIHJlbW92ZURlcml2ZUtleShjb25uZWN0aW9uSWQpIHsKICAgIGxhdGVzdFJlbW90ZUtleUlkTWFwLmRlbGV0ZShjb25uZWN0aW9uSWQpOwogICAgcmVtb3RlRGVyaXZlS2V5TWFwLmRlbGV0ZShjb25uZWN0aW9uSWQpOwp9CmZ1bmN0aW9uIGdldExhdGVzdFNlbGZEZXJpdmVLZXkoKSB7CiAgICBjb25zdCBkZXJpdmVLZXkgPSBzZWxmRGVyaXZlS2V5TWFwLmdldCgnbGF0ZXN0Jyk7CiAgICBpZiAoIWRlcml2ZUtleSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignTEFURVNULVNFTEYtREVSSVZFS0VZLU5PVF9GT1VORCcpOwogICAgfQogICAgcmV0dXJuIGRlcml2ZUtleTsKfQpmdW5jdGlvbiBzZXRTZWxmRGVyaXZlS2V5KGNvbm5lY3Rpb25JZCwga2V5SWQsIGRlcml2ZUtleSkgewogICAgY29uc3QgY3VycmVudFNlbGZEZXJpdmVLZXkgPSBzZWxmRGVyaXZlS2V5TWFwLmdldCgnbGF0ZXN0Jyk7CiAgICBpZiAoY3VycmVudFNlbGZEZXJpdmVLZXkpIHsKICAgICAgICBpZiAoY3VycmVudFNlbGZEZXJpdmVLZXlbJ2tleUlkJ10gPCBrZXlJZCkgewogICAgICAgICAgICBjb25zdCBuZXh0U2VsZkRlcml2ZUtleSA9IHsgY29ubmVjdGlvbklkLCBrZXlJZCwgZGVyaXZlS2V5IH07CiAgICAgICAgICAgIHNlbGZEZXJpdmVLZXlNYXAuc2V0KCdsYXRlc3QnLCBuZXh0U2VsZkRlcml2ZUtleSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgY29uc3QgbmV4dFNlbGZEZXJpdmVLZXkgPSB7IGNvbm5lY3Rpb25JZCwga2V5SWQsIGRlcml2ZUtleSB9OwogICAgICAgIHNlbGZEZXJpdmVLZXlNYXAuc2V0KCdsYXRlc3QnLCBuZXh0U2VsZkRlcml2ZUtleSk7CiAgICB9Cn0KZnVuY3Rpb24gc2lsZW5jZUZyYW1lKGVuY29kZWRGcmFtZSkgewogICAgLy8gY29ubmVjdGlvbi5jcmVhdGVkLCByZWNlaXZlTWVzc2FnZSDlj5fkv6HliY3jga7loLTlkIgKICAgIGlmIChlbmNvZGVkRnJhbWUudHlwZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgLy8g6Z+z5aOw44Gv5pqX5Y+35YyW44Gv44GE44KL44Go6IGe44GR44Gf44KC44Gu44GY44KD44Gq44GE44Gu44Gn572u44GN5o+b44GI44KLCiAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBBcnJheUJ1ZmZlcigzKTsKICAgICAgICBjb25zdCBuZXdVaW50OCA9IG5ldyBVaW50OEFycmF5KG5ld0RhdGEpOwogICAgICAgIC8vIE9wdXMg44K144Kk44Os44Oz44K544OV44Os44O844OgCiAgICAgICAgbmV3VWludDguc2V0KFsweGQ4LCAweGZmLCAweGZlXSk7CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBuZXdEYXRhOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgLy8g5pig5YOP44GM5q2j5bi444GY44KD44Gq44GE44Gf44KBIFBMSSDjgrnjg4jjg7zjg6DjgYznmbrnlJ/jgZfjgabjgZfjgb7jgYYKICAgICAgICAvLyDjgZ3jga7jgZ/jgoEgMzIweDI0MCDjga7nnJ/jgaPpu5LjgarnlLvpnaLjgavnva7jgY3mj5vjgYjjgosKICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IEFycmF5QnVmZmVyKDYwKTsKICAgICAgICBjb25zdCBuZXdVaW50OCA9IG5ldyBVaW50OEFycmF5KG5ld0RhdGEpOwogICAgICAgIC8vIHByZXR0aWVyLWlnbm9yZQogICAgICAgIG5ld1VpbnQ4LnNldChbMHhiMCwgMHgwNSwgMHgwMCwgMHg5ZCwgMHgwMSwgMHgyYSwgMHhhMCwgMHgwMCwgMHg1YSwgMHgwMCwKICAgICAgICAgICAgMHgzOSwgMHgwMywgMHgwMCwgMHgwMCwgMHgxYywgMHgyMiwgMHgxNiwgMHgxNiwgMHgyMiwgMHg2NiwKICAgICAgICAgICAgMHgxMiwgMHgyMCwgMHgwNCwgMHg5MCwgMHg0MCwgMHgwMCwgMHhjNSwgMHgwMSwgMHhlMCwgMHg3YywKICAgICAgICAgICAgMHg0ZCwgMHgyZiwgMHhmYSwgMHhkZCwgMHg0ZCwgMHhhNSwgMHg3ZiwgMHg4OSwgMHhhNSwgMHhmZiwKICAgICAgICAgICAgMHg1YiwgMHhhOSwgMHhiNCwgMHhhZiwgMHhmMSwgMHgzNCwgMHhiZiwgMHhlYiwgMHg3NSwgMHgzNiwKICAgICAgICAgICAgMHg5NSwgMHhmZSwgMHgyNiwgMHg5NiwgMHg2MCwgMHhmZSwgMHhmZiwgMHhiYSwgMHhmZiwgMHg0MCwKICAgICAgICBdKTsKICAgICAgICBlbmNvZGVkRnJhbWUuZGF0YSA9IG5ld0RhdGE7CiAgICB9CiAgICByZXR1cm4gZW5jb2RlZEZyYW1lOwp9CmZ1bmN0aW9uIHNldFdyaXRlSVYoY29ubmVjdGlvbklkLCBrZXlJZCwgd3JpdGVJVikgewogICAgY29uc3Qga2V5ID0gW2Nvbm5lY3Rpb25JZCwga2V5SWQudG9TdHJpbmcoKV0uam9pbignOicpOwogICAgd3JpdGVJVk1hcC5zZXQoa2V5LCB3cml0ZUlWKTsKfQpmdW5jdGlvbiBnZXRXcml0ZUlWKGNvbm5lY3Rpb25JZCwga2V5SWQpIHsKICAgIGNvbnN0IGtleSA9IFtjb25uZWN0aW9uSWQsIGtleUlkLnRvU3RyaW5nKCldLmpvaW4oJzonKTsKICAgIHJldHVybiB3cml0ZUlWTWFwLmdldChrZXkpOwp9CmZ1bmN0aW9uIGdlbmVyYXRlSVYoY291bnQsIGNvbm5lY3Rpb25JZCwga2V5SWQpIHsKICAgIC8vIFRPRE86IGtleUlkIOOBjCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiwgNyBieXRlIOOCkui2heOBiOOBpuOBhOOBn+WgtOWQiOOBr+OCqOODqeODvOOBi+S+i+WklgogICAgLy8gVE9ETzogY291bnQg44GMIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLCA3IGJ5dGUg44KS6LaF44GI44Gm44GE44Gf5aC05ZCI44Gv44Ko44Op44O844GL5L6L5aSWCiAgICAvLyAzMiBiaXQg44G+44GnCiAgICBpZiAobWF4S2V5SWQgPCBrZXlJZCB8fCBtYXhDb3VudCA8IGNvdW50KSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFWENFRURFRC1NQVhJTVVNLUJST0FEQ0FTVElORy1USU1FJyk7CiAgICB9CiAgICBjb25zdCB3cml0ZUlWID0gZ2V0V3JpdGVJVihjb25uZWN0aW9uSWQsIGtleUlkKTsKICAgIGlmICghd3JpdGVJVikgewogICAgICAgIHRocm93IG5ldyBFcnJvcignV1JJVEVJVi1OT1QtRk9VTkQnKTsKICAgIH0KICAgIGNvbnN0IHBhZGRpbmdMZW5ndGggPSBObiAtIFVpbnQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UOwogICAgY29uc3QgY291bnRXaXRoUGFkZGluZ0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihObik7CiAgICBjb25zdCBjb3VudFdpdGhQYWRkaW5nRGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoY291bnRXaXRoUGFkZGluZ0J1ZmZlcik7CiAgICBjb3VudFdpdGhQYWRkaW5nRGF0YVZpZXcuc2V0VWludDMyKHBhZGRpbmdMZW5ndGgsIGNvdW50LCBiaWdFbmRpYW4pOwogICAgY29uc3QgaXYgPSBuZXcgVWludDhBcnJheShObik7CiAgICBjb25zdCBjb3VudFdpdGhQYWRkaW5nID0gbmV3IFVpbnQ4QXJyYXkoY291bnRXaXRoUGFkZGluZ0J1ZmZlcik7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE5uOyBpKyspIHsKICAgICAgICBpdltpXSA9IHdyaXRlSVZbaV0gXiBjb3VudFdpdGhQYWRkaW5nW2ldOwogICAgfQogICAgcmV0dXJuIGl2Owp9CmZ1bmN0aW9uIHBhcnNlUGF5bG9hZChwYXlsb2FkVHlwZSwgcGF5bG9hZCkgewogICAgcmV0dXJuIFsKICAgICAgICBuZXcgVWludDhBcnJheShwYXlsb2FkLCAwLCB1bmVuY3J5cHRlZEJ5dGVzW3BheWxvYWRUeXBlXSksCiAgICAgICAgbmV3IFVpbnQ4QXJyYXkocGF5bG9hZCwgdW5lbmNyeXB0ZWRCeXRlc1twYXlsb2FkVHlwZV0pLAogICAgXTsKfQpmdW5jdGlvbiBlbmNvZGVGcmFtZUFkZChoZWFkZXIsIHNmcmFtZUhlYWRlciwgY29ubmVjdGlvbklkKSB7CiAgICBjb25zdCBjb25uZWN0aW9uSWREYXRhID0gdGV4dEVuY29kZXIuZW5jb2RlKGNvbm5lY3Rpb25JZCk7CiAgICBjb25zdCBmcmFtZUFkZCA9IG5ldyBVaW50OEFycmF5KGhlYWRlci5ieXRlTGVuZ3RoICsgc2ZyYW1lSGVhZGVyLmJ5dGVMZW5ndGggKyBjb25uZWN0aW9uSWREYXRhLmJ5dGVMZW5ndGgpOwogICAgZnJhbWVBZGQuc2V0KGhlYWRlciwgMCk7CiAgICBmcmFtZUFkZC5zZXQoc2ZyYW1lSGVhZGVyLCBoZWFkZXIuYnl0ZUxlbmd0aCk7CiAgICBmcmFtZUFkZC5zZXQoY29ubmVjdGlvbklkRGF0YSwgaGVhZGVyLmJ5dGVMZW5ndGggKyBzZnJhbWVIZWFkZXIuYnl0ZUxlbmd0aCk7CiAgICByZXR1cm4gZnJhbWVBZGQ7Cn0KYXN5bmMgZnVuY3Rpb24gZW5jcnlwdEZ1bmN0aW9uKGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgY29uc3QgeyBjb25uZWN0aW9uSWQsIGtleUlkLCBkZXJpdmVLZXkgfSA9IGdldExhdGVzdFNlbGZEZXJpdmVLZXkoKTsKICAgIGlmICghZGVyaXZlS2V5KSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3QgY3VycmVudENvdW50ID0gZ2V0Q291bnQoY29ubmVjdGlvbklkKTsKICAgIC8vIGNvdW50IOOBjCAzMiBiaXQg5Lul5LiK44Gu5aC05ZCI44Gv5YGc5q2i44GZ44KLCiAgICBpZiAoY3VycmVudENvdW50ID4gbWF4Q291bnQpIHsKICAgICAgICBwb3N0TWVzc2FnZSh7IHR5cGU6ICdkaXNjb25uZWN0JyB9KTsKICAgIH0KICAgIGNvbnN0IGl2ID0gZ2VuZXJhdGVJVihjdXJyZW50Q291bnQsIGNvbm5lY3Rpb25JZCwga2V5SWQpOwogICAgaWYgKCFpdikgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IFtoZWFkZXIsIHBheWxvYWRdID0gcGFyc2VQYXlsb2FkKGVuY29kZWRGcmFtZS50eXBlLCBlbmNvZGVkRnJhbWUuZGF0YSk7CiAgICBjb25zdCBzZnJhbWVIZWFkZXIgPSBlbmNvZGVTRnJhbWVIZWFkZXIoMCwgY3VycmVudENvdW50LCBrZXlJZCk7CiAgICBjb25zdCBmcmFtZUFkZCA9IGVuY29kZUZyYW1lQWRkKGhlYWRlciwgc2ZyYW1lSGVhZGVyLCBjb25uZWN0aW9uSWQpOwogICAgY3J5cHRvLnN1YnRsZQogICAgICAgIC5lbmNyeXB0KHsKICAgICAgICBuYW1lOiAnQUVTLUdDTScsCiAgICAgICAgaXY6IGl2LAogICAgICAgIC8vIOaal+WPt+WMluOBleOCjOOBpuOBhOOBquOBhOmDqOWIhgogICAgICAgIGFkZGl0aW9uYWxEYXRhOiBmcmFtZUFkZCwKICAgIH0sIGRlcml2ZUtleSwgcGF5bG9hZCkKICAgICAgICAudGhlbigoY2lwaGVyVGV4dCkgPT4gewogICAgICAgIGNvbnN0IG5ld0RhdGEgPSBuZXcgQXJyYXlCdWZmZXIoZnJhbWVBZGQuYnl0ZUxlbmd0aCArIGNpcGhlclRleHQuYnl0ZUxlbmd0aCk7CiAgICAgICAgY29uc3QgbmV3RGF0YVVpbnQ4ID0gbmV3IFVpbnQ4QXJyYXkobmV3RGF0YSk7CiAgICAgICAgbmV3RGF0YVVpbnQ4LnNldChmcmFtZUFkZCwgMCk7CiAgICAgICAgbmV3RGF0YVVpbnQ4LnNldChuZXcgVWludDhBcnJheShjaXBoZXJUZXh0KSwgZnJhbWVBZGQuYnl0ZUxlbmd0aCk7CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBuZXdEYXRhOwogICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShlbmNvZGVkRnJhbWUpOwogICAgfSk7CiAgICBzZXRDb3VudChjb25uZWN0aW9uSWQsIGN1cnJlbnRDb3VudCArIDEpOwp9CmFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRGdW5jdGlvbihlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgIC8vIOepuuODleODrOODvOODoOWvvuW/nAogICAgaWYgKGVuY29kZWRGcmFtZS5kYXRhLmJ5dGVMZW5ndGggPCAxKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdHJ5IHsKICAgICAgICBjb25zdCBmcmFtZU1ldGFkYXRhQnVmZmVyID0gZW5jb2RlZEZyYW1lLmRhdGEuc2xpY2UoMCwgdW5lbmNyeXB0ZWRCeXRlc1tlbmNvZGVkRnJhbWUudHlwZV0pOwogICAgICAgIGNvbnN0IGZyYW1lTWV0YWRhdGEgPSBuZXcgVWludDhBcnJheShmcmFtZU1ldGFkYXRhQnVmZmVyKTsKICAgICAgICBjb25zdCBbc2ZyYW1lSGVhZGVyQnVmZmVyLCBjb25uZWN0aW9uSWRCdWZmZXIsIGVuY3J5cHRlZEZyYW1lQnVmZmVyXSA9IHNwbGl0SGVhZGVyKGVuY29kZWRGcmFtZS5kYXRhLnNsaWNlKHVuZW5jcnlwdGVkQnl0ZXNbZW5jb2RlZEZyYW1lLnR5cGVdKSk7CiAgICAgICAgY29uc3Qgc2ZyYW1lSGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoc2ZyYW1lSGVhZGVyQnVmZmVyKTsKICAgICAgICBjb25zdCBjb25uZWN0aW9uSWQgPSB0ZXh0RGVjb2Rlci5kZWNvZGUoY29ubmVjdGlvbklkQnVmZmVyKTsKICAgICAgICBjb25zdCBbcywgY291bnQsIGtleUlkXSA9IHBhcnNlU0ZyYW1lSGVhZGVyKHNmcmFtZUhlYWRlckJ1ZmZlcik7CiAgICAgICAgLy8g5LuK5Zue44GvIHMgZmxhZyDjga8gMCDjga7jgb8KICAgICAgICBpZiAocyAhPT0gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VORVhQRUNURUQtUy1GTEFHJyk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlcml2ZUtleSA9IGdldFJlbW90ZURlcml2ZUtleShjb25uZWN0aW9uSWQsIGtleUlkKTsKICAgICAgICBpZiAoIWRlcml2ZUtleSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGl2ID0gZ2VuZXJhdGVJVihjb3VudCwgY29ubmVjdGlvbklkLCBrZXlJZCk7CiAgICAgICAgaWYgKCFpdikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGZyYW1lQWRkID0gZW5jb2RlRnJhbWVBZGQoZnJhbWVNZXRhZGF0YSwgc2ZyYW1lSGVhZGVyLCBjb25uZWN0aW9uSWQpOwogICAgICAgIGNyeXB0by5zdWJ0bGUKICAgICAgICAgICAgLmRlY3J5cHQoewogICAgICAgICAgICBuYW1lOiAnQUVTLUdDTScsCiAgICAgICAgICAgIGl2OiBpdiwKICAgICAgICAgICAgYWRkaXRpb25hbERhdGE6IGZyYW1lQWRkLAogICAgICAgIH0sIGRlcml2ZUtleSwgbmV3IFVpbnQ4QXJyYXkoZW5jcnlwdGVkRnJhbWVCdWZmZXIpKQogICAgICAgICAgICAudGhlbigocGxhaW5UZXh0KSA9PiB7CiAgICAgICAgICAgIGNvbnN0IG5ld0RhdGEgPSBuZXcgQXJyYXlCdWZmZXIoZnJhbWVNZXRhZGF0YUJ1ZmZlci5ieXRlTGVuZ3RoICsgcGxhaW5UZXh0LmJ5dGVMZW5ndGgpOwogICAgICAgICAgICBjb25zdCBuZXdVaW50OCA9IG5ldyBVaW50OEFycmF5KG5ld0RhdGEpOwogICAgICAgICAgICBuZXdVaW50OC5zZXQobmV3IFVpbnQ4QXJyYXkoZnJhbWVNZXRhZGF0YUJ1ZmZlciwgMCwgdW5lbmNyeXB0ZWRCeXRlc1tlbmNvZGVkRnJhbWUudHlwZV0pKTsKICAgICAgICAgICAgbmV3VWludDguc2V0KG5ldyBVaW50OEFycmF5KHBsYWluVGV4dCksIHVuZW5jcnlwdGVkQnl0ZXNbZW5jb2RlZEZyYW1lLnR5cGVdKTsKICAgICAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBuZXdEYXRhOwogICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgICAgICB9KTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgLy8g5oOz5a6a5aSW44Gu44OR44Kx44OD44OI44OV44Kp44O844Oe44OD44OI44KS5Y+X5L+h44GX44Gf5aC05ZCICiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKHNpbGVuY2VGcmFtZShlbmNvZGVkRnJhbWUpKTsKICAgIH0KfQovKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvdHJpcGxlLXNsYXNoLXJlZmVyZW5jZSAqLwovLy8gPHJlZmVyZW5jZSBwYXRoPSIuL2UyZWUudHMiLz4KLy8gbm9uY2Ug44K144Kk44K6CmNvbnN0IE5uID0gMTI7Ci8vIGtleSDjgrXjgqTjgroKY29uc3QgTmsgPSAxNjsKLy8ga2V5IOOCteOCpOOCuu+8iGJpdO+8iQpjb25zdCBrZXlMZW5ndGggPSBOayAqIDg7CmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRGVyaXZlS2V5KG1hdGVyaWFsKSB7CiAgICBjb25zdCBzYWx0ID0gdGV4dEVuY29kZXIuZW5jb2RlKCdTRnJhbWUxMCcpOwogICAgY29uc3QgaW5mbyA9IHRleHRFbmNvZGVyLmVuY29kZSgna2V5Jyk7CiAgICBjb25zdCBkZXJpdmVLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRlcml2ZUtleSh7CiAgICAgICAgbmFtZTogJ0hLREYnLAogICAgICAgIHNhbHQ6IHNhbHQsCiAgICAgICAgaGFzaDogJ1NIQS0yNTYnLAogICAgICAgIGluZm86IGluZm8sCiAgICB9LCBtYXRlcmlhbCwgewogICAgICAgIG5hbWU6ICdBRVMtR0NNJywKICAgICAgICBsZW5ndGg6IGtleUxlbmd0aCwKICAgIH0sIGZhbHNlLCBbJ2VuY3J5cHQnLCAnZGVjcnlwdCddKTsKICAgIHJldHVybiBkZXJpdmVLZXk7Cn0KYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVXcml0ZUlWKG1hdGVyaWFsKSB7CiAgICBjb25zdCBzYWx0ID0gdGV4dEVuY29kZXIuZW5jb2RlKCdTRnJhbWUxMCcpOwogICAgY29uc3QgaW5mbyA9IHRleHRFbmNvZGVyLmVuY29kZSgnc2FsdCcpOwogICAgY29uc3Qgd3JpdGVJVkJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGVyaXZlQml0cyh7CiAgICAgICAgbmFtZTogJ0hLREYnLAogICAgICAgIHNhbHQ6IHNhbHQsCiAgICAgICAgaGFzaDogJ1NIQS0zODQnLAogICAgICAgIGluZm86IGluZm8sCiAgICB9LCBtYXRlcmlhbCwgCiAgICAvLyBJViDjga8gOTYg44OT44OD44OI44Gq44Gu44GnCiAgICBObiAqIDgpOwogICAgY29uc3Qgd3JpdGVJViA9IG5ldyBVaW50OEFycmF5KHdyaXRlSVZCdWZmZXIpOwogICAgcmV0dXJuIHdyaXRlSVY7Cn0KbGV0IHJlbW92YWxUaW1lb3V0SWQgPSAwOwpvbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKICAgIGNvbnN0IHsgdHlwZSB9ID0gZXZlbnQuZGF0YTsKICAgIGlmICh0eXBlID09PSAnc2VsZlNlY3JldEtleU1hdGVyaWFsJykgewogICAgICAgIGNvbnN0IHsgc2VsZlNlY3JldEtleU1hdGVyaWFsLCBzZWxmQ29ubmVjdGlvbklkLCBzZWxmS2V5SWQsIHdhaXRpbmdUaW1lIH0gPSBldmVudC5kYXRhOwogICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBjcnlwdG8uc3VidGxlCiAgICAgICAgICAgICAgICAuaW1wb3J0S2V5KCdyYXcnLCBzZWxmU2VjcmV0S2V5TWF0ZXJpYWwuYnVmZmVyLCAnSEtERicsIGZhbHNlLCBbJ2Rlcml2ZUJpdHMnLCAnZGVyaXZlS2V5J10pCiAgICAgICAgICAgICAgICAudGhlbigobWF0ZXJpYWwpID0+IHsKICAgICAgICAgICAgICAgIGdlbmVyYXRlRGVyaXZlS2V5KG1hdGVyaWFsKS50aGVuKChkZXJpdmVLZXkpID0+IHsKICAgICAgICAgICAgICAgICAgICBzZXRTZWxmRGVyaXZlS2V5KHNlbGZDb25uZWN0aW9uSWQsIHNlbGZLZXlJZCwgZGVyaXZlS2V5KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgZ2VuZXJhdGVXcml0ZUlWKG1hdGVyaWFsKS50aGVuKCh3cml0ZUlWKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc2V0V3JpdGVJVihzZWxmQ29ubmVjdGlvbklkLCBzZWxmS2V5SWQsIHdyaXRlSVYpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSwgd2FpdGluZ1RpbWUgfHwgMCk7CiAgICAgICAgLy8gVE9ETzogKzEwMDAg44Gn6Y2155Sf5oiQ5b6M44Gr5a6f6KGM44GV44KM44KL44KI44GG44Gr44GX44Gm44GE44KL44GM55+t44GE5aC05ZCI44Gv5Ly444Gw44GZCiAgICAgICAgY29uc3QgcmVtb3ZhbFdhaXRpbmdUaW1lID0gKHdhaXRpbmdUaW1lIHx8IDApICsgMTAwMDsKICAgICAgICBpZiAocmVtb3ZhbFRpbWVvdXRJZCkgewogICAgICAgICAgICAvLyDli5XkvZzmuIjjgb/jgr/jgqTjg57jg7zmnInjgooKICAgICAgICAgICAgaWYgKHdhaXRpbmdUaW1lKSB7CiAgICAgICAgICAgICAgICAvLyBjb25uZWN0aW9uLmRlc3Ryb3llZAogICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHJlbW92YWxUaW1lb3V0SWQpOwogICAgICAgICAgICAgICAgcmVtb3ZhbFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgIHJlbW92ZU9sZFJlbW90ZURlcml2ZUtleXMoKTsKICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQocmVtb3ZhbFRpbWVvdXRJZCk7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZhbFRpbWVvdXRJZCA9IDA7CiAgICAgICAgICAgICAgICB9LCByZW1vdmFsV2FpdGluZ1RpbWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyDli5XkvZzmuIjjgb/jgr/jgqTjg57jg7zjgarjgZcKICAgICAgICAgICAgLy8gY29ubmVjdGlvbi5jcmVhdGVkIOOBruWgtOWQiOOCguWwkeOBl+Wun+ihjOOCkumBheOCieOBm+OCiwogICAgICAgICAgICByZW1vdmFsVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICByZW1vdmVPbGRSZW1vdGVEZXJpdmVLZXlzKCk7CiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQocmVtb3ZhbFRpbWVvdXRJZCk7CiAgICAgICAgICAgICAgICByZW1vdmFsVGltZW91dElkID0gMDsKICAgICAgICAgICAgfSwgcmVtb3ZhbFdhaXRpbmdUaW1lKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIGlmICh0eXBlID09PSAncmVtb3RlU2VjcmV0S2V5TWF0ZXJpYWxzJykgewogICAgICAgIGNvbnN0IHsgcmVtb3RlU2VjcmV0S2V5TWF0ZXJpYWxzIH0gPSBldmVudC5kYXRhOwogICAgICAgIGZvciAoY29uc3QgW2Nvbm5lY3Rpb25JZCwgcmVtb3RlU2VjcmV0S2V5TWF0ZXJpYWxdIG9mIE9iamVjdC5lbnRyaWVzKHJlbW90ZVNlY3JldEtleU1hdGVyaWFscykpIHsKICAgICAgICAgICAgY29uc3QgeyBrZXlJZCwgc2VjcmV0S2V5TWF0ZXJpYWwgfSA9IHJlbW90ZVNlY3JldEtleU1hdGVyaWFsOwogICAgICAgICAgICBjcnlwdG8uc3VidGxlCiAgICAgICAgICAgICAgICAuaW1wb3J0S2V5KCdyYXcnLCBzZWNyZXRLZXlNYXRlcmlhbC5idWZmZXIsICdIS0RGJywgZmFsc2UsIFsnZGVyaXZlQml0cycsICdkZXJpdmVLZXknXSkKICAgICAgICAgICAgICAgIC50aGVuKChtYXRlcmlhbCkgPT4gewogICAgICAgICAgICAgICAgZ2VuZXJhdGVEZXJpdmVLZXkobWF0ZXJpYWwpLnRoZW4oKGRlcml2ZUtleSkgPT4gewogICAgICAgICAgICAgICAgICAgIHNldFJlbW90ZURlcml2ZUtleShjb25uZWN0aW9uSWQsIGtleUlkLCBkZXJpdmVLZXkpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBnZW5lcmF0ZVdyaXRlSVYobWF0ZXJpYWwpLnRoZW4oKHdyaXRlSVYpID0+IHsKICAgICAgICAgICAgICAgICAgICBzZXRXcml0ZUlWKGNvbm5lY3Rpb25JZCwga2V5SWQsIHdyaXRlSVYpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzZXRMYXRlc3RSZW1vdGVLZXlJZChjb25uZWN0aW9uSWQsIGtleUlkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSBpZiAodHlwZSA9PT0gJ3JlbW92ZVJlbW90ZURlcml2ZUtleScpIHsKICAgICAgICBjb25zdCB7IGNvbm5lY3Rpb25JZCB9ID0gZXZlbnQuZGF0YTsKICAgICAgICByZW1vdmVEZXJpdmVLZXkoY29ubmVjdGlvbklkKTsKICAgIH0KICAgIGVsc2UgaWYgKHR5cGUgPT09ICdlbmNyeXB0JykgewogICAgICAgIGNvbnN0IHsgcmVhZGFibGVTdHJlYW0sIHdyaXRhYmxlU3RyZWFtIH0gPSBldmVudC5kYXRhOwogICAgICAgIGNvbnN0IHRyYW5zZm9ybVN0cmVhbSA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICB0cmFuc2Zvcm06IGVuY3J5cHRGdW5jdGlvbiwKICAgICAgICB9KTsKICAgICAgICByZWFkYWJsZVN0cmVhbS5waXBlVGhyb3VnaCh0cmFuc2Zvcm1TdHJlYW0pLnBpcGVUbyh3cml0YWJsZVN0cmVhbSk7CiAgICB9CiAgICBlbHNlIGlmICh0eXBlID09PSAnZGVjcnlwdCcpIHsKICAgICAgICBjb25zdCB7IHJlYWRhYmxlU3RyZWFtLCB3cml0YWJsZVN0cmVhbSB9ID0gZXZlbnQuZGF0YTsKICAgICAgICBjb25zdCB0cmFuc2Zvcm1TdHJlYW0gPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKICAgICAgICAgICAgdHJhbnNmb3JtOiBkZWNyeXB0RnVuY3Rpb24sCiAgICAgICAgfSk7CiAgICAgICAgcmVhZGFibGVTdHJlYW0ucGlwZVRocm91Z2godHJhbnNmb3JtU3RyZWFtKS5waXBlVG8od3JpdGFibGVTdHJlYW0pOwogICAgfQogICAgZWxzZSBpZiAodHlwZSA9PT0gJ2NsZWFyJykgewogICAgICAgIGNvdW50TWFwLmNsZWFyKCk7CiAgICAgICAgd3JpdGVJVk1hcC5jbGVhcigpOwogICAgICAgIHJlbW90ZURlcml2ZUtleU1hcC5jbGVhcigpOwogICAgICAgIGxhdGVzdFJlbW90ZUtleUlkTWFwLmNsZWFyKCk7CiAgICAgICAgc2VsZkRlcml2ZUtleU1hcC5jbGVhcigpOwogICAgfQp9Owo='; -class SoraE2EE { - constructor() { - // 対応しているかどうかの判断 - // @ts-ignore トライアル段階の API なので無視する - const supportsInsertableStreams = !!RTCRtpSender.prototype.createEncodedStreams; - if (!supportsInsertableStreams) { - throw new Error('E2EE is not supported in this browser.'); - } - this.worker = null; - this.onWorkerDisconnect = null; - } - // worker を起動する - startWorker() { - // ワーカーを起動する - const workerScript = atob(WORKER_SCRIPT); - this.worker = new Worker(URL.createObjectURL(new Blob([workerScript], { type: 'application/javascript' }))); - this.worker.onmessage = (event) => { - const { operation } = event.data; - if (operation === 'disconnect' && typeof this.onWorkerDisconnect === 'function') { - this.onWorkerDisconnect(); - } - }; - } - // worker の掃除をする - clearWorker() { - if (this.worker) { - this.worker.postMessage({ - type: 'clear', - }); - } - } - // worker を終了する - terminateWorker() { - if (this.worker) { - this.worker.terminate(); - } - } - // 初期化処理 - async init() { - const { preKeyBundle } = await window.e2ee.init(); - return preKeyBundle; - } - setupSenderTransform(readableStream, writableStream) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - const message = { - type: 'encrypt', - readableStream: readableStream, - writableStream: writableStream, - }; - this.worker.postMessage(message, [readableStream, writableStream]); - } - setupReceiverTransform(readableStream, writableStream) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - const message = { - type: 'decrypt', - readableStream: readableStream, - writableStream: writableStream, - }; - this.worker.postMessage(message, [readableStream, writableStream]); - } - postRemoteSecretKeyMaterials(result) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - this.worker.postMessage({ - type: 'remoteSecretKeyMaterials', - remoteSecretKeyMaterials: result.remoteSecretKeyMaterials, - }); - } - postRemoveRemoteDeriveKey(connectionId) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - this.worker.postMessage({ - type: 'removeRemoteDeriveKey', - connectionId: connectionId, - }); - } - postSelfSecretKeyMaterial(selfConnectionId, selfKeyId, selfSecretKeyMaterial, waitingTime = 0) { - if (!this.worker) { - throw new Error('Worker is null. Call startWorker in advance.'); - } - this.worker.postMessage({ - type: 'selfSecretKeyMaterial', - selfConnectionId: selfConnectionId, - selfKeyId: selfKeyId, - selfSecretKeyMaterial: selfSecretKeyMaterial, - waitingTime: waitingTime, - }); - } - startSession(connectionId, preKeyBundle) { - const [result, err] = window.e2ee.startSession(connectionId, preKeyBundle.identityKey, preKeyBundle.signedPreKey, preKeyBundle.preKeySignature); - if (err) { - throw err; - } - return result; - } - stopSession(connectionId) { - const [result, err] = window.e2ee.stopSession(connectionId); - if (err) { - throw err; - } - return result; - } - receiveMessage(message) { - const [result, err] = window.e2ee.receiveMessage(message); - if (err) { - throw err; - } - return result; - } - start(selfConnectionId) { - const [result, err] = window.e2ee.start(selfConnectionId); - if (err) { - throw err; - } - return result; - } - addPreKeyBundle(connectionId, preKeyBundle) { - const err = window.e2ee.addPreKeyBundle(connectionId, preKeyBundle.identityKey, preKeyBundle.signedPreKey, preKeyBundle.preKeySignature); - if (err) { - throw err; - } - } - selfFingerprint() { - return window.e2ee.selfFingerprint(); - } - remoteFingerprints() { - return window.e2ee.remoteFingerprints(); - } - static async loadWasm(wasmUrl) { - if (!window.e2ee === undefined) { - console.warn('E2ee wasm is already loaded. Will not be reload.'); - return; - } - WasmExec(); - if (!window.Go) { - throw new Error(`Failed to load module Go. window.Go is ${window.Go}.`); - } - const go = new Go(); - const { instance } = await WebAssembly.instantiateStreaming(fetch(wasmUrl), go.importObject); - go.run(instance); - if (!window.e2ee) { - throw new Error(`Failed to load module e2ee. window.e2ee is ${window.e2ee}.`); - } - } - static version() { - return '2021.1.0'; - } - static wasmVersion() { - return window.e2ee.version(); - } -} - -/** - * @shiguredo/lyra-wasm - * Lyra V2 WebAssembly build - * @version: 2022.2.0 - * @author: Shiguredo Inc. - * @license: Apache-2.0 - **/ - -/** - * Lyra のエンコード形式のバージョン。 - * - * エンコード形式に非互換な変更が入った時点での google/lyra のバージョンが格納されている。 - */ -const LYRA_VERSION = "1.3.0"; -const DEFAULT_SAMPLE_RATE = 16000; -const DEFAULT_BITRATE = 9200; -const DEFAULT_ENABLE_DTX = false; -const DEFAULT_CHANNELS = 1; - -const WEB_WORKER_SCRIPT = "KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgdHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kID8gZGVmaW5lKGZhY3RvcnkpIDoKICBmYWN0b3J5KCk7Cn0pKChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JzsKCiAgdmFyIEx5cmFXYXNtTW9kdWxlID0gKCgpID0+IHsKICAgIHZhciBfc2NyaXB0RGlyID0gKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJyA/IG5ldyAocmVxdWlyZSgndScgKyAncmwnKS5VUkwpKCdmaWxlOicgKyBfX2ZpbGVuYW1lKS5ocmVmIDogdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLmhyZWYgOiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyB8fCBuZXcgVVJMKCdseXJhX3N5bmNfd29ya2VyLmpzJywgZG9jdW1lbnQuYmFzZVVSSSkuaHJlZikpOwogICAgCiAgICByZXR1cm4gKAogIGZ1bmN0aW9uKEx5cmFXYXNtTW9kdWxlKSB7CiAgICBMeXJhV2FzbU1vZHVsZSA9IEx5cmFXYXNtTW9kdWxlIHx8IHt9OwoKICB2YXIgTW9kdWxlPXR5cGVvZiBMeXJhV2FzbU1vZHVsZSE9InVuZGVmaW5lZCI/THlyYVdhc21Nb2R1bGU6e307dmFyIHJlYWR5UHJvbWlzZVJlc29sdmUscmVhZHlQcm9taXNlUmVqZWN0O01vZHVsZVsicmVhZHkiXT1uZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLHJlamVjdCl7cmVhZHlQcm9taXNlUmVzb2x2ZT1yZXNvbHZlO3JlYWR5UHJvbWlzZVJlamVjdD1yZWplY3Q7fSk7dmFyIG1vZHVsZU92ZXJyaWRlcz1PYmplY3QuYXNzaWduKHt9LE1vZHVsZSk7dmFyIHRoaXNQcm9ncmFtPSIuL3RoaXMucHJvZ3JhbSI7dmFyIHF1aXRfPShzdGF0dXMsdG9UaHJvdyk9Pnt0aHJvdyB0b1Rocm93fTt2YXIgRU5WSVJPTk1FTlRfSVNfV0VCPXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiO3ZhciBFTlZJUk9OTUVOVF9JU19XT1JLRVI9dHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiI7dmFyIEVOVklST05NRU5UX0lTX05PREU9dHlwZW9mIHByb2Nlc3M9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucz09Im9iamVjdCImJnR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGU9PSJzdHJpbmciO3ZhciBFTlZJUk9OTUVOVF9JU19QVEhSRUFEPU1vZHVsZVsiRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCJdfHxmYWxzZTt2YXIgc2NyaXB0RGlyZWN0b3J5PSIiO2Z1bmN0aW9uIGxvY2F0ZUZpbGUocGF0aCl7aWYoTW9kdWxlWyJsb2NhdGVGaWxlIl0pe3JldHVybiBNb2R1bGVbImxvY2F0ZUZpbGUiXShwYXRoLHNjcmlwdERpcmVjdG9yeSl9cmV0dXJuIHNjcmlwdERpcmVjdG9yeStwYXRofXZhciByZWFkXyxyZWFkQXN5bmMscmVhZEJpbmFyeTtmdW5jdGlvbiBsb2dFeGNlcHRpb25PbkV4aXQoZSl7aWYoZSBpbnN0YW5jZW9mIEV4aXRTdGF0dXMpcmV0dXJuO2xldCB0b0xvZz1lO2VycigiZXhpdGluZyBkdWUgdG8gZXhjZXB0aW9uOiAiK3RvTG9nKTt9aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSl7aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtzY3JpcHREaXJlY3Rvcnk9cmVxdWlyZSgicGF0aCIpLmRpcm5hbWUoc2NyaXB0RGlyZWN0b3J5KSsiLyI7fWVsc2Uge3NjcmlwdERpcmVjdG9yeT1fX2Rpcm5hbWUrIi8iO312YXIgZnMsbm9kZVBhdGg7aWYodHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iKXtmcz1yZXF1aXJlKCJmcyIpO25vZGVQYXRoPXJlcXVpcmUoInBhdGgiKTt9cmVhZF89KGZpbGVuYW1lLGJpbmFyeSk9PntmaWxlbmFtZT1ub2RlUGF0aFsibm9ybWFsaXplIl0oZmlsZW5hbWUpO3JldHVybiBmcy5yZWFkRmlsZVN5bmMoZmlsZW5hbWUsYmluYXJ5P3VuZGVmaW5lZDoidXRmOCIpfTtyZWFkQmluYXJ5PWZpbGVuYW1lPT57dmFyIHJldD1yZWFkXyhmaWxlbmFtZSx0cnVlKTtpZighcmV0LmJ1ZmZlcil7cmV0PW5ldyBVaW50OEFycmF5KHJldCk7fXJldHVybiByZXR9O3JlYWRBc3luYz0oZmlsZW5hbWUsb25sb2FkLG9uZXJyb3IpPT57ZmlsZW5hbWU9bm9kZVBhdGhbIm5vcm1hbGl6ZSJdKGZpbGVuYW1lKTtmcy5yZWFkRmlsZShmaWxlbmFtZSxmdW5jdGlvbihlcnIsZGF0YSl7aWYoZXJyKW9uZXJyb3IoZXJyKTtlbHNlIG9ubG9hZChkYXRhLmJ1ZmZlcik7fSk7fTtpZihwcm9jZXNzWyJhcmd2Il0ubGVuZ3RoPjEpe3RoaXNQcm9ncmFtPXByb2Nlc3NbImFyZ3YiXVsxXS5yZXBsYWNlKC9cXC9nLCIvIik7fXByb2Nlc3NbImFyZ3YiXS5zbGljZSgyKTtwcm9jZXNzWyJvbiJdKCJ1bmNhdWdodEV4Y2VwdGlvbiIsZnVuY3Rpb24oZXgpe2lmKCEoZXggaW5zdGFuY2VvZiBFeGl0U3RhdHVzKSl7dGhyb3cgZXh9fSk7cHJvY2Vzc1sib24iXSgidW5oYW5kbGVkUmVqZWN0aW9uIixmdW5jdGlvbihyZWFzb24pe3Rocm93IHJlYXNvbn0pO3F1aXRfPShzdGF0dXMsdG9UaHJvdyk9PntpZihrZWVwUnVudGltZUFsaXZlKCkpe3Byb2Nlc3NbImV4aXRDb2RlIl09c3RhdHVzO3Rocm93IHRvVGhyb3d9bG9nRXhjZXB0aW9uT25FeGl0KHRvVGhyb3cpO3Byb2Nlc3NbImV4aXQiXShzdGF0dXMpO307TW9kdWxlWyJpbnNwZWN0Il09ZnVuY3Rpb24oKXtyZXR1cm4gIltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn07bGV0IG5vZGVXb3JrZXJUaHJlYWRzO3RyeXtub2RlV29ya2VyVGhyZWFkcz1yZXF1aXJlKCJ3b3JrZXJfdGhyZWFkcyIpO31jYXRjaChlKXtjb25zb2xlLmVycm9yKCdUaGUgIndvcmtlcl90aHJlYWRzIiBtb2R1bGUgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIG5vZGUuanMgYnVpbGQgLSBwZXJoYXBzIGEgbmV3ZXIgdmVyc2lvbiBpcyBuZWVkZWQ/Jyk7dGhyb3cgZX1nbG9iYWwuV29ya2VyPW5vZGVXb3JrZXJUaHJlYWRzLldvcmtlcjt9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19XRUJ8fEVOVklST05NRU5UX0lTX1dPUktFUil7aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtzY3JpcHREaXJlY3Rvcnk9c2VsZi5sb2NhdGlvbi5ocmVmO31lbHNlIGlmKHR5cGVvZiBkb2N1bWVudCE9InVuZGVmaW5lZCImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQpe3NjcmlwdERpcmVjdG9yeT1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzt9aWYoX3NjcmlwdERpcil7c2NyaXB0RGlyZWN0b3J5PV9zY3JpcHREaXI7fWlmKHNjcmlwdERpcmVjdG9yeS5pbmRleE9mKCJibG9iOiIpIT09MCl7c2NyaXB0RGlyZWN0b3J5PXNjcmlwdERpcmVjdG9yeS5zdWJzdHIoMCxzY3JpcHREaXJlY3RvcnkucmVwbGFjZSgvWz8jXS4qLywiIikubGFzdEluZGV4T2YoIi8iKSsxKTt9ZWxzZSB7c2NyaXB0RGlyZWN0b3J5PSIiO31pZighRU5WSVJPTk1FTlRfSVNfTk9ERSl7cmVhZF89dXJsPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oIkdFVCIsdXJsLGZhbHNlKTt4aHIuc2VuZChudWxsKTtyZXR1cm4geGhyLnJlc3BvbnNlVGV4dH07aWYoRU5WSVJPTk1FTlRfSVNfV09SS0VSKXtyZWFkQmluYXJ5PXVybD0+e3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7eGhyLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3hoci5zZW5kKG51bGwpO3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2UpfTt9cmVhZEFzeW5jPSh1cmwsb25sb2FkLG9uZXJyb3IpPT57dmFyIHhocj1uZXcgWE1MSHR0cFJlcXVlc3Q7eGhyLm9wZW4oIkdFVCIsdXJsLHRydWUpO3hoci5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt4aHIub25sb2FkPSgpPT57aWYoeGhyLnN0YXR1cz09MjAwfHx4aHIuc3RhdHVzPT0wJiZ4aHIucmVzcG9uc2Upe29ubG9hZCh4aHIucmVzcG9uc2UpO3JldHVybn1vbmVycm9yKCk7fTt4aHIub25lcnJvcj1vbmVycm9yO3hoci5zZW5kKG51bGwpO307fX1lbHNlO2lmKEVOVklST05NRU5UX0lTX05PREUpe2lmKHR5cGVvZiBwZXJmb3JtYW5jZT09InVuZGVmaW5lZCIpe2dsb2JhbC5wZXJmb3JtYW5jZT1yZXF1aXJlKCJwZXJmX2hvb2tzIikucGVyZm9ybWFuY2U7fX12YXIgZGVmYXVsdFByaW50PWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7dmFyIGRlZmF1bHRQcmludEVycj1jb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtkZWZhdWx0UHJpbnQ9c3RyPT5mcy53cml0ZVN5bmMoMSxzdHIrIlxuIik7ZGVmYXVsdFByaW50RXJyPXN0cj0+ZnMud3JpdGVTeW5jKDIsc3RyKyJcbiIpO312YXIgb3V0PU1vZHVsZVsicHJpbnQiXXx8ZGVmYXVsdFByaW50O3ZhciBlcnI9TW9kdWxlWyJwcmludEVyciJdfHxkZWZhdWx0UHJpbnRFcnI7T2JqZWN0LmFzc2lnbihNb2R1bGUsbW9kdWxlT3ZlcnJpZGVzKTttb2R1bGVPdmVycmlkZXM9bnVsbDtpZihNb2R1bGVbImFyZ3VtZW50cyJdKU1vZHVsZVsiYXJndW1lbnRzIl07aWYoTW9kdWxlWyJ0aGlzUHJvZ3JhbSJdKXRoaXNQcm9ncmFtPU1vZHVsZVsidGhpc1Byb2dyYW0iXTtpZihNb2R1bGVbInF1aXQiXSlxdWl0Xz1Nb2R1bGVbInF1aXQiXTt2YXIgUE9JTlRFUl9TSVpFPTQ7dmFyIHdhc21CaW5hcnk7aWYoTW9kdWxlWyJ3YXNtQmluYXJ5Il0pd2FzbUJpbmFyeT1Nb2R1bGVbIndhc21CaW5hcnkiXTt2YXIgbm9FeGl0UnVudGltZT1Nb2R1bGVbIm5vRXhpdFJ1bnRpbWUiXXx8dHJ1ZTtpZih0eXBlb2YgV2ViQXNzZW1ibHkhPSJvYmplY3QiKXthYm9ydCgibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO312YXIgd2FzbU1lbW9yeTt2YXIgd2FzbU1vZHVsZTt2YXIgQUJPUlQ9ZmFsc2U7dmFyIEVYSVRTVEFUVVM7ZnVuY3Rpb24gYXNzZXJ0KGNvbmRpdGlvbix0ZXh0KXtpZighY29uZGl0aW9uKXthYm9ydCh0ZXh0KTt9fXZhciBVVEY4RGVjb2Rlcj10eXBlb2YgVGV4dERlY29kZXIhPSJ1bmRlZmluZWQiP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnVuZGVmaW5lZDtmdW5jdGlvbiBVVEY4QXJyYXlUb1N0cmluZyhoZWFwT3JBcnJheSxpZHgsbWF4Qnl0ZXNUb1JlYWQpe3ZhciBlbmRJZHg9aWR4K21heEJ5dGVzVG9SZWFkO3ZhciBlbmRQdHI9aWR4O3doaWxlKGhlYXBPckFycmF5W2VuZFB0cl0mJiEoZW5kUHRyPj1lbmRJZHgpKSsrZW5kUHRyO2lmKGVuZFB0ci1pZHg+MTYmJmhlYXBPckFycmF5LmJ1ZmZlciYmVVRGOERlY29kZXIpe3JldHVybiBVVEY4RGVjb2Rlci5kZWNvZGUoaGVhcE9yQXJyYXkuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/aGVhcE9yQXJyYXkuc2xpY2UoaWR4LGVuZFB0cik6aGVhcE9yQXJyYXkuc3ViYXJyYXkoaWR4LGVuZFB0cikpfXZhciBzdHI9IiI7d2hpbGUoaWR4PGVuZFB0cil7dmFyIHUwPWhlYXBPckFycmF5W2lkeCsrXTtpZighKHUwJjEyOCkpe3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSh1MCk7Y29udGludWV9dmFyIHUxPWhlYXBPckFycmF5W2lkeCsrXSY2MztpZigodTAmMjI0KT09MTkyKXtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoKHUwJjMxKTw8Nnx1MSk7Y29udGludWV9dmFyIHUyPWhlYXBPckFycmF5W2lkeCsrXSY2MztpZigodTAmMjQwKT09MjI0KXt1MD0odTAmMTUpPDwxMnx1MTw8Nnx1Mjt9ZWxzZSB7dTA9KHUwJjcpPDwxOHx1MTw8MTJ8dTI8PDZ8aGVhcE9yQXJyYXlbaWR4KytdJjYzO31pZih1MDw2NTUzNil7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHUwKTt9ZWxzZSB7dmFyIGNoPXUwLTY1NTM2O3N0cis9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjaD4+MTAsNTYzMjB8Y2gmMTAyMyk7fX1yZXR1cm4gc3RyfWZ1bmN0aW9uIFVURjhUb1N0cmluZyhwdHIsbWF4Qnl0ZXNUb1JlYWQpe3JldHVybiBwdHI/VVRGOEFycmF5VG9TdHJpbmcoSEVBUFU4LHB0cixtYXhCeXRlc1RvUmVhZCk6IiJ9ZnVuY3Rpb24gc3RyaW5nVG9VVEY4QXJyYXkoc3RyLGhlYXAsb3V0SWR4LG1heEJ5dGVzVG9Xcml0ZSl7aWYoIShtYXhCeXRlc1RvV3JpdGU+MCkpcmV0dXJuIDA7dmFyIHN0YXJ0SWR4PW91dElkeDt2YXIgZW5kSWR4PW91dElkeCttYXhCeXRlc1RvV3JpdGUtMTtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXt2YXIgdT1zdHIuY2hhckNvZGVBdChpKTtpZih1Pj01NTI5NiYmdTw9NTczNDMpe3ZhciB1MT1zdHIuY2hhckNvZGVBdCgrK2kpO3U9NjU1MzYrKCh1JjEwMjMpPDwxMCl8dTEmMTAyMzt9aWYodTw9MTI3KXtpZihvdXRJZHg+PWVuZElkeClicmVhaztoZWFwW291dElkeCsrXT11O31lbHNlIGlmKHU8PTIwNDcpe2lmKG91dElkeCsxPj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109MTkyfHU+PjY7aGVhcFtvdXRJZHgrK109MTI4fHUmNjM7fWVsc2UgaWYodTw9NjU1MzUpe2lmKG91dElkeCsyPj1lbmRJZHgpYnJlYWs7aGVhcFtvdXRJZHgrK109MjI0fHU+PjEyO2hlYXBbb3V0SWR4KytdPTEyOHx1Pj42JjYzO2hlYXBbb3V0SWR4KytdPTEyOHx1JjYzO31lbHNlIHtpZihvdXRJZHgrMz49ZW5kSWR4KWJyZWFrO2hlYXBbb3V0SWR4KytdPTI0MHx1Pj4xODtoZWFwW291dElkeCsrXT0xMjh8dT4+MTImNjM7aGVhcFtvdXRJZHgrK109MTI4fHU+PjYmNjM7aGVhcFtvdXRJZHgrK109MTI4fHUmNjM7fX1oZWFwW291dElkeF09MDtyZXR1cm4gb3V0SWR4LXN0YXJ0SWR4fWZ1bmN0aW9uIHN0cmluZ1RvVVRGOChzdHIsb3V0UHRyLG1heEJ5dGVzVG9Xcml0ZSl7cmV0dXJuIHN0cmluZ1RvVVRGOEFycmF5KHN0cixIRUFQVTgsb3V0UHRyLG1heEJ5dGVzVG9Xcml0ZSl9ZnVuY3Rpb24gbGVuZ3RoQnl0ZXNVVEY4KHN0cil7dmFyIGxlbj0wO2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDsrK2kpe3ZhciBjPXN0ci5jaGFyQ29kZUF0KGkpO2lmKGM8PTEyNyl7bGVuKys7fWVsc2UgaWYoYzw9MjA0Nyl7bGVuKz0yO31lbHNlIGlmKGM+PTU1Mjk2JiZjPD01NzM0Myl7bGVuKz00OysraTt9ZWxzZSB7bGVuKz0zO319cmV0dXJuIGxlbn12YXIgYnVmZmVyLEhFQVA4LEhFQVBVOCxIRUFQMTYsSEVBUFUxNixIRUFQMzIsSEVBUFUzMixIRUFQRjMyLEhFQVBGNjQ7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7YnVmZmVyPU1vZHVsZVsiYnVmZmVyIl07fWZ1bmN0aW9uIHVwZGF0ZUdsb2JhbEJ1ZmZlckFuZFZpZXdzKGJ1Zil7YnVmZmVyPWJ1ZjtNb2R1bGVbIkhFQVA4Il09SEVBUDg9bmV3IEludDhBcnJheShidWYpO01vZHVsZVsiSEVBUDE2Il09SEVBUDE2PW5ldyBJbnQxNkFycmF5KGJ1Zik7TW9kdWxlWyJIRUFQMzIiXT1IRUFQMzI9bmV3IEludDMyQXJyYXkoYnVmKTtNb2R1bGVbIkhFQVBVOCJdPUhFQVBVOD1uZXcgVWludDhBcnJheShidWYpO01vZHVsZVsiSEVBUFUxNiJdPUhFQVBVMTY9bmV3IFVpbnQxNkFycmF5KGJ1Zik7TW9kdWxlWyJIRUFQVTMyIl09SEVBUFUzMj1uZXcgVWludDMyQXJyYXkoYnVmKTtNb2R1bGVbIkhFQVBGMzIiXT1IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoYnVmKTtNb2R1bGVbIkhFQVBGNjQiXT1IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoYnVmKTt9dmFyIElOSVRJQUxfTUVNT1JZPU1vZHVsZVsiSU5JVElBTF9NRU1PUlkiXXx8NjcxMDg4NjQ7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7d2FzbU1lbW9yeT1Nb2R1bGVbIndhc21NZW1vcnkiXTtidWZmZXI9TW9kdWxlWyJidWZmZXIiXTt9ZWxzZSB7aWYoTW9kdWxlWyJ3YXNtTWVtb3J5Il0pe3dhc21NZW1vcnk9TW9kdWxlWyJ3YXNtTWVtb3J5Il07fWVsc2Uge3dhc21NZW1vcnk9bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7ImluaXRpYWwiOklOSVRJQUxfTUVNT1JZLzY1NTM2LCJtYXhpbXVtIjpJTklUSUFMX01FTU9SWS82NTUzNiwic2hhcmVkIjp0cnVlfSk7aWYoISh3YXNtTWVtb3J5LmJ1ZmZlciBpbnN0YW5jZW9mIFNoYXJlZEFycmF5QnVmZmVyKSl7ZXJyKCJyZXF1ZXN0ZWQgYSBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IGJ1dCB0aGUgcmV0dXJuZWQgYnVmZmVyIGlzIG5vdCBhIFNoYXJlZEFycmF5QnVmZmVyLCBpbmRpY2F0aW5nIHRoYXQgd2hpbGUgdGhlIGJyb3dzZXIgaGFzIFNoYXJlZEFycmF5QnVmZmVyIGl0IGRvZXMgbm90IGhhdmUgV2ViQXNzZW1ibHkgdGhyZWFkcyBzdXBwb3J0IC0geW91IG1heSBuZWVkIHRvIHNldCBhIGZsYWciKTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtlcnIoIihvbiBub2RlIHlvdSBtYXkgbmVlZDogLS1leHBlcmltZW50YWwtd2FzbS10aHJlYWRzIC0tZXhwZXJpbWVudGFsLXdhc20tYnVsay1tZW1vcnkgYW5kL29yIHJlY2VudCB2ZXJzaW9uKSIpO310aHJvdyBFcnJvcigiYmFkIG1lbW9yeSIpfX19aWYod2FzbU1lbW9yeSl7YnVmZmVyPXdhc21NZW1vcnkuYnVmZmVyO31JTklUSUFMX01FTU9SWT1idWZmZXIuYnl0ZUxlbmd0aDt1cGRhdGVHbG9iYWxCdWZmZXJBbmRWaWV3cyhidWZmZXIpO3ZhciB3YXNtVGFibGU7dmFyIF9fQVRQUkVSVU5fXz1bXTt2YXIgX19BVElOSVRfXz1bXTt2YXIgX19BVFBPU1RSVU5fXz1bXTtmdW5jdGlvbiBrZWVwUnVudGltZUFsaXZlKCl7cmV0dXJuIG5vRXhpdFJ1bnRpbWV9ZnVuY3Rpb24gcHJlUnVuKCl7aWYoTW9kdWxlWyJwcmVSdW4iXSl7aWYodHlwZW9mIE1vZHVsZVsicHJlUnVuIl09PSJmdW5jdGlvbiIpTW9kdWxlWyJwcmVSdW4iXT1bTW9kdWxlWyJwcmVSdW4iXV07d2hpbGUoTW9kdWxlWyJwcmVSdW4iXS5sZW5ndGgpe2FkZE9uUHJlUnVuKE1vZHVsZVsicHJlUnVuIl0uc2hpZnQoKSk7fX1jYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pO31mdW5jdGlvbiBpbml0UnVudGltZSgpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuO2lmKCFNb2R1bGVbIm5vRlNJbml0Il0mJiFGUy5pbml0LmluaXRpYWxpemVkKUZTLmluaXQoKTtGUy5pZ25vcmVQZXJtaXNzaW9ucz1mYWxzZTtjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUSU5JVF9fKTt9ZnVuY3Rpb24gcG9zdFJ1bigpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuO2lmKE1vZHVsZVsicG9zdFJ1biJdKXtpZih0eXBlb2YgTW9kdWxlWyJwb3N0UnVuIl09PSJmdW5jdGlvbiIpTW9kdWxlWyJwb3N0UnVuIl09W01vZHVsZVsicG9zdFJ1biJdXTt3aGlsZShNb2R1bGVbInBvc3RSdW4iXS5sZW5ndGgpe2FkZE9uUG9zdFJ1bihNb2R1bGVbInBvc3RSdW4iXS5zaGlmdCgpKTt9fWNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQT1NUUlVOX18pO31mdW5jdGlvbiBhZGRPblByZVJ1bihjYil7X19BVFBSRVJVTl9fLnVuc2hpZnQoY2IpO31mdW5jdGlvbiBhZGRPbkluaXQoY2Ipe19fQVRJTklUX18udW5zaGlmdChjYik7fWZ1bmN0aW9uIGFkZE9uUG9zdFJ1bihjYil7X19BVFBPU1RSVU5fXy51bnNoaWZ0KGNiKTt9dmFyIHJ1bkRlcGVuZGVuY2llcz0wO3ZhciBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9bnVsbDtmdW5jdGlvbiBnZXRVbmlxdWVSdW5EZXBlbmRlbmN5KGlkKXtyZXR1cm4gaWR9ZnVuY3Rpb24gYWRkUnVuRGVwZW5kZW5jeShpZCl7cnVuRGVwZW5kZW5jaWVzKys7aWYoTW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0pe01vZHVsZVsibW9uaXRvclJ1bkRlcGVuZGVuY2llcyJdKHJ1bkRlcGVuZGVuY2llcyk7fX1mdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKXtydW5EZXBlbmRlbmNpZXMtLTtpZihNb2R1bGVbIm1vbml0b3JSdW5EZXBlbmRlbmNpZXMiXSl7TW9kdWxlWyJtb25pdG9yUnVuRGVwZW5kZW5jaWVzIl0ocnVuRGVwZW5kZW5jaWVzKTt9aWYocnVuRGVwZW5kZW5jaWVzPT0wKXtpZihkZXBlbmRlbmNpZXNGdWxmaWxsZWQpe3ZhciBjYWxsYmFjaz1kZXBlbmRlbmNpZXNGdWxmaWxsZWQ7ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPW51bGw7Y2FsbGJhY2soKTt9fX1mdW5jdGlvbiBhYm9ydCh3aGF0KXtpZihNb2R1bGVbIm9uQWJvcnQiXSl7TW9kdWxlWyJvbkFib3J0Il0od2hhdCk7fXdoYXQ9IkFib3J0ZWQoIit3aGF0KyIpIjtlcnIod2hhdCk7QUJPUlQ9dHJ1ZTtFWElUU1RBVFVTPTE7d2hhdCs9Ii4gQnVpbGQgd2l0aCAtc0FTU0VSVElPTlMgZm9yIG1vcmUgaW5mby4iO3ZhciBlPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3Iod2hhdCk7cmVhZHlQcm9taXNlUmVqZWN0KGUpO3Rocm93IGV9dmFyIGRhdGFVUklQcmVmaXg9ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIGlzRGF0YVVSSShmaWxlbmFtZSl7cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoZGF0YVVSSVByZWZpeCl9ZnVuY3Rpb24gaXNGaWxlVVJJKGZpbGVuYW1lKXtyZXR1cm4gZmlsZW5hbWUuc3RhcnRzV2l0aCgiZmlsZTovLyIpfXZhciB3YXNtQmluYXJ5RmlsZTtpZihNb2R1bGVbImxvY2F0ZUZpbGUiXSl7d2FzbUJpbmFyeUZpbGU9Imx5cmEud2FzbSI7aWYoIWlzRGF0YVVSSSh3YXNtQmluYXJ5RmlsZSkpe3dhc21CaW5hcnlGaWxlPWxvY2F0ZUZpbGUod2FzbUJpbmFyeUZpbGUpO319ZWxzZSB7d2FzbUJpbmFyeUZpbGU9bmV3IFVSTCgibHlyYS53YXNtIiwodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbG9jYXRpb24gPT09ICd1bmRlZmluZWQnID8gbmV3IChyZXF1aXJlKCd1JyArICdybCcpLlVSTCkoJ2ZpbGU6JyArIF9fZmlsZW5hbWUpLmhyZWYgOiB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gbG9jYXRpb24uaHJlZiA6IChkb2N1bWVudC5jdXJyZW50U2NyaXB0ICYmIGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIHx8IG5ldyBVUkwoJ2x5cmFfc3luY193b3JrZXIuanMnLCBkb2N1bWVudC5iYXNlVVJJKS5ocmVmKSkpLnRvU3RyaW5nKCk7fWZ1bmN0aW9uIGdldEJpbmFyeShmaWxlKXt0cnl7aWYoZmlsZT09d2FzbUJpbmFyeUZpbGUmJndhc21CaW5hcnkpe3JldHVybiBuZXcgVWludDhBcnJheSh3YXNtQmluYXJ5KX1pZihyZWFkQmluYXJ5KXtyZXR1cm4gcmVhZEJpbmFyeShmaWxlKX10aHJvdyAiYm90aCBhc3luYyBhbmQgc3luYyBmZXRjaGluZyBvZiB0aGUgd2FzbSBmYWlsZWQifWNhdGNoKGVycil7YWJvcnQoZXJyKTt9fWZ1bmN0aW9uIGdldEJpbmFyeVByb21pc2UoKXtpZighd2FzbUJpbmFyeSYmKEVOVklST05NRU5UX0lTX1dFQnx8RU5WSVJPTk1FTlRfSVNfV09SS0VSKSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhaXNGaWxlVVJJKHdhc21CaW5hcnlGaWxlKSl7cmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7aWYoIXJlc3BvbnNlWyJvayJdKXt0aHJvdyAiZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIit3YXNtQmluYXJ5RmlsZSsiJyJ9cmV0dXJuIHJlc3BvbnNlWyJhcnJheUJ1ZmZlciJdKCl9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBnZXRCaW5hcnkod2FzbUJpbmFyeUZpbGUpfSl9ZWxzZSB7aWYocmVhZEFzeW5jKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSxyZWplY3Qpe3JlYWRBc3luYyh3YXNtQmluYXJ5RmlsZSxmdW5jdGlvbihyZXNwb25zZSl7cmVzb2x2ZShuZXcgVWludDhBcnJheShyZXNwb25zZSkpO30scmVqZWN0KTt9KX19fXJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGdldEJpbmFyeSh3YXNtQmluYXJ5RmlsZSl9KX1mdW5jdGlvbiBjcmVhdGVXYXNtKCl7dmFyIGluZm89eyJlbnYiOmFzbUxpYnJhcnlBcmcsIndhc2lfc25hcHNob3RfcHJldmlldzEiOmFzbUxpYnJhcnlBcmd9O2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShpbnN0YW5jZSxtb2R1bGUpe3ZhciBleHBvcnRzPWluc3RhbmNlLmV4cG9ydHM7TW9kdWxlWyJhc20iXT1leHBvcnRzO3JlZ2lzdGVyVExTSW5pdChNb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90bHNfaW5pdCJdKTt3YXNtVGFibGU9TW9kdWxlWyJhc20iXVsiX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZSJdO2FkZE9uSW5pdChNb2R1bGVbImFzbSJdWyJfX3dhc21fY2FsbF9jdG9ycyJdKTt3YXNtTW9kdWxlPW1vZHVsZTtpZighRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7cmVtb3ZlUnVuRGVwZW5kZW5jeSgpO319aWYoIUVOVklST05NRU5UX0lTX1BUSFJFQUQpe2FkZFJ1bkRlcGVuZGVuY3koKTt9ZnVuY3Rpb24gcmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQocmVzdWx0KXtyZWNlaXZlSW5zdGFuY2UocmVzdWx0WyJpbnN0YW5jZSJdLHJlc3VsdFsibW9kdWxlIl0pO31mdW5jdGlvbiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVyKXtyZXR1cm4gZ2V0QmluYXJ5UHJvbWlzZSgpLnRoZW4oZnVuY3Rpb24oYmluYXJ5KXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYmluYXJ5LGluZm8pfSkudGhlbihmdW5jdGlvbihpbnN0YW5jZSl7cmV0dXJuIGluc3RhbmNlfSkudGhlbihyZWNlaXZlcixmdW5jdGlvbihyZWFzb24pe2VycigiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIityZWFzb24pO2Fib3J0KHJlYXNvbik7fSl9ZnVuY3Rpb24gaW5zdGFudGlhdGVBc3luYygpe2lmKCF3YXNtQmluYXJ5JiZ0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PSJmdW5jdGlvbiImJiFpc0RhdGFVUkkod2FzbUJpbmFyeUZpbGUpJiYhaXNGaWxlVVJJKHdhc21CaW5hcnlGaWxlKSYmIUVOVklST05NRU5UX0lTX05PREUmJnR5cGVvZiBmZXRjaD09ImZ1bmN0aW9uIil7cmV0dXJuIGZldGNoKHdhc21CaW5hcnlGaWxlLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihyZXNwb25zZSl7dmFyIHJlc3VsdD1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhyZXNwb25zZSxpbmZvKTtyZXR1cm4gcmVzdWx0LnRoZW4ocmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQsZnVuY3Rpb24ocmVhc29uKXtlcnIoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK3JlYXNvbik7ZXJyKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpO3JldHVybiBpbnN0YW50aWF0ZUFycmF5QnVmZmVyKHJlY2VpdmVJbnN0YW50aWF0aW9uUmVzdWx0KX0pfSl9ZWxzZSB7cmV0dXJuIGluc3RhbnRpYXRlQXJyYXlCdWZmZXIocmVjZWl2ZUluc3RhbnRpYXRpb25SZXN1bHQpfX1pZihNb2R1bGVbImluc3RhbnRpYXRlV2FzbSJdKXt0cnl7dmFyIGV4cG9ydHM9TW9kdWxlWyJpbnN0YW50aWF0ZVdhc20iXShpbmZvLHJlY2VpdmVJbnN0YW5jZSk7cmV0dXJuIGV4cG9ydHN9Y2F0Y2goZSl7ZXJyKCJNb2R1bGUuaW5zdGFudGlhdGVXYXNtIGNhbGxiYWNrIGZhaWxlZCB3aXRoIGVycm9yOiAiK2UpO3JlYWR5UHJvbWlzZVJlamVjdChlKTt9fWluc3RhbnRpYXRlQXN5bmMoKS5jYXRjaChyZWFkeVByb21pc2VSZWplY3QpO3JldHVybiB7fX12YXIgdGVtcERvdWJsZTt2YXIgdGVtcEk2NDt2YXIgQVNNX0NPTlNUUz17MjA5NjAwOigpPT57cmV0dXJuIHR5cGVvZiB3YXNtT2Zmc2V0Q29udmVydGVyIT09InVuZGVmaW5lZCJ9fTtmdW5jdGlvbiBIYXZlT2Zmc2V0Q29udmVydGVyKCl7cmV0dXJuIHR5cGVvZiB3YXNtT2Zmc2V0Q29udmVydGVyIT09InVuZGVmaW5lZCJ9ZnVuY3Rpb24gRXhpdFN0YXR1cyhzdGF0dXMpe3RoaXMubmFtZT0iRXhpdFN0YXR1cyI7dGhpcy5tZXNzYWdlPSJQcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBleGl0KCIrc3RhdHVzKyIpIjt0aGlzLnN0YXR1cz1zdGF0dXM7fWZ1bmN0aW9uIGtpbGxUaHJlYWQocHRocmVhZF9wdHIpe3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1twdGhyZWFkX3B0cl07ZGVsZXRlIFBUaHJlYWQucHRocmVhZHNbcHRocmVhZF9wdHJdO3dvcmtlci50ZXJtaW5hdGUoKTtfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YShwdGhyZWFkX3B0cik7UFRocmVhZC5ydW5uaW5nV29ya2Vycy5zcGxpY2UoUFRocmVhZC5ydW5uaW5nV29ya2Vycy5pbmRleE9mKHdvcmtlciksMSk7d29ya2VyLnB0aHJlYWRfcHRyPTA7fWZ1bmN0aW9uIGNhbmNlbFRocmVhZChwdGhyZWFkX3B0cil7dmFyIHdvcmtlcj1QVGhyZWFkLnB0aHJlYWRzW3B0aHJlYWRfcHRyXTt3b3JrZXIucG9zdE1lc3NhZ2UoeyJjbWQiOiJjYW5jZWwifSk7fWZ1bmN0aW9uIGNsZWFudXBUaHJlYWQocHRocmVhZF9wdHIpe3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1twdGhyZWFkX3B0cl07YXNzZXJ0KHdvcmtlcik7UFRocmVhZC5yZXR1cm5Xb3JrZXJUb1Bvb2wod29ya2VyKTt9ZnVuY3Rpb24gemVyb01lbW9yeShhZGRyZXNzLHNpemUpe0hFQVBVOC5maWxsKDAsYWRkcmVzcyxhZGRyZXNzK3NpemUpO3JldHVybiBhZGRyZXNzfWZ1bmN0aW9uIHNwYXduVGhyZWFkKHRocmVhZFBhcmFtcyl7dmFyIHdvcmtlcj1QVGhyZWFkLmdldE5ld1dvcmtlcigpO2lmKCF3b3JrZXIpe3JldHVybiA2fVBUaHJlYWQucnVubmluZ1dvcmtlcnMucHVzaCh3b3JrZXIpO1BUaHJlYWQucHRocmVhZHNbdGhyZWFkUGFyYW1zLnB0aHJlYWRfcHRyXT13b3JrZXI7d29ya2VyLnB0aHJlYWRfcHRyPXRocmVhZFBhcmFtcy5wdGhyZWFkX3B0cjt2YXIgbXNnPXsiY21kIjoicnVuIiwic3RhcnRfcm91dGluZSI6dGhyZWFkUGFyYW1zLnN0YXJ0Um91dGluZSwiYXJnIjp0aHJlYWRQYXJhbXMuYXJnLCJwdGhyZWFkX3B0ciI6dGhyZWFkUGFyYW1zLnB0aHJlYWRfcHRyfTt3b3JrZXIucnVuUHRocmVhZD0oKT0+e21zZy50aW1lPXBlcmZvcm1hbmNlLm5vdygpO3dvcmtlci5wb3N0TWVzc2FnZShtc2csdGhyZWFkUGFyYW1zLnRyYW5zZmVyTGlzdCk7fTtpZih3b3JrZXIubG9hZGVkKXt3b3JrZXIucnVuUHRocmVhZCgpO2RlbGV0ZSB3b3JrZXIucnVuUHRocmVhZDt9cmV0dXJuIDB9dmFyIFBBVEg9e2lzQWJzOnBhdGg9PnBhdGguY2hhckF0KDApPT09Ii8iLHNwbGl0UGF0aDpmaWxlbmFtZT0+e3ZhciBzcGxpdFBhdGhSZT0vXihcLz98KShbXHNcU10qPykoKD86XC57MSwyfXxbXlwvXSs/fCkoXC5bXi5cL10qfCkpKD86W1wvXSopJC87cmV0dXJuIHNwbGl0UGF0aFJlLmV4ZWMoZmlsZW5hbWUpLnNsaWNlKDEpfSxub3JtYWxpemVBcnJheToocGFydHMsYWxsb3dBYm92ZVJvb3QpPT57dmFyIHVwPTA7Zm9yKHZhciBpPXBhcnRzLmxlbmd0aC0xO2k+PTA7aS0tKXt2YXIgbGFzdD1wYXJ0c1tpXTtpZihsYXN0PT09Ii4iKXtwYXJ0cy5zcGxpY2UoaSwxKTt9ZWxzZSBpZihsYXN0PT09Ii4uIil7cGFydHMuc3BsaWNlKGksMSk7dXArKzt9ZWxzZSBpZih1cCl7cGFydHMuc3BsaWNlKGksMSk7dXAtLTt9fWlmKGFsbG93QWJvdmVSb290KXtmb3IoO3VwO3VwLS0pe3BhcnRzLnVuc2hpZnQoIi4uIik7fX1yZXR1cm4gcGFydHN9LG5vcm1hbGl6ZTpwYXRoPT57dmFyIGlzQWJzb2x1dGU9UEFUSC5pc0FicyhwYXRoKSx0cmFpbGluZ1NsYXNoPXBhdGguc3Vic3RyKC0xKT09PSIvIjtwYXRoPVBBVEgubm9ybWFsaXplQXJyYXkocGF0aC5zcGxpdCgiLyIpLmZpbHRlcihwPT4hIXApLCFpc0Fic29sdXRlKS5qb2luKCIvIik7aWYoIXBhdGgmJiFpc0Fic29sdXRlKXtwYXRoPSIuIjt9aWYocGF0aCYmdHJhaWxpbmdTbGFzaCl7cGF0aCs9Ii8iO31yZXR1cm4gKGlzQWJzb2x1dGU/Ii8iOiIiKStwYXRofSxkaXJuYW1lOnBhdGg9Pnt2YXIgcmVzdWx0PVBBVEguc3BsaXRQYXRoKHBhdGgpLHJvb3Q9cmVzdWx0WzBdLGRpcj1yZXN1bHRbMV07aWYoIXJvb3QmJiFkaXIpe3JldHVybiAiLiJ9aWYoZGlyKXtkaXI9ZGlyLnN1YnN0cigwLGRpci5sZW5ndGgtMSk7fXJldHVybiByb290K2Rpcn0sYmFzZW5hbWU6cGF0aD0+e2lmKHBhdGg9PT0iLyIpcmV0dXJuICIvIjtwYXRoPVBBVEgubm9ybWFsaXplKHBhdGgpO3BhdGg9cGF0aC5yZXBsYWNlKC9cLyQvLCIiKTt2YXIgbGFzdFNsYXNoPXBhdGgubGFzdEluZGV4T2YoIi8iKTtpZihsYXN0U2xhc2g9PT0tMSlyZXR1cm4gcGF0aDtyZXR1cm4gcGF0aC5zdWJzdHIobGFzdFNsYXNoKzEpfSxqb2luOmZ1bmN0aW9uKCl7dmFyIHBhdGhzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIFBBVEgubm9ybWFsaXplKHBhdGhzLmpvaW4oIi8iKSl9LGpvaW4yOihsLHIpPT57cmV0dXJuIFBBVEgubm9ybWFsaXplKGwrIi8iK3IpfX07ZnVuY3Rpb24gZ2V0UmFuZG9tRGV2aWNlKCl7aWYodHlwZW9mIGNyeXB0bz09Im9iamVjdCImJnR5cGVvZiBjcnlwdG9bImdldFJhbmRvbVZhbHVlcyJdPT0iZnVuY3Rpb24iKXt2YXIgcmFuZG9tQnVmZmVyPW5ldyBVaW50OEFycmF5KDEpO3JldHVybiAoKT0+e2NyeXB0by5nZXRSYW5kb21WYWx1ZXMocmFuZG9tQnVmZmVyKTtyZXR1cm4gcmFuZG9tQnVmZmVyWzBdfX1lbHNlIGlmKEVOVklST05NRU5UX0lTX05PREUpe3RyeXt2YXIgY3J5cHRvX21vZHVsZT1yZXF1aXJlKCJjcnlwdG8iKTtyZXR1cm4gKCk9PmNyeXB0b19tb2R1bGVbInJhbmRvbUJ5dGVzIl0oMSlbMF19Y2F0Y2goZSl7fX1yZXR1cm4gKCk9PmFib3J0KCJyYW5kb21EZXZpY2UiKX12YXIgUEFUSF9GUz17cmVzb2x2ZTpmdW5jdGlvbigpe3ZhciByZXNvbHZlZFBhdGg9IiIscmVzb2x2ZWRBYnNvbHV0ZT1mYWxzZTtmb3IodmFyIGk9YXJndW1lbnRzLmxlbmd0aC0xO2k+PS0xJiYhcmVzb2x2ZWRBYnNvbHV0ZTtpLS0pe3ZhciBwYXRoPWk+PTA/YXJndW1lbnRzW2ldOkZTLmN3ZCgpO2lmKHR5cGVvZiBwYXRoIT0ic3RyaW5nIil7dGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKX1lbHNlIGlmKCFwYXRoKXtyZXR1cm4gIiJ9cmVzb2x2ZWRQYXRoPXBhdGgrIi8iK3Jlc29sdmVkUGF0aDtyZXNvbHZlZEFic29sdXRlPVBBVEguaXNBYnMocGF0aCk7fXJlc29sdmVkUGF0aD1QQVRILm5vcm1hbGl6ZUFycmF5KHJlc29sdmVkUGF0aC5zcGxpdCgiLyIpLmZpbHRlcihwPT4hIXApLCFyZXNvbHZlZEFic29sdXRlKS5qb2luKCIvIik7cmV0dXJuIChyZXNvbHZlZEFic29sdXRlPyIvIjoiIikrcmVzb2x2ZWRQYXRofHwiLiJ9LHJlbGF0aXZlOihmcm9tLHRvKT0+e2Zyb209UEFUSF9GUy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTt0bz1QQVRIX0ZTLnJlc29sdmUodG8pLnN1YnN0cigxKTtmdW5jdGlvbiB0cmltKGFycil7dmFyIHN0YXJ0PTA7Zm9yKDtzdGFydDxhcnIubGVuZ3RoO3N0YXJ0Kyspe2lmKGFycltzdGFydF0hPT0iIilicmVha312YXIgZW5kPWFyci5sZW5ndGgtMTtmb3IoO2VuZD49MDtlbmQtLSl7aWYoYXJyW2VuZF0hPT0iIilicmVha31pZihzdGFydD5lbmQpcmV0dXJuIFtdO3JldHVybiBhcnIuc2xpY2Uoc3RhcnQsZW5kLXN0YXJ0KzEpfXZhciBmcm9tUGFydHM9dHJpbShmcm9tLnNwbGl0KCIvIikpO3ZhciB0b1BhcnRzPXRyaW0odG8uc3BsaXQoIi8iKSk7dmFyIGxlbmd0aD1NYXRoLm1pbihmcm9tUGFydHMubGVuZ3RoLHRvUGFydHMubGVuZ3RoKTt2YXIgc2FtZVBhcnRzTGVuZ3RoPWxlbmd0aDtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe2lmKGZyb21QYXJ0c1tpXSE9PXRvUGFydHNbaV0pe3NhbWVQYXJ0c0xlbmd0aD1pO2JyZWFrfX12YXIgb3V0cHV0UGFydHM9W107Zm9yKHZhciBpPXNhbWVQYXJ0c0xlbmd0aDtpPGZyb21QYXJ0cy5sZW5ndGg7aSsrKXtvdXRwdXRQYXJ0cy5wdXNoKCIuLiIpO31vdXRwdXRQYXJ0cz1vdXRwdXRQYXJ0cy5jb25jYXQodG9QYXJ0cy5zbGljZShzYW1lUGFydHNMZW5ndGgpKTtyZXR1cm4gb3V0cHV0UGFydHMuam9pbigiLyIpfX07ZnVuY3Rpb24gaW50QXJyYXlGcm9tU3RyaW5nKHN0cmluZ3ksZG9udEFkZE51bGwsbGVuZ3RoKXt2YXIgbGVuPWxlbmd0aD4wP2xlbmd0aDpsZW5ndGhCeXRlc1VURjgoc3RyaW5neSkrMTt2YXIgdThhcnJheT1uZXcgQXJyYXkobGVuKTt2YXIgbnVtQnl0ZXNXcml0dGVuPXN0cmluZ1RvVVRGOEFycmF5KHN0cmluZ3ksdThhcnJheSwwLHU4YXJyYXkubGVuZ3RoKTtpZihkb250QWRkTnVsbCl1OGFycmF5Lmxlbmd0aD1udW1CeXRlc1dyaXR0ZW47cmV0dXJuIHU4YXJyYXl9dmFyIFRUWT17dHR5czpbXSxpbml0OmZ1bmN0aW9uKCl7fSxzaHV0ZG93bjpmdW5jdGlvbigpe30scmVnaXN0ZXI6ZnVuY3Rpb24oZGV2LG9wcyl7VFRZLnR0eXNbZGV2XT17aW5wdXQ6W10sb3V0cHV0OltdLG9wczpvcHN9O0ZTLnJlZ2lzdGVyRGV2aWNlKGRldixUVFkuc3RyZWFtX29wcyk7fSxzdHJlYW1fb3BzOntvcGVuOmZ1bmN0aW9uKHN0cmVhbSl7dmFyIHR0eT1UVFkudHR5c1tzdHJlYW0ubm9kZS5yZGV2XTtpZighdHR5KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myl9c3RyZWFtLnR0eT10dHk7c3RyZWFtLnNlZWthYmxlPWZhbHNlO30sY2xvc2U6ZnVuY3Rpb24oc3RyZWFtKXtzdHJlYW0udHR5Lm9wcy5mc3luYyhzdHJlYW0udHR5KTt9LGZzeW5jOmZ1bmN0aW9uKHN0cmVhbSl7c3RyZWFtLnR0eS5vcHMuZnN5bmMoc3RyZWFtLnR0eSk7fSxyZWFkOmZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3Mpe2lmKCFzdHJlYW0udHR5fHwhc3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYwKX12YXIgYnl0ZXNSZWFkPTA7Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt2YXIgcmVzdWx0O3RyeXtyZXN1bHQ9c3RyZWFtLnR0eS5vcHMuZ2V0X2NoYXIoc3RyZWFtLnR0eSk7fWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KX1pZihyZXN1bHQ9PT11bmRlZmluZWQmJmJ5dGVzUmVhZD09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYpfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdDt9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt9cmV0dXJuIGJ5dGVzUmVhZH0sd3JpdGU6ZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyl7aWYoIXN0cmVhbS50dHl8fCFzdHJlYW0udHR5Lm9wcy5wdXRfY2hhcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjApfXRyeXtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe3N0cmVhbS50dHkub3BzLnB1dF9jaGFyKHN0cmVhbS50dHksYnVmZmVyW29mZnNldCtpXSk7fX1jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSl9aWYobGVuZ3RoKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt9cmV0dXJuIGl9fSxkZWZhdWx0X3R0eV9vcHM6e2dldF9jaGFyOmZ1bmN0aW9uKHR0eSl7aWYoIXR0eS5pbnB1dC5sZW5ndGgpe3ZhciByZXN1bHQ9bnVsbDtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt2YXIgQlVGU0laRT0yNTY7dmFyIGJ1Zj1CdWZmZXIuYWxsb2MoQlVGU0laRSk7dmFyIGJ5dGVzUmVhZD0wO3RyeXtieXRlc1JlYWQ9ZnMucmVhZFN5bmMocHJvY2Vzcy5zdGRpbi5mZCxidWYsMCxCVUZTSVpFLC0xKTt9Y2F0Y2goZSl7aWYoZS50b1N0cmluZygpLmluY2x1ZGVzKCJFT0YiKSlieXRlc1JlYWQ9MDtlbHNlIHRocm93IGV9aWYoYnl0ZXNSZWFkPjApe3Jlc3VsdD1idWYuc2xpY2UoMCxieXRlc1JlYWQpLnRvU3RyaW5nKCJ1dGYtOCIpO31lbHNlIHtyZXN1bHQ9bnVsbDt9fWVsc2UgaWYodHlwZW9mIHdpbmRvdyE9InVuZGVmaW5lZCImJnR5cGVvZiB3aW5kb3cucHJvbXB0PT0iZnVuY3Rpb24iKXtyZXN1bHQ9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpO2lmKHJlc3VsdCE9PW51bGwpe3Jlc3VsdCs9IlxuIjt9fWVsc2UgaWYodHlwZW9mIHJlYWRsaW5lPT0iZnVuY3Rpb24iKXtyZXN1bHQ9cmVhZGxpbmUoKTtpZihyZXN1bHQhPT1udWxsKXtyZXN1bHQrPSJcbiI7fX1pZighcmVzdWx0KXtyZXR1cm4gbnVsbH10dHkuaW5wdXQ9aW50QXJyYXlGcm9tU3RyaW5nKHJlc3VsdCx0cnVlKTt9cmV0dXJuIHR0eS5pbnB1dC5zaGlmdCgpfSxwdXRfY2hhcjpmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7b3V0KFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsMCkpO3R0eS5vdXRwdXQ9W107fWVsc2Uge2lmKHZhbCE9MCl0dHkub3V0cHV0LnB1c2godmFsKTt9fSxmc3luYzpmdW5jdGlvbih0dHkpe2lmKHR0eS5vdXRwdXQmJnR0eS5vdXRwdXQubGVuZ3RoPjApe291dChVVEY4QXJyYXlUb1N0cmluZyh0dHkub3V0cHV0LDApKTt0dHkub3V0cHV0PVtdO319fSxkZWZhdWx0X3R0eTFfb3BzOntwdXRfY2hhcjpmdW5jdGlvbih0dHksdmFsKXtpZih2YWw9PT1udWxsfHx2YWw9PT0xMCl7ZXJyKFVURjhBcnJheVRvU3RyaW5nKHR0eS5vdXRwdXQsMCkpO3R0eS5vdXRwdXQ9W107fWVsc2Uge2lmKHZhbCE9MCl0dHkub3V0cHV0LnB1c2godmFsKTt9fSxmc3luYzpmdW5jdGlvbih0dHkpe2lmKHR0eS5vdXRwdXQmJnR0eS5vdXRwdXQubGVuZ3RoPjApe2VycihVVEY4QXJyYXlUb1N0cmluZyh0dHkub3V0cHV0LDApKTt0dHkub3V0cHV0PVtdO319fX07ZnVuY3Rpb24gYWxpZ25NZW1vcnkoc2l6ZSxhbGlnbm1lbnQpe3JldHVybiBNYXRoLmNlaWwoc2l6ZS9hbGlnbm1lbnQpKmFsaWdubWVudH1mdW5jdGlvbiBtbWFwQWxsb2Moc2l6ZSl7c2l6ZT1hbGlnbk1lbW9yeShzaXplLDY1NTM2KTt2YXIgcHRyPV9lbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24oNjU1MzYsc2l6ZSk7aWYoIXB0cilyZXR1cm4gMDtyZXR1cm4gemVyb01lbW9yeShwdHIsc2l6ZSl9dmFyIE1FTUZTPXtvcHNfdGFibGU6bnVsbCxtb3VudDpmdW5jdGlvbihtb3VudCl7cmV0dXJuIE1FTUZTLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTYzODR8NTExLDApfSxjcmVhdGVOb2RlOmZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUsZGV2KXtpZihGUy5pc0Jsa2Rldihtb2RlKXx8RlMuaXNGSUZPKG1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myl9aWYoIU1FTUZTLm9wc190YWJsZSl7TUVNRlMub3BzX3RhYmxlPXtkaXI6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHIsbG9va3VwOk1FTUZTLm5vZGVfb3BzLmxvb2t1cCxta25vZDpNRU1GUy5ub2RlX29wcy5ta25vZCxyZW5hbWU6TUVNRlMubm9kZV9vcHMucmVuYW1lLHVubGluazpNRU1GUy5ub2RlX29wcy51bmxpbmsscm1kaXI6TUVNRlMubm9kZV9vcHMucm1kaXIscmVhZGRpcjpNRU1GUy5ub2RlX29wcy5yZWFkZGlyLHN5bWxpbms6TUVNRlMubm9kZV9vcHMuc3ltbGlua30sc3RyZWFtOntsbHNlZWs6TUVNRlMuc3RyZWFtX29wcy5sbHNlZWt9fSxmaWxlOntub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06e2xsc2VlazpNRU1GUy5zdHJlYW1fb3BzLmxsc2VlayxyZWFkOk1FTUZTLnN0cmVhbV9vcHMucmVhZCx3cml0ZTpNRU1GUy5zdHJlYW1fb3BzLndyaXRlLGFsbG9jYXRlOk1FTUZTLnN0cmVhbV9vcHMuYWxsb2NhdGUsbW1hcDpNRU1GUy5zdHJlYW1fb3BzLm1tYXAsbXN5bmM6TUVNRlMuc3RyZWFtX29wcy5tc3luY319LGxpbms6e25vZGU6e2dldGF0dHI6TUVNRlMubm9kZV9vcHMuZ2V0YXR0cixzZXRhdHRyOk1FTUZTLm5vZGVfb3BzLnNldGF0dHIscmVhZGxpbms6TUVNRlMubm9kZV9vcHMucmVhZGxpbmt9LHN0cmVhbTp7fX0sY2hyZGV2Ontub2RlOntnZXRhdHRyOk1FTUZTLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpNRU1GUy5ub2RlX29wcy5zZXRhdHRyfSxzdHJlYW06RlMuY2hyZGV2X3N0cmVhbV9vcHN9fTt9dmFyIG5vZGU9RlMuY3JlYXRlTm9kZShwYXJlbnQsbmFtZSxtb2RlLGRldik7aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7bm9kZS5ub2RlX29wcz1NRU1GUy5vcHNfdGFibGUuZGlyLm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5kaXIuc3RyZWFtO25vZGUuY29udGVudHM9e307fWVsc2UgaWYoRlMuaXNGaWxlKG5vZGUubW9kZSkpe25vZGUubm9kZV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmZpbGUuc3RyZWFtO25vZGUudXNlZEJ5dGVzPTA7bm9kZS5jb250ZW50cz1udWxsO31lbHNlIGlmKEZTLmlzTGluayhub2RlLm1vZGUpKXtub2RlLm5vZGVfb3BzPU1FTUZTLm9wc190YWJsZS5saW5rLm5vZGU7bm9kZS5zdHJlYW1fb3BzPU1FTUZTLm9wc190YWJsZS5saW5rLnN0cmVhbTt9ZWxzZSBpZihGUy5pc0NocmRldihub2RlLm1vZGUpKXtub2RlLm5vZGVfb3BzPU1FTUZTLm9wc190YWJsZS5jaHJkZXYubm9kZTtub2RlLnN0cmVhbV9vcHM9TUVNRlMub3BzX3RhYmxlLmNocmRldi5zdHJlYW07fW5vZGUudGltZXN0YW1wPURhdGUubm93KCk7aWYocGFyZW50KXtwYXJlbnQuY29udGVudHNbbmFtZV09bm9kZTtwYXJlbnQudGltZXN0YW1wPW5vZGUudGltZXN0YW1wO31yZXR1cm4gbm9kZX0sZ2V0RmlsZURhdGFBc1R5cGVkQXJyYXk6ZnVuY3Rpb24obm9kZSl7aWYoIW5vZGUuY29udGVudHMpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO2lmKG5vZGUuY29udGVudHMuc3ViYXJyYXkpcmV0dXJuIG5vZGUuY29udGVudHMuc3ViYXJyYXkoMCxub2RlLnVzZWRCeXRlcyk7cmV0dXJuIG5ldyBVaW50OEFycmF5KG5vZGUuY29udGVudHMpfSxleHBhbmRGaWxlU3RvcmFnZTpmdW5jdGlvbihub2RlLG5ld0NhcGFjaXR5KXt2YXIgcHJldkNhcGFjaXR5PW5vZGUuY29udGVudHM/bm9kZS5jb250ZW50cy5sZW5ndGg6MDtpZihwcmV2Q2FwYWNpdHk+PW5ld0NhcGFjaXR5KXJldHVybjt2YXIgQ0FQQUNJVFlfRE9VQkxJTkdfTUFYPTEwMjQqMTAyNDtuZXdDYXBhY2l0eT1NYXRoLm1heChuZXdDYXBhY2l0eSxwcmV2Q2FwYWNpdHkqKHByZXZDYXBhY2l0eTxDQVBBQ0lUWV9ET1VCTElOR19NQVg/MjoxLjEyNSk+Pj4wKTtpZihwcmV2Q2FwYWNpdHkhPTApbmV3Q2FwYWNpdHk9TWF0aC5tYXgobmV3Q2FwYWNpdHksMjU2KTt2YXIgb2xkQ29udGVudHM9bm9kZS5jb250ZW50cztub2RlLmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KG5ld0NhcGFjaXR5KTtpZihub2RlLnVzZWRCeXRlcz4wKW5vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsbm9kZS51c2VkQnl0ZXMpLDApO30scmVzaXplRmlsZVN0b3JhZ2U6ZnVuY3Rpb24obm9kZSxuZXdTaXplKXtpZihub2RlLnVzZWRCeXRlcz09bmV3U2l6ZSlyZXR1cm47aWYobmV3U2l6ZT09MCl7bm9kZS5jb250ZW50cz1udWxsO25vZGUudXNlZEJ5dGVzPTA7fWVsc2Uge3ZhciBvbGRDb250ZW50cz1ub2RlLmNvbnRlbnRzO25vZGUuY29udGVudHM9bmV3IFVpbnQ4QXJyYXkobmV3U2l6ZSk7aWYob2xkQ29udGVudHMpe25vZGUuY29udGVudHMuc2V0KG9sZENvbnRlbnRzLnN1YmFycmF5KDAsTWF0aC5taW4obmV3U2l6ZSxub2RlLnVzZWRCeXRlcykpKTt9bm9kZS51c2VkQnl0ZXM9bmV3U2l6ZTt9fSxub2RlX29wczp7Z2V0YXR0cjpmdW5jdGlvbihub2RlKXt2YXIgYXR0cj17fTthdHRyLmRldj1GUy5pc0NocmRldihub2RlLm1vZGUpP25vZGUuaWQ6MTthdHRyLmlubz1ub2RlLmlkO2F0dHIubW9kZT1ub2RlLm1vZGU7YXR0ci5ubGluaz0xO2F0dHIudWlkPTA7YXR0ci5naWQ9MDthdHRyLnJkZXY9bm9kZS5yZGV2O2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT00MDk2O31lbHNlIGlmKEZTLmlzRmlsZShub2RlLm1vZGUpKXthdHRyLnNpemU9bm9kZS51c2VkQnl0ZXM7fWVsc2UgaWYoRlMuaXNMaW5rKG5vZGUubW9kZSkpe2F0dHIuc2l6ZT1ub2RlLmxpbmsubGVuZ3RoO31lbHNlIHthdHRyLnNpemU9MDt9YXR0ci5hdGltZT1uZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7YXR0ci5tdGltZT1uZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7YXR0ci5jdGltZT1uZXcgRGF0ZShub2RlLnRpbWVzdGFtcCk7YXR0ci5ibGtzaXplPTQwOTY7YXR0ci5ibG9ja3M9TWF0aC5jZWlsKGF0dHIuc2l6ZS9hdHRyLmJsa3NpemUpO3JldHVybiBhdHRyfSxzZXRhdHRyOmZ1bmN0aW9uKG5vZGUsYXR0cil7aWYoYXR0ci5tb2RlIT09dW5kZWZpbmVkKXtub2RlLm1vZGU9YXR0ci5tb2RlO31pZihhdHRyLnRpbWVzdGFtcCE9PXVuZGVmaW5lZCl7bm9kZS50aW1lc3RhbXA9YXR0ci50aW1lc3RhbXA7fWlmKGF0dHIuc2l6ZSE9PXVuZGVmaW5lZCl7TUVNRlMucmVzaXplRmlsZVN0b3JhZ2Uobm9kZSxhdHRyLnNpemUpO319LGxvb2t1cDpmdW5jdGlvbihwYXJlbnQsbmFtZSl7dGhyb3cgRlMuZ2VuZXJpY0Vycm9yc1s0NF19LG1rbm9kOmZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUsZGV2KXtyZXR1cm4gTUVNRlMuY3JlYXRlTm9kZShwYXJlbnQsbmFtZSxtb2RlLGRldil9LHJlbmFtZTpmdW5jdGlvbihvbGRfbm9kZSxuZXdfZGlyLG5ld19uYW1lKXtpZihGUy5pc0RpcihvbGRfbm9kZS5tb2RlKSl7dmFyIG5ld19ub2RlO3RyeXtuZXdfbm9kZT1GUy5sb29rdXBOb2RlKG5ld19kaXIsbmV3X25hbWUpO31jYXRjaChlKXt9aWYobmV3X25vZGUpe2Zvcih2YXIgaSBpbiBuZXdfbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpfX19ZGVsZXRlIG9sZF9ub2RlLnBhcmVudC5jb250ZW50c1tvbGRfbm9kZS5uYW1lXTtvbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wPURhdGUubm93KCk7b2xkX25vZGUubmFtZT1uZXdfbmFtZTtuZXdfZGlyLmNvbnRlbnRzW25ld19uYW1lXT1vbGRfbm9kZTtuZXdfZGlyLnRpbWVzdGFtcD1vbGRfbm9kZS5wYXJlbnQudGltZXN0YW1wO29sZF9ub2RlLnBhcmVudD1uZXdfZGlyO30sdW5saW5rOmZ1bmN0aW9uKHBhcmVudCxuYW1lKXtkZWxldGUgcGFyZW50LmNvbnRlbnRzW25hbWVdO3BhcmVudC50aW1lc3RhbXA9RGF0ZS5ub3coKTt9LHJtZGlyOmZ1bmN0aW9uKHBhcmVudCxuYW1lKXt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTtmb3IodmFyIGkgaW4gbm9kZS5jb250ZW50cyl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpfWRlbGV0ZSBwYXJlbnQuY29udGVudHNbbmFtZV07cGFyZW50LnRpbWVzdGFtcD1EYXRlLm5vdygpO30scmVhZGRpcjpmdW5jdGlvbihub2RlKXt2YXIgZW50cmllcz1bIi4iLCIuLiJdO2Zvcih2YXIga2V5IGluIG5vZGUuY29udGVudHMpe2lmKCFub2RlLmNvbnRlbnRzLmhhc093blByb3BlcnR5KGtleSkpe2NvbnRpbnVlfWVudHJpZXMucHVzaChrZXkpO31yZXR1cm4gZW50cmllc30sc3ltbGluazpmdW5jdGlvbihwYXJlbnQsbmV3bmFtZSxvbGRwYXRoKXt2YXIgbm9kZT1NRU1GUy5jcmVhdGVOb2RlKHBhcmVudCxuZXduYW1lLDUxMXw0MDk2MCwwKTtub2RlLmxpbms9b2xkcGF0aDtyZXR1cm4gbm9kZX0scmVhZGxpbms6ZnVuY3Rpb24obm9kZSl7aWYoIUZTLmlzTGluayhub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9cmV0dXJuIG5vZGUubGlua319LHN0cmVhbV9vcHM6e3JlYWQ6ZnVuY3Rpb24oc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKXt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYocG9zaXRpb24+PXN0cmVhbS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgc2l6ZT1NYXRoLm1pbihzdHJlYW0ubm9kZS51c2VkQnl0ZXMtcG9zaXRpb24sbGVuZ3RoKTtpZihzaXplPjgmJmNvbnRlbnRzLnN1YmFycmF5KXtidWZmZXIuc2V0KGNvbnRlbnRzLnN1YmFycmF5KHBvc2l0aW9uLHBvc2l0aW9uK3NpemUpLG9mZnNldCk7fWVsc2Uge2Zvcih2YXIgaT0wO2k8c2l6ZTtpKyspYnVmZmVyW29mZnNldCtpXT1jb250ZW50c1twb3NpdGlvbitpXTt9cmV0dXJuIHNpemV9LHdyaXRlOmZ1bmN0aW9uKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbixjYW5Pd24pe2lmKCFsZW5ndGgpcmV0dXJuIDA7dmFyIG5vZGU9c3RyZWFtLm5vZGU7bm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTtpZihidWZmZXIuc3ViYXJyYXkmJighbm9kZS5jb250ZW50c3x8bm9kZS5jb250ZW50cy5zdWJhcnJheSkpe2lmKGNhbk93bil7bm9kZS5jb250ZW50cz1idWZmZXIuc3ViYXJyYXkob2Zmc2V0LG9mZnNldCtsZW5ndGgpO25vZGUudXNlZEJ5dGVzPWxlbmd0aDtyZXR1cm4gbGVuZ3RofWVsc2UgaWYobm9kZS51c2VkQnl0ZXM9PT0wJiZwb3NpdGlvbj09PTApe25vZGUuY29udGVudHM9YnVmZmVyLnNsaWNlKG9mZnNldCxvZmZzZXQrbGVuZ3RoKTtub2RlLnVzZWRCeXRlcz1sZW5ndGg7cmV0dXJuIGxlbmd0aH1lbHNlIGlmKHBvc2l0aW9uK2xlbmd0aDw9bm9kZS51c2VkQnl0ZXMpe25vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkscG9zaXRpb24pO3JldHVybiBsZW5ndGh9fU1FTUZTLmV4cGFuZEZpbGVTdG9yYWdlKG5vZGUscG9zaXRpb24rbGVuZ3RoKTtpZihub2RlLmNvbnRlbnRzLnN1YmFycmF5JiZidWZmZXIuc3ViYXJyYXkpe25vZGUuY29udGVudHMuc2V0KGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsb2Zmc2V0K2xlbmd0aCkscG9zaXRpb24pO31lbHNlIHtmb3IodmFyIGk9MDtpPGxlbmd0aDtpKyspe25vZGUuY29udGVudHNbcG9zaXRpb24raV09YnVmZmVyW29mZnNldCtpXTt9fW5vZGUudXNlZEJ5dGVzPU1hdGgubWF4KG5vZGUudXNlZEJ5dGVzLHBvc2l0aW9uK2xlbmd0aCk7cmV0dXJuIGxlbmd0aH0sbGxzZWVrOmZ1bmN0aW9uKHN0cmVhbSxvZmZzZXQsd2hlbmNlKXt2YXIgcG9zaXRpb249b2Zmc2V0O2lmKHdoZW5jZT09PTEpe3Bvc2l0aW9uKz1zdHJlYW0ucG9zaXRpb247fWVsc2UgaWYod2hlbmNlPT09Mil7aWYoRlMuaXNGaWxlKHN0cmVhbS5ub2RlLm1vZGUpKXtwb3NpdGlvbis9c3RyZWFtLm5vZGUudXNlZEJ5dGVzO319aWYocG9zaXRpb248MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXJldHVybiBwb3NpdGlvbn0sYWxsb2NhdGU6ZnVuY3Rpb24oc3RyZWFtLG9mZnNldCxsZW5ndGgpe01FTUZTLmV4cGFuZEZpbGVTdG9yYWdlKHN0cmVhbS5ub2RlLG9mZnNldCtsZW5ndGgpO3N0cmVhbS5ub2RlLnVzZWRCeXRlcz1NYXRoLm1heChzdHJlYW0ubm9kZS51c2VkQnl0ZXMsb2Zmc2V0K2xlbmd0aCk7fSxtbWFwOmZ1bmN0aW9uKHN0cmVhbSxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyl7aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpfXZhciBwdHI7dmFyIGFsbG9jYXRlZDt2YXIgY29udGVudHM9c3RyZWFtLm5vZGUuY29udGVudHM7aWYoIShmbGFncyYyKSYmY29udGVudHMuYnVmZmVyPT09YnVmZmVyKXthbGxvY2F0ZWQ9ZmFsc2U7cHRyPWNvbnRlbnRzLmJ5dGVPZmZzZXQ7fWVsc2Uge2lmKHBvc2l0aW9uPjB8fHBvc2l0aW9uK2xlbmd0aDxjb250ZW50cy5sZW5ndGgpe2lmKGNvbnRlbnRzLnN1YmFycmF5KXtjb250ZW50cz1jb250ZW50cy5zdWJhcnJheShwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpO31lbHNlIHtjb250ZW50cz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjb250ZW50cyxwb3NpdGlvbixwb3NpdGlvbitsZW5ndGgpO319YWxsb2NhdGVkPXRydWU7cHRyPW1tYXBBbGxvYyhsZW5ndGgpO2lmKCFwdHIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ4KX1IRUFQOC5zZXQoY29udGVudHMscHRyKTt9cmV0dXJuIHtwdHI6cHRyLGFsbG9jYXRlZDphbGxvY2F0ZWR9fSxtc3luYzpmdW5jdGlvbihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgsbW1hcEZsYWdzKXtNRU1GUy5zdHJlYW1fb3BzLndyaXRlKHN0cmVhbSxidWZmZXIsMCxsZW5ndGgsb2Zmc2V0LGZhbHNlKTtyZXR1cm4gMH19fTtmdW5jdGlvbiBhc3luY0xvYWQodXJsLG9ubG9hZCxvbmVycm9yLG5vUnVuRGVwKXt2YXIgZGVwPSFub1J1bkRlcD9nZXRVbmlxdWVSdW5EZXBlbmRlbmN5KCJhbCAiK3VybCk6IiI7cmVhZEFzeW5jKHVybCxhcnJheUJ1ZmZlcj0+e2Fzc2VydChhcnJheUJ1ZmZlciwnTG9hZGluZyBkYXRhIGZpbGUgIicrdXJsKyciIGZhaWxlZCAobm8gYXJyYXlCdWZmZXIpLicpO29ubG9hZChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO2lmKGRlcClyZW1vdmVSdW5EZXBlbmRlbmN5KCk7fSxldmVudD0+e2lmKG9uZXJyb3Ipe29uZXJyb3IoKTt9ZWxzZSB7dGhyb3cgJ0xvYWRpbmcgZGF0YSBmaWxlICInK3VybCsnIiBmYWlsZWQuJ319KTtpZihkZXApYWRkUnVuRGVwZW5kZW5jeSgpO312YXIgRlM9e3Jvb3Q6bnVsbCxtb3VudHM6W10sZGV2aWNlczp7fSxzdHJlYW1zOltdLG5leHRJbm9kZToxLG5hbWVUYWJsZTpudWxsLGN1cnJlbnRQYXRoOiIvIixpbml0aWFsaXplZDpmYWxzZSxpZ25vcmVQZXJtaXNzaW9uczp0cnVlLEVycm5vRXJyb3I6bnVsbCxnZW5lcmljRXJyb3JzOnt9LGZpbGVzeXN0ZW1zOm51bGwsc3luY0ZTUmVxdWVzdHM6MCxsb29rdXBQYXRoOihwYXRoLG9wdHM9e30pPT57cGF0aD1QQVRIX0ZTLnJlc29sdmUocGF0aCk7aWYoIXBhdGgpcmV0dXJuIHtwYXRoOiIiLG5vZGU6bnVsbH07dmFyIGRlZmF1bHRzPXtmb2xsb3dfbW91bnQ6dHJ1ZSxyZWN1cnNlX2NvdW50OjB9O29wdHM9T2JqZWN0LmFzc2lnbihkZWZhdWx0cyxvcHRzKTtpZihvcHRzLnJlY3Vyc2VfY291bnQ+OCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzIpfXZhciBwYXJ0cz1wYXRoLnNwbGl0KCIvIikuZmlsdGVyKHA9PiEhcCk7dmFyIGN1cnJlbnQ9RlMucm9vdDt2YXIgY3VycmVudF9wYXRoPSIvIjtmb3IodmFyIGk9MDtpPHBhcnRzLmxlbmd0aDtpKyspe3ZhciBpc2xhc3Q9aT09PXBhcnRzLmxlbmd0aC0xO2lmKGlzbGFzdCYmb3B0cy5wYXJlbnQpe2JyZWFrfWN1cnJlbnQ9RlMubG9va3VwTm9kZShjdXJyZW50LHBhcnRzW2ldKTtjdXJyZW50X3BhdGg9UEFUSC5qb2luMihjdXJyZW50X3BhdGgscGFydHNbaV0pO2lmKEZTLmlzTW91bnRwb2ludChjdXJyZW50KSl7aWYoIWlzbGFzdHx8aXNsYXN0JiZvcHRzLmZvbGxvd19tb3VudCl7Y3VycmVudD1jdXJyZW50Lm1vdW50ZWQucm9vdDt9fWlmKCFpc2xhc3R8fG9wdHMuZm9sbG93KXt2YXIgY291bnQ9MDt3aGlsZShGUy5pc0xpbmsoY3VycmVudC5tb2RlKSl7dmFyIGxpbms9RlMucmVhZGxpbmsoY3VycmVudF9wYXRoKTtjdXJyZW50X3BhdGg9UEFUSF9GUy5yZXNvbHZlKFBBVEguZGlybmFtZShjdXJyZW50X3BhdGgpLGxpbmspO3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChjdXJyZW50X3BhdGgse3JlY3Vyc2VfY291bnQ6b3B0cy5yZWN1cnNlX2NvdW50KzF9KTtjdXJyZW50PWxvb2t1cC5ub2RlO2lmKGNvdW50Kys+NDApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDMyKX19fX1yZXR1cm4ge3BhdGg6Y3VycmVudF9wYXRoLG5vZGU6Y3VycmVudH19LGdldFBhdGg6bm9kZT0+e3ZhciBwYXRoO3doaWxlKHRydWUpe2lmKEZTLmlzUm9vdChub2RlKSl7dmFyIG1vdW50PW5vZGUubW91bnQubW91bnRwb2ludDtpZighcGF0aClyZXR1cm4gbW91bnQ7cmV0dXJuIG1vdW50W21vdW50Lmxlbmd0aC0xXSE9PSIvIj9tb3VudCsiLyIrcGF0aDptb3VudCtwYXRofXBhdGg9cGF0aD9ub2RlLm5hbWUrIi8iK3BhdGg6bm9kZS5uYW1lO25vZGU9bm9kZS5wYXJlbnQ7fX0saGFzaE5hbWU6KHBhcmVudGlkLG5hbWUpPT57dmFyIGhhc2g9MDtmb3IodmFyIGk9MDtpPG5hbWUubGVuZ3RoO2krKyl7aGFzaD0oaGFzaDw8NSktaGFzaCtuYW1lLmNoYXJDb2RlQXQoaSl8MDt9cmV0dXJuIChwYXJlbnRpZCtoYXNoPj4+MCklRlMubmFtZVRhYmxlLmxlbmd0aH0saGFzaEFkZE5vZGU6bm9kZT0+e3ZhciBoYXNoPUZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLG5vZGUubmFtZSk7bm9kZS5uYW1lX25leHQ9RlMubmFtZVRhYmxlW2hhc2hdO0ZTLm5hbWVUYWJsZVtoYXNoXT1ub2RlO30saGFzaFJlbW92ZU5vZGU6bm9kZT0+e3ZhciBoYXNoPUZTLmhhc2hOYW1lKG5vZGUucGFyZW50LmlkLG5vZGUubmFtZSk7aWYoRlMubmFtZVRhYmxlW2hhc2hdPT09bm9kZSl7RlMubmFtZVRhYmxlW2hhc2hdPW5vZGUubmFtZV9uZXh0O31lbHNlIHt2YXIgY3VycmVudD1GUy5uYW1lVGFibGVbaGFzaF07d2hpbGUoY3VycmVudCl7aWYoY3VycmVudC5uYW1lX25leHQ9PT1ub2RlKXtjdXJyZW50Lm5hbWVfbmV4dD1ub2RlLm5hbWVfbmV4dDticmVha31jdXJyZW50PWN1cnJlbnQubmFtZV9uZXh0O319fSxsb29rdXBOb2RlOihwYXJlbnQsbmFtZSk9Pnt2YXIgZXJyQ29kZT1GUy5tYXlMb29rdXAocGFyZW50KTtpZihlcnJDb2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlLHBhcmVudCl9dmFyIGhhc2g9RlMuaGFzaE5hbWUocGFyZW50LmlkLG5hbWUpO2Zvcih2YXIgbm9kZT1GUy5uYW1lVGFibGVbaGFzaF07bm9kZTtub2RlPW5vZGUubmFtZV9uZXh0KXt2YXIgbm9kZU5hbWU9bm9kZS5uYW1lO2lmKG5vZGUucGFyZW50LmlkPT09cGFyZW50LmlkJiZub2RlTmFtZT09PW5hbWUpe3JldHVybiBub2RlfX1yZXR1cm4gRlMubG9va3VwKHBhcmVudCxuYW1lKX0sY3JlYXRlTm9kZToocGFyZW50LG5hbWUsbW9kZSxyZGV2KT0+e3ZhciBub2RlPW5ldyBGUy5GU05vZGUocGFyZW50LG5hbWUsbW9kZSxyZGV2KTtGUy5oYXNoQWRkTm9kZShub2RlKTtyZXR1cm4gbm9kZX0sZGVzdHJveU5vZGU6bm9kZT0+e0ZTLmhhc2hSZW1vdmVOb2RlKG5vZGUpO30saXNSb290Om5vZGU9PntyZXR1cm4gbm9kZT09PW5vZGUucGFyZW50fSxpc01vdW50cG9pbnQ6bm9kZT0+e3JldHVybiAhIW5vZGUubW91bnRlZH0saXNGaWxlOm1vZGU9PntyZXR1cm4gKG1vZGUmNjE0NDApPT09MzI3Njh9LGlzRGlyOm1vZGU9PntyZXR1cm4gKG1vZGUmNjE0NDApPT09MTYzODR9LGlzTGluazptb2RlPT57cmV0dXJuIChtb2RlJjYxNDQwKT09PTQwOTYwfSxpc0NocmRldjptb2RlPT57cmV0dXJuIChtb2RlJjYxNDQwKT09PTgxOTJ9LGlzQmxrZGV2Om1vZGU9PntyZXR1cm4gKG1vZGUmNjE0NDApPT09MjQ1NzZ9LGlzRklGTzptb2RlPT57cmV0dXJuIChtb2RlJjYxNDQwKT09PTQwOTZ9LGlzU29ja2V0Om1vZGU9PntyZXR1cm4gKG1vZGUmNDkxNTIpPT09NDkxNTJ9LGZsYWdNb2Rlczp7InIiOjAsInIrIjoyLCJ3Ijo1NzcsIncrIjo1NzgsImEiOjEwODksImErIjoxMDkwfSxtb2RlU3RyaW5nVG9GbGFnczpzdHI9Pnt2YXIgZmxhZ3M9RlMuZmxhZ01vZGVzW3N0cl07aWYodHlwZW9mIGZsYWdzPT0idW5kZWZpbmVkIil7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiAiK3N0cil9cmV0dXJuIGZsYWdzfSxmbGFnc1RvUGVybWlzc2lvblN0cmluZzpmbGFnPT57dmFyIHBlcm1zPVsiciIsInciLCJydyJdW2ZsYWcmM107aWYoZmxhZyY1MTIpe3Blcm1zKz0idyI7fXJldHVybiBwZXJtc30sbm9kZVBlcm1pc3Npb25zOihub2RlLHBlcm1zKT0+e2lmKEZTLmlnbm9yZVBlcm1pc3Npb25zKXtyZXR1cm4gMH1pZihwZXJtcy5pbmNsdWRlcygiciIpJiYhKG5vZGUubW9kZSYyOTIpKXtyZXR1cm4gMn1lbHNlIGlmKHBlcm1zLmluY2x1ZGVzKCJ3IikmJiEobm9kZS5tb2RlJjE0Nikpe3JldHVybiAyfWVsc2UgaWYocGVybXMuaW5jbHVkZXMoIngiKSYmIShub2RlLm1vZGUmNzMpKXtyZXR1cm4gMn1yZXR1cm4gMH0sbWF5TG9va3VwOmRpcj0+e3ZhciBlcnJDb2RlPUZTLm5vZGVQZXJtaXNzaW9ucyhkaXIsIngiKTtpZihlcnJDb2RlKXJldHVybiBlcnJDb2RlO2lmKCFkaXIubm9kZV9vcHMubG9va3VwKXJldHVybiAyO3JldHVybiAwfSxtYXlDcmVhdGU6KGRpcixuYW1lKT0+e3RyeXt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKGRpcixuYW1lKTtyZXR1cm4gMjB9Y2F0Y2goZSl7fXJldHVybiBGUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpfSxtYXlEZWxldGU6KGRpcixuYW1lLGlzZGlyKT0+e3ZhciBub2RlO3RyeXtub2RlPUZTLmxvb2t1cE5vZGUoZGlyLG5hbWUpO31jYXRjaChlKXtyZXR1cm4gZS5lcnJub312YXIgZXJyQ29kZT1GUy5ub2RlUGVybWlzc2lvbnMoZGlyLCJ3eCIpO2lmKGVyckNvZGUpe3JldHVybiBlcnJDb2RlfWlmKGlzZGlyKXtpZighRlMuaXNEaXIobm9kZS5tb2RlKSl7cmV0dXJuIDU0fWlmKEZTLmlzUm9vdChub2RlKXx8RlMuZ2V0UGF0aChub2RlKT09PUZTLmN3ZCgpKXtyZXR1cm4gMTB9fWVsc2Uge2lmKEZTLmlzRGlyKG5vZGUubW9kZSkpe3JldHVybiAzMX19cmV0dXJuIDB9LG1heU9wZW46KG5vZGUsZmxhZ3MpPT57aWYoIW5vZGUpe3JldHVybiA0NH1pZihGUy5pc0xpbmsobm9kZS5tb2RlKSl7cmV0dXJuIDMyfWVsc2UgaWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7aWYoRlMuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcoZmxhZ3MpIT09InIifHxmbGFncyY1MTIpe3JldHVybiAzMX19cmV0dXJuIEZTLm5vZGVQZXJtaXNzaW9ucyhub2RlLEZTLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGZsYWdzKSl9LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZDooZmRfc3RhcnQ9MCxmZF9lbmQ9RlMuTUFYX09QRU5fRkRTKT0+e2Zvcih2YXIgZmQ9ZmRfc3RhcnQ7ZmQ8PWZkX2VuZDtmZCsrKXtpZighRlMuc3RyZWFtc1tmZF0pe3JldHVybiBmZH19dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzMpfSxnZXRTdHJlYW06ZmQ9PkZTLnN0cmVhbXNbZmRdLGNyZWF0ZVN0cmVhbTooc3RyZWFtLGZkX3N0YXJ0LGZkX2VuZCk9PntpZighRlMuRlNTdHJlYW0pe0ZTLkZTU3RyZWFtPWZ1bmN0aW9uKCl7dGhpcy5zaGFyZWQ9e307fTtGUy5GU1N0cmVhbS5wcm90b3R5cGU9e307T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoRlMuRlNTdHJlYW0ucHJvdG90eXBlLHtvYmplY3Q6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGV9LHNldDpmdW5jdGlvbih2YWwpe3RoaXMubm9kZT12YWw7fX0saXNSZWFkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gKHRoaXMuZmxhZ3MmMjA5NzE1NSkhPT0xfX0saXNXcml0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuICh0aGlzLmZsYWdzJjIwOTcxNTUpIT09MH19LGlzQXBwZW5kOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mbGFncyYxMDI0fX0sZmxhZ3M6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNoYXJlZC5mbGFnc30sc2V0OmZ1bmN0aW9uKHZhbCl7dGhpcy5zaGFyZWQuZmxhZ3M9dmFsO319LHBvc2l0aW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb259LHNldDpmdW5jdGlvbih2YWwpe3RoaXMuc2hhcmVkLnBvc2l0aW9uPXZhbDt9fX0pO31zdHJlYW09T2JqZWN0LmFzc2lnbihuZXcgRlMuRlNTdHJlYW0sc3RyZWFtKTt2YXIgZmQ9RlMubmV4dGZkKGZkX3N0YXJ0LGZkX2VuZCk7c3RyZWFtLmZkPWZkO0ZTLnN0cmVhbXNbZmRdPXN0cmVhbTtyZXR1cm4gc3RyZWFtfSxjbG9zZVN0cmVhbTpmZD0+e0ZTLnN0cmVhbXNbZmRdPW51bGw7fSxjaHJkZXZfc3RyZWFtX29wczp7b3BlbjpzdHJlYW09Pnt2YXIgZGV2aWNlPUZTLmdldERldmljZShzdHJlYW0ubm9kZS5yZGV2KTtzdHJlYW0uc3RyZWFtX29wcz1kZXZpY2Uuc3RyZWFtX29wcztpZihzdHJlYW0uc3RyZWFtX29wcy5vcGVuKXtzdHJlYW0uc3RyZWFtX29wcy5vcGVuKHN0cmVhbSk7fX0sbGxzZWVrOigpPT57dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfX0sbWFqb3I6ZGV2PT5kZXY+PjgsbWlub3I6ZGV2PT5kZXYmMjU1LG1ha2VkZXY6KG1hLG1pKT0+bWE8PDh8bWkscmVnaXN0ZXJEZXZpY2U6KGRldixvcHMpPT57RlMuZGV2aWNlc1tkZXZdPXtzdHJlYW1fb3BzOm9wc307fSxnZXREZXZpY2U6ZGV2PT5GUy5kZXZpY2VzW2Rldl0sZ2V0TW91bnRzOm1vdW50PT57dmFyIG1vdW50cz1bXTt2YXIgY2hlY2s9W21vdW50XTt3aGlsZShjaGVjay5sZW5ndGgpe3ZhciBtPWNoZWNrLnBvcCgpO21vdW50cy5wdXNoKG0pO2NoZWNrLnB1c2guYXBwbHkoY2hlY2ssbS5tb3VudHMpO31yZXR1cm4gbW91bnRzfSxzeW5jZnM6KHBvcHVsYXRlLGNhbGxiYWNrKT0+e2lmKHR5cGVvZiBwb3B1bGF0ZT09ImZ1bmN0aW9uIil7Y2FsbGJhY2s9cG9wdWxhdGU7cG9wdWxhdGU9ZmFsc2U7fUZTLnN5bmNGU1JlcXVlc3RzKys7aWYoRlMuc3luY0ZTUmVxdWVzdHM+MSl7ZXJyKCJ3YXJuaW5nOiAiK0ZTLnN5bmNGU1JlcXVlc3RzKyIgRlMuc3luY2ZzIG9wZXJhdGlvbnMgaW4gZmxpZ2h0IGF0IG9uY2UsIHByb2JhYmx5IGp1c3QgZG9pbmcgZXh0cmEgd29yayIpO312YXIgbW91bnRzPUZTLmdldE1vdW50cyhGUy5yb290Lm1vdW50KTt2YXIgY29tcGxldGVkPTA7ZnVuY3Rpb24gZG9DYWxsYmFjayhlcnJDb2RlKXtGUy5zeW5jRlNSZXF1ZXN0cy0tO3JldHVybiBjYWxsYmFjayhlcnJDb2RlKX1mdW5jdGlvbiBkb25lKGVyckNvZGUpe2lmKGVyckNvZGUpe2lmKCFkb25lLmVycm9yZWQpe2RvbmUuZXJyb3JlZD10cnVlO3JldHVybiBkb0NhbGxiYWNrKGVyckNvZGUpfXJldHVybn1pZigrK2NvbXBsZXRlZD49bW91bnRzLmxlbmd0aCl7ZG9DYWxsYmFjayhudWxsKTt9fW1vdW50cy5mb3JFYWNoKG1vdW50PT57aWYoIW1vdW50LnR5cGUuc3luY2ZzKXtyZXR1cm4gZG9uZShudWxsKX1tb3VudC50eXBlLnN5bmNmcyhtb3VudCxwb3B1bGF0ZSxkb25lKTt9KTt9LG1vdW50Oih0eXBlLG9wdHMsbW91bnRwb2ludCk9Pnt2YXIgcm9vdD1tb3VudHBvaW50PT09Ii8iO3ZhciBwc2V1ZG89IW1vdW50cG9pbnQ7dmFyIG5vZGU7aWYocm9vdCYmRlMucm9vdCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApfWVsc2UgaWYoIXJvb3QmJiFwc2V1ZG8pe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTttb3VudHBvaW50PWxvb2t1cC5wYXRoO25vZGU9bG9va3VwLm5vZGU7aWYoRlMuaXNNb3VudHBvaW50KG5vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMCl9aWYoIUZTLmlzRGlyKG5vZGUubW9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDU0KX19dmFyIG1vdW50PXt0eXBlOnR5cGUsb3B0czpvcHRzLG1vdW50cG9pbnQ6bW91bnRwb2ludCxtb3VudHM6W119O3ZhciBtb3VudFJvb3Q9dHlwZS5tb3VudChtb3VudCk7bW91bnRSb290Lm1vdW50PW1vdW50O21vdW50LnJvb3Q9bW91bnRSb290O2lmKHJvb3Qpe0ZTLnJvb3Q9bW91bnRSb290O31lbHNlIGlmKG5vZGUpe25vZGUubW91bnRlZD1tb3VudDtpZihub2RlLm1vdW50KXtub2RlLm1vdW50Lm1vdW50cy5wdXNoKG1vdW50KTt9fXJldHVybiBtb3VudFJvb3R9LHVubW91bnQ6bW91bnRwb2ludD0+e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChtb3VudHBvaW50LHtmb2xsb3dfbW91bnQ6ZmFsc2V9KTtpZighRlMuaXNNb3VudHBvaW50KGxvb2t1cC5ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXZhciBub2RlPWxvb2t1cC5ub2RlO3ZhciBtb3VudD1ub2RlLm1vdW50ZWQ7dmFyIG1vdW50cz1GUy5nZXRNb3VudHMobW91bnQpO09iamVjdC5rZXlzKEZTLm5hbWVUYWJsZSkuZm9yRWFjaChoYXNoPT57dmFyIGN1cnJlbnQ9RlMubmFtZVRhYmxlW2hhc2hdO3doaWxlKGN1cnJlbnQpe3ZhciBuZXh0PWN1cnJlbnQubmFtZV9uZXh0O2lmKG1vdW50cy5pbmNsdWRlcyhjdXJyZW50Lm1vdW50KSl7RlMuZGVzdHJveU5vZGUoY3VycmVudCk7fWN1cnJlbnQ9bmV4dDt9fSk7bm9kZS5tb3VudGVkPW51bGw7dmFyIGlkeD1ub2RlLm1vdW50Lm1vdW50cy5pbmRleE9mKG1vdW50KTtub2RlLm1vdW50Lm1vdW50cy5zcGxpY2UoaWR4LDEpO30sbG9va3VwOihwYXJlbnQsbmFtZSk9PntyZXR1cm4gcGFyZW50Lm5vZGVfb3BzLmxvb2t1cChwYXJlbnQsbmFtZSl9LG1rbm9kOihwYXRoLG1vZGUsZGV2KT0+e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTtpZighbmFtZXx8bmFtZT09PSIuInx8bmFtZT09PSIuLiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX12YXIgZXJyQ29kZT1GUy5tYXlDcmVhdGUocGFyZW50LG5hbWUpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfWlmKCFwYXJlbnQubm9kZV9vcHMubWtub2Qpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1yZXR1cm4gcGFyZW50Lm5vZGVfb3BzLm1rbm9kKHBhcmVudCxuYW1lLG1vZGUsZGV2KX0sY3JlYXRlOihwYXRoLG1vZGUpPT57bW9kZT1tb2RlIT09dW5kZWZpbmVkP21vZGU6NDM4O21vZGUmPTQwOTU7bW9kZXw9MzI3Njg7cmV0dXJuIEZTLm1rbm9kKHBhdGgsbW9kZSwwKX0sbWtkaXI6KHBhdGgsbW9kZSk9Pnttb2RlPW1vZGUhPT11bmRlZmluZWQ/bW9kZTo1MTE7bW9kZSY9NTExfDUxMjttb2RlfD0xNjM4NDtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLDApfSxta2RpclRyZWU6KHBhdGgsbW9kZSk9Pnt2YXIgZGlycz1wYXRoLnNwbGl0KCIvIik7dmFyIGQ9IiI7Zm9yKHZhciBpPTA7aTxkaXJzLmxlbmd0aDsrK2kpe2lmKCFkaXJzW2ldKWNvbnRpbnVlO2QrPSIvIitkaXJzW2ldO3RyeXtGUy5ta2RpcihkLG1vZGUpO31jYXRjaChlKXtpZihlLmVycm5vIT0yMCl0aHJvdyBlfX19LG1rZGV2OihwYXRoLG1vZGUsZGV2KT0+e2lmKHR5cGVvZiBkZXY9PSJ1bmRlZmluZWQiKXtkZXY9bW9kZTttb2RlPTQzODt9bW9kZXw9ODE5MjtyZXR1cm4gRlMubWtub2QocGF0aCxtb2RlLGRldil9LHN5bWxpbms6KG9sZHBhdGgsbmV3cGF0aCk9PntpZighUEFUSF9GUy5yZXNvbHZlKG9sZHBhdGgpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKG5ld3BhdGgse3BhcmVudDp0cnVlfSk7dmFyIHBhcmVudD1sb29rdXAubm9kZTtpZighcGFyZW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9dmFyIG5ld25hbWU9UEFUSC5iYXNlbmFtZShuZXdwYXRoKTt2YXIgZXJyQ29kZT1GUy5tYXlDcmVhdGUocGFyZW50LG5ld25hbWUpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfWlmKCFwYXJlbnQubm9kZV9vcHMuc3ltbGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpfXJldHVybiBwYXJlbnQubm9kZV9vcHMuc3ltbGluayhwYXJlbnQsbmV3bmFtZSxvbGRwYXRoKX0scmVuYW1lOihvbGRfcGF0aCxuZXdfcGF0aCk9Pnt2YXIgb2xkX2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG9sZF9wYXRoKTt2YXIgbmV3X2Rpcm5hbWU9UEFUSC5kaXJuYW1lKG5ld19wYXRoKTt2YXIgb2xkX25hbWU9UEFUSC5iYXNlbmFtZShvbGRfcGF0aCk7dmFyIG5ld19uYW1lPVBBVEguYmFzZW5hbWUobmV3X3BhdGgpO3ZhciBsb29rdXAsb2xkX2RpcixuZXdfZGlyO2xvb2t1cD1GUy5sb29rdXBQYXRoKG9sZF9wYXRoLHtwYXJlbnQ6dHJ1ZX0pO29sZF9kaXI9bG9va3VwLm5vZGU7bG9va3VwPUZTLmxvb2t1cFBhdGgobmV3X3BhdGgse3BhcmVudDp0cnVlfSk7bmV3X2Rpcj1sb29rdXAubm9kZTtpZighb2xkX2Rpcnx8IW5ld19kaXIpdGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDQpO2lmKG9sZF9kaXIubW91bnQhPT1uZXdfZGlyLm1vdW50KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig3NSl9dmFyIG9sZF9ub2RlPUZTLmxvb2t1cE5vZGUob2xkX2RpcixvbGRfbmFtZSk7dmFyIHJlbGF0aXZlPVBBVEhfRlMucmVsYXRpdmUob2xkX3BhdGgsbmV3X2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXJlbGF0aXZlPVBBVEhfRlMucmVsYXRpdmUobmV3X3BhdGgsb2xkX2Rpcm5hbWUpO2lmKHJlbGF0aXZlLmNoYXJBdCgwKSE9PSIuIil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTUpfXZhciBuZXdfbm9kZTt0cnl7bmV3X25vZGU9RlMubG9va3VwTm9kZShuZXdfZGlyLG5ld19uYW1lKTt9Y2F0Y2goZSl7fWlmKG9sZF9ub2RlPT09bmV3X25vZGUpe3JldHVybn12YXIgaXNkaXI9RlMuaXNEaXIob2xkX25vZGUubW9kZSk7dmFyIGVyckNvZGU9RlMubWF5RGVsZXRlKG9sZF9kaXIsb2xkX25hbWUsaXNkaXIpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfWVyckNvZGU9bmV3X25vZGU/RlMubWF5RGVsZXRlKG5ld19kaXIsbmV3X25hbWUsaXNkaXIpOkZTLm1heUNyZWF0ZShuZXdfZGlyLG5ld19uYW1lKTtpZihlcnJDb2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcihlcnJDb2RlKX1pZighb2xkX2Rpci5ub2RlX29wcy5yZW5hbWUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1pZihGUy5pc01vdW50cG9pbnQob2xkX25vZGUpfHxuZXdfbm9kZSYmRlMuaXNNb3VudHBvaW50KG5ld19ub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApfWlmKG5ld19kaXIhPT1vbGRfZGlyKXtlcnJDb2RlPUZTLm5vZGVQZXJtaXNzaW9ucyhvbGRfZGlyLCJ3Iik7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9fUZTLmhhc2hSZW1vdmVOb2RlKG9sZF9ub2RlKTt0cnl7b2xkX2Rpci5ub2RlX29wcy5yZW5hbWUob2xkX25vZGUsbmV3X2RpcixuZXdfbmFtZSk7fWNhdGNoKGUpe3Rocm93IGV9ZmluYWxseXtGUy5oYXNoQWRkTm9kZShvbGRfbm9kZSk7fX0scm1kaXI6cGF0aD0+e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtwYXJlbnQ6dHJ1ZX0pO3ZhciBwYXJlbnQ9bG9va3VwLm5vZGU7dmFyIG5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTt2YXIgbm9kZT1GUy5sb29rdXBOb2RlKHBhcmVudCxuYW1lKTt2YXIgZXJyQ29kZT1GUy5tYXlEZWxldGUocGFyZW50LG5hbWUsdHJ1ZSk7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9aWYoIXBhcmVudC5ub2RlX29wcy5ybWRpcil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpfWlmKEZTLmlzTW91bnRwb2ludChub2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMTApfXBhcmVudC5ub2RlX29wcy5ybWRpcihwYXJlbnQsbmFtZSk7RlMuZGVzdHJveU5vZGUobm9kZSk7fSxyZWFkZGlyOnBhdGg9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OnRydWV9KTt2YXIgbm9kZT1sb29rdXAubm9kZTtpZighbm9kZS5ub2RlX29wcy5yZWFkZGlyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCl9cmV0dXJuIG5vZGUubm9kZV9vcHMucmVhZGRpcihub2RlKX0sdW5saW5rOnBhdGg9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7cGFyZW50OnRydWV9KTt2YXIgcGFyZW50PWxvb2t1cC5ub2RlO2lmKCFwYXJlbnQpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX12YXIgbmFtZT1QQVRILmJhc2VuYW1lKHBhdGgpO3ZhciBub2RlPUZTLmxvb2t1cE5vZGUocGFyZW50LG5hbWUpO3ZhciBlcnJDb2RlPUZTLm1heURlbGV0ZShwYXJlbnQsbmFtZSxmYWxzZSk7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9aWYoIXBhcmVudC5ub2RlX29wcy51bmxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1pZihGUy5pc01vdW50cG9pbnQobm9kZSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDEwKX1wYXJlbnQubm9kZV9vcHMudW5saW5rKHBhcmVudCxuYW1lKTtGUy5kZXN0cm95Tm9kZShub2RlKTt9LHJlYWRsaW5rOnBhdGg9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCk7dmFyIGxpbms9bG9va3VwLm5vZGU7aWYoIWxpbmspe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1pZighbGluay5ub2RlX29wcy5yZWFkbGluayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXJldHVybiBQQVRIX0ZTLnJlc29sdmUoRlMuZ2V0UGF0aChsaW5rLnBhcmVudCksbGluay5ub2RlX29wcy5yZWFkbGluayhsaW5rKSl9LHN0YXQ6KHBhdGgsZG9udEZvbGxvdyk9Pnt2YXIgbG9va3VwPUZTLmxvb2t1cFBhdGgocGF0aCx7Zm9sbG93OiFkb250Rm9sbG93fSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7aWYoIW5vZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1pZighbm9kZS5ub2RlX29wcy5nZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myl9cmV0dXJuIG5vZGUubm9kZV9vcHMuZ2V0YXR0cihub2RlKX0sbHN0YXQ6cGF0aD0+e3JldHVybiBGUy5zdGF0KHBhdGgsdHJ1ZSl9LGNobW9kOihwYXRoLG1vZGUsZG9udEZvbGxvdyk9Pnt2YXIgbm9kZTtpZih0eXBlb2YgcGF0aD09InN0cmluZyIpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRGb2xsb3d9KTtub2RlPWxvb2t1cC5ub2RlO31lbHNlIHtub2RlPXBhdGg7fWlmKCFub2RlLm5vZGVfb3BzLnNldGF0dHIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYzKX1ub2RlLm5vZGVfb3BzLnNldGF0dHIobm9kZSx7bW9kZTptb2RlJjQwOTV8bm9kZS5tb2RlJn40MDk1LHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7fSxsY2htb2Q6KHBhdGgsbW9kZSk9PntGUy5jaG1vZChwYXRoLG1vZGUsdHJ1ZSk7fSxmY2htb2Q6KGZkLG1vZGUpPT57dmFyIHN0cmVhbT1GUy5nZXRTdHJlYW0oZmQpO2lmKCFzdHJlYW0pe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfUZTLmNobW9kKHN0cmVhbS5ub2RlLG1vZGUpO30sY2hvd246KHBhdGgsdWlkLGdpZCxkb250Rm9sbG93KT0+e3ZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udEZvbGxvd30pO25vZGU9bG9va3VwLm5vZGU7fWVsc2Uge25vZGU9cGF0aDt9aWYoIW5vZGUubm9kZV9vcHMuc2V0YXR0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNjMpfW5vZGUubm9kZV9vcHMuc2V0YXR0cihub2RlLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pO30sbGNob3duOihwYXRoLHVpZCxnaWQpPT57RlMuY2hvd24ocGF0aCx1aWQsZ2lkLHRydWUpO30sZmNob3duOihmZCx1aWQsZ2lkKT0+e3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KX1GUy5jaG93bihzdHJlYW0ubm9kZSx1aWQsZ2lkKTt9LHRydW5jYXRlOihwYXRoLGxlbik9PntpZihsZW48MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXZhciBub2RlO2lmKHR5cGVvZiBwYXRoPT0ic3RyaW5nIil7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7bm9kZT1sb29rdXAubm9kZTt9ZWxzZSB7bm9kZT1wYXRoO31pZighbm9kZS5ub2RlX29wcy5zZXRhdHRyKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig2Myl9aWYoRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMzEpfWlmKCFGUy5pc0ZpbGUobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjgpfXZhciBlcnJDb2RlPUZTLm5vZGVQZXJtaXNzaW9ucyhub2RlLCJ3Iik7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3NpemU6bGVuLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7fSxmdHJ1bmNhdGU6KGZkLGxlbik9Pnt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX1GUy50cnVuY2F0ZShzdHJlYW0ubm9kZSxsZW4pO30sdXRpbWU6KHBhdGgsYXRpbWUsbXRpbWUpPT57dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7dmFyIG5vZGU9bG9va3VwLm5vZGU7bm9kZS5ub2RlX29wcy5zZXRhdHRyKG5vZGUse3RpbWVzdGFtcDpNYXRoLm1heChhdGltZSxtdGltZSl9KTt9LG9wZW46KHBhdGgsZmxhZ3MsbW9kZSk9PntpZihwYXRoPT09IiIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1mbGFncz10eXBlb2YgZmxhZ3M9PSJzdHJpbmciP0ZTLm1vZGVTdHJpbmdUb0ZsYWdzKGZsYWdzKTpmbGFnczttb2RlPXR5cGVvZiBtb2RlPT0idW5kZWZpbmVkIj80Mzg6bW9kZTtpZihmbGFncyY2NCl7bW9kZT1tb2RlJjQwOTV8MzI3Njg7fWVsc2Uge21vZGU9MDt9dmFyIG5vZGU7aWYodHlwZW9mIHBhdGg9PSJvYmplY3QiKXtub2RlPXBhdGg7fWVsc2Uge3BhdGg9UEFUSC5ub3JtYWxpemUocGF0aCk7dHJ5e3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IShmbGFncyYxMzEwNzIpfSk7bm9kZT1sb29rdXAubm9kZTt9Y2F0Y2goZSl7fX12YXIgY3JlYXRlZD1mYWxzZTtpZihmbGFncyY2NCl7aWYobm9kZSl7aWYoZmxhZ3MmMTI4KXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyMCl9fWVsc2Uge25vZGU9RlMubWtub2QocGF0aCxtb2RlLDApO2NyZWF0ZWQ9dHJ1ZTt9fWlmKCFub2RlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9aWYoRlMuaXNDaHJkZXYobm9kZS5tb2RlKSl7ZmxhZ3MmPX41MTI7fWlmKGZsYWdzJjY1NTM2JiYhRlMuaXNEaXIobm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNTQpfWlmKCFjcmVhdGVkKXt2YXIgZXJyQ29kZT1GUy5tYXlPcGVuKG5vZGUsZmxhZ3MpO2lmKGVyckNvZGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKGVyckNvZGUpfX1pZihmbGFncyY1MTImJiFjcmVhdGVkKXtGUy50cnVuY2F0ZShub2RlLDApO31mbGFncyY9figxMjh8NTEyfDEzMTA3Mik7dmFyIHN0cmVhbT1GUy5jcmVhdGVTdHJlYW0oe25vZGU6bm9kZSxwYXRoOkZTLmdldFBhdGgobm9kZSksZmxhZ3M6ZmxhZ3Msc2Vla2FibGU6dHJ1ZSxwb3NpdGlvbjowLHN0cmVhbV9vcHM6bm9kZS5zdHJlYW1fb3BzLHVuZ290dGVuOltdLGVycm9yOmZhbHNlfSk7aWYoc3RyZWFtLnN0cmVhbV9vcHMub3Blbil7c3RyZWFtLnN0cmVhbV9vcHMub3BlbihzdHJlYW0pO31pZihNb2R1bGVbImxvZ1JlYWRGaWxlcyJdJiYhKGZsYWdzJjEpKXtpZighRlMucmVhZEZpbGVzKUZTLnJlYWRGaWxlcz17fTtpZighKHBhdGggaW4gRlMucmVhZEZpbGVzKSl7RlMucmVhZEZpbGVzW3BhdGhdPTE7fX1yZXR1cm4gc3RyZWFtfSxjbG9zZTpzdHJlYW09PntpZihGUy5pc0Nsb3NlZChzdHJlYW0pKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KX1pZihzdHJlYW0uZ2V0ZGVudHMpc3RyZWFtLmdldGRlbnRzPW51bGw7dHJ5e2lmKHN0cmVhbS5zdHJlYW1fb3BzLmNsb3NlKXtzdHJlYW0uc3RyZWFtX29wcy5jbG9zZShzdHJlYW0pO319Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e0ZTLmNsb3NlU3RyZWFtKHN0cmVhbS5mZCk7fXN0cmVhbS5mZD1udWxsO30saXNDbG9zZWQ6c3RyZWFtPT57cmV0dXJuIHN0cmVhbS5mZD09PW51bGx9LGxsc2Vlazooc3RyZWFtLG9mZnNldCx3aGVuY2UpPT57aWYoRlMuaXNDbG9zZWQoc3RyZWFtKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoIXN0cmVhbS5zZWVrYWJsZXx8IXN0cmVhbS5zdHJlYW1fb3BzLmxsc2Vlayl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfWlmKHdoZW5jZSE9MCYmd2hlbmNlIT0xJiZ3aGVuY2UhPTIpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX1zdHJlYW0ucG9zaXRpb249c3RyZWFtLnN0cmVhbV9vcHMubGxzZWVrKHN0cmVhbSxvZmZzZXQsd2hlbmNlKTtzdHJlYW0udW5nb3R0ZW49W107cmV0dXJuIHN0cmVhbS5wb3NpdGlvbn0scmVhZDooc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uKT0+e2lmKGxlbmd0aDwwfHxwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9aWYoRlMuaXNDbG9zZWQoc3RyZWFtKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTEpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMSl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLnJlYWQpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX12YXIgc2Vla2luZz10eXBlb2YgcG9zaXRpb24hPSJ1bmRlZmluZWQiO2lmKCFzZWVraW5nKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247fWVsc2UgaWYoIXN0cmVhbS5zZWVrYWJsZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfXZhciBieXRlc1JlYWQ9c3RyZWFtLnN0cmVhbV9vcHMucmVhZChzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pO2lmKCFzZWVraW5nKXN0cmVhbS5wb3NpdGlvbis9Ynl0ZXNSZWFkO3JldHVybiBieXRlc1JlYWR9LHdyaXRlOihzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24sY2FuT3duKT0+e2lmKGxlbmd0aDwwfHxwb3NpdGlvbjwwKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9aWYoRlMuaXNDbG9zZWQoc3RyZWFtKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoKHN0cmVhbS5mbGFncyYyMDk3MTU1KT09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfWlmKEZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigzMSl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLndyaXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOCl9aWYoc3RyZWFtLnNlZWthYmxlJiZzdHJlYW0uZmxhZ3MmMTAyNCl7RlMubGxzZWVrKHN0cmVhbSwwLDIpO312YXIgc2Vla2luZz10eXBlb2YgcG9zaXRpb24hPSJ1bmRlZmluZWQiO2lmKCFzZWVraW5nKXtwb3NpdGlvbj1zdHJlYW0ucG9zaXRpb247fWVsc2UgaWYoIXN0cmVhbS5zZWVrYWJsZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNzApfXZhciBieXRlc1dyaXR0ZW49c3RyZWFtLnN0cmVhbV9vcHMud3JpdGUoc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvc2l0aW9uLGNhbk93bik7aWYoIXNlZWtpbmcpc3RyZWFtLnBvc2l0aW9uKz1ieXRlc1dyaXR0ZW47cmV0dXJuIGJ5dGVzV3JpdHRlbn0sYWxsb2NhdGU6KHN0cmVhbSxvZmZzZXQsbGVuZ3RoKT0+e2lmKEZTLmlzQ2xvc2VkKHN0cmVhbSkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpfWlmKG9mZnNldDwwfHxsZW5ndGg8PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI4KX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MCl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoOCl9aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSYmIUZTLmlzRGlyKHN0cmVhbS5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0Myl9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigxMzgpfXN0cmVhbS5zdHJlYW1fb3BzLmFsbG9jYXRlKHN0cmVhbSxvZmZzZXQsbGVuZ3RoKTt9LG1tYXA6KHN0cmVhbSxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyk9PntpZigocHJvdCYyKSE9PTAmJihmbGFncyYyKT09PTAmJihzdHJlYW0uZmxhZ3MmMjA5NzE1NSkhPT0yKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyKX1pZigoc3RyZWFtLmZsYWdzJjIwOTcxNTUpPT09MSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMil9aWYoIXN0cmVhbS5zdHJlYW1fb3BzLm1tYXApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQzKX1yZXR1cm4gc3RyZWFtLnN0cmVhbV9vcHMubW1hcChzdHJlYW0sbGVuZ3RoLHBvc2l0aW9uLHByb3QsZmxhZ3MpfSxtc3luYzooc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLG1tYXBGbGFncyk9PntpZighc3RyZWFtLnN0cmVhbV9vcHMubXN5bmMpe3JldHVybiAwfXJldHVybiBzdHJlYW0uc3RyZWFtX29wcy5tc3luYyhzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgsbW1hcEZsYWdzKX0sbXVubWFwOnN0cmVhbT0+MCxpb2N0bDooc3RyZWFtLGNtZCxhcmcpPT57aWYoIXN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1OSl9cmV0dXJuIHN0cmVhbS5zdHJlYW1fb3BzLmlvY3RsKHN0cmVhbSxjbWQsYXJnKX0scmVhZEZpbGU6KHBhdGgsb3B0cz17fSk9PntvcHRzLmZsYWdzPW9wdHMuZmxhZ3N8fDA7b3B0cy5lbmNvZGluZz1vcHRzLmVuY29kaW5nfHwiYmluYXJ5IjtpZihvcHRzLmVuY29kaW5nIT09InV0ZjgiJiZvcHRzLmVuY29kaW5nIT09ImJpbmFyeSIpe3Rocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZyB0eXBlICInK29wdHMuZW5jb2RpbmcrJyInKX12YXIgcmV0O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3MpO3ZhciBzdGF0PUZTLnN0YXQocGF0aCk7dmFyIGxlbmd0aD1zdGF0LnNpemU7dmFyIGJ1Zj1uZXcgVWludDhBcnJheShsZW5ndGgpO0ZTLnJlYWQoc3RyZWFtLGJ1ZiwwLGxlbmd0aCwwKTtpZihvcHRzLmVuY29kaW5nPT09InV0ZjgiKXtyZXQ9VVRGOEFycmF5VG9TdHJpbmcoYnVmLDApO31lbHNlIGlmKG9wdHMuZW5jb2Rpbmc9PT0iYmluYXJ5Iil7cmV0PWJ1Zjt9RlMuY2xvc2Uoc3RyZWFtKTtyZXR1cm4gcmV0fSx3cml0ZUZpbGU6KHBhdGgsZGF0YSxvcHRzPXt9KT0+e29wdHMuZmxhZ3M9b3B0cy5mbGFnc3x8NTc3O3ZhciBzdHJlYW09RlMub3BlbihwYXRoLG9wdHMuZmxhZ3Msb3B0cy5tb2RlKTtpZih0eXBlb2YgZGF0YT09InN0cmluZyIpe3ZhciBidWY9bmV3IFVpbnQ4QXJyYXkobGVuZ3RoQnl0ZXNVVEY4KGRhdGEpKzEpO3ZhciBhY3R1YWxOdW1CeXRlcz1zdHJpbmdUb1VURjhBcnJheShkYXRhLGJ1ZiwwLGJ1Zi5sZW5ndGgpO0ZTLndyaXRlKHN0cmVhbSxidWYsMCxhY3R1YWxOdW1CeXRlcyx1bmRlZmluZWQsb3B0cy5jYW5Pd24pO31lbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyhkYXRhKSl7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmJ5dGVMZW5ndGgsdW5kZWZpbmVkLG9wdHMuY2FuT3duKTt9ZWxzZSB7dGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBkYXRhIHR5cGUiKX1GUy5jbG9zZShzdHJlYW0pO30sY3dkOigpPT5GUy5jdXJyZW50UGF0aCxjaGRpcjpwYXRoPT57dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzp0cnVlfSk7aWYobG9va3VwLm5vZGU9PT1udWxsKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig0NCl9aWYoIUZTLmlzRGlyKGxvb2t1cC5ub2RlLm1vZGUpKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig1NCl9dmFyIGVyckNvZGU9RlMubm9kZVBlcm1pc3Npb25zKGxvb2t1cC5ub2RlLCJ4Iik7aWYoZXJyQ29kZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoZXJyQ29kZSl9RlMuY3VycmVudFBhdGg9bG9va3VwLnBhdGg7fSxjcmVhdGVEZWZhdWx0RGlyZWN0b3JpZXM6KCk9PntGUy5ta2RpcigiL3RtcCIpO0ZTLm1rZGlyKCIvaG9tZSIpO0ZTLm1rZGlyKCIvaG9tZS93ZWJfdXNlciIpO30sY3JlYXRlRGVmYXVsdERldmljZXM6KCk9PntGUy5ta2RpcigiL2RldiIpO0ZTLnJlZ2lzdGVyRGV2aWNlKEZTLm1ha2VkZXYoMSwzKSx7cmVhZDooKT0+MCx3cml0ZTooc3RyZWFtLGJ1ZmZlcixvZmZzZXQsbGVuZ3RoLHBvcyk9Pmxlbmd0aH0pO0ZTLm1rZGV2KCIvZGV2L251bGwiLEZTLm1ha2VkZXYoMSwzKSk7VFRZLnJlZ2lzdGVyKEZTLm1ha2VkZXYoNSwwKSxUVFkuZGVmYXVsdF90dHlfb3BzKTtUVFkucmVnaXN0ZXIoRlMubWFrZWRldig2LDApLFRUWS5kZWZhdWx0X3R0eTFfb3BzKTtGUy5ta2RldigiL2Rldi90dHkiLEZTLm1ha2VkZXYoNSwwKSk7RlMubWtkZXYoIi9kZXYvdHR5MSIsRlMubWFrZWRldig2LDApKTt2YXIgcmFuZG9tX2RldmljZT1nZXRSYW5kb21EZXZpY2UoKTtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJyYW5kb20iLHJhbmRvbV9kZXZpY2UpO0ZTLmNyZWF0ZURldmljZSgiL2RldiIsInVyYW5kb20iLHJhbmRvbV9kZXZpY2UpO0ZTLm1rZGlyKCIvZGV2L3NobSIpO0ZTLm1rZGlyKCIvZGV2L3NobS90bXAiKTt9LGNyZWF0ZVNwZWNpYWxEaXJlY3RvcmllczooKT0+e0ZTLm1rZGlyKCIvcHJvYyIpO3ZhciBwcm9jX3NlbGY9RlMubWtkaXIoIi9wcm9jL3NlbGYiKTtGUy5ta2RpcigiL3Byb2Mvc2VsZi9mZCIpO0ZTLm1vdW50KHttb3VudDooKT0+e3ZhciBub2RlPUZTLmNyZWF0ZU5vZGUocHJvY19zZWxmLCJmZCIsMTYzODR8NTExLDczKTtub2RlLm5vZGVfb3BzPXtsb29rdXA6KHBhcmVudCxuYW1lKT0+e3ZhciBmZD0rbmFtZTt2YXIgc3RyZWFtPUZTLmdldFN0cmVhbShmZCk7aWYoIXN0cmVhbSl0aHJvdyBuZXcgRlMuRXJybm9FcnJvcig4KTt2YXIgcmV0PXtwYXJlbnQ6bnVsbCxtb3VudDp7bW91bnRwb2ludDoiZmFrZSJ9LG5vZGVfb3BzOntyZWFkbGluazooKT0+c3RyZWFtLnBhdGh9fTtyZXQucGFyZW50PXJldDtyZXR1cm4gcmV0fX07cmV0dXJuIG5vZGV9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpO30sY3JlYXRlU3RhbmRhcmRTdHJlYW1zOigpPT57aWYoTW9kdWxlWyJzdGRpbiJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRpbiIsTW9kdWxlWyJzdGRpbiJdKTt9ZWxzZSB7RlMuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZGluIik7fWlmKE1vZHVsZVsic3Rkb3V0Il0pe0ZTLmNyZWF0ZURldmljZSgiL2RldiIsInN0ZG91dCIsbnVsbCxNb2R1bGVbInN0ZG91dCJdKTt9ZWxzZSB7RlMuc3ltbGluaygiL2Rldi90dHkiLCIvZGV2L3N0ZG91dCIpO31pZihNb2R1bGVbInN0ZGVyciJdKXtGUy5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsTW9kdWxlWyJzdGRlcnIiXSk7fWVsc2Uge0ZTLnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIik7fUZTLm9wZW4oIi9kZXYvc3RkaW4iLDApO0ZTLm9wZW4oIi9kZXYvc3Rkb3V0IiwxKTtGUy5vcGVuKCIvZGV2L3N0ZGVyciIsMSk7fSxlbnN1cmVFcnJub0Vycm9yOigpPT57aWYoRlMuRXJybm9FcnJvcilyZXR1cm47RlMuRXJybm9FcnJvcj1mdW5jdGlvbiBFcnJub0Vycm9yKGVycm5vLG5vZGUpe3RoaXMubm9kZT1ub2RlO3RoaXMuc2V0RXJybm89ZnVuY3Rpb24oZXJybm8pe3RoaXMuZXJybm89ZXJybm87fTt0aGlzLnNldEVycm5vKGVycm5vKTt0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIjt9O0ZTLkVycm5vRXJyb3IucHJvdG90eXBlPW5ldyBFcnJvcjtGUy5FcnJub0Vycm9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1GUy5FcnJub0Vycm9yO1s0NF0uZm9yRWFjaChjb2RlPT57RlMuZ2VuZXJpY0Vycm9yc1tjb2RlXT1uZXcgRlMuRXJybm9FcnJvcihjb2RlKTtGUy5nZW5lcmljRXJyb3JzW2NvZGVdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+Ijt9KTt9LHN0YXRpY0luaXQ6KCk9PntGUy5lbnN1cmVFcnJub0Vycm9yKCk7RlMubmFtZVRhYmxlPW5ldyBBcnJheSg0MDk2KTtGUy5tb3VudChNRU1GUyx7fSwiLyIpO0ZTLmNyZWF0ZURlZmF1bHREaXJlY3RvcmllcygpO0ZTLmNyZWF0ZURlZmF1bHREZXZpY2VzKCk7RlMuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCk7RlMuZmlsZXN5c3RlbXM9eyJNRU1GUyI6TUVNRlN9O30saW5pdDooaW5wdXQsb3V0cHV0LGVycm9yKT0+e0ZTLmluaXQuaW5pdGlhbGl6ZWQ9dHJ1ZTtGUy5lbnN1cmVFcnJub0Vycm9yKCk7TW9kdWxlWyJzdGRpbiJdPWlucHV0fHxNb2R1bGVbInN0ZGluIl07TW9kdWxlWyJzdGRvdXQiXT1vdXRwdXR8fE1vZHVsZVsic3Rkb3V0Il07TW9kdWxlWyJzdGRlcnIiXT1lcnJvcnx8TW9kdWxlWyJzdGRlcnIiXTtGUy5jcmVhdGVTdGFuZGFyZFN0cmVhbXMoKTt9LHF1aXQ6KCk9PntGUy5pbml0LmluaXRpYWxpemVkPWZhbHNlO2Zvcih2YXIgaT0wO2k8RlMuc3RyZWFtcy5sZW5ndGg7aSsrKXt2YXIgc3RyZWFtPUZTLnN0cmVhbXNbaV07aWYoIXN0cmVhbSl7Y29udGludWV9RlMuY2xvc2Uoc3RyZWFtKTt9fSxnZXRNb2RlOihjYW5SZWFkLGNhbldyaXRlKT0+e3ZhciBtb2RlPTA7aWYoY2FuUmVhZCltb2RlfD0yOTJ8NzM7aWYoY2FuV3JpdGUpbW9kZXw9MTQ2O3JldHVybiBtb2RlfSxmaW5kT2JqZWN0OihwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspPT57dmFyIHJldD1GUy5hbmFseXplUGF0aChwYXRoLGRvbnRSZXNvbHZlTGFzdExpbmspO2lmKCFyZXQuZXhpc3RzKXtyZXR1cm4gbnVsbH1yZXR1cm4gcmV0Lm9iamVjdH0sYW5hbHl6ZVBhdGg6KHBhdGgsZG9udFJlc29sdmVMYXN0TGluayk9Pnt0cnl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse2ZvbGxvdzohZG9udFJlc29sdmVMYXN0TGlua30pO3BhdGg9bG9va3VwLnBhdGg7fWNhdGNoKGUpe312YXIgcmV0PXtpc1Jvb3Q6ZmFsc2UsZXhpc3RzOmZhbHNlLGVycm9yOjAsbmFtZTpudWxsLHBhdGg6bnVsbCxvYmplY3Q6bnVsbCxwYXJlbnRFeGlzdHM6ZmFsc2UscGFyZW50UGF0aDpudWxsLHBhcmVudE9iamVjdDpudWxsfTt0cnl7dmFyIGxvb2t1cD1GUy5sb29rdXBQYXRoKHBhdGgse3BhcmVudDp0cnVlfSk7cmV0LnBhcmVudEV4aXN0cz10cnVlO3JldC5wYXJlbnRQYXRoPWxvb2t1cC5wYXRoO3JldC5wYXJlbnRPYmplY3Q9bG9va3VwLm5vZGU7cmV0Lm5hbWU9UEFUSC5iYXNlbmFtZShwYXRoKTtsb29rdXA9RlMubG9va3VwUGF0aChwYXRoLHtmb2xsb3c6IWRvbnRSZXNvbHZlTGFzdExpbmt9KTtyZXQuZXhpc3RzPXRydWU7cmV0LnBhdGg9bG9va3VwLnBhdGg7cmV0Lm9iamVjdD1sb29rdXAubm9kZTtyZXQubmFtZT1sb29rdXAubm9kZS5uYW1lO3JldC5pc1Jvb3Q9bG9va3VwLnBhdGg9PT0iLyI7fWNhdGNoKGUpe3JldC5lcnJvcj1lLmVycm5vO31yZXR1cm4gcmV0fSxjcmVhdGVQYXRoOihwYXJlbnQscGF0aCxjYW5SZWFkLGNhbldyaXRlKT0+e3BhcmVudD10eXBlb2YgcGFyZW50PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpO3ZhciBwYXJ0cz1wYXRoLnNwbGl0KCIvIikucmV2ZXJzZSgpO3doaWxlKHBhcnRzLmxlbmd0aCl7dmFyIHBhcnQ9cGFydHMucG9wKCk7aWYoIXBhcnQpY29udGludWU7dmFyIGN1cnJlbnQ9UEFUSC5qb2luMihwYXJlbnQscGFydCk7dHJ5e0ZTLm1rZGlyKGN1cnJlbnQpO31jYXRjaChlKXt9cGFyZW50PWN1cnJlbnQ7fXJldHVybiBjdXJyZW50fSxjcmVhdGVGaWxlOihwYXJlbnQsbmFtZSxwcm9wZXJ0aWVzLGNhblJlYWQsY2FuV3JpdGUpPT57dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpO3ZhciBtb2RlPUZTLmdldE1vZGUoY2FuUmVhZCxjYW5Xcml0ZSk7cmV0dXJuIEZTLmNyZWF0ZShwYXRoLG1vZGUpfSxjcmVhdGVEYXRhRmlsZToocGFyZW50LG5hbWUsZGF0YSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bik9Pnt2YXIgcGF0aD1uYW1lO2lmKHBhcmVudCl7cGFyZW50PXR5cGVvZiBwYXJlbnQ9PSJzdHJpbmciP3BhcmVudDpGUy5nZXRQYXRoKHBhcmVudCk7cGF0aD1uYW1lP1BBVEguam9pbjIocGFyZW50LG5hbWUpOnBhcmVudDt9dmFyIG1vZGU9RlMuZ2V0TW9kZShjYW5SZWFkLGNhbldyaXRlKTt2YXIgbm9kZT1GUy5jcmVhdGUocGF0aCxtb2RlKTtpZihkYXRhKXtpZih0eXBlb2YgZGF0YT09InN0cmluZyIpe3ZhciBhcnI9bmV3IEFycmF5KGRhdGEubGVuZ3RoKTtmb3IodmFyIGk9MCxsZW49ZGF0YS5sZW5ndGg7aTxsZW47KytpKWFycltpXT1kYXRhLmNoYXJDb2RlQXQoaSk7ZGF0YT1hcnI7fUZTLmNobW9kKG5vZGUsbW9kZXwxNDYpO3ZhciBzdHJlYW09RlMub3Blbihub2RlLDU3Nyk7RlMud3JpdGUoc3RyZWFtLGRhdGEsMCxkYXRhLmxlbmd0aCwwLGNhbk93bik7RlMuY2xvc2Uoc3RyZWFtKTtGUy5jaG1vZChub2RlLG1vZGUpO31yZXR1cm4gbm9kZX0sY3JlYXRlRGV2aWNlOihwYXJlbnQsbmFtZSxpbnB1dCxvdXRwdXQpPT57dmFyIHBhdGg9UEFUSC5qb2luMih0eXBlb2YgcGFyZW50PT0ic3RyaW5nIj9wYXJlbnQ6RlMuZ2V0UGF0aChwYXJlbnQpLG5hbWUpO3ZhciBtb2RlPUZTLmdldE1vZGUoISFpbnB1dCwhIW91dHB1dCk7aWYoIUZTLmNyZWF0ZURldmljZS5tYWpvcilGUy5jcmVhdGVEZXZpY2UubWFqb3I9NjQ7dmFyIGRldj1GUy5tYWtlZGV2KEZTLmNyZWF0ZURldmljZS5tYWpvcisrLDApO0ZTLnJlZ2lzdGVyRGV2aWNlKGRldix7b3BlbjpzdHJlYW09PntzdHJlYW0uc2Vla2FibGU9ZmFsc2U7fSxjbG9zZTpzdHJlYW09PntpZihvdXRwdXQmJm91dHB1dC5idWZmZXImJm91dHB1dC5idWZmZXIubGVuZ3RoKXtvdXRwdXQoMTApO319LHJlYWQ6KHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3MpPT57dmFyIGJ5dGVzUmVhZD0wO2Zvcih2YXIgaT0wO2k8bGVuZ3RoO2krKyl7dmFyIHJlc3VsdDt0cnl7cmVzdWx0PWlucHV0KCk7fWNhdGNoKGUpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDI5KX1pZihyZXN1bHQ9PT11bmRlZmluZWQmJmJ5dGVzUmVhZD09PTApe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDYpfWlmKHJlc3VsdD09PW51bGx8fHJlc3VsdD09PXVuZGVmaW5lZClicmVhaztieXRlc1JlYWQrKztidWZmZXJbb2Zmc2V0K2ldPXJlc3VsdDt9aWYoYnl0ZXNSZWFkKXtzdHJlYW0ubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKTt9cmV0dXJuIGJ5dGVzUmVhZH0sd3JpdGU6KHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3MpPT57Zm9yKHZhciBpPTA7aTxsZW5ndGg7aSsrKXt0cnl7b3V0cHV0KGJ1ZmZlcltvZmZzZXQraV0pO31jYXRjaChlKXt0aHJvdyBuZXcgRlMuRXJybm9FcnJvcigyOSl9fWlmKGxlbmd0aCl7c3RyZWFtLm5vZGUudGltZXN0YW1wPURhdGUubm93KCk7fXJldHVybiBpfX0pO3JldHVybiBGUy5ta2RldihwYXRoLG1vZGUsZGV2KX0sZm9yY2VMb2FkRmlsZTpvYmo9PntpZihvYmouaXNEZXZpY2V8fG9iai5pc0ZvbGRlcnx8b2JqLmxpbmt8fG9iai5jb250ZW50cylyZXR1cm4gdHJ1ZTtpZih0eXBlb2YgWE1MSHR0cFJlcXVlc3QhPSJ1bmRlZmluZWQiKXt0aHJvdyBuZXcgRXJyb3IoIkxhenkgbG9hZGluZyBzaG91bGQgaGF2ZSBiZWVuIHBlcmZvcm1lZCAoY29udGVudHMgc2V0KSBpbiBjcmVhdGVMYXp5RmlsZSwgYnV0IGl0IHdhcyBub3QuIExhenkgbG9hZGluZyBvbmx5IHdvcmtzIGluIHdlYiB3b3JrZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2Mgb24gdGhlIG1haW4gdGhyZWFkLiIpfWVsc2UgaWYocmVhZF8pe3RyeXtvYmouY29udGVudHM9aW50QXJyYXlGcm9tU3RyaW5nKHJlYWRfKG9iai51cmwpLHRydWUpO29iai51c2VkQnl0ZXM9b2JqLmNvbnRlbnRzLmxlbmd0aDt9Y2F0Y2goZSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoMjkpfX1lbHNlIHt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBsb2FkIHdpdGhvdXQgcmVhZCgpIG9yIFhNTEh0dHBSZXF1ZXN0LiIpfX0sY3JlYXRlTGF6eUZpbGU6KHBhcmVudCxuYW1lLHVybCxjYW5SZWFkLGNhbldyaXRlKT0+e2Z1bmN0aW9uIExhenlVaW50OEFycmF5KCl7dGhpcy5sZW5ndGhLbm93bj1mYWxzZTt0aGlzLmNodW5rcz1bXTt9TGF6eVVpbnQ4QXJyYXkucHJvdG90eXBlLmdldD1mdW5jdGlvbiBMYXp5VWludDhBcnJheV9nZXQoaWR4KXtpZihpZHg+dGhpcy5sZW5ndGgtMXx8aWR4PDApe3JldHVybiB1bmRlZmluZWR9dmFyIGNodW5rT2Zmc2V0PWlkeCV0aGlzLmNodW5rU2l6ZTt2YXIgY2h1bmtOdW09aWR4L3RoaXMuY2h1bmtTaXplfDA7cmV0dXJuIHRoaXMuZ2V0dGVyKGNodW5rTnVtKVtjaHVua09mZnNldF19O0xhenlVaW50OEFycmF5LnByb3RvdHlwZS5zZXREYXRhR2V0dGVyPWZ1bmN0aW9uIExhenlVaW50OEFycmF5X3NldERhdGFHZXR0ZXIoZ2V0dGVyKXt0aGlzLmdldHRlcj1nZXR0ZXI7fTtMYXp5VWludDhBcnJheS5wcm90b3R5cGUuY2FjaGVMZW5ndGg9ZnVuY3Rpb24gTGF6eVVpbnQ4QXJyYXlfY2FjaGVMZW5ndGgoKXt2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt4aHIub3BlbigiSEVBRCIsdXJsLGZhbHNlKTt4aHIuc2VuZChudWxsKTtpZighKHhoci5zdGF0dXM+PTIwMCYmeGhyLnN0YXR1czwzMDB8fHhoci5zdGF0dXM9PT0zMDQpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiK3VybCsiLiBTdGF0dXM6ICIreGhyLnN0YXR1cyk7dmFyIGRhdGFsZW5ndGg9TnVtYmVyKHhoci5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1sZW5ndGgiKSk7dmFyIGhlYWRlcjt2YXIgaGFzQnl0ZVNlcnZpbmc9KGhlYWRlcj14aHIuZ2V0UmVzcG9uc2VIZWFkZXIoIkFjY2VwdC1SYW5nZXMiKSkmJmhlYWRlcj09PSJieXRlcyI7dmFyIHVzZXNHemlwPShoZWFkZXI9eGhyLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LUVuY29kaW5nIikpJiZoZWFkZXI9PT0iZ3ppcCI7dmFyIGNodW5rU2l6ZT0xMDI0KjEwMjQ7aWYoIWhhc0J5dGVTZXJ2aW5nKWNodW5rU2l6ZT1kYXRhbGVuZ3RoO3ZhciBkb1hIUj0oZnJvbSx0byk9PntpZihmcm9tPnRvKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCByYW5nZSAoIitmcm9tKyIsICIrdG8rIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkISIpO2lmKHRvPmRhdGFsZW5ndGgtMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIitkYXRhbGVuZ3RoKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciB4aHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3hoci5vcGVuKCJHRVQiLHVybCxmYWxzZSk7aWYoZGF0YWxlbmd0aCE9PWNodW5rU2l6ZSl4aHIuc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2Zyb20rIi0iK3RvKTt4aHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7aWYoeGhyLm92ZXJyaWRlTWltZVR5cGUpe3hoci5vdmVycmlkZU1pbWVUeXBlKCJ0ZXh0L3BsYWluOyBjaGFyc2V0PXgtdXNlci1kZWZpbmVkIik7fXhoci5zZW5kKG51bGwpO2lmKCEoeGhyLnN0YXR1cz49MjAwJiZ4aHIuc3RhdHVzPDMwMHx8eGhyLnN0YXR1cz09PTMwNCkpdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBsb2FkICIrdXJsKyIuIFN0YXR1czogIit4aHIuc3RhdHVzKTtpZih4aHIucmVzcG9uc2UhPT11bmRlZmluZWQpe3JldHVybiBuZXcgVWludDhBcnJheSh4aHIucmVzcG9uc2V8fFtdKX1yZXR1cm4gaW50QXJyYXlGcm9tU3RyaW5nKHhoci5yZXNwb25zZVRleHR8fCIiLHRydWUpfTt2YXIgbGF6eUFycmF5PXRoaXM7bGF6eUFycmF5LnNldERhdGFHZXR0ZXIoY2h1bmtOdW09Pnt2YXIgc3RhcnQ9Y2h1bmtOdW0qY2h1bmtTaXplO3ZhciBlbmQ9KGNodW5rTnVtKzEpKmNodW5rU2l6ZS0xO2VuZD1NYXRoLm1pbihlbmQsZGF0YWxlbmd0aC0xKTtpZih0eXBlb2YgbGF6eUFycmF5LmNodW5rc1tjaHVua051bV09PSJ1bmRlZmluZWQiKXtsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXT1kb1hIUihzdGFydCxlbmQpO31pZih0eXBlb2YgbGF6eUFycmF5LmNodW5rc1tjaHVua051bV09PSJ1bmRlZmluZWQiKXRocm93IG5ldyBFcnJvcigiZG9YSFIgZmFpbGVkISIpO3JldHVybiBsYXp5QXJyYXkuY2h1bmtzW2NodW5rTnVtXX0pO2lmKHVzZXNHemlwfHwhZGF0YWxlbmd0aCl7Y2h1bmtTaXplPWRhdGFsZW5ndGg9MTtkYXRhbGVuZ3RoPXRoaXMuZ2V0dGVyKDApLmxlbmd0aDtjaHVua1NpemU9ZGF0YWxlbmd0aDtvdXQoIkxhenlGaWxlcyBvbiBnemlwIGZvcmNlcyBkb3dubG9hZCBvZiB0aGUgd2hvbGUgZmlsZSB3aGVuIGxlbmd0aCBpcyBhY2Nlc3NlZCIpO310aGlzLl9sZW5ndGg9ZGF0YWxlbmd0aDt0aGlzLl9jaHVua1NpemU9Y2h1bmtTaXplO3RoaXMubGVuZ3RoS25vd249dHJ1ZTt9O2lmKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCE9InVuZGVmaW5lZCIpe2lmKCFFTlZJUk9OTUVOVF9JU19XT1JLRVIpdGhyb3cgIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciBsYXp5QXJyYXk9bmV3IExhenlVaW50OEFycmF5O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGxhenlBcnJheSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5sZW5ndGhLbm93bil7dGhpcy5jYWNoZUxlbmd0aCgpO31yZXR1cm4gdGhpcy5fbGVuZ3RofX0sY2h1bmtTaXplOntnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5sZW5ndGhLbm93bil7dGhpcy5jYWNoZUxlbmd0aCgpO31yZXR1cm4gdGhpcy5fY2h1bmtTaXplfX19KTt2YXIgcHJvcGVydGllcz17aXNEZXZpY2U6ZmFsc2UsY29udGVudHM6bGF6eUFycmF5fTt9ZWxzZSB7dmFyIHByb3BlcnRpZXM9e2lzRGV2aWNlOmZhbHNlLHVybDp1cmx9O312YXIgbm9kZT1GUy5jcmVhdGVGaWxlKHBhcmVudCxuYW1lLHByb3BlcnRpZXMsY2FuUmVhZCxjYW5Xcml0ZSk7aWYocHJvcGVydGllcy5jb250ZW50cyl7bm9kZS5jb250ZW50cz1wcm9wZXJ0aWVzLmNvbnRlbnRzO31lbHNlIGlmKHByb3BlcnRpZXMudXJsKXtub2RlLmNvbnRlbnRzPW51bGw7bm9kZS51cmw9cHJvcGVydGllcy51cmw7fU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG5vZGUse3VzZWRCeXRlczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudHMubGVuZ3RofX19KTt2YXIgc3RyZWFtX29wcz17fTt2YXIga2V5cz1PYmplY3Qua2V5cyhub2RlLnN0cmVhbV9vcHMpO2tleXMuZm9yRWFjaChrZXk9Pnt2YXIgZm49bm9kZS5zdHJlYW1fb3BzW2tleV07c3RyZWFtX29wc1trZXldPWZ1bmN0aW9uIGZvcmNlTG9hZExhenlGaWxlKCl7RlMuZm9yY2VMb2FkRmlsZShub2RlKTtyZXR1cm4gZm4uYXBwbHkobnVsbCxhcmd1bWVudHMpfTt9KTtmdW5jdGlvbiB3cml0ZUNodW5rcyhzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pe3ZhciBjb250ZW50cz1zdHJlYW0ubm9kZS5jb250ZW50cztpZihwb3NpdGlvbj49Y29udGVudHMubGVuZ3RoKXJldHVybiAwO3ZhciBzaXplPU1hdGgubWluKGNvbnRlbnRzLmxlbmd0aC1wb3NpdGlvbixsZW5ndGgpO2lmKGNvbnRlbnRzLnNsaWNlKXtmb3IodmFyIGk9MDtpPHNpemU7aSsrKXtidWZmZXJbb2Zmc2V0K2ldPWNvbnRlbnRzW3Bvc2l0aW9uK2ldO319ZWxzZSB7Zm9yKHZhciBpPTA7aTxzaXplO2krKyl7YnVmZmVyW29mZnNldCtpXT1jb250ZW50cy5nZXQocG9zaXRpb24raSk7fX1yZXR1cm4gc2l6ZX1zdHJlYW1fb3BzLnJlYWQ9KHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbmd0aCxwb3NpdGlvbik9PntGUy5mb3JjZUxvYWRGaWxlKG5vZGUpO3JldHVybiB3cml0ZUNodW5rcyhzdHJlYW0sYnVmZmVyLG9mZnNldCxsZW5ndGgscG9zaXRpb24pfTtzdHJlYW1fb3BzLm1tYXA9KHN0cmVhbSxsZW5ndGgscG9zaXRpb24scHJvdCxmbGFncyk9PntGUy5mb3JjZUxvYWRGaWxlKG5vZGUpO3ZhciBwdHI9bW1hcEFsbG9jKGxlbmd0aCk7aWYoIXB0cil7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDgpfXdyaXRlQ2h1bmtzKHN0cmVhbSxIRUFQOCxwdHIsbGVuZ3RoLHBvc2l0aW9uKTtyZXR1cm4ge3B0cjpwdHIsYWxsb2NhdGVkOnRydWV9fTtub2RlLnN0cmVhbV9vcHM9c3RyZWFtX29wcztyZXR1cm4gbm9kZX0sY3JlYXRlUHJlbG9hZGVkRmlsZToocGFyZW50LG5hbWUsdXJsLGNhblJlYWQsY2FuV3JpdGUsb25sb2FkLG9uZXJyb3IsZG9udENyZWF0ZUZpbGUsY2FuT3duLHByZUZpbmlzaCk9Pnt2YXIgZnVsbG5hbWU9bmFtZT9QQVRIX0ZTLnJlc29sdmUoUEFUSC5qb2luMihwYXJlbnQsbmFtZSkpOnBhcmVudDtmdW5jdGlvbiBwcm9jZXNzRGF0YShieXRlQXJyYXkpe2Z1bmN0aW9uIGZpbmlzaChieXRlQXJyYXkpe2lmKHByZUZpbmlzaClwcmVGaW5pc2goKTtpZighZG9udENyZWF0ZUZpbGUpe0ZTLmNyZWF0ZURhdGFGaWxlKHBhcmVudCxuYW1lLGJ5dGVBcnJheSxjYW5SZWFkLGNhbldyaXRlLGNhbk93bik7fWlmKG9ubG9hZClvbmxvYWQoKTtyZW1vdmVSdW5EZXBlbmRlbmN5KCk7fWlmKEJyb3dzZXIuaGFuZGxlZEJ5UHJlbG9hZFBsdWdpbihieXRlQXJyYXksZnVsbG5hbWUsZmluaXNoLCgpPT57aWYob25lcnJvcilvbmVycm9yKCk7cmVtb3ZlUnVuRGVwZW5kZW5jeSgpO30pKXtyZXR1cm59ZmluaXNoKGJ5dGVBcnJheSk7fWFkZFJ1bkRlcGVuZGVuY3koKTtpZih0eXBlb2YgdXJsPT0ic3RyaW5nIil7YXN5bmNMb2FkKHVybCxieXRlQXJyYXk9PnByb2Nlc3NEYXRhKGJ5dGVBcnJheSksb25lcnJvcik7fWVsc2Uge3Byb2Nlc3NEYXRhKHVybCk7fX0saW5kZXhlZERCOigpPT57cmV0dXJuIHdpbmRvdy5pbmRleGVkREJ8fHdpbmRvdy5tb3pJbmRleGVkREJ8fHdpbmRvdy53ZWJraXRJbmRleGVkREJ8fHdpbmRvdy5tc0luZGV4ZWREQn0sREJfTkFNRTooKT0+e3JldHVybiAiRU1fRlNfIit3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9LERCX1ZFUlNJT046MjAsREJfU1RPUkVfTkFNRToiRklMRV9EQVRBIixzYXZlRmlsZXNUb0RCOihwYXRocyxvbmxvYWQsb25lcnJvcik9PntvbmxvYWQ9b25sb2FkfHwoKCk9Pnt9KTtvbmVycm9yPW9uZXJyb3J8fCgoKT0+e30pO3ZhciBpbmRleGVkREI9RlMuaW5kZXhlZERCKCk7dHJ5e3ZhciBvcGVuUmVxdWVzdD1pbmRleGVkREIub3BlbihGUy5EQl9OQU1FKCksRlMuREJfVkVSU0lPTik7fWNhdGNoKGUpe3JldHVybiBvbmVycm9yKGUpfW9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZD0oKT0+e291dCgiY3JlYXRpbmcgZGIiKTt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O2RiLmNyZWF0ZU9iamVjdFN0b3JlKEZTLkRCX1NUT1JFX05BTUUpO307b3BlblJlcXVlc3Qub25zdWNjZXNzPSgpPT57dmFyIGRiPW9wZW5SZXF1ZXN0LnJlc3VsdDt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkd3JpdGUiKTt2YXIgZmlsZXM9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSk7dmFyIG9rPTAsZmFpbD0wLHRvdGFsPXBhdGhzLmxlbmd0aDtmdW5jdGlvbiBmaW5pc2goKXtpZihmYWlsPT0wKW9ubG9hZCgpO2Vsc2Ugb25lcnJvcigpO31wYXRocy5mb3JFYWNoKHBhdGg9Pnt2YXIgcHV0UmVxdWVzdD1maWxlcy5wdXQoRlMuYW5hbHl6ZVBhdGgocGF0aCkub2JqZWN0LmNvbnRlbnRzLHBhdGgpO3B1dFJlcXVlc3Qub25zdWNjZXNzPSgpPT57b2srKztpZihvaytmYWlsPT10b3RhbClmaW5pc2goKTt9O3B1dFJlcXVlc3Qub25lcnJvcj0oKT0+e2ZhaWwrKztpZihvaytmYWlsPT10b3RhbClmaW5pc2goKTt9O30pO3RyYW5zYWN0aW9uLm9uZXJyb3I9b25lcnJvcjt9O29wZW5SZXF1ZXN0Lm9uZXJyb3I9b25lcnJvcjt9LGxvYWRGaWxlc0Zyb21EQjoocGF0aHMsb25sb2FkLG9uZXJyb3IpPT57b25sb2FkPW9ubG9hZHx8KCgpPT57fSk7b25lcnJvcj1vbmVycm9yfHwoKCk9Pnt9KTt2YXIgaW5kZXhlZERCPUZTLmluZGV4ZWREQigpO3RyeXt2YXIgb3BlblJlcXVlc3Q9aW5kZXhlZERCLm9wZW4oRlMuREJfTkFNRSgpLEZTLkRCX1ZFUlNJT04pO31jYXRjaChlKXtyZXR1cm4gb25lcnJvcihlKX1vcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQ9b25lcnJvcjtvcGVuUmVxdWVzdC5vbnN1Y2Nlc3M9KCk9Pnt2YXIgZGI9b3BlblJlcXVlc3QucmVzdWx0O3RyeXt2YXIgdHJhbnNhY3Rpb249ZGIudHJhbnNhY3Rpb24oW0ZTLkRCX1NUT1JFX05BTUVdLCJyZWFkb25seSIpO31jYXRjaChlKXtvbmVycm9yKGUpO3JldHVybn12YXIgZmlsZXM9dHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoRlMuREJfU1RPUkVfTkFNRSk7dmFyIG9rPTAsZmFpbD0wLHRvdGFsPXBhdGhzLmxlbmd0aDtmdW5jdGlvbiBmaW5pc2goKXtpZihmYWlsPT0wKW9ubG9hZCgpO2Vsc2Ugb25lcnJvcigpO31wYXRocy5mb3JFYWNoKHBhdGg9Pnt2YXIgZ2V0UmVxdWVzdD1maWxlcy5nZXQocGF0aCk7Z2V0UmVxdWVzdC5vbnN1Y2Nlc3M9KCk9PntpZihGUy5hbmFseXplUGF0aChwYXRoKS5leGlzdHMpe0ZTLnVubGluayhwYXRoKTt9RlMuY3JlYXRlRGF0YUZpbGUoUEFUSC5kaXJuYW1lKHBhdGgpLFBBVEguYmFzZW5hbWUocGF0aCksZ2V0UmVxdWVzdC5yZXN1bHQsdHJ1ZSx0cnVlLHRydWUpO29rKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCk7fTtnZXRSZXF1ZXN0Lm9uZXJyb3I9KCk9PntmYWlsKys7aWYob2srZmFpbD09dG90YWwpZmluaXNoKCk7fTt9KTt0cmFuc2FjdGlvbi5vbmVycm9yPW9uZXJyb3I7fTtvcGVuUmVxdWVzdC5vbmVycm9yPW9uZXJyb3I7fX07dmFyIFNZU0NBTExTPXtERUZBVUxUX1BPTExNQVNLOjUsY2FsY3VsYXRlQXQ6ZnVuY3Rpb24oZGlyZmQscGF0aCxhbGxvd0VtcHR5KXtpZihQQVRILmlzQWJzKHBhdGgpKXtyZXR1cm4gcGF0aH12YXIgZGlyO2lmKGRpcmZkPT09LTEwMCl7ZGlyPUZTLmN3ZCgpO31lbHNlIHt2YXIgZGlyc3RyZWFtPVNZU0NBTExTLmdldFN0cmVhbUZyb21GRChkaXJmZCk7ZGlyPWRpcnN0cmVhbS5wYXRoO31pZihwYXRoLmxlbmd0aD09MCl7aWYoIWFsbG93RW1wdHkpe3Rocm93IG5ldyBGUy5FcnJub0Vycm9yKDQ0KX1yZXR1cm4gZGlyfXJldHVybiBQQVRILmpvaW4yKGRpcixwYXRoKX0sZG9TdGF0OmZ1bmN0aW9uKGZ1bmMscGF0aCxidWYpe3RyeXt2YXIgc3RhdD1mdW5jKHBhdGgpO31jYXRjaChlKXtpZihlJiZlLm5vZGUmJlBBVEgubm9ybWFsaXplKHBhdGgpIT09UEFUSC5ub3JtYWxpemUoRlMuZ2V0UGF0aChlLm5vZGUpKSl7cmV0dXJuIC01NH10aHJvdyBlfUhFQVAzMltidWY+PjJdPXN0YXQuZGV2O0hFQVAzMltidWYrOD4+Ml09c3RhdC5pbm87SEVBUDMyW2J1ZisxMj4+Ml09c3RhdC5tb2RlO0hFQVBVMzJbYnVmKzE2Pj4yXT1zdGF0Lm5saW5rO0hFQVAzMltidWYrMjA+PjJdPXN0YXQudWlkO0hFQVAzMltidWYrMjQ+PjJdPXN0YXQuZ2lkO0hFQVAzMltidWYrMjg+PjJdPXN0YXQucmRldjt0ZW1wSTY0PVtzdGF0LnNpemU+Pj4wLCh0ZW1wRG91YmxlPXN0YXQuc2l6ZSwrTWF0aC5hYnModGVtcERvdWJsZSk+PTE/dGVtcERvdWJsZT4wPyhNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpfDApPj4+MDp+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUtKyh+fnRlbXBEb3VibGU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbYnVmKzQwPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltidWYrNDQ+PjJdPXRlbXBJNjRbMV07SEVBUDMyW2J1Zis0OD4+Ml09NDA5NjtIRUFQMzJbYnVmKzUyPj4yXT1zdGF0LmJsb2Nrczt0ZW1wSTY0PVtNYXRoLmZsb29yKHN0YXQuYXRpbWUuZ2V0VGltZSgpLzFlMyk+Pj4wLCh0ZW1wRG91YmxlPU1hdGguZmxvb3Ioc3RhdC5hdGltZS5nZXRUaW1lKCkvMWUzKSwrTWF0aC5hYnModGVtcERvdWJsZSk+PTE/dGVtcERvdWJsZT4wPyhNYXRoLm1pbigrTWF0aC5mbG9vcih0ZW1wRG91YmxlLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpfDApPj4+MDp+fitNYXRoLmNlaWwoKHRlbXBEb3VibGUtKyh+fnRlbXBEb3VibGU+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxIRUFQMzJbYnVmKzU2Pj4yXT10ZW1wSTY0WzBdLEhFQVAzMltidWYrNjA+PjJdPXRlbXBJNjRbMV07SEVBUFUzMltidWYrNjQ+PjJdPTA7dGVtcEk2ND1bTWF0aC5mbG9vcihzdGF0Lm10aW1lLmdldFRpbWUoKS8xZTMpPj4+MCwodGVtcERvdWJsZT1NYXRoLmZsb29yKHN0YXQubXRpbWUuZ2V0VGltZSgpLzFlMyksK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2J1Zis3Mj4+Ml09dGVtcEk2NFswXSxIRUFQMzJbYnVmKzc2Pj4yXT10ZW1wSTY0WzFdO0hFQVBVMzJbYnVmKzgwPj4yXT0wO3RlbXBJNjQ9W01hdGguZmxvb3Ioc3RhdC5jdGltZS5nZXRUaW1lKCkvMWUzKT4+PjAsKHRlbXBEb3VibGU9TWF0aC5mbG9vcihzdGF0LmN0aW1lLmdldFRpbWUoKS8xZTMpLCtNYXRoLmFicyh0ZW1wRG91YmxlKT49MT90ZW1wRG91YmxlPjA/KE1hdGgubWluKCtNYXRoLmZsb29yKHRlbXBEb3VibGUvNDI5NDk2NzI5NiksNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K01hdGguY2VpbCgodGVtcERvdWJsZS0rKH5+dGVtcERvdWJsZT4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLEhFQVAzMltidWYrODg+PjJdPXRlbXBJNjRbMF0sSEVBUDMyW2J1Zis5Mj4+Ml09dGVtcEk2NFsxXTtIRUFQVTMyW2J1Zis5Nj4+Ml09MDt0ZW1wSTY0PVtzdGF0Lmlubz4+PjAsKHRlbXBEb3VibGU9c3RhdC5pbm8sK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2J1ZisxMDQ+PjJdPXRlbXBJNjRbMF0sSEVBUDMyW2J1ZisxMDg+PjJdPXRlbXBJNjRbMV07cmV0dXJuIDB9LGRvTXN5bmM6ZnVuY3Rpb24oYWRkcixzdHJlYW0sbGVuLGZsYWdzLG9mZnNldCl7aWYoIUZTLmlzRmlsZShzdHJlYW0ubm9kZS5tb2RlKSl7dGhyb3cgbmV3IEZTLkVycm5vRXJyb3IoNDMpfWlmKGZsYWdzJjIpe3JldHVybiAwfXZhciBidWZmZXI9SEVBUFU4LnNsaWNlKGFkZHIsYWRkcitsZW4pO0ZTLm1zeW5jKHN0cmVhbSxidWZmZXIsb2Zmc2V0LGxlbixmbGFncyk7fSx2YXJhcmdzOnVuZGVmaW5lZCxnZXQ6ZnVuY3Rpb24oKXtTWVNDQUxMUy52YXJhcmdzKz00O3ZhciByZXQ9SEVBUDMyW1NZU0NBTExTLnZhcmFyZ3MtND4+Ml07cmV0dXJuIHJldH0sZ2V0U3RyOmZ1bmN0aW9uKHB0cil7dmFyIHJldD1VVEY4VG9TdHJpbmcocHRyKTtyZXR1cm4gcmV0fSxnZXRTdHJlYW1Gcm9tRkQ6ZnVuY3Rpb24oZmQpe3ZhciBzdHJlYW09RlMuZ2V0U3RyZWFtKGZkKTtpZighc3RyZWFtKXRocm93IG5ldyBGUy5FcnJub0Vycm9yKDgpO3JldHVybiBzdHJlYW19fTtmdW5jdGlvbiBfcHJvY19leGl0KGNvZGUpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDEsMSxjb2RlKTtFWElUU1RBVFVTPWNvZGU7aWYoIWtlZXBSdW50aW1lQWxpdmUoKSl7UFRocmVhZC50ZXJtaW5hdGVBbGxUaHJlYWRzKCk7aWYoTW9kdWxlWyJvbkV4aXQiXSlNb2R1bGVbIm9uRXhpdCJdKGNvZGUpO0FCT1JUPXRydWU7fXF1aXRfKGNvZGUsbmV3IEV4aXRTdGF0dXMoY29kZSkpO31mdW5jdGlvbiBleGl0SlMoc3RhdHVzLGltcGxpY2l0KXtFWElUU1RBVFVTPXN0YXR1cztpZighaW1wbGljaXQpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe2V4aXRPbk1haW5UaHJlYWQoc3RhdHVzKTt0aHJvdyAidW53aW5kIn19X3Byb2NfZXhpdChzdGF0dXMpO312YXIgX2V4aXQ9ZXhpdEpTO2Z1bmN0aW9uIGhhbmRsZUV4Y2VwdGlvbihlKXtpZihlIGluc3RhbmNlb2YgRXhpdFN0YXR1c3x8ZT09InVud2luZCIpe3JldHVybiBFWElUU1RBVFVTfXF1aXRfKDEsZSk7fXZhciBQVGhyZWFkPXt1bnVzZWRXb3JrZXJzOltdLHJ1bm5pbmdXb3JrZXJzOltdLHRsc0luaXRGdW5jdGlvbnM6W10scHRocmVhZHM6e30saW5pdDpmdW5jdGlvbigpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe1BUaHJlYWQuaW5pdFdvcmtlcigpO31lbHNlIHtQVGhyZWFkLmluaXRNYWluVGhyZWFkKCk7fX0saW5pdE1haW5UaHJlYWQ6ZnVuY3Rpb24oKXt9LGluaXRXb3JrZXI6ZnVuY3Rpb24oKXtub0V4aXRSdW50aW1lPWZhbHNlO30sc2V0RXhpdFN0YXR1czpmdW5jdGlvbihzdGF0dXMpe0VYSVRTVEFUVVM9c3RhdHVzO30sdGVybWluYXRlQWxsVGhyZWFkczpmdW5jdGlvbigpe2Zvcih2YXIgd29ya2VyIG9mIE9iamVjdC52YWx1ZXMoUFRocmVhZC5wdGhyZWFkcykpe1BUaHJlYWQucmV0dXJuV29ya2VyVG9Qb29sKHdvcmtlcik7fWZvcih2YXIgd29ya2VyIG9mIFBUaHJlYWQudW51c2VkV29ya2Vycyl7d29ya2VyLnRlcm1pbmF0ZSgpO31QVGhyZWFkLnVudXNlZFdvcmtlcnM9W107fSxyZXR1cm5Xb3JrZXJUb1Bvb2w6ZnVuY3Rpb24od29ya2VyKXt2YXIgcHRocmVhZF9wdHI9d29ya2VyLnB0aHJlYWRfcHRyO2RlbGV0ZSBQVGhyZWFkLnB0aHJlYWRzW3B0aHJlYWRfcHRyXTtQVGhyZWFkLnVudXNlZFdvcmtlcnMucHVzaCh3b3JrZXIpO1BUaHJlYWQucnVubmluZ1dvcmtlcnMuc3BsaWNlKFBUaHJlYWQucnVubmluZ1dvcmtlcnMuaW5kZXhPZih3b3JrZXIpLDEpO3dvcmtlci5wdGhyZWFkX3B0cj0wO19fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhKHB0aHJlYWRfcHRyKTt9LHJlY2VpdmVPYmplY3RUcmFuc2ZlcjpmdW5jdGlvbihkYXRhKXt9LHRocmVhZEluaXRUTFM6ZnVuY3Rpb24oKXtQVGhyZWFkLnRsc0luaXRGdW5jdGlvbnMuZm9yRWFjaChmPT5mKCkpO30sbG9hZFdhc21Nb2R1bGVUb1dvcmtlcjpmdW5jdGlvbih3b3JrZXIsb25GaW5pc2hlZExvYWRpbmcpe3dvcmtlci5vbm1lc3NhZ2U9ZT0+e3ZhciBkPWVbImRhdGEiXTt2YXIgY21kPWRbImNtZCJdO2lmKHdvcmtlci5wdGhyZWFkX3B0cilQVGhyZWFkLmN1cnJlbnRQcm94aWVkT3BlcmF0aW9uQ2FsbGVyVGhyZWFkPXdvcmtlci5wdGhyZWFkX3B0cjtpZihkWyJ0YXJnZXRUaHJlYWQiXSYmZFsidGFyZ2V0VGhyZWFkIl0hPV9wdGhyZWFkX3NlbGYoKSl7dmFyIHRhcmdldFdvcmtlcj1QVGhyZWFkLnB0aHJlYWRzW2QudGFyZ2V0VGhyZWFkXTtpZih0YXJnZXRXb3JrZXIpe3RhcmdldFdvcmtlci5wb3N0TWVzc2FnZShkLGRbInRyYW5zZmVyTGlzdCJdKTt9ZWxzZSB7ZXJyKCdJbnRlcm5hbCBlcnJvciEgV29ya2VyIHNlbnQgYSBtZXNzYWdlICInK2NtZCsnIiB0byB0YXJnZXQgcHRocmVhZCAnK2RbInRhcmdldFRocmVhZCJdKyIsIGJ1dCB0aGF0IHRocmVhZCBubyBsb25nZXIgZXhpc3RzISIpO31QVGhyZWFkLmN1cnJlbnRQcm94aWVkT3BlcmF0aW9uQ2FsbGVyVGhyZWFkPXVuZGVmaW5lZDtyZXR1cm59aWYoY21kPT09InByb2Nlc3NQcm94eWluZ1F1ZXVlIil7ZXhlY3V0ZU5vdGlmaWVkUHJveHlpbmdRdWV1ZShkWyJxdWV1ZSJdKTt9ZWxzZSBpZihjbWQ9PT0ic3Bhd25UaHJlYWQiKXtzcGF3blRocmVhZChkKTt9ZWxzZSBpZihjbWQ9PT0iY2xlYW51cFRocmVhZCIpe2NsZWFudXBUaHJlYWQoZFsidGhyZWFkIl0pO31lbHNlIGlmKGNtZD09PSJraWxsVGhyZWFkIil7a2lsbFRocmVhZChkWyJ0aHJlYWQiXSk7fWVsc2UgaWYoY21kPT09ImNhbmNlbFRocmVhZCIpe2NhbmNlbFRocmVhZChkWyJ0aHJlYWQiXSk7fWVsc2UgaWYoY21kPT09ImxvYWRlZCIpe3dvcmtlci5sb2FkZWQ9dHJ1ZTtpZihvbkZpbmlzaGVkTG9hZGluZylvbkZpbmlzaGVkTG9hZGluZyh3b3JrZXIpO2lmKHdvcmtlci5ydW5QdGhyZWFkKXt3b3JrZXIucnVuUHRocmVhZCgpO2RlbGV0ZSB3b3JrZXIucnVuUHRocmVhZDt9fWVsc2UgaWYoY21kPT09InByaW50Iil7b3V0KCJUaHJlYWQgIitkWyJ0aHJlYWRJZCJdKyI6ICIrZFsidGV4dCJdKTt9ZWxzZSBpZihjbWQ9PT0icHJpbnRFcnIiKXtlcnIoIlRocmVhZCAiK2RbInRocmVhZElkIl0rIjogIitkWyJ0ZXh0Il0pO31lbHNlIGlmKGNtZD09PSJhbGVydCIpe2FsZXJ0KCJUaHJlYWQgIitkWyJ0aHJlYWRJZCJdKyI6ICIrZFsidGV4dCJdKTt9ZWxzZSBpZihkLnRhcmdldD09PSJzZXRpbW1lZGlhdGUiKXt3b3JrZXIucG9zdE1lc3NhZ2UoZCk7fWVsc2UgaWYoY21kPT09ImNhbGxIYW5kbGVyIil7TW9kdWxlW2RbImhhbmRsZXIiXV0oLi4uZFsiYXJncyJdKTt9ZWxzZSBpZihjbWQpe2Vycigid29ya2VyIHNlbnQgYW4gdW5rbm93biBjb21tYW5kICIrY21kKTt9UFRocmVhZC5jdXJyZW50UHJveGllZE9wZXJhdGlvbkNhbGxlclRocmVhZD11bmRlZmluZWQ7fTt3b3JrZXIub25lcnJvcj1lPT57dmFyIG1lc3NhZ2U9IndvcmtlciBzZW50IGFuIGVycm9yISI7ZXJyKG1lc3NhZ2UrIiAiK2UuZmlsZW5hbWUrIjoiK2UubGluZW5vKyI6ICIrZS5tZXNzYWdlKTt0aHJvdyBlfTtpZihFTlZJUk9OTUVOVF9JU19OT0RFKXt3b3JrZXIub24oIm1lc3NhZ2UiLGZ1bmN0aW9uKGRhdGEpe3dvcmtlci5vbm1lc3NhZ2Uoe2RhdGE6ZGF0YX0pO30pO3dvcmtlci5vbigiZXJyb3IiLGZ1bmN0aW9uKGUpe3dvcmtlci5vbmVycm9yKGUpO30pO3dvcmtlci5vbigiZGV0YWNoZWRFeGl0IixmdW5jdGlvbigpe30pO312YXIgaGFuZGxlcnM9W107dmFyIGtub3duSGFuZGxlcnM9WyJvbkV4aXQiLCJvbkFib3J0IiwicHJpbnQiLCJwcmludEVyciJdO2Zvcih2YXIgaGFuZGxlciBvZiBrbm93bkhhbmRsZXJzKXtpZihNb2R1bGUuaGFzT3duUHJvcGVydHkoaGFuZGxlcikpe2hhbmRsZXJzLnB1c2goaGFuZGxlcik7fX13b3JrZXIucG9zdE1lc3NhZ2UoeyJjbWQiOiJsb2FkIiwiaGFuZGxlcnMiOmhhbmRsZXJzLCJ1cmxPckJsb2IiOk1vZHVsZVsibWFpblNjcmlwdFVybE9yQmxvYiJdLCJ3YXNtTWVtb3J5Ijp3YXNtTWVtb3J5LCJ3YXNtTW9kdWxlIjp3YXNtTW9kdWxlfSk7fSxhbGxvY2F0ZVVudXNlZFdvcmtlcjpmdW5jdGlvbigpe2lmKCFNb2R1bGVbImxvY2F0ZUZpbGUiXSl7UFRocmVhZC51bnVzZWRXb3JrZXJzLnB1c2gobmV3IFdvcmtlcihuZXcgVVJMKCJseXJhLndvcmtlci5qcyIsKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJyA/IG5ldyAocmVxdWlyZSgndScgKyAncmwnKS5VUkwpKCdmaWxlOicgKyBfX2ZpbGVuYW1lKS5ocmVmIDogdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IGxvY2F0aW9uLmhyZWYgOiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdCAmJiBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyB8fCBuZXcgVVJMKCdseXJhX3N5bmNfd29ya2VyLmpzJywgZG9jdW1lbnQuYmFzZVVSSSkuaHJlZikpKSkpO3JldHVybn12YXIgcHRocmVhZE1haW5Kcz1sb2NhdGVGaWxlKCJseXJhLndvcmtlci5qcyIpO1BUaHJlYWQudW51c2VkV29ya2Vycy5wdXNoKG5ldyBXb3JrZXIocHRocmVhZE1haW5KcykpO30sZ2V0TmV3V29ya2VyOmZ1bmN0aW9uKCl7aWYoUFRocmVhZC51bnVzZWRXb3JrZXJzLmxlbmd0aD09MCl7UFRocmVhZC5hbGxvY2F0ZVVudXNlZFdvcmtlcigpO1BUaHJlYWQubG9hZFdhc21Nb2R1bGVUb1dvcmtlcihQVGhyZWFkLnVudXNlZFdvcmtlcnNbMF0pO31yZXR1cm4gUFRocmVhZC51bnVzZWRXb3JrZXJzLnBvcCgpfX07TW9kdWxlWyJQVGhyZWFkIl09UFRocmVhZDtmdW5jdGlvbiBjYWxsUnVudGltZUNhbGxiYWNrcyhjYWxsYmFja3Mpe3doaWxlKGNhbGxiYWNrcy5sZW5ndGg+MCl7Y2FsbGJhY2tzLnNoaWZ0KCkoTW9kdWxlKTt9fWZ1bmN0aW9uIGVzdGFibGlzaFN0YWNrU3BhY2UoKXt2YXIgcHRocmVhZF9wdHI9X3B0aHJlYWRfc2VsZigpO3ZhciBzdGFja1RvcD1IRUFQMzJbcHRocmVhZF9wdHIrNTI+PjJdO3ZhciBzdGFja1NpemU9SEVBUDMyW3B0aHJlYWRfcHRyKzU2Pj4yXTt2YXIgc3RhY2tNYXg9c3RhY2tUb3Atc3RhY2tTaXplO19lbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHMoc3RhY2tUb3Asc3RhY2tNYXgpO3N0YWNrUmVzdG9yZShzdGFja1RvcCk7fU1vZHVsZVsiZXN0YWJsaXNoU3RhY2tTcGFjZSJdPWVzdGFibGlzaFN0YWNrU3BhY2U7ZnVuY3Rpb24gZXhpdE9uTWFpblRocmVhZChyZXR1cm5Db2RlKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygyLDAscmV0dXJuQ29kZSk7dHJ5e19leGl0KHJldHVybkNvZGUpO31jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSk7fX12YXIgd2FzbVRhYmxlTWlycm9yPVtdO2Z1bmN0aW9uIGdldFdhc21UYWJsZUVudHJ5KGZ1bmNQdHIpe3ZhciBmdW5jPXdhc21UYWJsZU1pcnJvcltmdW5jUHRyXTtpZighZnVuYyl7aWYoZnVuY1B0cj49d2FzbVRhYmxlTWlycm9yLmxlbmd0aCl3YXNtVGFibGVNaXJyb3IubGVuZ3RoPWZ1bmNQdHIrMTt3YXNtVGFibGVNaXJyb3JbZnVuY1B0cl09ZnVuYz13YXNtVGFibGUuZ2V0KGZ1bmNQdHIpO31yZXR1cm4gZnVuY31mdW5jdGlvbiBpbnZva2VFbnRyeVBvaW50KHB0cixhcmcpe3ZhciByZXN1bHQ9Z2V0V2FzbVRhYmxlRW50cnkocHRyKShhcmcpO2lmKGtlZXBSdW50aW1lQWxpdmUoKSl7UFRocmVhZC5zZXRFeGl0U3RhdHVzKHJlc3VsdCk7fWVsc2Uge19fZW1zY3JpcHRlbl90aHJlYWRfZXhpdChyZXN1bHQpO319TW9kdWxlWyJpbnZva2VFbnRyeVBvaW50Il09aW52b2tlRW50cnlQb2ludDtmdW5jdGlvbiByZWdpc3RlclRMU0luaXQodGxzSW5pdEZ1bmMpe1BUaHJlYWQudGxzSW5pdEZ1bmN0aW9ucy5wdXNoKHRsc0luaXRGdW5jKTt9ZnVuY3Rpb24gdHJhdmVyc2VTdGFjayhhcmdzKXtpZighYXJnc3x8IWFyZ3MuY2FsbGVlfHwhYXJncy5jYWxsZWUubmFtZSl7cmV0dXJuIFtudWxsLCIiLCIiXX1hcmdzLmNhbGxlZS50b1N0cmluZygpO3ZhciBmdW5jbmFtZT1hcmdzLmNhbGxlZS5uYW1lO3ZhciBzdHI9IigiO3ZhciBmaXJzdD10cnVlO2Zvcih2YXIgaSBpbiBhcmdzKXt2YXIgYT1hcmdzW2ldO2lmKCFmaXJzdCl7c3RyKz0iLCAiO31maXJzdD1mYWxzZTtpZih0eXBlb2YgYT09Im51bWJlciJ8fHR5cGVvZiBhPT0ic3RyaW5nIil7c3RyKz1hO31lbHNlIHtzdHIrPSIoIit0eXBlb2YgYSsiKSI7fX1zdHIrPSIpIjt2YXIgY2FsbGVyPWFyZ3MuY2FsbGVlLmNhbGxlcjthcmdzPWNhbGxlcj9jYWxsZXIuYXJndW1lbnRzOltdO2lmKGZpcnN0KXN0cj0iIjtyZXR1cm4gW2FyZ3MsZnVuY25hbWUsc3RyXX1mdW5jdGlvbiBqc1N0YWNrVHJhY2UoKXt2YXIgZXJyb3I9bmV3IEVycm9yO2lmKCFlcnJvci5zdGFjayl7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChlKXtlcnJvcj1lO31pZighZXJyb3Iuc3RhY2spe3JldHVybiAiKG5vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSkifX1yZXR1cm4gZXJyb3Iuc3RhY2sudG9TdHJpbmcoKX1mdW5jdGlvbiB3YXJuT25jZSh0ZXh0KXtpZighd2Fybk9uY2Uuc2hvd24pd2Fybk9uY2Uuc2hvd249e307aWYoIXdhcm5PbmNlLnNob3duW3RleHRdKXt3YXJuT25jZS5zaG93blt0ZXh0XT0xO2lmKEVOVklST05NRU5UX0lTX05PREUpdGV4dD0id2FybmluZzogIit0ZXh0O2Vycih0ZXh0KTt9fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX2dldF9jYWxsc3RhY2tfanMoZmxhZ3Mpe3ZhciBjYWxsc3RhY2s9anNTdGFja1RyYWNlKCk7dmFyIGlUaGlzRnVuYz1jYWxsc3RhY2subGFzdEluZGV4T2YoIl9lbXNjcmlwdGVuX2xvZyIpO3ZhciBpVGhpc0Z1bmMyPWNhbGxzdGFjay5sYXN0SW5kZXhPZigiX2Vtc2NyaXB0ZW5fZ2V0X2NhbGxzdGFjayIpO3ZhciBpTmV4dExpbmU9Y2FsbHN0YWNrLmluZGV4T2YoIlxuIixNYXRoLm1heChpVGhpc0Z1bmMsaVRoaXNGdW5jMikpKzE7Y2FsbHN0YWNrPWNhbGxzdGFjay5zbGljZShpTmV4dExpbmUpO2lmKGZsYWdzJjMyKXt3YXJuT25jZSgiRU1fTE9HX0RFTUFOR0xFIGlzIGRlcHJlY2F0ZWQ7IGlnbm9yaW5nIik7fWlmKGZsYWdzJjgmJnR5cGVvZiBlbXNjcmlwdGVuX3NvdXJjZV9tYXA9PSJ1bmRlZmluZWQiKXt3YXJuT25jZSgnU291cmNlIG1hcCBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBlbXNjcmlwdGVuX2xvZyB3aXRoIEVNX0xPR19DX1NUQUNLIHdpbGwgYmUgaWdub3JlZC4gQnVpbGQgd2l0aCAiLS1wcmUtanMgJEVNU0NSSVBURU4vc3JjL2Vtc2NyaXB0ZW4tc291cmNlLW1hcC5taW4uanMiIGxpbmtlciBmbGFnIHRvIGFkZCBzb3VyY2UgbWFwIGxvYWRpbmcgdG8gY29kZS4nKTtmbGFnc149ODtmbGFnc3w9MTY7fXZhciBzdGFja19hcmdzPW51bGw7aWYoZmxhZ3MmMTI4KXtzdGFja19hcmdzPXRyYXZlcnNlU3RhY2soYXJndW1lbnRzKTt3aGlsZShzdGFja19hcmdzWzFdLmluY2x1ZGVzKCJfZW1zY3JpcHRlbl8iKSlzdGFja19hcmdzPXRyYXZlcnNlU3RhY2soc3RhY2tfYXJnc1swXSk7fXZhciBsaW5lcz1jYWxsc3RhY2suc3BsaXQoIlxuIik7Y2FsbHN0YWNrPSIiO3ZhciBuZXdGaXJlZm94UmU9bmV3IFJlZ0V4cCgiXFxzKiguKj8pQCguKj8pOihbMC05XSspOihbMC05XSspIik7dmFyIGZpcmVmb3hSZT1uZXcgUmVnRXhwKCJcXHMqKC4qPylAKC4qKTooLiopKDooLiopKT8iKTt2YXIgY2hyb21lUmU9bmV3IFJlZ0V4cCgiXFxzKmF0ICguKj8pIFxcKCguKik6KC4qKTooLiopXFwpIik7Zm9yKHZhciBsIGluIGxpbmVzKXt2YXIgbGluZT1saW5lc1tsXTt2YXIgc3ltYm9sTmFtZT0iIjt2YXIgZmlsZT0iIjt2YXIgbGluZW5vPTA7dmFyIGNvbHVtbj0wO3ZhciBwYXJ0cz1jaHJvbWVSZS5leGVjKGxpbmUpO2lmKHBhcnRzJiZwYXJ0cy5sZW5ndGg9PTUpe3N5bWJvbE5hbWU9cGFydHNbMV07ZmlsZT1wYXJ0c1syXTtsaW5lbm89cGFydHNbM107Y29sdW1uPXBhcnRzWzRdO31lbHNlIHtwYXJ0cz1uZXdGaXJlZm94UmUuZXhlYyhsaW5lKTtpZighcGFydHMpcGFydHM9ZmlyZWZveFJlLmV4ZWMobGluZSk7aWYocGFydHMmJnBhcnRzLmxlbmd0aD49NCl7c3ltYm9sTmFtZT1wYXJ0c1sxXTtmaWxlPXBhcnRzWzJdO2xpbmVubz1wYXJ0c1szXTtjb2x1bW49cGFydHNbNF18MDt9ZWxzZSB7Y2FsbHN0YWNrKz1saW5lKyJcbiI7Y29udGludWV9fXZhciBoYXZlU291cmNlTWFwPWZhbHNlO2lmKGZsYWdzJjgpe3ZhciBvcmlnPWVtc2NyaXB0ZW5fc291cmNlX21hcC5vcmlnaW5hbFBvc2l0aW9uRm9yKHtsaW5lOmxpbmVubyxjb2x1bW46Y29sdW1ufSk7aGF2ZVNvdXJjZU1hcD1vcmlnJiZvcmlnLnNvdXJjZTtpZihoYXZlU291cmNlTWFwKXtpZihmbGFncyY2NCl7b3JpZy5zb3VyY2U9b3JpZy5zb3VyY2Uuc3Vic3RyaW5nKG9yaWcuc291cmNlLnJlcGxhY2UoL1xcL2csIi8iKS5sYXN0SW5kZXhPZigiLyIpKzEpO31jYWxsc3RhY2srPSIgICAgYXQgIitzeW1ib2xOYW1lKyIgKCIrb3JpZy5zb3VyY2UrIjoiK29yaWcubGluZSsiOiIrb3JpZy5jb2x1bW4rIilcbiI7fX1pZihmbGFncyYxNnx8IWhhdmVTb3VyY2VNYXApe2lmKGZsYWdzJjY0KXtmaWxlPWZpbGUuc3Vic3RyaW5nKGZpbGUucmVwbGFjZSgvXFwvZywiLyIpLmxhc3RJbmRleE9mKCIvIikrMSk7fWNhbGxzdGFjays9KGhhdmVTb3VyY2VNYXA/IiAgICAgPSAiK3N5bWJvbE5hbWU6IiAgICBhdCAiK3N5bWJvbE5hbWUpKyIgKCIrZmlsZSsiOiIrbGluZW5vKyI6Iitjb2x1bW4rIilcbiI7fWlmKGZsYWdzJjEyOCYmc3RhY2tfYXJnc1swXSl7aWYoc3RhY2tfYXJnc1sxXT09c3ltYm9sTmFtZSYmc3RhY2tfYXJnc1syXS5sZW5ndGg+MCl7Y2FsbHN0YWNrPWNhbGxzdGFjay5yZXBsYWNlKC9ccyskLywiIik7Y2FsbHN0YWNrKz0iIHdpdGggdmFsdWVzOiAiK3N0YWNrX2FyZ3NbMV0rc3RhY2tfYXJnc1syXSsiXG4iO31zdGFja19hcmdzPXRyYXZlcnNlU3RhY2soc3RhY2tfYXJnc1swXSk7fX1jYWxsc3RhY2s9Y2FsbHN0YWNrLnJlcGxhY2UoL1xzKyQvLCIiKTtyZXR1cm4gY2FsbHN0YWNrfWZ1bmN0aW9uIF9fVW53aW5kX0JhY2t0cmFjZShmdW5jLGFyZyl7dmFyIHRyYWNlPV9lbXNjcmlwdGVuX2dldF9jYWxsc3RhY2tfanMoKTt2YXIgcGFydHM9dHJhY2Uuc3BsaXQoIlxuIik7Zm9yKHZhciBpPTA7aTxwYXJ0cy5sZW5ndGg7aSsrKXt2YXIgcmV0PWdldFdhc21UYWJsZUVudHJ5KGZ1bmMpKDAsYXJnKTtpZihyZXQhPT0wKXJldHVybn19ZnVuY3Rpb24gX19VbndpbmRfR2V0SVAoKXtlcnIoIm1pc3NpbmcgZnVuY3Rpb246IF9VbndpbmRfR2V0SVAiKTthYm9ydCgtMSk7fWZ1bmN0aW9uIF9fX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qcyh0Yil7X19lbXNjcmlwdGVuX3RocmVhZF9pbml0KHRiLCFFTlZJUk9OTUVOVF9JU19XT1JLRVIsMSwhRU5WSVJPTk1FTlRfSVNfV0VCKTtQVGhyZWFkLnRocmVhZEluaXRUTFMoKTt9ZnVuY3Rpb24gX19fZW1zY3JpcHRlbl90aHJlYWRfY2xlYW51cCh0aHJlYWQpe2lmKCFFTlZJUk9OTUVOVF9JU19QVEhSRUFEKWNsZWFudXBUaHJlYWQodGhyZWFkKTtlbHNlIHBvc3RNZXNzYWdlKHsiY21kIjoiY2xlYW51cFRocmVhZCIsInRocmVhZCI6dGhyZWFkfSk7fWZ1bmN0aW9uIHB0aHJlYWRDcmVhdGVQcm94aWVkKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoMywxLHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyk7cmV0dXJuIF9fX3B0aHJlYWRfY3JlYXRlX2pzKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl9ZnVuY3Rpb24gX19fcHRocmVhZF9jcmVhdGVfanMocHRocmVhZF9wdHIsYXR0cixzdGFydFJvdXRpbmUsYXJnKXtpZih0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXI9PSJ1bmRlZmluZWQiKXtlcnIoIkN1cnJlbnQgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBTaGFyZWRBcnJheUJ1ZmZlciwgcHRocmVhZHMgYXJlIG5vdCBhdmFpbGFibGUhIik7cmV0dXJuIDZ9dmFyIHRyYW5zZmVyTGlzdD1bXTt2YXIgZXJyb3I9MDtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEJiYodHJhbnNmZXJMaXN0Lmxlbmd0aD09PTB8fGVycm9yKSl7cmV0dXJuIHB0aHJlYWRDcmVhdGVQcm94aWVkKHB0aHJlYWRfcHRyLGF0dHIsc3RhcnRSb3V0aW5lLGFyZyl9dmFyIHRocmVhZFBhcmFtcz17c3RhcnRSb3V0aW5lOnN0YXJ0Um91dGluZSxwdGhyZWFkX3B0cjpwdGhyZWFkX3B0cixhcmc6YXJnLHRyYW5zZmVyTGlzdDp0cmFuc2Zlckxpc3R9O2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe3RocmVhZFBhcmFtcy5jbWQ9InNwYXduVGhyZWFkIjtwb3N0TWVzc2FnZSh0aHJlYWRQYXJhbXMsdHJhbnNmZXJMaXN0KTtyZXR1cm4gMH1yZXR1cm4gc3Bhd25UaHJlYWQodGhyZWFkUGFyYW1zKX1mdW5jdGlvbiBzZXRFcnJObyh2YWx1ZSl7SEVBUDMyW19fX2Vycm5vX2xvY2F0aW9uKCk+PjJdPXZhbHVlO3JldHVybiB2YWx1ZX1mdW5jdGlvbiBfX19zeXNjYWxsX2ZjbnRsNjQoZmQsY21kLHZhcmFyZ3Mpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDQsMSxmZCxjbWQsdmFyYXJncyk7U1lTQ0FMTFMudmFyYXJncz12YXJhcmdzO3RyeXt2YXIgc3RyZWFtPVNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7c3dpdGNoKGNtZCl7Y2FzZSAwOnt2YXIgYXJnPVNZU0NBTExTLmdldCgpO2lmKGFyZzwwKXtyZXR1cm4gLTI4fXZhciBuZXdTdHJlYW07bmV3U3RyZWFtPUZTLmNyZWF0ZVN0cmVhbShzdHJlYW0sYXJnKTtyZXR1cm4gbmV3U3RyZWFtLmZkfWNhc2UgMTpjYXNlIDI6cmV0dXJuIDA7Y2FzZSAzOnJldHVybiBzdHJlYW0uZmxhZ3M7Y2FzZSA0Ont2YXIgYXJnPVNZU0NBTExTLmdldCgpO3N0cmVhbS5mbGFnc3w9YXJnO3JldHVybiAwfWNhc2UgNTp7dmFyIGFyZz1TWVNDQUxMUy5nZXQoKTt2YXIgb2Zmc2V0PTA7SEVBUDE2W2FyZytvZmZzZXQ+PjFdPTI7cmV0dXJuIDB9Y2FzZSA2OmNhc2UgNzpyZXR1cm4gMDtjYXNlIDE2OmNhc2UgODpyZXR1cm4gLTI4O2Nhc2UgOTpzZXRFcnJObygyOCk7cmV0dXJuIC0xO2RlZmF1bHQ6e3JldHVybiAtMjh9fX1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19fc3lzY2FsbF9mc3RhdDY0KGZkLGJ1Zil7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoNSwxLGZkLGJ1Zik7dHJ5e3ZhciBzdHJlYW09U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTtyZXR1cm4gU1lTQ0FMTFMuZG9TdGF0KEZTLnN0YXQsc3RyZWFtLnBhdGgsYnVmKX1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19fc3lzY2FsbF9nZXRkZW50czY0KGZkLGRpcnAsY291bnQpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDYsMSxmZCxkaXJwLGNvdW50KTt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO2lmKCFzdHJlYW0uZ2V0ZGVudHMpe3N0cmVhbS5nZXRkZW50cz1GUy5yZWFkZGlyKHN0cmVhbS5wYXRoKTt9dmFyIHN0cnVjdF9zaXplPTI4MDt2YXIgcG9zPTA7dmFyIG9mZj1GUy5sbHNlZWsoc3RyZWFtLDAsMSk7dmFyIGlkeD1NYXRoLmZsb29yKG9mZi9zdHJ1Y3Rfc2l6ZSk7d2hpbGUoaWR4PHN0cmVhbS5nZXRkZW50cy5sZW5ndGgmJnBvcytzdHJ1Y3Rfc2l6ZTw9Y291bnQpe3ZhciBpZDt2YXIgdHlwZTt2YXIgbmFtZT1zdHJlYW0uZ2V0ZGVudHNbaWR4XTtpZihuYW1lPT09Ii4iKXtpZD1zdHJlYW0ubm9kZS5pZDt0eXBlPTQ7fWVsc2UgaWYobmFtZT09PSIuLiIpe3ZhciBsb29rdXA9RlMubG9va3VwUGF0aChzdHJlYW0ucGF0aCx7cGFyZW50OnRydWV9KTtpZD1sb29rdXAubm9kZS5pZDt0eXBlPTQ7fWVsc2Uge3ZhciBjaGlsZD1GUy5sb29rdXBOb2RlKHN0cmVhbS5ub2RlLG5hbWUpO2lkPWNoaWxkLmlkO3R5cGU9RlMuaXNDaHJkZXYoY2hpbGQubW9kZSk/MjpGUy5pc0RpcihjaGlsZC5tb2RlKT80OkZTLmlzTGluayhjaGlsZC5tb2RlKT8xMDo4O310ZW1wSTY0PVtpZD4+PjAsKHRlbXBEb3VibGU9aWQsK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2RpcnArcG9zPj4yXT10ZW1wSTY0WzBdLEhFQVAzMltkaXJwK3Bvcys0Pj4yXT10ZW1wSTY0WzFdO3RlbXBJNjQ9WyhpZHgrMSkqc3RydWN0X3NpemU+Pj4wLCh0ZW1wRG91YmxlPShpZHgrMSkqc3RydWN0X3NpemUsK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW2RpcnArcG9zKzg+PjJdPXRlbXBJNjRbMF0sSEVBUDMyW2RpcnArcG9zKzEyPj4yXT10ZW1wSTY0WzFdO0hFQVAxNltkaXJwK3BvcysxNj4+MV09MjgwO0hFQVA4W2RpcnArcG9zKzE4Pj4wXT10eXBlO3N0cmluZ1RvVVRGOChuYW1lLGRpcnArcG9zKzE5LDI1Nik7cG9zKz1zdHJ1Y3Rfc2l6ZTtpZHgrPTE7fUZTLmxsc2VlayhzdHJlYW0saWR4KnN0cnVjdF9zaXplLDApO3JldHVybiBwb3N9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfaW9jdGwoZmQsb3AsdmFyYXJncyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoNywxLGZkLG9wLHZhcmFyZ3MpO1NZU0NBTExTLnZhcmFyZ3M9dmFyYXJnczt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO3N3aXRjaChvcCl7Y2FzZSAyMTUwOTpjYXNlIDIxNTA1OntpZighc3RyZWFtLnR0eSlyZXR1cm4gLTU5O3JldHVybiAwfWNhc2UgMjE1MTA6Y2FzZSAyMTUxMTpjYXNlIDIxNTEyOmNhc2UgMjE1MDY6Y2FzZSAyMTUwNzpjYXNlIDIxNTA4OntpZighc3RyZWFtLnR0eSlyZXR1cm4gLTU5O3JldHVybiAwfWNhc2UgMjE1MTk6e2lmKCFzdHJlYW0udHR5KXJldHVybiAtNTk7dmFyIGFyZ3A9U1lTQ0FMTFMuZ2V0KCk7SEVBUDMyW2FyZ3A+PjJdPTA7cmV0dXJuIDB9Y2FzZSAyMTUyMDp7aWYoIXN0cmVhbS50dHkpcmV0dXJuIC01OTtyZXR1cm4gLTI4fWNhc2UgMjE1MzE6e3ZhciBhcmdwPVNZU0NBTExTLmdldCgpO3JldHVybiBGUy5pb2N0bChzdHJlYW0sb3AsYXJncCl9Y2FzZSAyMTUyMzp7aWYoIXN0cmVhbS50dHkpcmV0dXJuIC01OTtyZXR1cm4gMH1jYXNlIDIxNTI0OntpZighc3RyZWFtLnR0eSlyZXR1cm4gLTU5O3JldHVybiAwfWRlZmF1bHQ6cmV0dXJuIC0yOH19Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfbHN0YXQ2NChwYXRoLGJ1Zil7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoOCwxLHBhdGgsYnVmKTt0cnl7cGF0aD1TWVNDQUxMUy5nZXRTdHIocGF0aCk7cmV0dXJuIFNZU0NBTExTLmRvU3RhdChGUy5sc3RhdCxwYXRoLGJ1Zil9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfbmV3ZnN0YXRhdChkaXJmZCxwYXRoLGJ1ZixmbGFncyl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoOSwxLGRpcmZkLHBhdGgsYnVmLGZsYWdzKTt0cnl7cGF0aD1TWVNDQUxMUy5nZXRTdHIocGF0aCk7dmFyIG5vZm9sbG93PWZsYWdzJjI1Njt2YXIgYWxsb3dFbXB0eT1mbGFncyY0MDk2O2ZsYWdzPWZsYWdzJn40MzUyO3BhdGg9U1lTQ0FMTFMuY2FsY3VsYXRlQXQoZGlyZmQscGF0aCxhbGxvd0VtcHR5KTtyZXR1cm4gU1lTQ0FMTFMuZG9TdGF0KG5vZm9sbG93P0ZTLmxzdGF0OkZTLnN0YXQscGF0aCxidWYpfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIC1lLmVycm5vfX1mdW5jdGlvbiBfX19zeXNjYWxsX29wZW5hdChkaXJmZCxwYXRoLGZsYWdzLHZhcmFyZ3Mpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDEwLDEsZGlyZmQscGF0aCxmbGFncyx2YXJhcmdzKTtTWVNDQUxMUy52YXJhcmdzPXZhcmFyZ3M7dHJ5e3BhdGg9U1lTQ0FMTFMuZ2V0U3RyKHBhdGgpO3BhdGg9U1lTQ0FMTFMuY2FsY3VsYXRlQXQoZGlyZmQscGF0aCk7dmFyIG1vZGU9dmFyYXJncz9TWVNDQUxMUy5nZXQoKTowO3JldHVybiBGUy5vcGVuKHBhdGgsZmxhZ3MsbW9kZSkuZmR9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIF9fX3N5c2NhbGxfc3RhdDY0KHBhdGgsYnVmKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygxMSwxLHBhdGgsYnVmKTt0cnl7cGF0aD1TWVNDQUxMUy5nZXRTdHIocGF0aCk7cmV0dXJuIFNZU0NBTExTLmRvU3RhdChGUy5zdGF0LHBhdGgsYnVmKX1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19fc3lzY2FsbF91bmxpbmthdChkaXJmZCxwYXRoLGZsYWdzKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygxMiwxLGRpcmZkLHBhdGgsZmxhZ3MpO3RyeXtwYXRoPVNZU0NBTExTLmdldFN0cihwYXRoKTtwYXRoPVNZU0NBTExTLmNhbGN1bGF0ZUF0KGRpcmZkLHBhdGgpO2lmKGZsYWdzPT09MCl7RlMudW5saW5rKHBhdGgpO31lbHNlIGlmKGZsYWdzPT09NTEyKXtGUy5ybWRpcihwYXRoKTt9ZWxzZSB7YWJvcnQoIkludmFsaWQgZmxhZ3MgcGFzc2VkIHRvIHVubGlua2F0Iik7fXJldHVybiAwfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIC1lLmVycm5vfX1mdW5jdGlvbiBfX2RsaW5pdChtYWluX2Rzb19oYW5kbGUpe312YXIgZGxvcGVuTWlzc2luZ0Vycm9yPSJUbyB1c2UgZGxvcGVuLCB5b3UgbmVlZCBlbmFibGUgZHluYW1pYyBsaW5raW5nLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2Vtc2NyaXB0ZW4tY29yZS9lbXNjcmlwdGVuL3dpa2kvTGlua2luZyI7ZnVuY3Rpb24gX19kbG9wZW5fanMoZmlsZW5hbWUsZmxhZyl7YWJvcnQoZGxvcGVuTWlzc2luZ0Vycm9yKTt9ZnVuY3Rpb24gX19kbHN5bV9qcyhoYW5kbGUsc3ltYm9sKXthYm9ydChkbG9wZW5NaXNzaW5nRXJyb3IpO31mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9iaWdpbnQocHJpbWl0aXZlVHlwZSxuYW1lLHNpemUsbWluUmFuZ2UsbWF4UmFuZ2Upe31mdW5jdGlvbiBnZXRTaGlmdEZyb21TaXplKHNpemUpe3N3aXRjaChzaXplKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDg6cmV0dXJuIDM7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIHR5cGUgc2l6ZTogIitzaXplKX19ZnVuY3Rpb24gZW1iaW5kX2luaXRfY2hhckNvZGVzKCl7dmFyIGNvZGVzPW5ldyBBcnJheSgyNTYpO2Zvcih2YXIgaT0wO2k8MjU2OysraSl7Y29kZXNbaV09U3RyaW5nLmZyb21DaGFyQ29kZShpKTt9ZW1iaW5kX2NoYXJDb2Rlcz1jb2Rlczt9dmFyIGVtYmluZF9jaGFyQ29kZXM9dW5kZWZpbmVkO2Z1bmN0aW9uIHJlYWRMYXRpbjFTdHJpbmcocHRyKXt2YXIgcmV0PSIiO3ZhciBjPXB0cjt3aGlsZShIRUFQVThbY10pe3JldCs9ZW1iaW5kX2NoYXJDb2Rlc1tIRUFQVThbYysrXV07fXJldHVybiByZXR9dmFyIGF3YWl0aW5nRGVwZW5kZW5jaWVzPXt9O3ZhciByZWdpc3RlcmVkVHlwZXM9e307dmFyIHR5cGVEZXBlbmRlbmNpZXM9e307dmFyIGNoYXJfMD00ODt2YXIgY2hhcl85PTU3O2Z1bmN0aW9uIG1ha2VMZWdhbEZ1bmN0aW9uTmFtZShuYW1lKXtpZih1bmRlZmluZWQ9PT1uYW1lKXtyZXR1cm4gIl91bmtub3duIn1uYW1lPW5hbWUucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCIkIik7dmFyIGY9bmFtZS5jaGFyQ29kZUF0KDApO2lmKGY+PWNoYXJfMCYmZjw9Y2hhcl85KXtyZXR1cm4gIl8iK25hbWV9cmV0dXJuIG5hbWV9ZnVuY3Rpb24gY3JlYXRlTmFtZWRGdW5jdGlvbihuYW1lLGJvZHkpe25hbWU9bWFrZUxlZ2FsRnVuY3Rpb25OYW1lKG5hbWUpO3JldHVybiBuZXcgRnVuY3Rpb24oImJvZHkiLCJyZXR1cm4gZnVuY3Rpb24gIituYW1lKyIoKSB7XG4iKycgICAgInVzZSBzdHJpY3QiOycrIiAgICByZXR1cm4gYm9keS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuIisifTtcbiIpKGJvZHkpfWZ1bmN0aW9uIGV4dGVuZEVycm9yKGJhc2VFcnJvclR5cGUsZXJyb3JOYW1lKXt2YXIgZXJyb3JDbGFzcz1jcmVhdGVOYW1lZEZ1bmN0aW9uKGVycm9yTmFtZSxmdW5jdGlvbihtZXNzYWdlKXt0aGlzLm5hbWU9ZXJyb3JOYW1lO3RoaXMubWVzc2FnZT1tZXNzYWdlO3ZhciBzdGFjaz1uZXcgRXJyb3IobWVzc2FnZSkuc3RhY2s7aWYoc3RhY2shPT11bmRlZmluZWQpe3RoaXMuc3RhY2s9dGhpcy50b1N0cmluZygpKyJcbiIrc3RhY2sucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywiIik7fX0pO2Vycm9yQ2xhc3MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYmFzZUVycm9yVHlwZS5wcm90b3R5cGUpO2Vycm9yQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yPWVycm9yQ2xhc3M7ZXJyb3JDbGFzcy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLm1lc3NhZ2U9PT11bmRlZmluZWQpe3JldHVybiB0aGlzLm5hbWV9ZWxzZSB7cmV0dXJuIHRoaXMubmFtZSsiOiAiK3RoaXMubWVzc2FnZX19O3JldHVybiBlcnJvckNsYXNzfXZhciBCaW5kaW5nRXJyb3I9dW5kZWZpbmVkO2Z1bmN0aW9uIHRocm93QmluZGluZ0Vycm9yKG1lc3NhZ2Upe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IobWVzc2FnZSl9dmFyIEludGVybmFsRXJyb3I9dW5kZWZpbmVkO2Z1bmN0aW9uIHRocm93SW50ZXJuYWxFcnJvcihtZXNzYWdlKXt0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKX1mdW5jdGlvbiB3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChteVR5cGVzLGRlcGVuZGVudFR5cGVzLGdldFR5cGVDb252ZXJ0ZXJzKXtteVR5cGVzLmZvckVhY2goZnVuY3Rpb24odHlwZSl7dHlwZURlcGVuZGVuY2llc1t0eXBlXT1kZXBlbmRlbnRUeXBlczt9KTtmdW5jdGlvbiBvbkNvbXBsZXRlKHR5cGVDb252ZXJ0ZXJzKXt2YXIgbXlUeXBlQ29udmVydGVycz1nZXRUeXBlQ29udmVydGVycyh0eXBlQ29udmVydGVycyk7aWYobXlUeXBlQ29udmVydGVycy5sZW5ndGghPT1teVR5cGVzLmxlbmd0aCl7dGhyb3dJbnRlcm5hbEVycm9yKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7fWZvcih2YXIgaT0wO2k8bXlUeXBlcy5sZW5ndGg7KytpKXtyZWdpc3RlclR5cGUobXlUeXBlc1tpXSxteVR5cGVDb252ZXJ0ZXJzW2ldKTt9fXZhciB0eXBlQ29udmVydGVycz1uZXcgQXJyYXkoZGVwZW5kZW50VHlwZXMubGVuZ3RoKTt2YXIgdW5yZWdpc3RlcmVkVHlwZXM9W107dmFyIHJlZ2lzdGVyZWQ9MDtkZXBlbmRlbnRUeXBlcy5mb3JFYWNoKChkdCxpKT0+e2lmKHJlZ2lzdGVyZWRUeXBlcy5oYXNPd25Qcm9wZXJ0eShkdCkpe3R5cGVDb252ZXJ0ZXJzW2ldPXJlZ2lzdGVyZWRUeXBlc1tkdF07fWVsc2Uge3VucmVnaXN0ZXJlZFR5cGVzLnB1c2goZHQpO2lmKCFhd2FpdGluZ0RlcGVuZGVuY2llcy5oYXNPd25Qcm9wZXJ0eShkdCkpe2F3YWl0aW5nRGVwZW5kZW5jaWVzW2R0XT1bXTt9YXdhaXRpbmdEZXBlbmRlbmNpZXNbZHRdLnB1c2goKCk9Pnt0eXBlQ29udmVydGVyc1tpXT1yZWdpc3RlcmVkVHlwZXNbZHRdOysrcmVnaXN0ZXJlZDtpZihyZWdpc3RlcmVkPT09dW5yZWdpc3RlcmVkVHlwZXMubGVuZ3RoKXtvbkNvbXBsZXRlKHR5cGVDb252ZXJ0ZXJzKTt9fSk7fX0pO2lmKDA9PT11bnJlZ2lzdGVyZWRUeXBlcy5sZW5ndGgpe29uQ29tcGxldGUodHlwZUNvbnZlcnRlcnMpO319ZnVuY3Rpb24gcmVnaXN0ZXJUeXBlKHJhd1R5cGUscmVnaXN0ZXJlZEluc3RhbmNlLG9wdGlvbnM9e30pe2lmKCEoImFyZ1BhY2tBZHZhbmNlImluIHJlZ2lzdGVyZWRJbnN0YW5jZSkpe3Rocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKX12YXIgbmFtZT1yZWdpc3RlcmVkSW5zdGFuY2UubmFtZTtpZighcmF3VHlwZSl7dGhyb3dCaW5kaW5nRXJyb3IoJ3R5cGUgIicrbmFtZSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJyk7fWlmKHJlZ2lzdGVyZWRUeXBlcy5oYXNPd25Qcm9wZXJ0eShyYXdUeXBlKSl7aWYob3B0aW9ucy5pZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zKXtyZXR1cm59ZWxzZSB7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciB0eXBlICciK25hbWUrIicgdHdpY2UiKTt9fXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXT1yZWdpc3RlcmVkSW5zdGFuY2U7ZGVsZXRlIHR5cGVEZXBlbmRlbmNpZXNbcmF3VHlwZV07aWYoYXdhaXRpbmdEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocmF3VHlwZSkpe3ZhciBjYWxsYmFja3M9YXdhaXRpbmdEZXBlbmRlbmNpZXNbcmF3VHlwZV07ZGVsZXRlIGF3YWl0aW5nRGVwZW5kZW5jaWVzW3Jhd1R5cGVdO2NhbGxiYWNrcy5mb3JFYWNoKGNiPT5jYigpKTt9fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2Jvb2wocmF3VHlwZSxuYW1lLHNpemUsdHJ1ZVZhbHVlLGZhbHNlVmFsdWUpe3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOmZ1bmN0aW9uKHd0KXtyZXR1cm4gISF3dH0sInRvV2lyZVR5cGUiOmZ1bmN0aW9uKGRlc3RydWN0b3JzLG8pe3JldHVybiBvP3RydWVWYWx1ZTpmYWxzZVZhbHVlfSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpmdW5jdGlvbihwb2ludGVyKXt2YXIgaGVhcDtpZihzaXplPT09MSl7aGVhcD1IRUFQODt9ZWxzZSBpZihzaXplPT09Mil7aGVhcD1IRUFQMTY7fWVsc2UgaWYoc2l6ZT09PTQpe2hlYXA9SEVBUDMyO31lbHNlIHt0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGJvb2xlYW4gdHlwZSBzaXplOiAiK25hbWUpfXJldHVybiB0aGlzWyJmcm9tV2lyZVR5cGUiXShoZWFwW3BvaW50ZXI+PnNoaWZ0XSl9LGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSk7fWZ1bmN0aW9uIENsYXNzSGFuZGxlX2lzQWxpYXNPZihvdGhlcil7aWYoISh0aGlzIGluc3RhbmNlb2YgQ2xhc3NIYW5kbGUpKXtyZXR1cm4gZmFsc2V9aWYoIShvdGhlciBpbnN0YW5jZW9mIENsYXNzSGFuZGxlKSl7cmV0dXJuIGZhbHNlfXZhciBsZWZ0Q2xhc3M9dGhpcy4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzczt2YXIgbGVmdD10aGlzLiQkLnB0cjt2YXIgcmlnaHRDbGFzcz1vdGhlci4kJC5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzczt2YXIgcmlnaHQ9b3RoZXIuJCQucHRyO3doaWxlKGxlZnRDbGFzcy5iYXNlQ2xhc3Mpe2xlZnQ9bGVmdENsYXNzLnVwY2FzdChsZWZ0KTtsZWZ0Q2xhc3M9bGVmdENsYXNzLmJhc2VDbGFzczt9d2hpbGUocmlnaHRDbGFzcy5iYXNlQ2xhc3Mpe3JpZ2h0PXJpZ2h0Q2xhc3MudXBjYXN0KHJpZ2h0KTtyaWdodENsYXNzPXJpZ2h0Q2xhc3MuYmFzZUNsYXNzO31yZXR1cm4gbGVmdENsYXNzPT09cmlnaHRDbGFzcyYmbGVmdD09PXJpZ2h0fWZ1bmN0aW9uIHNoYWxsb3dDb3B5SW50ZXJuYWxQb2ludGVyKG8pe3JldHVybiB7Y291bnQ6by5jb3VudCxkZWxldGVTY2hlZHVsZWQ6by5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6by5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSxwdHI6by5wdHIscHRyVHlwZTpvLnB0clR5cGUsc21hcnRQdHI6by5zbWFydFB0cixzbWFydFB0clR5cGU6by5zbWFydFB0clR5cGV9fWZ1bmN0aW9uIHRocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZChvYmope2Z1bmN0aW9uIGdldEluc3RhbmNlVHlwZU5hbWUoaGFuZGxlKXtyZXR1cm4gaGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLm5hbWV9dGhyb3dCaW5kaW5nRXJyb3IoZ2V0SW5zdGFuY2VUeXBlTmFtZShvYmopKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIik7fXZhciBmaW5hbGl6YXRpb25SZWdpc3RyeT1mYWxzZTtmdW5jdGlvbiBkZXRhY2hGaW5hbGl6ZXIoaGFuZGxlKXt9ZnVuY3Rpb24gcnVuRGVzdHJ1Y3RvcigkJCl7aWYoJCQuc21hcnRQdHIpeyQkLnNtYXJ0UHRyVHlwZS5yYXdEZXN0cnVjdG9yKCQkLnNtYXJ0UHRyKTt9ZWxzZSB7JCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MucmF3RGVzdHJ1Y3RvcigkJC5wdHIpO319ZnVuY3Rpb24gcmVsZWFzZUNsYXNzSGFuZGxlKCQkKXskJC5jb3VudC52YWx1ZS09MTt2YXIgdG9EZWxldGU9MD09PSQkLmNvdW50LnZhbHVlO2lmKHRvRGVsZXRlKXtydW5EZXN0cnVjdG9yKCQkKTt9fWZ1bmN0aW9uIGRvd25jYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzKXtpZihwdHJDbGFzcz09PWRlc2lyZWRDbGFzcyl7cmV0dXJuIHB0cn1pZih1bmRlZmluZWQ9PT1kZXNpcmVkQ2xhc3MuYmFzZUNsYXNzKXtyZXR1cm4gbnVsbH12YXIgcnY9ZG93bmNhc3RQb2ludGVyKHB0cixwdHJDbGFzcyxkZXNpcmVkQ2xhc3MuYmFzZUNsYXNzKTtpZihydj09PW51bGwpe3JldHVybiBudWxsfXJldHVybiBkZXNpcmVkQ2xhc3MuZG93bmNhc3QocnYpfXZhciByZWdpc3RlcmVkUG9pbnRlcnM9e307ZnVuY3Rpb24gZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudCgpe3JldHVybiBPYmplY3Qua2V5cyhyZWdpc3RlcmVkSW5zdGFuY2VzKS5sZW5ndGh9ZnVuY3Rpb24gZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcygpe3ZhciBydj1bXTtmb3IodmFyIGsgaW4gcmVnaXN0ZXJlZEluc3RhbmNlcyl7aWYocmVnaXN0ZXJlZEluc3RhbmNlcy5oYXNPd25Qcm9wZXJ0eShrKSl7cnYucHVzaChyZWdpc3RlcmVkSW5zdGFuY2VzW2tdKTt9fXJldHVybiBydn12YXIgZGVsZXRpb25RdWV1ZT1bXTtmdW5jdGlvbiBmbHVzaFBlbmRpbmdEZWxldGVzKCl7d2hpbGUoZGVsZXRpb25RdWV1ZS5sZW5ndGgpe3ZhciBvYmo9ZGVsZXRpb25RdWV1ZS5wb3AoKTtvYmouJCQuZGVsZXRlU2NoZWR1bGVkPWZhbHNlO29ialsiZGVsZXRlIl0oKTt9fXZhciBkZWxheUZ1bmN0aW9uPXVuZGVmaW5lZDtmdW5jdGlvbiBzZXREZWxheUZ1bmN0aW9uKGZuKXtkZWxheUZ1bmN0aW9uPWZuO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoJiZkZWxheUZ1bmN0aW9uKXtkZWxheUZ1bmN0aW9uKGZsdXNoUGVuZGluZ0RlbGV0ZXMpO319ZnVuY3Rpb24gaW5pdF9lbWJpbmQoKXtNb2R1bGVbImdldEluaGVyaXRlZEluc3RhbmNlQ291bnQiXT1nZXRJbmhlcml0ZWRJbnN0YW5jZUNvdW50O01vZHVsZVsiZ2V0TGl2ZUluaGVyaXRlZEluc3RhbmNlcyJdPWdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM7TW9kdWxlWyJmbHVzaFBlbmRpbmdEZWxldGVzIl09Zmx1c2hQZW5kaW5nRGVsZXRlcztNb2R1bGVbInNldERlbGF5RnVuY3Rpb24iXT1zZXREZWxheUZ1bmN0aW9uO312YXIgcmVnaXN0ZXJlZEluc3RhbmNlcz17fTtmdW5jdGlvbiBnZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpe2lmKHB0cj09PXVuZGVmaW5lZCl7dGhyb3dCaW5kaW5nRXJyb3IoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpO313aGlsZShjbGFzc18uYmFzZUNsYXNzKXtwdHI9Y2xhc3NfLnVwY2FzdChwdHIpO2NsYXNzXz1jbGFzc18uYmFzZUNsYXNzO31yZXR1cm4gcHRyfWZ1bmN0aW9uIGdldEluaGVyaXRlZEluc3RhbmNlKGNsYXNzXyxwdHIpe3B0cj1nZXRCYXNlc3RQb2ludGVyKGNsYXNzXyxwdHIpO3JldHVybiByZWdpc3RlcmVkSW5zdGFuY2VzW3B0cl19ZnVuY3Rpb24gbWFrZUNsYXNzSGFuZGxlKHByb3RvdHlwZSxyZWNvcmQpe2lmKCFyZWNvcmQucHRyVHlwZXx8IXJlY29yZC5wdHIpe3Rocm93SW50ZXJuYWxFcnJvcigibWFrZUNsYXNzSGFuZGxlIHJlcXVpcmVzIHB0ciBhbmQgcHRyVHlwZSIpO312YXIgaGFzU21hcnRQdHJUeXBlPSEhcmVjb3JkLnNtYXJ0UHRyVHlwZTt2YXIgaGFzU21hcnRQdHI9ISFyZWNvcmQuc21hcnRQdHI7aWYoaGFzU21hcnRQdHJUeXBlIT09aGFzU21hcnRQdHIpe3Rocm93SW50ZXJuYWxFcnJvcigiQm90aCBzbWFydFB0clR5cGUgYW5kIHNtYXJ0UHRyIG11c3QgYmUgc3BlY2lmaWVkIik7fXJlY29yZC5jb3VudD17dmFsdWU6MX07cmV0dXJuIGF0dGFjaEZpbmFsaXplcihPYmplY3QuY3JlYXRlKHByb3RvdHlwZSx7JCQ6e3ZhbHVlOnJlY29yZH19KSl9ZnVuY3Rpb24gUmVnaXN0ZXJlZFBvaW50ZXJfZnJvbVdpcmVUeXBlKHB0cil7dmFyIHJhd1BvaW50ZXI9dGhpcy5nZXRQb2ludGVlKHB0cik7aWYoIXJhd1BvaW50ZXIpe3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBudWxsfXZhciByZWdpc3RlcmVkSW5zdGFuY2U9Z2V0SW5oZXJpdGVkSW5zdGFuY2UodGhpcy5yZWdpc3RlcmVkQ2xhc3MscmF3UG9pbnRlcik7aWYodW5kZWZpbmVkIT09cmVnaXN0ZXJlZEluc3RhbmNlKXtpZigwPT09cmVnaXN0ZXJlZEluc3RhbmNlLiQkLmNvdW50LnZhbHVlKXtyZWdpc3RlcmVkSW5zdGFuY2UuJCQucHRyPXJhd1BvaW50ZXI7cmVnaXN0ZXJlZEluc3RhbmNlLiQkLnNtYXJ0UHRyPXB0cjtyZXR1cm4gcmVnaXN0ZXJlZEluc3RhbmNlWyJjbG9uZSJdKCl9ZWxzZSB7dmFyIHJ2PXJlZ2lzdGVyZWRJbnN0YW5jZVsiY2xvbmUiXSgpO3RoaXMuZGVzdHJ1Y3RvcihwdHIpO3JldHVybiBydn19ZnVuY3Rpb24gbWFrZURlZmF1bHRIYW5kbGUoKXtpZih0aGlzLmlzU21hcnRQb2ludGVyKXtyZXR1cm4gbWFrZUNsYXNzSGFuZGxlKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOnJhd1BvaW50ZXIsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6cHRyfSl9ZWxzZSB7cmV0dXJuIG1ha2VDbGFzc0hhbmRsZSh0aGlzLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0aGlzLHB0cjpwdHJ9KX19dmFyIGFjdHVhbFR5cGU9dGhpcy5yZWdpc3RlcmVkQ2xhc3MuZ2V0QWN0dWFsVHlwZShyYXdQb2ludGVyKTt2YXIgcmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQ9cmVnaXN0ZXJlZFBvaW50ZXJzW2FjdHVhbFR5cGVdO2lmKCFyZWdpc3RlcmVkUG9pbnRlclJlY29yZCl7cmV0dXJuIG1ha2VEZWZhdWx0SGFuZGxlLmNhbGwodGhpcyl9dmFyIHRvVHlwZTtpZih0aGlzLmlzQ29uc3Qpe3RvVHlwZT1yZWdpc3RlcmVkUG9pbnRlclJlY29yZC5jb25zdFBvaW50ZXJUeXBlO31lbHNlIHt0b1R5cGU9cmVnaXN0ZXJlZFBvaW50ZXJSZWNvcmQucG9pbnRlclR5cGU7fXZhciBkcD1kb3duY2FzdFBvaW50ZXIocmF3UG9pbnRlcix0aGlzLnJlZ2lzdGVyZWRDbGFzcyx0b1R5cGUucmVnaXN0ZXJlZENsYXNzKTtpZihkcD09PW51bGwpe3JldHVybiBtYWtlRGVmYXVsdEhhbmRsZS5jYWxsKHRoaXMpfWlmKHRoaXMuaXNTbWFydFBvaW50ZXIpe3JldHVybiBtYWtlQ2xhc3NIYW5kbGUodG9UeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0b1R5cGUscHRyOmRwLHNtYXJ0UHRyVHlwZTp0aGlzLHNtYXJ0UHRyOnB0cn0pfWVsc2Uge3JldHVybiBtYWtlQ2xhc3NIYW5kbGUodG9UeXBlLnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTp0b1R5cGUscHRyOmRwfSl9fWZ1bmN0aW9uIGF0dGFjaEZpbmFsaXplcihoYW5kbGUpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5KXthdHRhY2hGaW5hbGl6ZXI9aGFuZGxlPT5oYW5kbGU7cmV0dXJuIGhhbmRsZX1maW5hbGl6YXRpb25SZWdpc3RyeT1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoaW5mbz0+e3JlbGVhc2VDbGFzc0hhbmRsZShpbmZvLiQkKTt9KTthdHRhY2hGaW5hbGl6ZXI9aGFuZGxlPT57dmFyICQkPWhhbmRsZS4kJDt2YXIgaGFzU21hcnRQdHI9ISEkJC5zbWFydFB0cjtpZihoYXNTbWFydFB0cil7dmFyIGluZm89eyQkOiQkfTtmaW5hbGl6YXRpb25SZWdpc3RyeS5yZWdpc3RlcihoYW5kbGUsaW5mbyxoYW5kbGUpO31yZXR1cm4gaGFuZGxlfTtkZXRhY2hGaW5hbGl6ZXI9aGFuZGxlPT5maW5hbGl6YXRpb25SZWdpc3RyeS51bnJlZ2lzdGVyKGhhbmRsZSk7cmV0dXJuIGF0dGFjaEZpbmFsaXplcihoYW5kbGUpfWZ1bmN0aW9uIENsYXNzSGFuZGxlX2Nsb25lKCl7aWYoIXRoaXMuJCQucHRyKXt0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQodGhpcyk7fWlmKHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUpe3RoaXMuJCQuY291bnQudmFsdWUrPTE7cmV0dXJuIHRoaXN9ZWxzZSB7dmFyIGNsb25lPWF0dGFjaEZpbmFsaXplcihPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSx7JCQ6e3ZhbHVlOnNoYWxsb3dDb3B5SW50ZXJuYWxQb2ludGVyKHRoaXMuJCQpfX0pKTtjbG9uZS4kJC5jb3VudC52YWx1ZSs9MTtjbG9uZS4kJC5kZWxldGVTY2hlZHVsZWQ9ZmFsc2U7cmV0dXJuIGNsb25lfX1mdW5jdGlvbiBDbGFzc0hhbmRsZV9kZWxldGUoKXtpZighdGhpcy4kJC5wdHIpe3Rocm93SW5zdGFuY2VBbHJlYWR5RGVsZXRlZCh0aGlzKTt9aWYodGhpcy4kJC5kZWxldGVTY2hlZHVsZWQmJiF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aHJvd0JpbmRpbmdFcnJvcigiT2JqZWN0IGFscmVhZHkgc2NoZWR1bGVkIGZvciBkZWxldGlvbiIpO31kZXRhY2hGaW5hbGl6ZXIodGhpcyk7cmVsZWFzZUNsYXNzSGFuZGxlKHRoaXMuJCQpO2lmKCF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlKXt0aGlzLiQkLnNtYXJ0UHRyPXVuZGVmaW5lZDt0aGlzLiQkLnB0cj11bmRlZmluZWQ7fX1mdW5jdGlvbiBDbGFzc0hhbmRsZV9pc0RlbGV0ZWQoKXtyZXR1cm4gIXRoaXMuJCQucHRyfWZ1bmN0aW9uIENsYXNzSGFuZGxlX2RlbGV0ZUxhdGVyKCl7aWYoIXRoaXMuJCQucHRyKXt0aHJvd0luc3RhbmNlQWxyZWFkeURlbGV0ZWQodGhpcyk7fWlmKHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkJiYhdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSl7dGhyb3dCaW5kaW5nRXJyb3IoIk9iamVjdCBhbHJlYWR5IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24iKTt9ZGVsZXRpb25RdWV1ZS5wdXNoKHRoaXMpO2lmKGRlbGV0aW9uUXVldWUubGVuZ3RoPT09MSYmZGVsYXlGdW5jdGlvbil7ZGVsYXlGdW5jdGlvbihmbHVzaFBlbmRpbmdEZWxldGVzKTt9dGhpcy4kJC5kZWxldGVTY2hlZHVsZWQ9dHJ1ZTtyZXR1cm4gdGhpc31mdW5jdGlvbiBpbml0X0NsYXNzSGFuZGxlKCl7Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJpc0FsaWFzT2YiXT1DbGFzc0hhbmRsZV9pc0FsaWFzT2Y7Q2xhc3NIYW5kbGUucHJvdG90eXBlWyJjbG9uZSJdPUNsYXNzSGFuZGxlX2Nsb25lO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiZGVsZXRlIl09Q2xhc3NIYW5kbGVfZGVsZXRlO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiaXNEZWxldGVkIl09Q2xhc3NIYW5kbGVfaXNEZWxldGVkO0NsYXNzSGFuZGxlLnByb3RvdHlwZVsiZGVsZXRlTGF0ZXIiXT1DbGFzc0hhbmRsZV9kZWxldGVMYXRlcjt9ZnVuY3Rpb24gQ2xhc3NIYW5kbGUoKXt9ZnVuY3Rpb24gZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSl7aWYodW5kZWZpbmVkPT09cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZSl7dmFyIHByZXZGdW5jPXByb3RvW21ldGhvZE5hbWVdO3Byb3RvW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7aWYoIXByb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGUuaGFzT3duUHJvcGVydHkoYXJndW1lbnRzLmxlbmd0aCkpe3Rocm93QmluZGluZ0Vycm9yKCJGdW5jdGlvbiAnIitodW1hbk5hbWUrIicgY2FsbGVkIHdpdGggYW4gaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzICgiK2FyZ3VtZW50cy5sZW5ndGgrIikgLSBleHBlY3RzIG9uZSBvZiAoIitwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlKyIpISIpO31yZXR1cm4gcHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmd1bWVudHMubGVuZ3RoXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3Byb3RvW21ldGhvZE5hbWVdLm92ZXJsb2FkVGFibGU9W107cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVtwcmV2RnVuYy5hcmdDb3VudF09cHJldkZ1bmM7fX1mdW5jdGlvbiBleHBvc2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKE1vZHVsZS5oYXNPd25Qcm9wZXJ0eShuYW1lKSl7aWYodW5kZWZpbmVkPT09bnVtQXJndW1lbnRzfHx1bmRlZmluZWQhPT1Nb2R1bGVbbmFtZV0ub3ZlcmxvYWRUYWJsZSYmdW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXSl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCByZWdpc3RlciBwdWJsaWMgbmFtZSAnIituYW1lKyInIHR3aWNlIik7fWVuc3VyZU92ZXJsb2FkVGFibGUoTW9kdWxlLG5hbWUsbmFtZSk7aWYoTW9kdWxlLmhhc093blByb3BlcnR5KG51bUFyZ3VtZW50cykpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgb3ZlcmxvYWRzIG9mIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYXJndW1lbnRzICgiK251bUFyZ3VtZW50cysiKSEiKTt9TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXT12YWx1ZTt9ZWxzZSB7TW9kdWxlW25hbWVdPXZhbHVlO2lmKHVuZGVmaW5lZCE9PW51bUFyZ3VtZW50cyl7TW9kdWxlW25hbWVdLm51bUFyZ3VtZW50cz1udW1Bcmd1bWVudHM7fX19ZnVuY3Rpb24gUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3Qpe3RoaXMubmFtZT1uYW1lO3RoaXMuY29uc3RydWN0b3I9Y29uc3RydWN0b3I7dGhpcy5pbnN0YW5jZVByb3RvdHlwZT1pbnN0YW5jZVByb3RvdHlwZTt0aGlzLnJhd0Rlc3RydWN0b3I9cmF3RGVzdHJ1Y3Rvcjt0aGlzLmJhc2VDbGFzcz1iYXNlQ2xhc3M7dGhpcy5nZXRBY3R1YWxUeXBlPWdldEFjdHVhbFR5cGU7dGhpcy51cGNhc3Q9dXBjYXN0O3RoaXMuZG93bmNhc3Q9ZG93bmNhc3Q7dGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXTt9ZnVuY3Rpb24gdXBjYXN0UG9pbnRlcihwdHIscHRyQ2xhc3MsZGVzaXJlZENsYXNzKXt3aGlsZShwdHJDbGFzcyE9PWRlc2lyZWRDbGFzcyl7aWYoIXB0ckNsYXNzLnVwY2FzdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkV4cGVjdGVkIG51bGwgb3IgaW5zdGFuY2Ugb2YgIitkZXNpcmVkQ2xhc3MubmFtZSsiLCBnb3QgYW4gaW5zdGFuY2Ugb2YgIitwdHJDbGFzcy5uYW1lKTt9cHRyPXB0ckNsYXNzLnVwY2FzdChwdHIpO3B0ckNsYXNzPXB0ckNsYXNzLmJhc2VDbGFzczt9cmV0dXJuIHB0cn1mdW5jdGlvbiBjb25zdE5vU21hcnRQdHJSYXdQb2ludGVyVG9XaXJlVHlwZShkZXN0cnVjdG9ycyxoYW5kbGUpe2lmKGhhbmRsZT09PW51bGwpe2lmKHRoaXMuaXNSZWZlcmVuY2Upe3Rocm93QmluZGluZ0Vycm9yKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKTt9cmV0dXJuIDB9aWYoIWhhbmRsZS4kJCl7dGhyb3dCaW5kaW5nRXJyb3IoJ0Nhbm5vdCBwYXNzICInK2VtYmluZFJlcHIoaGFuZGxlKSsnIiBhcyBhICcrdGhpcy5uYW1lKTt9aWYoIWhhbmRsZS4kJC5wdHIpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBkZWxldGVkIG9iamVjdCBhcyBhIHBvaW50ZXIgb2YgdHlwZSAiK3RoaXMubmFtZSk7fXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7dmFyIHB0cj11cGNhc3RQb2ludGVyKGhhbmRsZS4kJC5wdHIsaGFuZGxlQ2xhc3MsdGhpcy5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiBwdHJ9ZnVuY3Rpb24gZ2VuZXJpY1BvaW50ZXJUb1dpcmVUeXBlKGRlc3RydWN0b3JzLGhhbmRsZSl7dmFyIHB0cjtpZihoYW5kbGU9PT1udWxsKXtpZih0aGlzLmlzUmVmZXJlbmNlKXt0aHJvd0JpbmRpbmdFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCAiK3RoaXMubmFtZSk7fWlmKHRoaXMuaXNTbWFydFBvaW50ZXIpe3B0cj10aGlzLnJhd0NvbnN0cnVjdG9yKCk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpO31yZXR1cm4gcHRyfWVsc2Uge3JldHVybiAwfX1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrZW1iaW5kUmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpO31pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt9aWYoIXRoaXMuaXNDb25zdCYmaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIisoaGFuZGxlLiQkLnNtYXJ0UHRyVHlwZT9oYW5kbGUuJCQuc21hcnRQdHJUeXBlLm5hbWU6aGFuZGxlLiQkLnB0clR5cGUubmFtZSkrIiB0byBwYXJhbWV0ZXIgdHlwZSAiK3RoaXMubmFtZSk7fXZhciBoYW5kbGVDbGFzcz1oYW5kbGUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3M7cHRyPXVwY2FzdFBvaW50ZXIoaGFuZGxlLiQkLnB0cixoYW5kbGVDbGFzcyx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7aWYodGhpcy5pc1NtYXJ0UG9pbnRlcil7aWYodW5kZWZpbmVkPT09aGFuZGxlLiQkLnNtYXJ0UHRyKXt0aHJvd0JpbmRpbmdFcnJvcigiUGFzc2luZyByYXcgcG9pbnRlciB0byBzbWFydCBwb2ludGVyIGlzIGlsbGVnYWwiKTt9c3dpdGNoKHRoaXMuc2hhcmluZ1BvbGljeSl7Y2FzZSAwOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyO31lbHNlIHt0aHJvd0JpbmRpbmdFcnJvcigiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyhoYW5kbGUuJCQuc21hcnRQdHJUeXBlP2hhbmRsZS4kJC5zbWFydFB0clR5cGUubmFtZTpoYW5kbGUuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt9YnJlYWs7Y2FzZSAxOnB0cj1oYW5kbGUuJCQuc21hcnRQdHI7YnJlYWs7Y2FzZSAyOmlmKGhhbmRsZS4kJC5zbWFydFB0clR5cGU9PT10aGlzKXtwdHI9aGFuZGxlLiQkLnNtYXJ0UHRyO31lbHNlIHt2YXIgY2xvbmVkSGFuZGxlPWhhbmRsZVsiY2xvbmUiXSgpO3B0cj10aGlzLnJhd1NoYXJlKHB0cixFbXZhbC50b0hhbmRsZShmdW5jdGlvbigpe2Nsb25lZEhhbmRsZVsiZGVsZXRlIl0oKTt9KSk7aWYoZGVzdHJ1Y3RvcnMhPT1udWxsKXtkZXN0cnVjdG9ycy5wdXNoKHRoaXMucmF3RGVzdHJ1Y3RvcixwdHIpO319YnJlYWs7ZGVmYXVsdDp0aHJvd0JpbmRpbmdFcnJvcigiVW5zdXBwb3J0aW5nIHNoYXJpbmcgcG9saWN5Iik7fX1yZXR1cm4gcHRyfWZ1bmN0aW9uIG5vbkNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlKGRlc3RydWN0b3JzLGhhbmRsZSl7aWYoaGFuZGxlPT09bnVsbCl7aWYodGhpcy5pc1JlZmVyZW5jZSl7dGhyb3dCaW5kaW5nRXJyb3IoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpO31yZXR1cm4gMH1pZighaGFuZGxlLiQkKXt0aHJvd0JpbmRpbmdFcnJvcignQ2Fubm90IHBhc3MgIicrZW1iaW5kUmVwcihoYW5kbGUpKyciIGFzIGEgJyt0aGlzLm5hbWUpO31pZighaGFuZGxlLiQkLnB0cil7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt9aWYoaGFuZGxlLiQkLnB0clR5cGUuaXNDb25zdCl7dGhyb3dCaW5kaW5nRXJyb3IoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitoYW5kbGUuJCQucHRyVHlwZS5uYW1lKyIgdG8gcGFyYW1ldGVyIHR5cGUgIit0aGlzLm5hbWUpO312YXIgaGFuZGxlQ2xhc3M9aGFuZGxlLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO3ZhciBwdHI9dXBjYXN0UG9pbnRlcihoYW5kbGUuJCQucHRyLGhhbmRsZUNsYXNzLHRoaXMucmVnaXN0ZXJlZENsYXNzKTtyZXR1cm4gcHRyfWZ1bmN0aW9uIHNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiB0aGlzWyJmcm9tV2lyZVR5cGUiXShIRUFQMzJbcG9pbnRlcj4+Ml0pfWZ1bmN0aW9uIFJlZ2lzdGVyZWRQb2ludGVyX2dldFBvaW50ZWUocHRyKXtpZih0aGlzLnJhd0dldFBvaW50ZWUpe3B0cj10aGlzLnJhd0dldFBvaW50ZWUocHRyKTt9cmV0dXJuIHB0cn1mdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcl9kZXN0cnVjdG9yKHB0cil7aWYodGhpcy5yYXdEZXN0cnVjdG9yKXt0aGlzLnJhd0Rlc3RydWN0b3IocHRyKTt9fWZ1bmN0aW9uIFJlZ2lzdGVyZWRQb2ludGVyX2RlbGV0ZU9iamVjdChoYW5kbGUpe2lmKGhhbmRsZSE9PW51bGwpe2hhbmRsZVsiZGVsZXRlIl0oKTt9fWZ1bmN0aW9uIGluaXRfUmVnaXN0ZXJlZFBvaW50ZXIoKXtSZWdpc3RlcmVkUG9pbnRlci5wcm90b3R5cGUuZ2V0UG9pbnRlZT1SZWdpc3RlcmVkUG9pbnRlcl9nZXRQb2ludGVlO1JlZ2lzdGVyZWRQb2ludGVyLnByb3RvdHlwZS5kZXN0cnVjdG9yPVJlZ2lzdGVyZWRQb2ludGVyX2Rlc3RydWN0b3I7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJhcmdQYWNrQWR2YW5jZSJdPTg7UmVnaXN0ZXJlZFBvaW50ZXIucHJvdG90eXBlWyJyZWFkVmFsdWVGcm9tUG9pbnRlciJdPXNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyO1JlZ2lzdGVyZWRQb2ludGVyLnByb3RvdHlwZVsiZGVsZXRlT2JqZWN0Il09UmVnaXN0ZXJlZFBvaW50ZXJfZGVsZXRlT2JqZWN0O1JlZ2lzdGVyZWRQb2ludGVyLnByb3RvdHlwZVsiZnJvbVdpcmVUeXBlIl09UmVnaXN0ZXJlZFBvaW50ZXJfZnJvbVdpcmVUeXBlO31mdW5jdGlvbiBSZWdpc3RlcmVkUG9pbnRlcihuYW1lLHJlZ2lzdGVyZWRDbGFzcyxpc1JlZmVyZW5jZSxpc0NvbnN0LGlzU21hcnRQb2ludGVyLHBvaW50ZWVUeXBlLHNoYXJpbmdQb2xpY3kscmF3R2V0UG9pbnRlZSxyYXdDb25zdHJ1Y3RvcixyYXdTaGFyZSxyYXdEZXN0cnVjdG9yKXt0aGlzLm5hbWU9bmFtZTt0aGlzLnJlZ2lzdGVyZWRDbGFzcz1yZWdpc3RlcmVkQ2xhc3M7dGhpcy5pc1JlZmVyZW5jZT1pc1JlZmVyZW5jZTt0aGlzLmlzQ29uc3Q9aXNDb25zdDt0aGlzLmlzU21hcnRQb2ludGVyPWlzU21hcnRQb2ludGVyO3RoaXMucG9pbnRlZVR5cGU9cG9pbnRlZVR5cGU7dGhpcy5zaGFyaW5nUG9saWN5PXNoYXJpbmdQb2xpY3k7dGhpcy5yYXdHZXRQb2ludGVlPXJhd0dldFBvaW50ZWU7dGhpcy5yYXdDb25zdHJ1Y3Rvcj1yYXdDb25zdHJ1Y3Rvcjt0aGlzLnJhd1NoYXJlPXJhd1NoYXJlO3RoaXMucmF3RGVzdHJ1Y3Rvcj1yYXdEZXN0cnVjdG9yO2lmKCFpc1NtYXJ0UG9pbnRlciYmcmVnaXN0ZXJlZENsYXNzLmJhc2VDbGFzcz09PXVuZGVmaW5lZCl7aWYoaXNDb25zdCl7dGhpc1sidG9XaXJlVHlwZSJdPWNvbnN0Tm9TbWFydFB0clJhd1BvaW50ZXJUb1dpcmVUeXBlO3RoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGw7fWVsc2Uge3RoaXNbInRvV2lyZVR5cGUiXT1ub25Db25zdE5vU21hcnRQdHJSYXdQb2ludGVyVG9XaXJlVHlwZTt0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsO319ZWxzZSB7dGhpc1sidG9XaXJlVHlwZSJdPWdlbmVyaWNQb2ludGVyVG9XaXJlVHlwZTt9fWZ1bmN0aW9uIHJlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSx2YWx1ZSxudW1Bcmd1bWVudHMpe2lmKCFNb2R1bGUuaGFzT3duUHJvcGVydHkobmFtZSkpe3Rocm93SW50ZXJuYWxFcnJvcigiUmVwbGFjaW5nIG5vbmV4aXN0YW50IHB1YmxpYyBzeW1ib2wiKTt9aWYodW5kZWZpbmVkIT09TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGUmJnVuZGVmaW5lZCE9PW51bUFyZ3VtZW50cyl7TW9kdWxlW25hbWVdLm92ZXJsb2FkVGFibGVbbnVtQXJndW1lbnRzXT12YWx1ZTt9ZWxzZSB7TW9kdWxlW25hbWVdPXZhbHVlO01vZHVsZVtuYW1lXS5hcmdDb3VudD1udW1Bcmd1bWVudHM7fX1mdW5jdGlvbiBkeW5DYWxsTGVnYWN5KHNpZyxwdHIsYXJncyl7dmFyIGY9TW9kdWxlWyJkeW5DYWxsXyIrc2lnXTtyZXR1cm4gYXJncyYmYXJncy5sZW5ndGg/Zi5hcHBseShudWxsLFtwdHJdLmNvbmNhdChhcmdzKSk6Zi5jYWxsKG51bGwscHRyKX1mdW5jdGlvbiBkeW5DYWxsKHNpZyxwdHIsYXJncyl7aWYoc2lnLmluY2x1ZGVzKCJqIikpe3JldHVybiBkeW5DYWxsTGVnYWN5KHNpZyxwdHIsYXJncyl9dmFyIHJ0bj1nZXRXYXNtVGFibGVFbnRyeShwdHIpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuIHJ0bn1mdW5jdGlvbiBnZXREeW5DYWxsZXIoc2lnLHB0cil7dmFyIGFyZ0NhY2hlPVtdO3JldHVybiBmdW5jdGlvbigpe2FyZ0NhY2hlLmxlbmd0aD0wO09iamVjdC5hc3NpZ24oYXJnQ2FjaGUsYXJndW1lbnRzKTtyZXR1cm4gZHluQ2FsbChzaWcscHRyLGFyZ0NhY2hlKX19ZnVuY3Rpb24gZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0Z1bmN0aW9uKXtzaWduYXR1cmU9cmVhZExhdGluMVN0cmluZyhzaWduYXR1cmUpO2Z1bmN0aW9uIG1ha2VEeW5DYWxsZXIoKXtpZihzaWduYXR1cmUuaW5jbHVkZXMoImoiKSl7cmV0dXJuIGdldER5bkNhbGxlcihzaWduYXR1cmUscmF3RnVuY3Rpb24pfXJldHVybiBnZXRXYXNtVGFibGVFbnRyeShyYXdGdW5jdGlvbil9dmFyIGZwPW1ha2VEeW5DYWxsZXIoKTtpZih0eXBlb2YgZnAhPSJmdW5jdGlvbiIpe3Rocm93QmluZGluZ0Vycm9yKCJ1bmtub3duIGZ1bmN0aW9uIHBvaW50ZXIgd2l0aCBzaWduYXR1cmUgIitzaWduYXR1cmUrIjogIityYXdGdW5jdGlvbik7fXJldHVybiBmcH12YXIgVW5ib3VuZFR5cGVFcnJvcj11bmRlZmluZWQ7ZnVuY3Rpb24gZ2V0VHlwZU5hbWUodHlwZSl7dmFyIHB0cj1fX19nZXRUeXBlTmFtZSh0eXBlKTt2YXIgcnY9cmVhZExhdGluMVN0cmluZyhwdHIpO19mcmVlKHB0cik7cmV0dXJuIHJ2fWZ1bmN0aW9uIHRocm93VW5ib3VuZFR5cGVFcnJvcihtZXNzYWdlLHR5cGVzKXt2YXIgdW5ib3VuZFR5cGVzPVtdO3ZhciBzZWVuPXt9O2Z1bmN0aW9uIHZpc2l0KHR5cGUpe2lmKHNlZW5bdHlwZV0pe3JldHVybn1pZihyZWdpc3RlcmVkVHlwZXNbdHlwZV0pe3JldHVybn1pZih0eXBlRGVwZW5kZW5jaWVzW3R5cGVdKXt0eXBlRGVwZW5kZW5jaWVzW3R5cGVdLmZvckVhY2godmlzaXQpO3JldHVybn11bmJvdW5kVHlwZXMucHVzaCh0eXBlKTtzZWVuW3R5cGVdPXRydWU7fXR5cGVzLmZvckVhY2godmlzaXQpO3Rocm93IG5ldyBVbmJvdW5kVHlwZUVycm9yKG1lc3NhZ2UrIjogIit1bmJvdW5kVHlwZXMubWFwKGdldFR5cGVOYW1lKS5qb2luKFsiLCAiXSkpfWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzKHJhd1R5cGUscmF3UG9pbnRlclR5cGUscmF3Q29uc3RQb2ludGVyVHlwZSxiYXNlQ2xhc3NSYXdUeXBlLGdldEFjdHVhbFR5cGVTaWduYXR1cmUsZ2V0QWN0dWFsVHlwZSx1cGNhc3RTaWduYXR1cmUsdXBjYXN0LGRvd25jYXN0U2lnbmF0dXJlLGRvd25jYXN0LG5hbWUsZGVzdHJ1Y3RvclNpZ25hdHVyZSxyYXdEZXN0cnVjdG9yKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7Z2V0QWN0dWFsVHlwZT1lbWJpbmRfX3JlcXVpcmVGdW5jdGlvbihnZXRBY3R1YWxUeXBlU2lnbmF0dXJlLGdldEFjdHVhbFR5cGUpO2lmKHVwY2FzdCl7dXBjYXN0PWVtYmluZF9fcmVxdWlyZUZ1bmN0aW9uKHVwY2FzdFNpZ25hdHVyZSx1cGNhc3QpO31pZihkb3duY2FzdCl7ZG93bmNhc3Q9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oZG93bmNhc3RTaWduYXR1cmUsZG93bmNhc3QpO31yYXdEZXN0cnVjdG9yPWVtYmluZF9fcmVxdWlyZUZ1bmN0aW9uKGRlc3RydWN0b3JTaWduYXR1cmUscmF3RGVzdHJ1Y3Rvcik7dmFyIGxlZ2FsRnVuY3Rpb25OYW1lPW1ha2VMZWdhbEZ1bmN0aW9uTmFtZShuYW1lKTtleHBvc2VQdWJsaWNTeW1ib2wobGVnYWxGdW5jdGlvbk5hbWUsZnVuY3Rpb24oKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjb25zdHJ1Y3QgIituYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLFtiYXNlQ2xhc3NSYXdUeXBlXSk7fSk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW3Jhd1R5cGUscmF3UG9pbnRlclR5cGUscmF3Q29uc3RQb2ludGVyVHlwZV0sYmFzZUNsYXNzUmF3VHlwZT9bYmFzZUNsYXNzUmF3VHlwZV06W10sZnVuY3Rpb24oYmFzZSl7YmFzZT1iYXNlWzBdO3ZhciBiYXNlQ2xhc3M7dmFyIGJhc2VQcm90b3R5cGU7aWYoYmFzZUNsYXNzUmF3VHlwZSl7YmFzZUNsYXNzPWJhc2UucmVnaXN0ZXJlZENsYXNzO2Jhc2VQcm90b3R5cGU9YmFzZUNsYXNzLmluc3RhbmNlUHJvdG90eXBlO31lbHNlIHtiYXNlUHJvdG90eXBlPUNsYXNzSGFuZGxlLnByb3RvdHlwZTt9dmFyIGNvbnN0cnVjdG9yPWNyZWF0ZU5hbWVkRnVuY3Rpb24obGVnYWxGdW5jdGlvbk5hbWUsZnVuY3Rpb24oKXtpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykhPT1pbnN0YW5jZVByb3RvdHlwZSl7dGhyb3cgbmV3IEJpbmRpbmdFcnJvcigiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiK25hbWUpfWlmKHVuZGVmaW5lZD09PXJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5KXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKG5hbWUrIiBoYXMgbm8gYWNjZXNzaWJsZSBjb25zdHJ1Y3RvciIpfXZhciBib2R5PXJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ3VtZW50cy5sZW5ndGhdO2lmKHVuZGVmaW5lZD09PWJvZHkpe3Rocm93IG5ldyBCaW5kaW5nRXJyb3IoIlRyaWVkIHRvIGludm9rZSBjdG9yIG9mICIrbmFtZSsiIHdpdGggaW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVycyAoIithcmd1bWVudHMubGVuZ3RoKyIpIC0gZXhwZWN0ZWQgKCIrT2JqZWN0LmtleXMocmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHkpLnRvU3RyaW5nKCkrIikgcGFyYW1ldGVycyBpbnN0ZWFkISIpfXJldHVybiBib2R5LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3ZhciBpbnN0YW5jZVByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGJhc2VQcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpjb25zdHJ1Y3Rvcn19KTtjb25zdHJ1Y3Rvci5wcm90b3R5cGU9aW5zdGFuY2VQcm90b3R5cGU7dmFyIHJlZ2lzdGVyZWRDbGFzcz1uZXcgUmVnaXN0ZXJlZENsYXNzKG5hbWUsY29uc3RydWN0b3IsaW5zdGFuY2VQcm90b3R5cGUscmF3RGVzdHJ1Y3RvcixiYXNlQ2xhc3MsZ2V0QWN0dWFsVHlwZSx1cGNhc3QsZG93bmNhc3QpO3ZhciByZWZlcmVuY2VDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUscmVnaXN0ZXJlZENsYXNzLHRydWUsZmFsc2UsZmFsc2UpO3ZhciBwb2ludGVyQ29udmVydGVyPW5ldyBSZWdpc3RlcmVkUG9pbnRlcihuYW1lKyIqIixyZWdpc3RlcmVkQ2xhc3MsZmFsc2UsZmFsc2UsZmFsc2UpO3ZhciBjb25zdFBvaW50ZXJDb252ZXJ0ZXI9bmV3IFJlZ2lzdGVyZWRQb2ludGVyKG5hbWUrIiBjb25zdCoiLHJlZ2lzdGVyZWRDbGFzcyxmYWxzZSx0cnVlLGZhbHNlKTtyZWdpc3RlcmVkUG9pbnRlcnNbcmF3VHlwZV09e3BvaW50ZXJUeXBlOnBvaW50ZXJDb252ZXJ0ZXIsY29uc3RQb2ludGVyVHlwZTpjb25zdFBvaW50ZXJDb252ZXJ0ZXJ9O3JlcGxhY2VQdWJsaWNTeW1ib2wobGVnYWxGdW5jdGlvbk5hbWUsY29uc3RydWN0b3IpO3JldHVybiBbcmVmZXJlbmNlQ29udmVydGVyLHBvaW50ZXJDb252ZXJ0ZXIsY29uc3RQb2ludGVyQ29udmVydGVyXX0pO31mdW5jdGlvbiBuZXdfKGNvbnN0cnVjdG9yLGFyZ3VtZW50TGlzdCl7aWYoIShjb25zdHJ1Y3RvciBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl7dGhyb3cgbmV3IFR5cGVFcnJvcigibmV3XyBjYWxsZWQgd2l0aCBjb25zdHJ1Y3RvciB0eXBlICIrdHlwZW9mIGNvbnN0cnVjdG9yKyIgd2hpY2ggaXMgbm90IGEgZnVuY3Rpb24iKX12YXIgZHVtbXk9Y3JlYXRlTmFtZWRGdW5jdGlvbihjb25zdHJ1Y3Rvci5uYW1lfHwidW5rbm93bkZ1bmN0aW9uTmFtZSIsZnVuY3Rpb24oKXt9KTtkdW1teS5wcm90b3R5cGU9Y29uc3RydWN0b3IucHJvdG90eXBlO3ZhciBvYmo9bmV3IGR1bW15O3ZhciByPWNvbnN0cnVjdG9yLmFwcGx5KG9iaixhcmd1bWVudExpc3QpO3JldHVybiByIGluc3RhbmNlb2YgT2JqZWN0P3I6b2JqfWZ1bmN0aW9uIHJ1bkRlc3RydWN0b3JzKGRlc3RydWN0b3JzKXt3aGlsZShkZXN0cnVjdG9ycy5sZW5ndGgpe3ZhciBwdHI9ZGVzdHJ1Y3RvcnMucG9wKCk7dmFyIGRlbD1kZXN0cnVjdG9ycy5wb3AoKTtkZWwocHRyKTt9fWZ1bmN0aW9uIGNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxhcmdUeXBlcyxjbGFzc1R5cGUsY3BwSW52b2tlckZ1bmMsY3BwVGFyZ2V0RnVuYyl7dmFyIGFyZ0NvdW50PWFyZ1R5cGVzLmxlbmd0aDtpZihhcmdDb3VudDwyKXt0aHJvd0JpbmRpbmdFcnJvcigiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIik7fXZhciBpc0NsYXNzTWV0aG9kRnVuYz1hcmdUeXBlc1sxXSE9PW51bGwmJmNsYXNzVHlwZSE9PW51bGw7dmFyIG5lZWRzRGVzdHJ1Y3RvclN0YWNrPWZhbHNlO2Zvcih2YXIgaT0xO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7aWYoYXJnVHlwZXNbaV0hPT1udWxsJiZhcmdUeXBlc1tpXS5kZXN0cnVjdG9yRnVuY3Rpb249PT11bmRlZmluZWQpe25lZWRzRGVzdHJ1Y3RvclN0YWNrPXRydWU7YnJlYWt9fXZhciByZXR1cm5zPWFyZ1R5cGVzWzBdLm5hbWUhPT0idm9pZCI7dmFyIGFyZ3NMaXN0PSIiO3ZhciBhcmdzTGlzdFdpcmVkPSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMjsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTthcmdzTGlzdFdpcmVkKz0oaSE9PTA/IiwgIjoiIikrImFyZyIraSsiV2lyZWQiO312YXIgaW52b2tlckZuQm9keT0icmV0dXJuIGZ1bmN0aW9uICIrbWFrZUxlZ2FsRnVuY3Rpb25OYW1lKGh1bWFuTmFtZSkrIigiK2FyZ3NMaXN0KyIpIHtcbiIrImlmIChhcmd1bWVudHMubGVuZ3RoICE9PSAiKyhhcmdDb3VudC0yKSsiKSB7XG4iKyJ0aHJvd0JpbmRpbmdFcnJvcignZnVuY3Rpb24gIitodW1hbk5hbWUrIiBjYWxsZWQgd2l0aCAnICsgYXJndW1lbnRzLmxlbmd0aCArICcgYXJndW1lbnRzLCBleHBlY3RlZCAiKyhhcmdDb3VudC0yKSsiIGFyZ3MhJyk7XG4iKyJ9XG4iO2lmKG5lZWRzRGVzdHJ1Y3RvclN0YWNrKXtpbnZva2VyRm5Cb2R5Kz0idmFyIGRlc3RydWN0b3JzID0gW107XG4iO312YXIgZHRvclN0YWNrPW5lZWRzRGVzdHJ1Y3RvclN0YWNrPyJkZXN0cnVjdG9ycyI6Im51bGwiO3ZhciBhcmdzMT1bInRocm93QmluZGluZ0Vycm9yIiwiaW52b2tlciIsImZuIiwicnVuRGVzdHJ1Y3RvcnMiLCJyZXRUeXBlIiwiY2xhc3NQYXJhbSJdO3ZhciBhcmdzMj1bdGhyb3dCaW5kaW5nRXJyb3IsY3BwSW52b2tlckZ1bmMsY3BwVGFyZ2V0RnVuYyxydW5EZXN0cnVjdG9ycyxhcmdUeXBlc1swXSxhcmdUeXBlc1sxXV07aWYoaXNDbGFzc01ldGhvZEZ1bmMpe2ludm9rZXJGbkJvZHkrPSJ2YXIgdGhpc1dpcmVkID0gY2xhc3NQYXJhbS50b1dpcmVUeXBlKCIrZHRvclN0YWNrKyIsIHRoaXMpO1xuIjt9Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0yOysraSl7aW52b2tlckZuQm9keSs9InZhciBhcmciK2krIldpcmVkID0gYXJnVHlwZSIraSsiLnRvV2lyZVR5cGUoIitkdG9yU3RhY2srIiwgYXJnIitpKyIpOyAvLyAiK2FyZ1R5cGVzW2krMl0ubmFtZSsiXG4iO2FyZ3MxLnB1c2goImFyZ1R5cGUiK2kpO2FyZ3MyLnB1c2goYXJnVHlwZXNbaSsyXSk7fWlmKGlzQ2xhc3NNZXRob2RGdW5jKXthcmdzTGlzdFdpcmVkPSJ0aGlzV2lyZWQiKyhhcmdzTGlzdFdpcmVkLmxlbmd0aD4wPyIsICI6IiIpK2FyZ3NMaXN0V2lyZWQ7fWludm9rZXJGbkJvZHkrPShyZXR1cm5zPyJ2YXIgcnYgPSAiOiIiKSsiaW52b2tlcihmbiIrKGFyZ3NMaXN0V2lyZWQubGVuZ3RoPjA/IiwgIjoiIikrYXJnc0xpc3RXaXJlZCsiKTtcbiI7aWYobmVlZHNEZXN0cnVjdG9yU3RhY2spe2ludm9rZXJGbkJvZHkrPSJydW5EZXN0cnVjdG9ycyhkZXN0cnVjdG9ycyk7XG4iO31lbHNlIHtmb3IodmFyIGk9aXNDbGFzc01ldGhvZEZ1bmM/MToyO2k8YXJnVHlwZXMubGVuZ3RoOysraSl7dmFyIHBhcmFtTmFtZT1pPT09MT8idGhpc1dpcmVkIjoiYXJnIisoaS0yKSsiV2lyZWQiO2lmKGFyZ1R5cGVzW2ldLmRlc3RydWN0b3JGdW5jdGlvbiE9PW51bGwpe2ludm9rZXJGbkJvZHkrPXBhcmFtTmFtZSsiX2R0b3IoIitwYXJhbU5hbWUrIik7IC8vICIrYXJnVHlwZXNbaV0ubmFtZSsiXG4iO2FyZ3MxLnB1c2gocGFyYW1OYW1lKyJfZHRvciIpO2FyZ3MyLnB1c2goYXJnVHlwZXNbaV0uZGVzdHJ1Y3RvckZ1bmN0aW9uKTt9fX1pZihyZXR1cm5zKXtpbnZva2VyRm5Cb2R5Kz0idmFyIHJldCA9IHJldFR5cGUuZnJvbVdpcmVUeXBlKHJ2KTtcbiIrInJldHVybiByZXQ7XG4iO31pbnZva2VyRm5Cb2R5Kz0ifVxuIjthcmdzMS5wdXNoKGludm9rZXJGbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixhcmdzMSkuYXBwbHkobnVsbCxhcmdzMik7cmV0dXJuIGludm9rZXJGdW5jdGlvbn1mdW5jdGlvbiBoZWFwMzJWZWN0b3JUb0FycmF5KGNvdW50LGZpcnN0RWxlbWVudCl7dmFyIGFycmF5PVtdO2Zvcih2YXIgaT0wO2k8Y291bnQ7aSsrKXthcnJheS5wdXNoKEhFQVBVMzJbZmlyc3RFbGVtZW50K2kqND4+Ml0pO31yZXR1cm4gYXJyYXl9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixmbil7dmFyIHJhd0FyZ1R5cGVzPWhlYXAzMlZlY3RvclRvQXJyYXkoYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyKTttZXRob2ROYW1lPXJlYWRMYXRpbjFTdHJpbmcobWV0aG9kTmFtZSk7cmF3SW52b2tlcj1lbWJpbmRfX3JlcXVpcmVGdW5jdGlvbihpbnZva2VyU2lnbmF0dXJlLHJhd0ludm9rZXIpO3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLFtyYXdDbGFzc1R5cGVdLGZ1bmN0aW9uKGNsYXNzVHlwZSl7Y2xhc3NUeXBlPWNsYXNzVHlwZVswXTt2YXIgaHVtYW5OYW1lPWNsYXNzVHlwZS5uYW1lKyIuIittZXRob2ROYW1lO2Z1bmN0aW9uIHVuYm91bmRUeXBlc0hhbmRsZXIoKXt0aHJvd1VuYm91bmRUeXBlRXJyb3IoIkNhbm5vdCBjYWxsICIraHVtYW5OYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLHJhd0FyZ1R5cGVzKTt9aWYobWV0aG9kTmFtZS5zdGFydHNXaXRoKCJAQCIpKXttZXRob2ROYW1lPVN5bWJvbFttZXRob2ROYW1lLnN1YnN0cmluZygyKV07fXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yO2lmKHVuZGVmaW5lZD09PXByb3RvW21ldGhvZE5hbWVdKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcjt9ZWxzZSB7ZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSk7cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmdDb3VudC0xXT11bmJvdW5kVHlwZXNIYW5kbGVyO313aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcyxmdW5jdGlvbihhcmdUeXBlcyl7dmFyIGludm9rZXJBcmdzQXJyYXk9W2FyZ1R5cGVzWzBdLG51bGxdLmNvbmNhdChhcmdUeXBlcy5zbGljZSgxKSk7dmFyIGZ1bmM9Y3JhZnRJbnZva2VyRnVuY3Rpb24oaHVtYW5OYW1lLGludm9rZXJBcmdzQXJyYXksbnVsbCxyYXdJbnZva2VyLGZuKTtpZih1bmRlZmluZWQ9PT1wcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlKXtmdW5jLmFyZ0NvdW50PWFyZ0NvdW50LTE7cHJvdG9bbWV0aG9kTmFtZV09ZnVuYzt9ZWxzZSB7cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmdDb3VudC0xXT1mdW5jO31yZXR1cm4gW119KTtyZXR1cm4gW119KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY29uc3RydWN0b3IocmF3Q2xhc3NUeXBlLGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcixpbnZva2VyU2lnbmF0dXJlLGludm9rZXIscmF3Q29uc3RydWN0b3Ipe2Fzc2VydChhcmdDb3VudD4wKTt2YXIgcmF3QXJnVHlwZXM9aGVhcDMyVmVjdG9yVG9BcnJheShhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIpO2ludm9rZXI9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxpbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSxmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT0iY29uc3RydWN0b3IgIitjbGFzc1R5cGUubmFtZTtpZih1bmRlZmluZWQ9PT1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmNvbnN0cnVjdG9yX2JvZHkpe2NsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT1bXTt9aWYodW5kZWZpbmVkIT09Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W2FyZ0NvdW50LTFdKXt0aHJvdyBuZXcgQmluZGluZ0Vycm9yKCJDYW5ub3QgcmVnaXN0ZXIgbXVsdGlwbGUgY29uc3RydWN0b3JzIHdpdGggaWRlbnRpY2FsIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiKyhhcmdDb3VudC0xKSsiKSBmb3IgY2xhc3MgJyIrY2xhc3NUeXBlLm5hbWUrIichIE92ZXJsb2FkIHJlc29sdXRpb24gaXMgY3VycmVudGx5IG9ubHkgcGVyZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXIgY291bnQsIG5vdCBhY3R1YWwgdHlwZSBpbmZvISIpfWNsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT0oKT0+e3Rocm93VW5ib3VuZFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCAiK2NsYXNzVHlwZS5uYW1lKyIgZHVlIHRvIHVuYm91bmQgdHlwZXMiLHJhd0FyZ1R5cGVzKTt9O3doZW5EZXBlbmRlbnRUeXBlc0FyZVJlc29sdmVkKFtdLHJhd0FyZ1R5cGVzLGZ1bmN0aW9uKGFyZ1R5cGVzKXthcmdUeXBlcy5zcGxpY2UoMSwwLG51bGwpO2NsYXNzVHlwZS5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVthcmdDb3VudC0xXT1jcmFmdEludm9rZXJGdW5jdGlvbihodW1hbk5hbWUsYXJnVHlwZXMsbnVsbCxpbnZva2VyLHJhd0NvbnN0cnVjdG9yKTtyZXR1cm4gW119KTtyZXR1cm4gW119KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb24ocmF3Q2xhc3NUeXBlLG1ldGhvZE5hbWUsYXJnQ291bnQscmF3QXJnVHlwZXNBZGRyLGludm9rZXJTaWduYXR1cmUscmF3SW52b2tlcixjb250ZXh0LGlzUHVyZVZpcnR1YWwpe3ZhciByYXdBcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7bWV0aG9kTmFtZT1yZWFkTGF0aW4xU3RyaW5nKG1ldGhvZE5hbWUpO3Jhd0ludm9rZXI9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oaW52b2tlclNpZ25hdHVyZSxyYXdJbnZva2VyKTt3aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxbcmF3Q2xhc3NUeXBlXSxmdW5jdGlvbihjbGFzc1R5cGUpe2NsYXNzVHlwZT1jbGFzc1R5cGVbMF07dmFyIGh1bWFuTmFtZT1jbGFzc1R5cGUubmFtZSsiLiIrbWV0aG9kTmFtZTtpZihtZXRob2ROYW1lLnN0YXJ0c1dpdGgoIkBAIikpe21ldGhvZE5hbWU9U3ltYm9sW21ldGhvZE5hbWUuc3Vic3RyaW5nKDIpXTt9aWYoaXNQdXJlVmlydHVhbCl7Y2xhc3NUeXBlLnJlZ2lzdGVyZWRDbGFzcy5wdXJlVmlydHVhbEZ1bmN0aW9ucy5wdXNoKG1ldGhvZE5hbWUpO31mdW5jdGlvbiB1bmJvdW5kVHlwZXNIYW5kbGVyKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgY2FsbCAiK2h1bWFuTmFtZSsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixyYXdBcmdUeXBlcyk7fXZhciBwcm90bz1jbGFzc1R5cGUucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlO3ZhciBtZXRob2Q9cHJvdG9bbWV0aG9kTmFtZV07aWYodW5kZWZpbmVkPT09bWV0aG9kfHx1bmRlZmluZWQ9PT1tZXRob2Qub3ZlcmxvYWRUYWJsZSYmbWV0aG9kLmNsYXNzTmFtZSE9PWNsYXNzVHlwZS5uYW1lJiZtZXRob2QuYXJnQ291bnQ9PT1hcmdDb3VudC0yKXt1bmJvdW5kVHlwZXNIYW5kbGVyLmFyZ0NvdW50PWFyZ0NvdW50LTI7dW5ib3VuZFR5cGVzSGFuZGxlci5jbGFzc05hbWU9Y2xhc3NUeXBlLm5hbWU7cHJvdG9bbWV0aG9kTmFtZV09dW5ib3VuZFR5cGVzSGFuZGxlcjt9ZWxzZSB7ZW5zdXJlT3ZlcmxvYWRUYWJsZShwcm90byxtZXRob2ROYW1lLGh1bWFuTmFtZSk7cHJvdG9bbWV0aG9kTmFtZV0ub3ZlcmxvYWRUYWJsZVthcmdDb3VudC0yXT11bmJvdW5kVHlwZXNIYW5kbGVyO313aGVuRGVwZW5kZW50VHlwZXNBcmVSZXNvbHZlZChbXSxyYXdBcmdUeXBlcyxmdW5jdGlvbihhcmdUeXBlcyl7dmFyIG1lbWJlckZ1bmN0aW9uPWNyYWZ0SW52b2tlckZ1bmN0aW9uKGh1bWFuTmFtZSxhcmdUeXBlcyxjbGFzc1R5cGUscmF3SW52b2tlcixjb250ZXh0KTtpZih1bmRlZmluZWQ9PT1wcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlKXttZW1iZXJGdW5jdGlvbi5hcmdDb3VudD1hcmdDb3VudC0yO3Byb3RvW21ldGhvZE5hbWVdPW1lbWJlckZ1bmN0aW9uO31lbHNlIHtwcm90b1ttZXRob2ROYW1lXS5vdmVybG9hZFRhYmxlW2FyZ0NvdW50LTJdPW1lbWJlckZ1bmN0aW9uO31yZXR1cm4gW119KTtyZXR1cm4gW119KTt9dmFyIGVtdmFsX2ZyZWVfbGlzdD1bXTt2YXIgZW12YWxfaGFuZGxlX2FycmF5PVt7fSx7dmFsdWU6dW5kZWZpbmVkfSx7dmFsdWU6bnVsbH0se3ZhbHVlOnRydWV9LHt2YWx1ZTpmYWxzZX1dO2Z1bmN0aW9uIF9fZW12YWxfZGVjcmVmKGhhbmRsZSl7aWYoaGFuZGxlPjQmJjA9PT0tLWVtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50KXtlbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXT11bmRlZmluZWQ7ZW12YWxfZnJlZV9saXN0LnB1c2goaGFuZGxlKTt9fWZ1bmN0aW9uIGNvdW50X2VtdmFsX2hhbmRsZXMoKXt2YXIgY291bnQ9MDtmb3IodmFyIGk9NTtpPGVtdmFsX2hhbmRsZV9hcnJheS5sZW5ndGg7KytpKXtpZihlbXZhbF9oYW5kbGVfYXJyYXlbaV0hPT11bmRlZmluZWQpeysrY291bnQ7fX1yZXR1cm4gY291bnR9ZnVuY3Rpb24gZ2V0X2ZpcnN0X2VtdmFsKCl7Zm9yKHZhciBpPTU7aTxlbXZhbF9oYW5kbGVfYXJyYXkubGVuZ3RoOysraSl7aWYoZW12YWxfaGFuZGxlX2FycmF5W2ldIT09dW5kZWZpbmVkKXtyZXR1cm4gZW12YWxfaGFuZGxlX2FycmF5W2ldfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBpbml0X2VtdmFsKCl7TW9kdWxlWyJjb3VudF9lbXZhbF9oYW5kbGVzIl09Y291bnRfZW12YWxfaGFuZGxlcztNb2R1bGVbImdldF9maXJzdF9lbXZhbCJdPWdldF9maXJzdF9lbXZhbDt9dmFyIEVtdmFsPXt0b1ZhbHVlOmhhbmRsZT0+e2lmKCFoYW5kbGUpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgdXNlIGRlbGV0ZWQgdmFsLiBoYW5kbGUgPSAiK2hhbmRsZSk7fXJldHVybiBlbXZhbF9oYW5kbGVfYXJyYXlbaGFuZGxlXS52YWx1ZX0sdG9IYW5kbGU6dmFsdWU9Pntzd2l0Y2godmFsdWUpe2Nhc2UgdW5kZWZpbmVkOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlIHRydWU6cmV0dXJuIDM7Y2FzZSBmYWxzZTpyZXR1cm4gNDtkZWZhdWx0Ont2YXIgaGFuZGxlPWVtdmFsX2ZyZWVfbGlzdC5sZW5ndGg/ZW12YWxfZnJlZV9saXN0LnBvcCgpOmVtdmFsX2hhbmRsZV9hcnJheS5sZW5ndGg7ZW12YWxfaGFuZGxlX2FycmF5W2hhbmRsZV09e3JlZmNvdW50OjEsdmFsdWU6dmFsdWV9O3JldHVybiBoYW5kbGV9fX19O2Z1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsKHJhd1R5cGUsbmFtZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24oaGFuZGxlKXt2YXIgcnY9RW12YWwudG9WYWx1ZShoYW5kbGUpO19fZW12YWxfZGVjcmVmKGhhbmRsZSk7cmV0dXJuIHJ2fSwidG9XaXJlVHlwZSI6ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe3JldHVybiBFbXZhbC50b0hhbmRsZSh2YWx1ZSl9LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSk7fWZ1bmN0aW9uIGVtYmluZFJlcHIodil7aWYodj09PW51bGwpe3JldHVybiAibnVsbCJ9dmFyIHQ9dHlwZW9mIHY7aWYodD09PSJvYmplY3QifHx0PT09ImFycmF5Inx8dD09PSJmdW5jdGlvbiIpe3JldHVybiB2LnRvU3RyaW5nKCl9ZWxzZSB7cmV0dXJuICIiK3Z9fWZ1bmN0aW9uIGZsb2F0UmVhZFZhbHVlRnJvbVBvaW50ZXIobmFtZSxzaGlmdCl7c3dpdGNoKHNoaWZ0KXtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHBvaW50ZXIpe3JldHVybiB0aGlzWyJmcm9tV2lyZVR5cGUiXShIRUFQRjMyW3BvaW50ZXI+PjJdKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihwb2ludGVyKXtyZXR1cm4gdGhpc1siZnJvbVdpcmVUeXBlIl0oSEVBUEY2NFtwb2ludGVyPj4zXSl9O2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBmbG9hdCB0eXBlOiAiK25hbWUpfX1mdW5jdGlvbiBfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdChyYXdUeXBlLG5hbWUsc2l6ZSl7dmFyIHNoaWZ0PWdldFNoaWZ0RnJvbVNpemUoc2l6ZSk7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24odmFsdWUpe3JldHVybiB2YWx1ZX0sInRvV2lyZVR5cGUiOmZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtyZXR1cm4gdmFsdWV9LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmZsb2F0UmVhZFZhbHVlRnJvbVBvaW50ZXIobmFtZSxzaGlmdCksZGVzdHJ1Y3RvckZ1bmN0aW9uOm51bGx9KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfZnVuY3Rpb24obmFtZSxhcmdDb3VudCxyYXdBcmdUeXBlc0FkZHIsc2lnbmF0dXJlLHJhd0ludm9rZXIsZm4pe3ZhciBhcmdUeXBlcz1oZWFwMzJWZWN0b3JUb0FycmF5KGFyZ0NvdW50LHJhd0FyZ1R5cGVzQWRkcik7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3Jhd0ludm9rZXI9ZW1iaW5kX19yZXF1aXJlRnVuY3Rpb24oc2lnbmF0dXJlLHJhd0ludm9rZXIpO2V4cG9zZVB1YmxpY1N5bWJvbChuYW1lLGZ1bmN0aW9uKCl7dGhyb3dVbmJvdW5kVHlwZUVycm9yKCJDYW5ub3QgY2FsbCAiK25hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsYXJnVHlwZXMpO30sYXJnQ291bnQtMSk7d2hlbkRlcGVuZGVudFR5cGVzQXJlUmVzb2x2ZWQoW10sYXJnVHlwZXMsZnVuY3Rpb24oYXJnVHlwZXMpe3ZhciBpbnZva2VyQXJnc0FycmF5PVthcmdUeXBlc1swXSxudWxsXS5jb25jYXQoYXJnVHlwZXMuc2xpY2UoMSkpO3JlcGxhY2VQdWJsaWNTeW1ib2wobmFtZSxjcmFmdEludm9rZXJGdW5jdGlvbihuYW1lLGludm9rZXJBcmdzQXJyYXksbnVsbCxyYXdJbnZva2VyLGZuKSxhcmdDb3VudC0xKTtyZXR1cm4gW119KTt9ZnVuY3Rpb24gaW50ZWdlclJlYWRWYWx1ZUZyb21Qb2ludGVyKG5hbWUsc2hpZnQsc2lnbmVkKXtzd2l0Y2goc2hpZnQpe2Nhc2UgMDpyZXR1cm4gc2lnbmVkP2Z1bmN0aW9uIHJlYWRTOEZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiBIRUFQOFtwb2ludGVyXX06ZnVuY3Rpb24gcmVhZFU4RnJvbVBvaW50ZXIocG9pbnRlcil7cmV0dXJuIEhFQVBVOFtwb2ludGVyXX07Y2FzZSAxOnJldHVybiBzaWduZWQ/ZnVuY3Rpb24gcmVhZFMxNkZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiBIRUFQMTZbcG9pbnRlcj4+MV19OmZ1bmN0aW9uIHJlYWRVMTZGcm9tUG9pbnRlcihwb2ludGVyKXtyZXR1cm4gSEVBUFUxNltwb2ludGVyPj4xXX07Y2FzZSAyOnJldHVybiBzaWduZWQ/ZnVuY3Rpb24gcmVhZFMzMkZyb21Qb2ludGVyKHBvaW50ZXIpe3JldHVybiBIRUFQMzJbcG9pbnRlcj4+Ml19OmZ1bmN0aW9uIHJlYWRVMzJGcm9tUG9pbnRlcihwb2ludGVyKXtyZXR1cm4gSEVBUFUzMltwb2ludGVyPj4yXX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIituYW1lKX19ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlcihwcmltaXRpdmVUeXBlLG5hbWUsc2l6ZSxtaW5SYW5nZSxtYXhSYW5nZSl7bmFtZT1yZWFkTGF0aW4xU3RyaW5nKG5hbWUpO3ZhciBzaGlmdD1nZXRTaGlmdEZyb21TaXplKHNpemUpO3ZhciBmcm9tV2lyZVR5cGU9dmFsdWU9PnZhbHVlO2lmKG1pblJhbmdlPT09MCl7dmFyIGJpdHNoaWZ0PTMyLTgqc2l6ZTtmcm9tV2lyZVR5cGU9dmFsdWU9PnZhbHVlPDxiaXRzaGlmdD4+PmJpdHNoaWZ0O312YXIgaXNVbnNpZ25lZFR5cGU9bmFtZS5pbmNsdWRlcygidW5zaWduZWQiKTt2YXIgY2hlY2tBc3NlcnRpb25zPSh2YWx1ZSx0b1R5cGVOYW1lKT0+e307dmFyIHRvV2lyZVR5cGU7aWYoaXNVbnNpZ25lZFR5cGUpe3RvV2lyZVR5cGU9ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2NoZWNrQXNzZXJ0aW9ucyh2YWx1ZSx0aGlzLm5hbWUpO3JldHVybiB2YWx1ZT4+PjB9O31lbHNlIHt0b1dpcmVUeXBlPWZ1bmN0aW9uKGRlc3RydWN0b3JzLHZhbHVlKXtjaGVja0Fzc2VydGlvbnModmFsdWUsdGhpcy5uYW1lKTtyZXR1cm4gdmFsdWV9O31yZWdpc3RlclR5cGUocHJpbWl0aXZlVHlwZSx7bmFtZTpuYW1lLCJmcm9tV2lyZVR5cGUiOmZyb21XaXJlVHlwZSwidG9XaXJlVHlwZSI6dG9XaXJlVHlwZSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjppbnRlZ2VyUmVhZFZhbHVlRnJvbVBvaW50ZXIobmFtZSxzaGlmdCxtaW5SYW5nZSE9PTApLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSk7fWZ1bmN0aW9uIF9fZW1iaW5kX3JlZ2lzdGVyX21lbW9yeV92aWV3KHJhd1R5cGUsZGF0YVR5cGVJbmRleCxuYW1lKXt2YXIgdHlwZU1hcHBpbmc9W0ludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5XTt2YXIgVEE9dHlwZU1hcHBpbmdbZGF0YVR5cGVJbmRleF07ZnVuY3Rpb24gZGVjb2RlTWVtb3J5VmlldyhoYW5kbGUpe2hhbmRsZT1oYW5kbGU+PjI7dmFyIGhlYXA9SEVBUFUzMjt2YXIgc2l6ZT1oZWFwW2hhbmRsZV07dmFyIGRhdGE9aGVhcFtoYW5kbGUrMV07cmV0dXJuIG5ldyBUQShidWZmZXIsZGF0YSxzaXplKX1uYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7cmVnaXN0ZXJUeXBlKHJhd1R5cGUse25hbWU6bmFtZSwiZnJvbVdpcmVUeXBlIjpkZWNvZGVNZW1vcnlWaWV3LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOmRlY29kZU1lbW9yeVZpZXd9LHtpZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zOnRydWV9KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyhyYXdUeXBlLG5hbWUpe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTt2YXIgc3RkU3RyaW5nSXNVVEY4PW5hbWU9PT0ic3RkOjpzdHJpbmciO3JlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIHBheWxvYWQ9dmFsdWUrNDt2YXIgc3RyO2lmKHN0ZFN0cmluZ0lzVVRGOCl7dmFyIGRlY29kZVN0YXJ0UHRyPXBheWxvYWQ7Zm9yKHZhciBpPTA7aTw9bGVuZ3RoOysraSl7dmFyIGN1cnJlbnRCeXRlUHRyPXBheWxvYWQraTtpZihpPT1sZW5ndGh8fEhFQVBVOFtjdXJyZW50Qnl0ZVB0cl09PTApe3ZhciBtYXhSZWFkPWN1cnJlbnRCeXRlUHRyLWRlY29kZVN0YXJ0UHRyO3ZhciBzdHJpbmdTZWdtZW50PVVURjhUb1N0cmluZyhkZWNvZGVTdGFydFB0cixtYXhSZWFkKTtpZihzdHI9PT11bmRlZmluZWQpe3N0cj1zdHJpbmdTZWdtZW50O31lbHNlIHtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoMCk7c3RyKz1zdHJpbmdTZWdtZW50O31kZWNvZGVTdGFydFB0cj1jdXJyZW50Qnl0ZVB0cisxO319fWVsc2Uge3ZhciBhPW5ldyBBcnJheShsZW5ndGgpO2Zvcih2YXIgaT0wO2k8bGVuZ3RoOysraSl7YVtpXT1TdHJpbmcuZnJvbUNoYXJDb2RlKEhFQVBVOFtwYXlsb2FkK2ldKTt9c3RyPWEuam9pbigiIik7fV9mcmVlKHZhbHVlKTtyZXR1cm4gc3RyfSwidG9XaXJlVHlwZSI6ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpe3ZhbHVlPW5ldyBVaW50OEFycmF5KHZhbHVlKTt9dmFyIGxlbmd0aDt2YXIgdmFsdWVJc09mVHlwZVN0cmluZz10eXBlb2YgdmFsdWU9PSJzdHJpbmciO2lmKCEodmFsdWVJc09mVHlwZVN0cmluZ3x8dmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx2YWx1ZSBpbnN0YW5jZW9mIEludDhBcnJheSkpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIHN0ZDo6c3RyaW5nIik7fWlmKHN0ZFN0cmluZ0lzVVRGOCYmdmFsdWVJc09mVHlwZVN0cmluZyl7bGVuZ3RoPWxlbmd0aEJ5dGVzVVRGOCh2YWx1ZSk7fWVsc2Uge2xlbmd0aD12YWx1ZS5sZW5ndGg7fXZhciBiYXNlPV9tYWxsb2MoNCtsZW5ndGgrMSk7dmFyIHB0cj1iYXNlKzQ7SEVBUFUzMltiYXNlPj4yXT1sZW5ndGg7aWYoc3RkU3RyaW5nSXNVVEY4JiZ2YWx1ZUlzT2ZUeXBlU3RyaW5nKXtzdHJpbmdUb1VURjgodmFsdWUscHRyLGxlbmd0aCsxKTt9ZWxzZSB7aWYodmFsdWVJc09mVHlwZVN0cmluZyl7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXt2YXIgY2hhckNvZGU9dmFsdWUuY2hhckNvZGVBdChpKTtpZihjaGFyQ29kZT4yNTUpe19mcmVlKHB0cik7dGhyb3dCaW5kaW5nRXJyb3IoIlN0cmluZyBoYXMgVVRGLTE2IGNvZGUgdW5pdHMgdGhhdCBkbyBub3QgZml0IGluIDggYml0cyIpO31IRUFQVThbcHRyK2ldPWNoYXJDb2RlO319ZWxzZSB7Zm9yKHZhciBpPTA7aTxsZW5ndGg7KytpKXtIRUFQVThbcHRyK2ldPXZhbHVlW2ldO319fWlmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxiYXNlKTt9cmV0dXJuIGJhc2V9LCJhcmdQYWNrQWR2YW5jZSI6OCwicmVhZFZhbHVlRnJvbVBvaW50ZXIiOnNpbXBsZVJlYWRWYWx1ZUZyb21Qb2ludGVyLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbihwdHIpe19mcmVlKHB0cik7fX0pO312YXIgVVRGMTZEZWNvZGVyPXR5cGVvZiBUZXh0RGVjb2RlciE9InVuZGVmaW5lZCI/bmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOnVuZGVmaW5lZDtmdW5jdGlvbiBVVEYxNlRvU3RyaW5nKHB0cixtYXhCeXRlc1RvUmVhZCl7dmFyIGVuZFB0cj1wdHI7dmFyIGlkeD1lbmRQdHI+PjE7dmFyIG1heElkeD1pZHgrbWF4Qnl0ZXNUb1JlYWQvMjt3aGlsZSghKGlkeD49bWF4SWR4KSYmSEVBUFUxNltpZHhdKSsraWR4O2VuZFB0cj1pZHg8PDE7aWYoZW5kUHRyLXB0cj4zMiYmVVRGMTZEZWNvZGVyKXJldHVybiBVVEYxNkRlY29kZXIuZGVjb2RlKEhFQVBVOC5zbGljZShwdHIsZW5kUHRyKSk7dmFyIHN0cj0iIjtmb3IodmFyIGk9MDshKGk+PW1heEJ5dGVzVG9SZWFkLzIpOysraSl7dmFyIGNvZGVVbml0PUhFQVAxNltwdHIraSoyPj4xXTtpZihjb2RlVW5pdD09MClicmVhaztzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoY29kZVVuaXQpO31yZXR1cm4gc3RyfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTYoc3RyLG91dFB0cixtYXhCeXRlc1RvV3JpdGUpe2lmKG1heEJ5dGVzVG9Xcml0ZT09PXVuZGVmaW5lZCl7bWF4Qnl0ZXNUb1dyaXRlPTIxNDc0ODM2NDc7fWlmKG1heEJ5dGVzVG9Xcml0ZTwyKXJldHVybiAwO21heEJ5dGVzVG9Xcml0ZS09Mjt2YXIgc3RhcnRQdHI9b3V0UHRyO3ZhciBudW1DaGFyc1RvV3JpdGU9bWF4Qnl0ZXNUb1dyaXRlPHN0ci5sZW5ndGgqMj9tYXhCeXRlc1RvV3JpdGUvMjpzdHIubGVuZ3RoO2Zvcih2YXIgaT0wO2k8bnVtQ2hhcnNUb1dyaXRlOysraSl7dmFyIGNvZGVVbml0PXN0ci5jaGFyQ29kZUF0KGkpO0hFQVAxNltvdXRQdHI+PjFdPWNvZGVVbml0O291dFB0cis9Mjt9SEVBUDE2W291dFB0cj4+MV09MDtyZXR1cm4gb3V0UHRyLXN0YXJ0UHRyfWZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGMTYoc3RyKXtyZXR1cm4gc3RyLmxlbmd0aCoyfWZ1bmN0aW9uIFVURjMyVG9TdHJpbmcocHRyLG1heEJ5dGVzVG9SZWFkKXt2YXIgaT0wO3ZhciBzdHI9IiI7d2hpbGUoIShpPj1tYXhCeXRlc1RvUmVhZC80KSl7dmFyIHV0ZjMyPUhFQVAzMltwdHIraSo0Pj4yXTtpZih1dGYzMj09MClicmVhazsrK2k7aWYodXRmMzI+PTY1NTM2KXt2YXIgY2g9dXRmMzItNjU1MzY7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGNoPj4xMCw1NjMyMHxjaCYxMDIzKTt9ZWxzZSB7c3RyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHV0ZjMyKTt9fXJldHVybiBzdHJ9ZnVuY3Rpb24gc3RyaW5nVG9VVEYzMihzdHIsb3V0UHRyLG1heEJ5dGVzVG9Xcml0ZSl7aWYobWF4Qnl0ZXNUb1dyaXRlPT09dW5kZWZpbmVkKXttYXhCeXRlc1RvV3JpdGU9MjE0NzQ4MzY0Nzt9aWYobWF4Qnl0ZXNUb1dyaXRlPDQpcmV0dXJuIDA7dmFyIHN0YXJ0UHRyPW91dFB0cjt2YXIgZW5kUHRyPXN0YXJ0UHRyK21heEJ5dGVzVG9Xcml0ZS00O2Zvcih2YXIgaT0wO2k8c3RyLmxlbmd0aDsrK2kpe3ZhciBjb2RlVW5pdD1zdHIuY2hhckNvZGVBdChpKTtpZihjb2RlVW5pdD49NTUyOTYmJmNvZGVVbml0PD01NzM0Myl7dmFyIHRyYWlsU3Vycm9nYXRlPXN0ci5jaGFyQ29kZUF0KCsraSk7Y29kZVVuaXQ9NjU1MzYrKChjb2RlVW5pdCYxMDIzKTw8MTApfHRyYWlsU3Vycm9nYXRlJjEwMjM7fUhFQVAzMltvdXRQdHI+PjJdPWNvZGVVbml0O291dFB0cis9NDtpZihvdXRQdHIrND5lbmRQdHIpYnJlYWt9SEVBUDMyW291dFB0cj4+Ml09MDtyZXR1cm4gb3V0UHRyLXN0YXJ0UHRyfWZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGMzIoc3RyKXt2YXIgbGVuPTA7Zm9yKHZhciBpPTA7aTxzdHIubGVuZ3RoOysraSl7dmFyIGNvZGVVbml0PXN0ci5jaGFyQ29kZUF0KGkpO2lmKGNvZGVVbml0Pj01NTI5NiYmY29kZVVuaXQ8PTU3MzQzKSsraTtsZW4rPTQ7fXJldHVybiBsZW59ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcocmF3VHlwZSxjaGFyU2l6ZSxuYW1lKXtuYW1lPXJlYWRMYXRpbjFTdHJpbmcobmFtZSk7dmFyIGRlY29kZVN0cmluZyxlbmNvZGVTdHJpbmcsZ2V0SGVhcCxsZW5ndGhCeXRlc1VURixzaGlmdDtpZihjaGFyU2l6ZT09PTIpe2RlY29kZVN0cmluZz1VVEYxNlRvU3RyaW5nO2VuY29kZVN0cmluZz1zdHJpbmdUb1VURjE2O2xlbmd0aEJ5dGVzVVRGPWxlbmd0aEJ5dGVzVVRGMTY7Z2V0SGVhcD0oKT0+SEVBUFUxNjtzaGlmdD0xO31lbHNlIGlmKGNoYXJTaXplPT09NCl7ZGVjb2RlU3RyaW5nPVVURjMyVG9TdHJpbmc7ZW5jb2RlU3RyaW5nPXN0cmluZ1RvVVRGMzI7bGVuZ3RoQnl0ZXNVVEY9bGVuZ3RoQnl0ZXNVVEYzMjtnZXRIZWFwPSgpPT5IRUFQVTMyO3NoaWZ0PTI7fXJlZ2lzdGVyVHlwZShyYXdUeXBlLHtuYW1lOm5hbWUsImZyb21XaXJlVHlwZSI6ZnVuY3Rpb24odmFsdWUpe3ZhciBsZW5ndGg9SEVBUFUzMlt2YWx1ZT4+Ml07dmFyIEhFQVA9Z2V0SGVhcCgpO3ZhciBzdHI7dmFyIGRlY29kZVN0YXJ0UHRyPXZhbHVlKzQ7Zm9yKHZhciBpPTA7aTw9bGVuZ3RoOysraSl7dmFyIGN1cnJlbnRCeXRlUHRyPXZhbHVlKzQraSpjaGFyU2l6ZTtpZihpPT1sZW5ndGh8fEhFQVBbY3VycmVudEJ5dGVQdHI+PnNoaWZ0XT09MCl7dmFyIG1heFJlYWRCeXRlcz1jdXJyZW50Qnl0ZVB0ci1kZWNvZGVTdGFydFB0cjt2YXIgc3RyaW5nU2VnbWVudD1kZWNvZGVTdHJpbmcoZGVjb2RlU3RhcnRQdHIsbWF4UmVhZEJ5dGVzKTtpZihzdHI9PT11bmRlZmluZWQpe3N0cj1zdHJpbmdTZWdtZW50O31lbHNlIHtzdHIrPVN0cmluZy5mcm9tQ2hhckNvZGUoMCk7c3RyKz1zdHJpbmdTZWdtZW50O31kZWNvZGVTdGFydFB0cj1jdXJyZW50Qnl0ZVB0citjaGFyU2l6ZTt9fV9mcmVlKHZhbHVlKTtyZXR1cm4gc3RyfSwidG9XaXJlVHlwZSI6ZnVuY3Rpb24oZGVzdHJ1Y3RvcnMsdmFsdWUpe2lmKCEodHlwZW9mIHZhbHVlPT0ic3RyaW5nIikpe3Rocm93QmluZGluZ0Vycm9yKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAiK25hbWUpO312YXIgbGVuZ3RoPWxlbmd0aEJ5dGVzVVRGKHZhbHVlKTt2YXIgcHRyPV9tYWxsb2MoNCtsZW5ndGgrY2hhclNpemUpO0hFQVBVMzJbcHRyPj4yXT1sZW5ndGg+PnNoaWZ0O2VuY29kZVN0cmluZyh2YWx1ZSxwdHIrNCxsZW5ndGgrY2hhclNpemUpO2lmKGRlc3RydWN0b3JzIT09bnVsbCl7ZGVzdHJ1Y3RvcnMucHVzaChfZnJlZSxwdHIpO31yZXR1cm4gcHRyfSwiYXJnUGFja0FkdmFuY2UiOjgsInJlYWRWYWx1ZUZyb21Qb2ludGVyIjpzaW1wbGVSZWFkVmFsdWVGcm9tUG9pbnRlcixkZXN0cnVjdG9yRnVuY3Rpb246ZnVuY3Rpb24ocHRyKXtfZnJlZShwdHIpO319KTt9ZnVuY3Rpb24gX19lbWJpbmRfcmVnaXN0ZXJfdm9pZChyYXdUeXBlLG5hbWUpe25hbWU9cmVhZExhdGluMVN0cmluZyhuYW1lKTtyZWdpc3RlclR5cGUocmF3VHlwZSx7aXNWb2lkOnRydWUsbmFtZTpuYW1lLCJhcmdQYWNrQWR2YW5jZSI6MCwiZnJvbVdpcmVUeXBlIjpmdW5jdGlvbigpe3JldHVybiB1bmRlZmluZWR9LCJ0b1dpcmVUeXBlIjpmdW5jdGlvbihkZXN0cnVjdG9ycyxvKXtyZXR1cm4gdW5kZWZpbmVkfX0pO31mdW5jdGlvbiBfX2Vtc2NyaXB0ZW5fZGVmYXVsdF9wdGhyZWFkX3N0YWNrX3NpemUoKXtyZXR1cm4gMjA5NzE1Mn12YXIgbm93SXNNb25vdG9uaWM9dHJ1ZTtmdW5jdGlvbiBfX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWMoKXtyZXR1cm4gbm93SXNNb25vdG9uaWN9ZnVuY3Rpb24gZXhlY3V0ZU5vdGlmaWVkUHJveHlpbmdRdWV1ZShxdWV1ZSl7QXRvbWljcy5zdG9yZShIRUFQMzIscXVldWU+PjIsMSk7aWYoX3B0aHJlYWRfc2VsZigpKXtfX2Vtc2NyaXB0ZW5fcHJveHlfZXhlY3V0ZV90YXNrX3F1ZXVlKHF1ZXVlKTt9QXRvbWljcy5jb21wYXJlRXhjaGFuZ2UoSEVBUDMyLHF1ZXVlPj4yLDEsMCk7fU1vZHVsZVsiZXhlY3V0ZU5vdGlmaWVkUHJveHlpbmdRdWV1ZSJdPWV4ZWN1dGVOb3RpZmllZFByb3h5aW5nUXVldWU7ZnVuY3Rpb24gX19lbXNjcmlwdGVuX25vdGlmeV90YXNrX3F1ZXVlKHRhcmdldFRocmVhZElkLGN1cnJUaHJlYWRJZCxtYWluVGhyZWFkSWQscXVldWUpe2lmKHRhcmdldFRocmVhZElkPT1jdXJyVGhyZWFkSWQpe3NldFRpbWVvdXQoKCk9PmV4ZWN1dGVOb3RpZmllZFByb3h5aW5nUXVldWUocXVldWUpKTt9ZWxzZSBpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXtwb3N0TWVzc2FnZSh7InRhcmdldFRocmVhZCI6dGFyZ2V0VGhyZWFkSWQsImNtZCI6InByb2Nlc3NQcm94eWluZ1F1ZXVlIiwicXVldWUiOnF1ZXVlfSk7fWVsc2Uge3ZhciB3b3JrZXI9UFRocmVhZC5wdGhyZWFkc1t0YXJnZXRUaHJlYWRJZF07aWYoIXdvcmtlcil7cmV0dXJufXdvcmtlci5wb3N0TWVzc2FnZSh7ImNtZCI6InByb2Nlc3NQcm94eWluZ1F1ZXVlIiwicXVldWUiOnF1ZXVlfSk7fXJldHVybiAxfWZ1bmN0aW9uIF9fZW1zY3JpcHRlbl9zZXRfb2Zmc2NyZWVuY2FudmFzX3NpemUodGFyZ2V0LHdpZHRoLGhlaWdodCl7cmV0dXJuIC0xfXZhciBlbXZhbF9zeW1ib2xzPXt9O2Z1bmN0aW9uIGdldFN0cmluZ09yU3ltYm9sKGFkZHJlc3Mpe3ZhciBzeW1ib2w9ZW12YWxfc3ltYm9sc1thZGRyZXNzXTtpZihzeW1ib2w9PT11bmRlZmluZWQpe3JldHVybiByZWFkTGF0aW4xU3RyaW5nKGFkZHJlc3MpfXJldHVybiBzeW1ib2x9dmFyIGVtdmFsX21ldGhvZENhbGxlcnM9W107ZnVuY3Rpb24gX19lbXZhbF9jYWxsX3ZvaWRfbWV0aG9kKGNhbGxlcixoYW5kbGUsbWV0aG9kTmFtZSxhcmdzKXtjYWxsZXI9ZW12YWxfbWV0aG9kQ2FsbGVyc1tjYWxsZXJdO2hhbmRsZT1FbXZhbC50b1ZhbHVlKGhhbmRsZSk7bWV0aG9kTmFtZT1nZXRTdHJpbmdPclN5bWJvbChtZXRob2ROYW1lKTtjYWxsZXIoaGFuZGxlLG1ldGhvZE5hbWUsbnVsbCxhcmdzKTt9ZnVuY3Rpb24gZW12YWxfYWRkTWV0aG9kQ2FsbGVyKGNhbGxlcil7dmFyIGlkPWVtdmFsX21ldGhvZENhbGxlcnMubGVuZ3RoO2VtdmFsX21ldGhvZENhbGxlcnMucHVzaChjYWxsZXIpO3JldHVybiBpZH1mdW5jdGlvbiByZXF1aXJlUmVnaXN0ZXJlZFR5cGUocmF3VHlwZSxodW1hbk5hbWUpe3ZhciBpbXBsPXJlZ2lzdGVyZWRUeXBlc1tyYXdUeXBlXTtpZih1bmRlZmluZWQ9PT1pbXBsKXt0aHJvd0JpbmRpbmdFcnJvcihodW1hbk5hbWUrIiBoYXMgdW5rbm93biB0eXBlICIrZ2V0VHlwZU5hbWUocmF3VHlwZSkpO31yZXR1cm4gaW1wbH1mdW5jdGlvbiBlbXZhbF9sb29rdXBUeXBlcyhhcmdDb3VudCxhcmdUeXBlcyl7dmFyIGE9bmV3IEFycmF5KGFyZ0NvdW50KTtmb3IodmFyIGk9MDtpPGFyZ0NvdW50OysraSl7YVtpXT1yZXF1aXJlUmVnaXN0ZXJlZFR5cGUoSEVBUFUzMlthcmdUeXBlcytpKlBPSU5URVJfU0laRT4+Ml0sInBhcmFtZXRlciAiK2kpO31yZXR1cm4gYX12YXIgZW12YWxfcmVnaXN0ZXJlZE1ldGhvZHM9W107ZnVuY3Rpb24gX19lbXZhbF9nZXRfbWV0aG9kX2NhbGxlcihhcmdDb3VudCxhcmdUeXBlcyl7dmFyIHR5cGVzPWVtdmFsX2xvb2t1cFR5cGVzKGFyZ0NvdW50LGFyZ1R5cGVzKTt2YXIgcmV0VHlwZT10eXBlc1swXTt2YXIgc2lnbmF0dXJlTmFtZT1yZXRUeXBlLm5hbWUrIl8kIit0eXBlcy5zbGljZSgxKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZX0pLmpvaW4oIl8iKSsiJCI7dmFyIHJldHVybklkPWVtdmFsX3JlZ2lzdGVyZWRNZXRob2RzW3NpZ25hdHVyZU5hbWVdO2lmKHJldHVybklkIT09dW5kZWZpbmVkKXtyZXR1cm4gcmV0dXJuSWR9dmFyIHBhcmFtcz1bInJldFR5cGUiXTt2YXIgYXJncz1bcmV0VHlwZV07dmFyIGFyZ3NMaXN0PSIiO2Zvcih2YXIgaT0wO2k8YXJnQ291bnQtMTsrK2kpe2FyZ3NMaXN0Kz0oaSE9PTA/IiwgIjoiIikrImFyZyIraTtwYXJhbXMucHVzaCgiYXJnVHlwZSIraSk7YXJncy5wdXNoKHR5cGVzWzEraV0pO312YXIgZnVuY3Rpb25OYW1lPW1ha2VMZWdhbEZ1bmN0aW9uTmFtZSgibWV0aG9kQ2FsbGVyXyIrc2lnbmF0dXJlTmFtZSk7dmFyIGZ1bmN0aW9uQm9keT0icmV0dXJuIGZ1bmN0aW9uICIrZnVuY3Rpb25OYW1lKyIoaGFuZGxlLCBuYW1lLCBkZXN0cnVjdG9ycywgYXJncykge1xuIjt2YXIgb2Zmc2V0PTA7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7ZnVuY3Rpb25Cb2R5Kz0iICAgIHZhciBhcmciK2krIiA9IGFyZ1R5cGUiK2krIi5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzIisob2Zmc2V0PyIrIitvZmZzZXQ6IiIpKyIpO1xuIjtvZmZzZXQrPXR5cGVzW2krMV1bImFyZ1BhY2tBZHZhbmNlIl07fWZ1bmN0aW9uQm9keSs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIithcmdzTGlzdCsiKTtcbiI7Zm9yKHZhciBpPTA7aTxhcmdDb3VudC0xOysraSl7aWYodHlwZXNbaSsxXVsiZGVsZXRlT2JqZWN0Il0pe2Z1bmN0aW9uQm9keSs9IiAgICBhcmdUeXBlIitpKyIuZGVsZXRlT2JqZWN0KGFyZyIraSsiKTtcbiI7fX1pZighcmV0VHlwZS5pc1ZvaWQpe2Z1bmN0aW9uQm9keSs9IiAgICByZXR1cm4gcmV0VHlwZS50b1dpcmVUeXBlKGRlc3RydWN0b3JzLCBydik7XG4iO31mdW5jdGlvbkJvZHkrPSJ9O1xuIjtwYXJhbXMucHVzaChmdW5jdGlvbkJvZHkpO3ZhciBpbnZva2VyRnVuY3Rpb249bmV3XyhGdW5jdGlvbixwYXJhbXMpLmFwcGx5KG51bGwsYXJncyk7cmV0dXJuSWQ9ZW12YWxfYWRkTWV0aG9kQ2FsbGVyKGludm9rZXJGdW5jdGlvbik7ZW12YWxfcmVnaXN0ZXJlZE1ldGhvZHNbc2lnbmF0dXJlTmFtZV09cmV0dXJuSWQ7cmV0dXJuIHJldHVybklkfWZ1bmN0aW9uIF9fZW12YWxfaW5jcmVmKGhhbmRsZSl7aWYoaGFuZGxlPjQpe2VtdmFsX2hhbmRsZV9hcnJheVtoYW5kbGVdLnJlZmNvdW50Kz0xO319ZnVuY3Rpb24gX19lbXZhbF90YWtlX3ZhbHVlKHR5cGUsYXJnKXt0eXBlPXJlcXVpcmVSZWdpc3RlcmVkVHlwZSh0eXBlLCJfZW12YWxfdGFrZV92YWx1ZSIpO3ZhciB2PXR5cGVbInJlYWRWYWx1ZUZyb21Qb2ludGVyIl0oYXJnKTtyZXR1cm4gRW12YWwudG9IYW5kbGUodil9ZnVuY3Rpb24gcmVhZEk1M0Zyb21JNjQocHRyKXtyZXR1cm4gSEVBUFUzMltwdHI+PjJdK0hFQVAzMltwdHIrND4+Ml0qNDI5NDk2NzI5Nn1mdW5jdGlvbiBfX2dtdGltZV9qcyh0aW1lLHRtUHRyKXt2YXIgZGF0ZT1uZXcgRGF0ZShyZWFkSTUzRnJvbUk2NCh0aW1lKSoxZTMpO0hFQVAzMlt0bVB0cj4+Ml09ZGF0ZS5nZXRVVENTZWNvbmRzKCk7SEVBUDMyW3RtUHRyKzQ+PjJdPWRhdGUuZ2V0VVRDTWludXRlcygpO0hFQVAzMlt0bVB0cis4Pj4yXT1kYXRlLmdldFVUQ0hvdXJzKCk7SEVBUDMyW3RtUHRyKzEyPj4yXT1kYXRlLmdldFVUQ0RhdGUoKTtIRUFQMzJbdG1QdHIrMTY+PjJdPWRhdGUuZ2V0VVRDTW9udGgoKTtIRUFQMzJbdG1QdHIrMjA+PjJdPWRhdGUuZ2V0VVRDRnVsbFllYXIoKS0xOTAwO0hFQVAzMlt0bVB0cisyND4+Ml09ZGF0ZS5nZXRVVENEYXkoKTt2YXIgc3RhcnQ9RGF0ZS5VVEMoZGF0ZS5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKTt2YXIgeWRheT0oZGF0ZS5nZXRUaW1lKCktc3RhcnQpLygxZTMqNjAqNjAqMjQpfDA7SEVBUDMyW3RtUHRyKzI4Pj4yXT15ZGF5O31mdW5jdGlvbiBfX2lzTGVhcFllYXIoeWVhcil7cmV0dXJuIHllYXIlND09PTAmJih5ZWFyJTEwMCE9PTB8fHllYXIlNDAwPT09MCl9dmFyIF9fTU9OVEhfREFZU19MRUFQX0NVTVVMQVRJVkU9WzAsMzEsNjAsOTEsMTIxLDE1MiwxODIsMjEzLDI0NCwyNzQsMzA1LDMzNV07dmFyIF9fTU9OVEhfREFZU19SRUdVTEFSX0NVTVVMQVRJVkU9WzAsMzEsNTksOTAsMTIwLDE1MSwxODEsMjEyLDI0MywyNzMsMzA0LDMzNF07ZnVuY3Rpb24gX195ZGF5X2Zyb21fZGF0ZShkYXRlKXt2YXIgaXNMZWFwWWVhcj1fX2lzTGVhcFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpKTt2YXIgbW9udGhEYXlzQ3VtdWxhdGl2ZT1pc0xlYXBZZWFyP19fTU9OVEhfREFZU19MRUFQX0NVTVVMQVRJVkU6X19NT05USF9EQVlTX1JFR1VMQVJfQ1VNVUxBVElWRTt2YXIgeWRheT1tb250aERheXNDdW11bGF0aXZlW2RhdGUuZ2V0TW9udGgoKV0rZGF0ZS5nZXREYXRlKCktMTtyZXR1cm4geWRheX1mdW5jdGlvbiBfX2xvY2FsdGltZV9qcyh0aW1lLHRtUHRyKXt2YXIgZGF0ZT1uZXcgRGF0ZShyZWFkSTUzRnJvbUk2NCh0aW1lKSoxZTMpO0hFQVAzMlt0bVB0cj4+Ml09ZGF0ZS5nZXRTZWNvbmRzKCk7SEVBUDMyW3RtUHRyKzQ+PjJdPWRhdGUuZ2V0TWludXRlcygpO0hFQVAzMlt0bVB0cis4Pj4yXT1kYXRlLmdldEhvdXJzKCk7SEVBUDMyW3RtUHRyKzEyPj4yXT1kYXRlLmdldERhdGUoKTtIRUFQMzJbdG1QdHIrMTY+PjJdPWRhdGUuZ2V0TW9udGgoKTtIRUFQMzJbdG1QdHIrMjA+PjJdPWRhdGUuZ2V0RnVsbFllYXIoKS0xOTAwO0hFQVAzMlt0bVB0cisyND4+Ml09ZGF0ZS5nZXREYXkoKTt2YXIgeWRheT1fX3lkYXlfZnJvbV9kYXRlKGRhdGUpfDA7SEVBUDMyW3RtUHRyKzI4Pj4yXT15ZGF5O0hFQVAzMlt0bVB0ciszNj4+Ml09LShkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkqNjApO3ZhciBzdGFydD1uZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksMCwxKTt2YXIgc3VtbWVyT2Zmc2V0PW5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSw2LDEpLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIHdpbnRlck9mZnNldD1zdGFydC5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciBkc3Q9KHN1bW1lck9mZnNldCE9d2ludGVyT2Zmc2V0JiZkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk9PU1hdGgubWluKHdpbnRlck9mZnNldCxzdW1tZXJPZmZzZXQpKXwwO0hFQVAzMlt0bVB0ciszMj4+Ml09ZHN0O31mdW5jdGlvbiBfX21rdGltZV9qcyh0bVB0cil7dmFyIGRhdGU9bmV3IERhdGUoSEVBUDMyW3RtUHRyKzIwPj4yXSsxOTAwLEhFQVAzMlt0bVB0cisxNj4+Ml0sSEVBUDMyW3RtUHRyKzEyPj4yXSxIRUFQMzJbdG1QdHIrOD4+Ml0sSEVBUDMyW3RtUHRyKzQ+PjJdLEhFQVAzMlt0bVB0cj4+Ml0sMCk7dmFyIGRzdD1IRUFQMzJbdG1QdHIrMzI+PjJdO3ZhciBndWVzc2VkT2Zmc2V0PWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgc3RhcnQ9bmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLDAsMSk7dmFyIHN1bW1lck9mZnNldD1uZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksNiwxKS5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciB3aW50ZXJPZmZzZXQ9c3RhcnQuZ2V0VGltZXpvbmVPZmZzZXQoKTt2YXIgZHN0T2Zmc2V0PU1hdGgubWluKHdpbnRlck9mZnNldCxzdW1tZXJPZmZzZXQpO2lmKGRzdDwwKXtIRUFQMzJbdG1QdHIrMzI+PjJdPU51bWJlcihzdW1tZXJPZmZzZXQhPXdpbnRlck9mZnNldCYmZHN0T2Zmc2V0PT1ndWVzc2VkT2Zmc2V0KTt9ZWxzZSBpZihkc3Q+MCE9KGRzdE9mZnNldD09Z3Vlc3NlZE9mZnNldCkpe3ZhciBub25Ec3RPZmZzZXQ9TWF0aC5tYXgod2ludGVyT2Zmc2V0LHN1bW1lck9mZnNldCk7dmFyIHRydWVPZmZzZXQ9ZHN0PjA/ZHN0T2Zmc2V0Om5vbkRzdE9mZnNldDtkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkrKHRydWVPZmZzZXQtZ3Vlc3NlZE9mZnNldCkqNmU0KTt9SEVBUDMyW3RtUHRyKzI0Pj4yXT1kYXRlLmdldERheSgpO3ZhciB5ZGF5PV9feWRheV9mcm9tX2RhdGUoZGF0ZSl8MDtIRUFQMzJbdG1QdHIrMjg+PjJdPXlkYXk7SEVBUDMyW3RtUHRyPj4yXT1kYXRlLmdldFNlY29uZHMoKTtIRUFQMzJbdG1QdHIrND4+Ml09ZGF0ZS5nZXRNaW51dGVzKCk7SEVBUDMyW3RtUHRyKzg+PjJdPWRhdGUuZ2V0SG91cnMoKTtIRUFQMzJbdG1QdHIrMTI+PjJdPWRhdGUuZ2V0RGF0ZSgpO0hFQVAzMlt0bVB0cisxNj4+Ml09ZGF0ZS5nZXRNb250aCgpO0hFQVAzMlt0bVB0cisyMD4+Ml09ZGF0ZS5nZXRZZWFyKCk7cmV0dXJuIGRhdGUuZ2V0VGltZSgpLzFlM3wwfWZ1bmN0aW9uIF9fbW1hcF9qcyhsZW4scHJvdCxmbGFncyxmZCxvZmYsYWxsb2NhdGVkLGFkZHIpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDEzLDEsbGVuLHByb3QsZmxhZ3MsZmQsb2ZmLGFsbG9jYXRlZCxhZGRyKTt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO3ZhciByZXM9RlMubW1hcChzdHJlYW0sbGVuLG9mZixwcm90LGZsYWdzKTt2YXIgcHRyPXJlcy5wdHI7SEVBUDMyW2FsbG9jYXRlZD4+Ml09cmVzLmFsbG9jYXRlZDtIRUFQVTMyW2FkZHI+PjJdPXB0cjtyZXR1cm4gMH1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiAtZS5lcnJub319ZnVuY3Rpb24gX19tdW5tYXBfanMoYWRkcixsZW4scHJvdCxmbGFncyxmZCxvZmZzZXQpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE0LDEsYWRkcixsZW4scHJvdCxmbGFncyxmZCxvZmZzZXQpO3RyeXt2YXIgc3RyZWFtPVNZU0NBTExTLmdldFN0cmVhbUZyb21GRChmZCk7aWYocHJvdCYyKXtTWVNDQUxMUy5kb01zeW5jKGFkZHIsc3RyZWFtLGxlbixmbGFncyxvZmZzZXQpO31GUy5tdW5tYXAoc3RyZWFtKTt9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gLWUuZXJybm99fWZ1bmN0aW9uIGFsbG9jYXRlVVRGOChzdHIpe3ZhciBzaXplPWxlbmd0aEJ5dGVzVVRGOChzdHIpKzE7dmFyIHJldD1fbWFsbG9jKHNpemUpO2lmKHJldClzdHJpbmdUb1VURjhBcnJheShzdHIsSEVBUDgscmV0LHNpemUpO3JldHVybiByZXR9ZnVuY3Rpb24gX190enNldF9qcyh0aW1lem9uZSxkYXlsaWdodCx0em5hbWUpe3ZhciBjdXJyZW50WWVhcj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk7dmFyIHdpbnRlcj1uZXcgRGF0ZShjdXJyZW50WWVhciwwLDEpO3ZhciBzdW1tZXI9bmV3IERhdGUoY3VycmVudFllYXIsNiwxKTt2YXIgd2ludGVyT2Zmc2V0PXdpbnRlci5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciBzdW1tZXJPZmZzZXQ9c3VtbWVyLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIHN0ZFRpbWV6b25lT2Zmc2V0PU1hdGgubWF4KHdpbnRlck9mZnNldCxzdW1tZXJPZmZzZXQpO0hFQVBVMzJbdGltZXpvbmU+PjJdPXN0ZFRpbWV6b25lT2Zmc2V0KjYwO0hFQVAzMltkYXlsaWdodD4+Ml09TnVtYmVyKHdpbnRlck9mZnNldCE9c3VtbWVyT2Zmc2V0KTtmdW5jdGlvbiBleHRyYWN0Wm9uZShkYXRlKXt2YXIgbWF0Y2g9ZGF0ZS50b1RpbWVTdHJpbmcoKS5tYXRjaCgvXCgoW0EtWmEteiBdKylcKSQvKTtyZXR1cm4gbWF0Y2g/bWF0Y2hbMV06IkdNVCJ9dmFyIHdpbnRlck5hbWU9ZXh0cmFjdFpvbmUod2ludGVyKTt2YXIgc3VtbWVyTmFtZT1leHRyYWN0Wm9uZShzdW1tZXIpO3ZhciB3aW50ZXJOYW1lUHRyPWFsbG9jYXRlVVRGOCh3aW50ZXJOYW1lKTt2YXIgc3VtbWVyTmFtZVB0cj1hbGxvY2F0ZVVURjgoc3VtbWVyTmFtZSk7aWYoc3VtbWVyT2Zmc2V0PHdpbnRlck9mZnNldCl7SEVBUFUzMlt0em5hbWU+PjJdPXdpbnRlck5hbWVQdHI7SEVBUFUzMlt0em5hbWUrND4+Ml09c3VtbWVyTmFtZVB0cjt9ZWxzZSB7SEVBUFUzMlt0em5hbWU+PjJdPXN1bW1lck5hbWVQdHI7SEVBUFUzMlt0em5hbWUrND4+Ml09d2ludGVyTmFtZVB0cjt9fWZ1bmN0aW9uIF9hYm9ydCgpe2Fib3J0KCIiKTt9dmFyIHJlYWRBc21Db25zdEFyZ3NBcnJheT1bXTtmdW5jdGlvbiByZWFkQXNtQ29uc3RBcmdzKHNpZ1B0cixidWYpe3JlYWRBc21Db25zdEFyZ3NBcnJheS5sZW5ndGg9MDt2YXIgY2g7YnVmPj49Mjt3aGlsZShjaD1IRUFQVThbc2lnUHRyKytdKXtidWYrPWNoIT0xMDUmYnVmO3JlYWRBc21Db25zdEFyZ3NBcnJheS5wdXNoKGNoPT0xMDU/SEVBUDMyW2J1Zl06SEVBUEY2NFtidWYrKz4+MV0pOysrYnVmO31yZXR1cm4gcmVhZEFzbUNvbnN0QXJnc0FycmF5fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX2FzbV9jb25zdF9pbnQoY29kZSxzaWdQdHIsYXJnYnVmKXt2YXIgYXJncz1yZWFkQXNtQ29uc3RBcmdzKHNpZ1B0cixhcmdidWYpO3JldHVybiBBU01fQ09OU1RTW2NvZGVdLmFwcGx5KG51bGwsYXJncyl9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fY2hlY2tfYmxvY2tpbmdfYWxsb3dlZCgpe2lmKEVOVklST05NRU5UX0lTX05PREUpcmV0dXJuO2lmKEVOVklST05NRU5UX0lTX1dPUktFUilyZXR1cm47d2Fybk9uY2UoIkJsb2NraW5nIG9uIHRoZSBtYWluIHRocmVhZCBpcyB2ZXJ5IGRhbmdlcm91cywgc2VlIGh0dHBzOi8vZW1zY3JpcHRlbi5vcmcvZG9jcy9wb3J0aW5nL3B0aHJlYWRzLmh0bWwjYmxvY2tpbmctb24tdGhlLW1haW4tYnJvd3Nlci10aHJlYWQiKTt9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fZGF0ZV9ub3coKXtyZXR1cm4gRGF0ZS5ub3coKX1mdW5jdGlvbiBnZXRIZWFwTWF4KCl7cmV0dXJuIEhFQVBVOC5sZW5ndGh9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fZ2V0X2hlYXBfbWF4KCl7cmV0dXJuIGdldEhlYXBNYXgoKX12YXIgX2Vtc2NyaXB0ZW5fZ2V0X25vdztpZihFTlZJUk9OTUVOVF9JU19OT0RFKXtfZW1zY3JpcHRlbl9nZXRfbm93PSgpPT57dmFyIHQ9cHJvY2Vzc1siaHJ0aW1lIl0oKTtyZXR1cm4gdFswXSoxZTMrdFsxXS8xZTZ9O31lbHNlIGlmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpe19lbXNjcmlwdGVuX2dldF9ub3c9KCk9PnBlcmZvcm1hbmNlLm5vdygpLU1vZHVsZVsiX19wZXJmb3JtYW5jZV9ub3dfY2xvY2tfZHJpZnQiXTt9ZWxzZSBfZW1zY3JpcHRlbl9nZXRfbm93PSgpPT5wZXJmb3JtYW5jZS5ub3coKTtmdW5jdGlvbiBfZW1zY3JpcHRlbl9tZW1jcHlfYmlnKGRlc3Qsc3JjLG51bSl7SEVBUFU4LmNvcHlXaXRoaW4oZGVzdCxzcmMsc3JjK251bSk7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX251bV9sb2dpY2FsX2NvcmVzKCl7aWYoRU5WSVJPTk1FTlRfSVNfTk9ERSlyZXR1cm4gcmVxdWlyZSgib3MiKS5jcHVzKCkubGVuZ3RoO3JldHVybiBuYXZpZ2F0b3JbImhhcmR3YXJlQ29uY3VycmVuY3kiXX1mdW5jdGlvbiB3aXRoU3RhY2tTYXZlKGYpe3ZhciBzdGFjaz1zdGFja1NhdmUoKTt2YXIgcmV0PWYoKTtzdGFja1Jlc3RvcmUoc3RhY2spO3JldHVybiByZXR9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoaW5kZXgsc3luYyl7dmFyIG51bUNhbGxBcmdzPWFyZ3VtZW50cy5sZW5ndGgtMjt2YXIgb3V0ZXJBcmdzPWFyZ3VtZW50cztyZXR1cm4gd2l0aFN0YWNrU2F2ZSgoKT0+e3ZhciBzZXJpYWxpemVkTnVtQ2FsbEFyZ3M9bnVtQ2FsbEFyZ3M7dmFyIGFyZ3M9c3RhY2tBbGxvYyhzZXJpYWxpemVkTnVtQ2FsbEFyZ3MqOCk7dmFyIGI9YXJncz4+Mztmb3IodmFyIGk9MDtpPG51bUNhbGxBcmdzO2krKyl7dmFyIGFyZz1vdXRlckFyZ3NbMitpXTtIRUFQRjY0W2IraV09YXJnO31yZXR1cm4gX2Vtc2NyaXB0ZW5fcnVuX2luX21haW5fcnVudGltZV90aHJlYWRfanMoaW5kZXgsc2VyaWFsaXplZE51bUNhbGxBcmdzLGFyZ3Msc3luYyl9KX12YXIgX2Vtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qc19jYWxsQXJncz1bXTtmdW5jdGlvbiBfZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzKGluZGV4LG51bUNhbGxBcmdzLGFyZ3Mpe19lbXNjcmlwdGVuX3JlY2VpdmVfb25fbWFpbl90aHJlYWRfanNfY2FsbEFyZ3MubGVuZ3RoPW51bUNhbGxBcmdzO3ZhciBiPWFyZ3M+PjM7Zm9yKHZhciBpPTA7aTxudW1DYWxsQXJncztpKyspe19lbXNjcmlwdGVuX3JlY2VpdmVfb25fbWFpbl90aHJlYWRfanNfY2FsbEFyZ3NbaV09SEVBUEY2NFtiK2ldO312YXIgaXNFbUFzbUNvbnN0PWluZGV4PDA7dmFyIGZ1bmM9IWlzRW1Bc21Db25zdD9wcm94aWVkRnVuY3Rpb25UYWJsZVtpbmRleF06QVNNX0NPTlNUU1staW5kZXgtMV07cmV0dXJuIGZ1bmMuYXBwbHkobnVsbCxfZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzX2NhbGxBcmdzKX1mdW5jdGlvbiBhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeShyZXF1ZXN0ZWRTaXplKXthYm9ydCgiT09NIik7fWZ1bmN0aW9uIF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwKHJlcXVlc3RlZFNpemUpe0hFQVBVOC5sZW5ndGg7YWJvcnRPbkNhbm5vdEdyb3dNZW1vcnkoKTt9ZnVuY3Rpb24gY29udmVydEZyYW1lVG9QQyhmcmFtZSl7YWJvcnQoIkNhbm5vdCB1c2UgY29udmVydEZyYW1lVG9QQyAobmVlZGVkIGJ5IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcykgd2l0aG91dCAtc1VTRV9PRkZTRVRfQ09OVkVSVEVSIik7cmV0dXJuIDB9dmFyIFVOV0lORF9DQUNIRT17fTtmdW5jdGlvbiBzYXZlSW5VbndpbmRDYWNoZShjYWxsc3RhY2spe2NhbGxzdGFjay5mb3JFYWNoKGZyYW1lPT57Y29udmVydEZyYW1lVG9QQygpO30pO31mdW5jdGlvbiBfZW1zY3JpcHRlbl9zdGFja19zbmFwc2hvdCgpe3ZhciBjYWxsc3RhY2s9anNTdGFja1RyYWNlKCkuc3BsaXQoIlxuIik7aWYoY2FsbHN0YWNrWzBdPT0iRXJyb3IiKXtjYWxsc3RhY2suc2hpZnQoKTt9c2F2ZUluVW53aW5kQ2FjaGUoY2FsbHN0YWNrKTtVTldJTkRfQ0FDSEUubGFzdF9hZGRyPWNvbnZlcnRGcmFtZVRvUEMoY2FsbHN0YWNrWzNdKTtVTldJTkRfQ0FDSEUubGFzdF9zdGFjaz1jYWxsc3RhY2s7cmV0dXJuIFVOV0lORF9DQUNIRS5sYXN0X2FkZHJ9ZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fc3RhY2tfdW53aW5kX2J1ZmZlcihhZGRyLGJ1ZmZlcixjb3VudCl7dmFyIHN0YWNrO2lmKFVOV0lORF9DQUNIRS5sYXN0X2FkZHI9PWFkZHIpe3N0YWNrPVVOV0lORF9DQUNIRS5sYXN0X3N0YWNrO31lbHNlIHtzdGFjaz1qc1N0YWNrVHJhY2UoKS5zcGxpdCgiXG4iKTtpZihzdGFja1swXT09IkVycm9yIil7c3RhY2suc2hpZnQoKTt9c2F2ZUluVW53aW5kQ2FjaGUoc3RhY2spO312YXIgb2Zmc2V0PTM7d2hpbGUoc3RhY2tbb2Zmc2V0XSYmY29udmVydEZyYW1lVG9QQyhzdGFja1tvZmZzZXRdKSE9YWRkcil7KytvZmZzZXQ7fWZvcih2YXIgaT0wO2k8Y291bnQmJnN0YWNrW2krb2Zmc2V0XTsrK2kpe0hFQVAzMltidWZmZXIraSo0Pj4yXT1jb252ZXJ0RnJhbWVUb1BDKHN0YWNrW2krb2Zmc2V0XSk7fXJldHVybiBpfWZ1bmN0aW9uIF9lbXNjcmlwdGVuX3Vud2luZF90b19qc19ldmVudF9sb29wKCl7dGhyb3cgInVud2luZCJ9dmFyIEVOVj17fTtmdW5jdGlvbiBnZXRFeGVjdXRhYmxlTmFtZSgpe3JldHVybiB0aGlzUHJvZ3JhbXx8Ii4vdGhpcy5wcm9ncmFtIn1mdW5jdGlvbiBnZXRFbnZTdHJpbmdzKCl7aWYoIWdldEVudlN0cmluZ3Muc3RyaW5ncyl7dmFyIGxhbmc9KHR5cGVvZiBuYXZpZ2F0b3I9PSJvYmplY3QiJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCI7dmFyIGVudj17IlVTRVIiOiJ3ZWJfdXNlciIsIkxPR05BTUUiOiJ3ZWJfdXNlciIsIlBBVEgiOiIvIiwiUFdEIjoiLyIsIkhPTUUiOiIvaG9tZS93ZWJfdXNlciIsIkxBTkciOmxhbmcsIl8iOmdldEV4ZWN1dGFibGVOYW1lKCl9O2Zvcih2YXIgeCBpbiBFTlYpe2lmKEVOVlt4XT09PXVuZGVmaW5lZClkZWxldGUgZW52W3hdO2Vsc2UgZW52W3hdPUVOVlt4XTt9dmFyIHN0cmluZ3M9W107Zm9yKHZhciB4IGluIGVudil7c3RyaW5ncy5wdXNoKHgrIj0iK2Vudlt4XSk7fWdldEVudlN0cmluZ3Muc3RyaW5ncz1zdHJpbmdzO31yZXR1cm4gZ2V0RW52U3RyaW5ncy5zdHJpbmdzfWZ1bmN0aW9uIHdyaXRlQXNjaWlUb01lbW9yeShzdHIsYnVmZmVyLGRvbnRBZGROdWxsKXtmb3IodmFyIGk9MDtpPHN0ci5sZW5ndGg7KytpKXtIRUFQOFtidWZmZXIrKz4+MF09c3RyLmNoYXJDb2RlQXQoaSk7fWlmKCFkb250QWRkTnVsbClIRUFQOFtidWZmZXI+PjBdPTA7fWZ1bmN0aW9uIF9lbnZpcm9uX2dldChfX2Vudmlyb24sZW52aXJvbl9idWYpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE1LDEsX19lbnZpcm9uLGVudmlyb25fYnVmKTt2YXIgYnVmU2l6ZT0wO2dldEVudlN0cmluZ3MoKS5mb3JFYWNoKGZ1bmN0aW9uKHN0cmluZyxpKXt2YXIgcHRyPWVudmlyb25fYnVmK2J1ZlNpemU7SEVBUFUzMltfX2Vudmlyb24raSo0Pj4yXT1wdHI7d3JpdGVBc2NpaVRvTWVtb3J5KHN0cmluZyxwdHIpO2J1ZlNpemUrPXN0cmluZy5sZW5ndGgrMTt9KTtyZXR1cm4gMH1mdW5jdGlvbiBfZW52aXJvbl9zaXplc19nZXQocGVudmlyb25fY291bnQscGVudmlyb25fYnVmX3NpemUpe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE2LDEscGVudmlyb25fY291bnQscGVudmlyb25fYnVmX3NpemUpO3ZhciBzdHJpbmdzPWdldEVudlN0cmluZ3MoKTtIRUFQVTMyW3BlbnZpcm9uX2NvdW50Pj4yXT1zdHJpbmdzLmxlbmd0aDt2YXIgYnVmU2l6ZT0wO3N0cmluZ3MuZm9yRWFjaChmdW5jdGlvbihzdHJpbmcpe2J1ZlNpemUrPXN0cmluZy5sZW5ndGgrMTt9KTtIRUFQVTMyW3BlbnZpcm9uX2J1Zl9zaXplPj4yXT1idWZTaXplO3JldHVybiAwfWZ1bmN0aW9uIF9mZF9jbG9zZShmZCl7aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRClyZXR1cm4gX2Vtc2NyaXB0ZW5fcHJveHlfdG9fbWFpbl90aHJlYWRfanMoMTcsMSxmZCk7dHJ5e3ZhciBzdHJlYW09U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTtGUy5jbG9zZShzdHJlYW0pO3JldHVybiAwfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIGUuZXJybm99fWZ1bmN0aW9uIGRvUmVhZHYoc3RyZWFtLGlvdixpb3ZjbnQsb2Zmc2V0KXt2YXIgcmV0PTA7Zm9yKHZhciBpPTA7aTxpb3ZjbnQ7aSsrKXt2YXIgcHRyPUhFQVBVMzJbaW92Pj4yXTt2YXIgbGVuPUhFQVBVMzJbaW92KzQ+PjJdO2lvdis9ODt2YXIgY3Vycj1GUy5yZWFkKHN0cmVhbSxIRUFQOCxwdHIsbGVuLG9mZnNldCk7aWYoY3VycjwwKXJldHVybiAtMTtyZXQrPWN1cnI7aWYoY3VycjxsZW4pYnJlYWt9cmV0dXJuIHJldH1mdW5jdGlvbiBfZmRfcmVhZChmZCxpb3YsaW92Y250LHBudW0pe2lmKEVOVklST05NRU5UX0lTX1BUSFJFQUQpcmV0dXJuIF9lbXNjcmlwdGVuX3Byb3h5X3RvX21haW5fdGhyZWFkX2pzKDE4LDEsZmQsaW92LGlvdmNudCxwbnVtKTt0cnl7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO3ZhciBudW09ZG9SZWFkdihzdHJlYW0saW92LGlvdmNudCk7SEVBUFUzMltwbnVtPj4yXT1udW07cmV0dXJuIDB9Y2F0Y2goZSl7aWYodHlwZW9mIEZTPT0idW5kZWZpbmVkInx8IShlIGluc3RhbmNlb2YgRlMuRXJybm9FcnJvcikpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319ZnVuY3Rpb24gY29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQobG8saGkpe3JldHVybiBoaSsyMDk3MTUyPj4+MDw0MTk0MzA1LSEhbG8/KGxvPj4+MCkraGkqNDI5NDk2NzI5NjpOYU59ZnVuY3Rpb24gX2ZkX3NlZWsoZmQsb2Zmc2V0X2xvdyxvZmZzZXRfaGlnaCx3aGVuY2UsbmV3T2Zmc2V0KXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygxOSwxLGZkLG9mZnNldF9sb3csb2Zmc2V0X2hpZ2gsd2hlbmNlLG5ld09mZnNldCk7dHJ5e3ZhciBvZmZzZXQ9Y29udmVydEkzMlBhaXJUb0k1M0NoZWNrZWQob2Zmc2V0X2xvdyxvZmZzZXRfaGlnaCk7aWYoaXNOYU4ob2Zmc2V0KSlyZXR1cm4gNjE7dmFyIHN0cmVhbT1TWVNDQUxMUy5nZXRTdHJlYW1Gcm9tRkQoZmQpO0ZTLmxsc2VlayhzdHJlYW0sb2Zmc2V0LHdoZW5jZSk7dGVtcEk2ND1bc3RyZWFtLnBvc2l0aW9uPj4+MCwodGVtcERvdWJsZT1zdHJlYW0ucG9zaXRpb24sK01hdGguYWJzKHRlbXBEb3VibGUpPj0xP3RlbXBEb3VibGU+MD8oTWF0aC5taW4oK01hdGguZmxvb3IodGVtcERvdWJsZS80Mjk0OTY3Mjk2KSw0Mjk0OTY3Mjk1KXwwKT4+PjA6fn4rTWF0aC5jZWlsKCh0ZW1wRG91YmxlLSsofn50ZW1wRG91YmxlPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sSEVBUDMyW25ld09mZnNldD4+Ml09dGVtcEk2NFswXSxIRUFQMzJbbmV3T2Zmc2V0KzQ+PjJdPXRlbXBJNjRbMV07aWYoc3RyZWFtLmdldGRlbnRzJiZvZmZzZXQ9PT0wJiZ3aGVuY2U9PT0wKXN0cmVhbS5nZXRkZW50cz1udWxsO3JldHVybiAwfWNhdGNoKGUpe2lmKHR5cGVvZiBGUz09InVuZGVmaW5lZCJ8fCEoZSBpbnN0YW5jZW9mIEZTLkVycm5vRXJyb3IpKXRocm93IGU7cmV0dXJuIGUuZXJybm99fWZ1bmN0aW9uIGRvV3JpdGV2KHN0cmVhbSxpb3YsaW92Y250LG9mZnNldCl7dmFyIHJldD0wO2Zvcih2YXIgaT0wO2k8aW92Y250O2krKyl7dmFyIHB0cj1IRUFQVTMyW2lvdj4+Ml07dmFyIGxlbj1IRUFQVTMyW2lvdis0Pj4yXTtpb3YrPTg7dmFyIGN1cnI9RlMud3JpdGUoc3RyZWFtLEhFQVA4LHB0cixsZW4sb2Zmc2V0KTtpZihjdXJyPDApcmV0dXJuIC0xO3JldCs9Y3Vycjt9cmV0dXJuIHJldH1mdW5jdGlvbiBfZmRfd3JpdGUoZmQsaW92LGlvdmNudCxwbnVtKXtpZihFTlZJUk9OTUVOVF9JU19QVEhSRUFEKXJldHVybiBfZW1zY3JpcHRlbl9wcm94eV90b19tYWluX3RocmVhZF9qcygyMCwxLGZkLGlvdixpb3ZjbnQscG51bSk7dHJ5e3ZhciBzdHJlYW09U1lTQ0FMTFMuZ2V0U3RyZWFtRnJvbUZEKGZkKTt2YXIgbnVtPWRvV3JpdGV2KHN0cmVhbSxpb3YsaW92Y250KTtIRUFQVTMyW3BudW0+PjJdPW51bTtyZXR1cm4gMH1jYXRjaChlKXtpZih0eXBlb2YgRlM9PSJ1bmRlZmluZWQifHwhKGUgaW5zdGFuY2VvZiBGUy5FcnJub0Vycm9yKSl0aHJvdyBlO3JldHVybiBlLmVycm5vfX1mdW5jdGlvbiBfZ2V0ZW50cm9weShidWZmZXIsc2l6ZSl7aWYoIV9nZXRlbnRyb3B5LnJhbmRvbURldmljZSl7X2dldGVudHJvcHkucmFuZG9tRGV2aWNlPWdldFJhbmRvbURldmljZSgpO31mb3IodmFyIGk9MDtpPHNpemU7aSsrKXtIRUFQOFtidWZmZXIraT4+MF09X2dldGVudHJvcHkucmFuZG9tRGV2aWNlKCk7fXJldHVybiAwfWZ1bmN0aW9uIF9fYXJyYXlTdW0oYXJyYXksaW5kZXgpe3ZhciBzdW09MDtmb3IodmFyIGk9MDtpPD1pbmRleDtzdW0rPWFycmF5W2krK10pe31yZXR1cm4gc3VtfXZhciBfX01PTlRIX0RBWVNfTEVBUD1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO3ZhciBfX01PTlRIX0RBWVNfUkVHVUxBUj1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdO2Z1bmN0aW9uIF9fYWRkRGF5cyhkYXRlLGRheXMpe3ZhciBuZXdEYXRlPW5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpKTt3aGlsZShkYXlzPjApe3ZhciBsZWFwPV9faXNMZWFwWWVhcihuZXdEYXRlLmdldEZ1bGxZZWFyKCkpO3ZhciBjdXJyZW50TW9udGg9bmV3RGF0ZS5nZXRNb250aCgpO3ZhciBkYXlzSW5DdXJyZW50TW9udGg9KGxlYXA/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIpW2N1cnJlbnRNb250aF07aWYoZGF5cz5kYXlzSW5DdXJyZW50TW9udGgtbmV3RGF0ZS5nZXREYXRlKCkpe2RheXMtPWRheXNJbkN1cnJlbnRNb250aC1uZXdEYXRlLmdldERhdGUoKSsxO25ld0RhdGUuc2V0RGF0ZSgxKTtpZihjdXJyZW50TW9udGg8MTEpe25ld0RhdGUuc2V0TW9udGgoY3VycmVudE1vbnRoKzEpO31lbHNlIHtuZXdEYXRlLnNldE1vbnRoKDApO25ld0RhdGUuc2V0RnVsbFllYXIobmV3RGF0ZS5nZXRGdWxsWWVhcigpKzEpO319ZWxzZSB7bmV3RGF0ZS5zZXREYXRlKG5ld0RhdGUuZ2V0RGF0ZSgpK2RheXMpO3JldHVybiBuZXdEYXRlfX1yZXR1cm4gbmV3RGF0ZX1mdW5jdGlvbiB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXksYnVmZmVyKXtIRUFQOC5zZXQoYXJyYXksYnVmZmVyKTt9ZnVuY3Rpb24gX3N0cmZ0aW1lKHMsbWF4c2l6ZSxmb3JtYXQsdG0pe3ZhciB0bV96b25lPUhFQVAzMlt0bSs0MD4+Ml07dmFyIGRhdGU9e3RtX3NlYzpIRUFQMzJbdG0+PjJdLHRtX21pbjpIRUFQMzJbdG0rND4+Ml0sdG1faG91cjpIRUFQMzJbdG0rOD4+Ml0sdG1fbWRheTpIRUFQMzJbdG0rMTI+PjJdLHRtX21vbjpIRUFQMzJbdG0rMTY+PjJdLHRtX3llYXI6SEVBUDMyW3RtKzIwPj4yXSx0bV93ZGF5OkhFQVAzMlt0bSsyND4+Ml0sdG1feWRheTpIRUFQMzJbdG0rMjg+PjJdLHRtX2lzZHN0OkhFQVAzMlt0bSszMj4+Ml0sdG1fZ210b2ZmOkhFQVAzMlt0bSszNj4+Ml0sdG1fem9uZTp0bV96b25lP1VURjhUb1N0cmluZyh0bV96b25lKToiIn07dmFyIHBhdHRlcm49VVRGOFRvU3RyaW5nKGZvcm1hdCk7dmFyIEVYUEFOU0lPTl9SVUxFU18xPXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZLSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIsIiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIlZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIHJ1bGUgaW4gRVhQQU5TSU9OX1JVTEVTXzEpe3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKG5ldyBSZWdFeHAocnVsZSwiZyIpLEVYUEFOU0lPTl9SVUxFU18xW3J1bGVdKTt9dmFyIFdFRUtEQVlTPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXTt2YXIgTU9OVEhTPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXTtmdW5jdGlvbiBsZWFkaW5nU29tZXRoaW5nKHZhbHVlLGRpZ2l0cyxjaGFyYWN0ZXIpe3ZhciBzdHI9dHlwZW9mIHZhbHVlPT0ibnVtYmVyIj92YWx1ZS50b1N0cmluZygpOnZhbHVlfHwiIjt3aGlsZShzdHIubGVuZ3RoPGRpZ2l0cyl7c3RyPWNoYXJhY3RlclswXStzdHI7fXJldHVybiBzdHJ9ZnVuY3Rpb24gbGVhZGluZ051bGxzKHZhbHVlLGRpZ2l0cyl7cmV0dXJuIGxlYWRpbmdTb21ldGhpbmcodmFsdWUsZGlnaXRzLCIwIil9ZnVuY3Rpb24gY29tcGFyZUJ5RGF5KGRhdGUxLGRhdGUyKXtmdW5jdGlvbiBzZ24odmFsdWUpe3JldHVybiB2YWx1ZTwwPy0xOnZhbHVlPjA/MTowfXZhciBjb21wYXJlO2lmKChjb21wYXJlPXNnbihkYXRlMS5nZXRGdWxsWWVhcigpLWRhdGUyLmdldEZ1bGxZZWFyKCkpKT09PTApe2lmKChjb21wYXJlPXNnbihkYXRlMS5nZXRNb250aCgpLWRhdGUyLmdldE1vbnRoKCkpKT09PTApe2NvbXBhcmU9c2duKGRhdGUxLmdldERhdGUoKS1kYXRlMi5nZXREYXRlKCkpO319cmV0dXJuIGNvbXBhcmV9ZnVuY3Rpb24gZ2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aCl7c3dpdGNoKGphbkZvdXJ0aC5nZXREYXkoKSl7Y2FzZSAwOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIGphbkZvdXJ0aDtjYXNlIDI6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLDAsMyk7Y2FzZSAzOnJldHVybiBuZXcgRGF0ZShqYW5Gb3VydGguZ2V0RnVsbFllYXIoKSwwLDIpO2Nhc2UgNDpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKGphbkZvdXJ0aC5nZXRGdWxsWWVhcigpLTEsMTEsMzEpO2Nhc2UgNjpyZXR1cm4gbmV3IERhdGUoamFuRm91cnRoLmdldEZ1bGxZZWFyKCktMSwxMSwzMCl9fWZ1bmN0aW9uIGdldFdlZWtCYXNlZFllYXIoZGF0ZSl7dmFyIHRoaXNEYXRlPV9fYWRkRGF5cyhuZXcgRGF0ZShkYXRlLnRtX3llYXIrMTkwMCwwLDEpLGRhdGUudG1feWRheSk7dmFyIGphbkZvdXJ0aFRoaXNZZWFyPW5ldyBEYXRlKHRoaXNEYXRlLmdldEZ1bGxZZWFyKCksMCw0KTt2YXIgamFuRm91cnRoTmV4dFllYXI9bmV3IERhdGUodGhpc0RhdGUuZ2V0RnVsbFllYXIoKSsxLDAsNCk7dmFyIGZpcnN0V2Vla1N0YXJ0VGhpc1llYXI9Z2V0Rmlyc3RXZWVrU3RhcnREYXRlKGphbkZvdXJ0aFRoaXNZZWFyKTt2YXIgZmlyc3RXZWVrU3RhcnROZXh0WWVhcj1nZXRGaXJzdFdlZWtTdGFydERhdGUoamFuRm91cnRoTmV4dFllYXIpO2lmKGNvbXBhcmVCeURheShmaXJzdFdlZWtTdGFydFRoaXNZZWFyLHRoaXNEYXRlKTw9MCl7aWYoY29tcGFyZUJ5RGF5KGZpcnN0V2Vla1N0YXJ0TmV4dFllYXIsdGhpc0RhdGUpPD0wKXtyZXR1cm4gdGhpc0RhdGUuZ2V0RnVsbFllYXIoKSsxfXJldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpfXJldHVybiB0aGlzRGF0ZS5nZXRGdWxsWWVhcigpLTF9dmFyIEVYUEFOU0lPTl9SVUxFU18yPXsiJWEiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBXRUVLREFZU1tkYXRlLnRtX3dkYXldLnN1YnN0cmluZygwLDMpfSwiJUEiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBXRUVLREFZU1tkYXRlLnRtX3dkYXldfSwiJWIiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dLnN1YnN0cmluZygwLDMpfSwiJUIiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBNT05USFNbZGF0ZS50bV9tb25dfSwiJUMiOmZ1bmN0aW9uKGRhdGUpe3ZhciB5ZWFyPWRhdGUudG1feWVhcisxOTAwO3JldHVybiBsZWFkaW5nTnVsbHMoeWVhci8xMDB8MCwyKX0sIiVkIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fbWRheSwyKX0sIiVlIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ1NvbWV0aGluZyhkYXRlLnRtX21kYXksMiwiICIpfSwiJWciOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpfSwiJUciOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBnZXRXZWVrQmFzZWRZZWFyKGRhdGUpfSwiJUgiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9ob3VyLDIpfSwiJUkiOmZ1bmN0aW9uKGRhdGUpe3ZhciB0d2VsdmVIb3VyPWRhdGUudG1faG91cjtpZih0d2VsdmVIb3VyPT0wKXR3ZWx2ZUhvdXI9MTI7ZWxzZSBpZih0d2VsdmVIb3VyPjEyKXR3ZWx2ZUhvdXItPTEyO3JldHVybiBsZWFkaW5nTnVsbHModHdlbHZlSG91ciwyKX0sIiVqIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gbGVhZGluZ051bGxzKGRhdGUudG1fbWRheStfX2FycmF5U3VtKF9faXNMZWFwWWVhcihkYXRlLnRtX3llYXIrMTkwMCk/X19NT05USF9EQVlTX0xFQVA6X19NT05USF9EQVlTX1JFR1VMQVIsZGF0ZS50bV9tb24tMSksMyl9LCIlbSI6ZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX21vbisxLDIpfSwiJU0iOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBsZWFkaW5nTnVsbHMoZGF0ZS50bV9taW4sMil9LCIlbiI6ZnVuY3Rpb24oKXtyZXR1cm4gIlxuIn0sIiVwIjpmdW5jdGlvbihkYXRlKXtpZihkYXRlLnRtX2hvdXI+PTAmJmRhdGUudG1faG91cjwxMil7cmV0dXJuICJBTSJ9cmV0dXJuICJQTSJ9LCIlUyI6ZnVuY3Rpb24oZGF0ZSl7cmV0dXJuIGxlYWRpbmdOdWxscyhkYXRlLnRtX3NlYywyKX0sIiV0IjpmdW5jdGlvbigpe3JldHVybiAiXHQifSwiJXUiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBkYXRlLnRtX3dkYXl8fDd9LCIlVSI6ZnVuY3Rpb24oZGF0ZSl7dmFyIGRheXM9ZGF0ZS50bV95ZGF5KzctZGF0ZS50bV93ZGF5O3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5mbG9vcihkYXlzLzcpLDIpfSwiJVYiOmZ1bmN0aW9uKGRhdGUpe3ZhciB2YWw9TWF0aC5mbG9vcigoZGF0ZS50bV95ZGF5KzctKGRhdGUudG1fd2RheSs2KSU3KS83KTtpZigoZGF0ZS50bV93ZGF5KzM3MS1kYXRlLnRtX3lkYXktMiklNzw9Mil7dmFsKys7fWlmKCF2YWwpe3ZhbD01Mjt2YXIgZGVjMzE9KGRhdGUudG1fd2RheSs3LWRhdGUudG1feWRheS0xKSU3O2lmKGRlYzMxPT00fHxkZWMzMT09NSYmX19pc0xlYXBZZWFyKGRhdGUudG1feWVhciU0MDAtMSkpe3ZhbCsrO319ZWxzZSBpZih2YWw9PTUzKXt2YXIgamFuMT0oZGF0ZS50bV93ZGF5KzM3MS1kYXRlLnRtX3lkYXkpJTc7aWYoamFuMSE9NCYmKGphbjEhPTN8fCFfX2lzTGVhcFllYXIoZGF0ZS50bV95ZWFyKSkpdmFsPTE7fXJldHVybiBsZWFkaW5nTnVsbHModmFsLDIpfSwiJXciOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBkYXRlLnRtX3dkYXl9LCIlVyI6ZnVuY3Rpb24oZGF0ZSl7dmFyIGRheXM9ZGF0ZS50bV95ZGF5KzctKGRhdGUudG1fd2RheSs2KSU3O3JldHVybiBsZWFkaW5nTnVsbHMoTWF0aC5mbG9vcihkYXlzLzcpLDIpfSwiJXkiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiAoZGF0ZS50bV95ZWFyKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpfSwiJVkiOmZ1bmN0aW9uKGRhdGUpe3JldHVybiBkYXRlLnRtX3llYXIrMTkwMH0sIiV6IjpmdW5jdGlvbihkYXRlKXt2YXIgb2ZmPWRhdGUudG1fZ210b2ZmO3ZhciBhaGVhZD1vZmY+PTA7b2ZmPU1hdGguYWJzKG9mZikvNjA7b2ZmPW9mZi82MCoxMDArb2ZmJTYwO3JldHVybiAoYWhlYWQ/IisiOiItIikrU3RyaW5nKCIwMDAwIitvZmYpLnNsaWNlKC00KX0sIiVaIjpmdW5jdGlvbihkYXRlKXtyZXR1cm4gZGF0ZS50bV96b25lfSwiJSUiOmZ1bmN0aW9uKCl7cmV0dXJuICIlIn19O3BhdHRlcm49cGF0dGVybi5yZXBsYWNlKC8lJS9nLCJcMFwwIik7Zm9yKHZhciBydWxlIGluIEVYUEFOU0lPTl9SVUxFU18yKXtpZihwYXR0ZXJuLmluY2x1ZGVzKHJ1bGUpKXtwYXR0ZXJuPXBhdHRlcm4ucmVwbGFjZShuZXcgUmVnRXhwKHJ1bGUsImciKSxFWFBBTlNJT05fUlVMRVNfMltydWxlXShkYXRlKSk7fX1wYXR0ZXJuPXBhdHRlcm4ucmVwbGFjZSgvXDBcMC9nLCIlIik7dmFyIGJ5dGVzPWludEFycmF5RnJvbVN0cmluZyhwYXR0ZXJuLGZhbHNlKTtpZihieXRlcy5sZW5ndGg+bWF4c2l6ZSl7cmV0dXJuIDB9d3JpdGVBcnJheVRvTWVtb3J5KGJ5dGVzLHMpO3JldHVybiBieXRlcy5sZW5ndGgtMX1mdW5jdGlvbiBfc3RyZnRpbWVfbChzLG1heHNpemUsZm9ybWF0LHRtLGxvYyl7cmV0dXJuIF9zdHJmdGltZShzLG1heHNpemUsZm9ybWF0LHRtKX1QVGhyZWFkLmluaXQoKTt2YXIgRlNOb2RlPWZ1bmN0aW9uKHBhcmVudCxuYW1lLG1vZGUscmRldil7aWYoIXBhcmVudCl7cGFyZW50PXRoaXM7fXRoaXMucGFyZW50PXBhcmVudDt0aGlzLm1vdW50PXBhcmVudC5tb3VudDt0aGlzLm1vdW50ZWQ9bnVsbDt0aGlzLmlkPUZTLm5leHRJbm9kZSsrO3RoaXMubmFtZT1uYW1lO3RoaXMubW9kZT1tb2RlO3RoaXMubm9kZV9vcHM9e307dGhpcy5zdHJlYW1fb3BzPXt9O3RoaXMucmRldj1yZGV2O307dmFyIHJlYWRNb2RlPTI5Mnw3Mzt2YXIgd3JpdGVNb2RlPTE0NjtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGU05vZGUucHJvdG90eXBlLHtyZWFkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gKHRoaXMubW9kZSZyZWFkTW9kZSk9PT1yZWFkTW9kZX0sc2V0OmZ1bmN0aW9uKHZhbCl7dmFsP3RoaXMubW9kZXw9cmVhZE1vZGU6dGhpcy5tb2RlJj1+cmVhZE1vZGU7fX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAodGhpcy5tb2RlJndyaXRlTW9kZSk9PT13cml0ZU1vZGV9LHNldDpmdW5jdGlvbih2YWwpe3ZhbD90aGlzLm1vZGV8PXdyaXRlTW9kZTp0aGlzLm1vZGUmPX53cml0ZU1vZGU7fX0saXNGb2xkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBGUy5pc0Rpcih0aGlzLm1vZGUpfX0saXNEZXZpY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiBGUy5pc0NocmRldih0aGlzLm1vZGUpfX19KTtGUy5GU05vZGU9RlNOb2RlO0ZTLnN0YXRpY0luaXQoKTtNb2R1bGVbIkZTX2NyZWF0ZVBhdGgiXT1GUy5jcmVhdGVQYXRoO01vZHVsZVsiRlNfY3JlYXRlRGF0YUZpbGUiXT1GUy5jcmVhdGVEYXRhRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZVByZWxvYWRlZEZpbGUiXT1GUy5jcmVhdGVQcmVsb2FkZWRGaWxlO01vZHVsZVsiRlNfdW5saW5rIl09RlMudW5saW5rO01vZHVsZVsiRlNfY3JlYXRlTGF6eUZpbGUiXT1GUy5jcmVhdGVMYXp5RmlsZTtNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtlbWJpbmRfaW5pdF9jaGFyQ29kZXMoKTtCaW5kaW5nRXJyb3I9TW9kdWxlWyJCaW5kaW5nRXJyb3IiXT1leHRlbmRFcnJvcihFcnJvciwiQmluZGluZ0Vycm9yIik7SW50ZXJuYWxFcnJvcj1Nb2R1bGVbIkludGVybmFsRXJyb3IiXT1leHRlbmRFcnJvcihFcnJvciwiSW50ZXJuYWxFcnJvciIpO2luaXRfQ2xhc3NIYW5kbGUoKTtpbml0X2VtYmluZCgpO2luaXRfUmVnaXN0ZXJlZFBvaW50ZXIoKTtVbmJvdW5kVHlwZUVycm9yPU1vZHVsZVsiVW5ib3VuZFR5cGVFcnJvciJdPWV4dGVuZEVycm9yKEVycm9yLCJVbmJvdW5kVHlwZUVycm9yIik7aW5pdF9lbXZhbCgpO3ZhciBwcm94aWVkRnVuY3Rpb25UYWJsZT1bbnVsbCxfcHJvY19leGl0LGV4aXRPbk1haW5UaHJlYWQscHRocmVhZENyZWF0ZVByb3hpZWQsX19fc3lzY2FsbF9mY250bDY0LF9fX3N5c2NhbGxfZnN0YXQ2NCxfX19zeXNjYWxsX2dldGRlbnRzNjQsX19fc3lzY2FsbF9pb2N0bCxfX19zeXNjYWxsX2xzdGF0NjQsX19fc3lzY2FsbF9uZXdmc3RhdGF0LF9fX3N5c2NhbGxfb3BlbmF0LF9fX3N5c2NhbGxfc3RhdDY0LF9fX3N5c2NhbGxfdW5saW5rYXQsX19tbWFwX2pzLF9fbXVubWFwX2pzLF9lbnZpcm9uX2dldCxfZW52aXJvbl9zaXplc19nZXQsX2ZkX2Nsb3NlLF9mZF9yZWFkLF9mZF9zZWVrLF9mZF93cml0ZV07dmFyIGFzbUxpYnJhcnlBcmc9eyJIYXZlT2Zmc2V0Q29udmVydGVyIjpIYXZlT2Zmc2V0Q29udmVydGVyLCJfVW53aW5kX0JhY2t0cmFjZSI6X19VbndpbmRfQmFja3RyYWNlLCJfVW53aW5kX0dldElQIjpfX1Vud2luZF9HZXRJUCwiX19lbXNjcmlwdGVuX2luaXRfbWFpbl90aHJlYWRfanMiOl9fX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qcywiX19lbXNjcmlwdGVuX3RocmVhZF9jbGVhbnVwIjpfX19lbXNjcmlwdGVuX3RocmVhZF9jbGVhbnVwLCJfX3B0aHJlYWRfY3JlYXRlX2pzIjpfX19wdGhyZWFkX2NyZWF0ZV9qcywiX19zeXNjYWxsX2ZjbnRsNjQiOl9fX3N5c2NhbGxfZmNudGw2NCwiX19zeXNjYWxsX2ZzdGF0NjQiOl9fX3N5c2NhbGxfZnN0YXQ2NCwiX19zeXNjYWxsX2dldGRlbnRzNjQiOl9fX3N5c2NhbGxfZ2V0ZGVudHM2NCwiX19zeXNjYWxsX2lvY3RsIjpfX19zeXNjYWxsX2lvY3RsLCJfX3N5c2NhbGxfbHN0YXQ2NCI6X19fc3lzY2FsbF9sc3RhdDY0LCJfX3N5c2NhbGxfbmV3ZnN0YXRhdCI6X19fc3lzY2FsbF9uZXdmc3RhdGF0LCJfX3N5c2NhbGxfb3BlbmF0IjpfX19zeXNjYWxsX29wZW5hdCwiX19zeXNjYWxsX3N0YXQ2NCI6X19fc3lzY2FsbF9zdGF0NjQsIl9fc3lzY2FsbF91bmxpbmthdCI6X19fc3lzY2FsbF91bmxpbmthdCwiX2RsaW5pdCI6X19kbGluaXQsIl9kbG9wZW5fanMiOl9fZGxvcGVuX2pzLCJfZGxzeW1fanMiOl9fZGxzeW1fanMsIl9lbWJpbmRfcmVnaXN0ZXJfYmlnaW50IjpfX2VtYmluZF9yZWdpc3Rlcl9iaWdpbnQsIl9lbWJpbmRfcmVnaXN0ZXJfYm9vbCI6X19lbWJpbmRfcmVnaXN0ZXJfYm9vbCwiX2VtYmluZF9yZWdpc3Rlcl9jbGFzcyI6X19lbWJpbmRfcmVnaXN0ZXJfY2xhc3MsIl9lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfY2xhc3NfZnVuY3Rpb24iOl9fZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NsYXNzX2Z1bmN0aW9uLCJfZW1iaW5kX3JlZ2lzdGVyX2NsYXNzX2NvbnN0cnVjdG9yIjpfX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19jb25zdHJ1Y3RvciwiX2VtYmluZF9yZWdpc3Rlcl9jbGFzc19mdW5jdGlvbiI6X19lbWJpbmRfcmVnaXN0ZXJfY2xhc3NfZnVuY3Rpb24sIl9lbWJpbmRfcmVnaXN0ZXJfZW12YWwiOl9fZW1iaW5kX3JlZ2lzdGVyX2VtdmFsLCJfZW1iaW5kX3JlZ2lzdGVyX2Zsb2F0IjpfX2VtYmluZF9yZWdpc3Rlcl9mbG9hdCwiX2VtYmluZF9yZWdpc3Rlcl9mdW5jdGlvbiI6X19lbWJpbmRfcmVnaXN0ZXJfZnVuY3Rpb24sIl9lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciI6X19lbWJpbmRfcmVnaXN0ZXJfaW50ZWdlciwiX2VtYmluZF9yZWdpc3Rlcl9tZW1vcnlfdmlldyI6X19lbWJpbmRfcmVnaXN0ZXJfbWVtb3J5X3ZpZXcsIl9lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZyI6X19lbWJpbmRfcmVnaXN0ZXJfc3RkX3N0cmluZywiX2VtYmluZF9yZWdpc3Rlcl9zdGRfd3N0cmluZyI6X19lbWJpbmRfcmVnaXN0ZXJfc3RkX3dzdHJpbmcsIl9lbWJpbmRfcmVnaXN0ZXJfdm9pZCI6X19lbWJpbmRfcmVnaXN0ZXJfdm9pZCwiX2Vtc2NyaXB0ZW5fZGVmYXVsdF9wdGhyZWFkX3N0YWNrX3NpemUiOl9fZW1zY3JpcHRlbl9kZWZhdWx0X3B0aHJlYWRfc3RhY2tfc2l6ZSwiX2Vtc2NyaXB0ZW5fZ2V0X25vd19pc19tb25vdG9uaWMiOl9fZW1zY3JpcHRlbl9nZXRfbm93X2lzX21vbm90b25pYywiX2Vtc2NyaXB0ZW5fbm90aWZ5X3Rhc2tfcXVldWUiOl9fZW1zY3JpcHRlbl9ub3RpZnlfdGFza19xdWV1ZSwiX2Vtc2NyaXB0ZW5fc2V0X29mZnNjcmVlbmNhbnZhc19zaXplIjpfX2Vtc2NyaXB0ZW5fc2V0X29mZnNjcmVlbmNhbnZhc19zaXplLCJfZW12YWxfY2FsbF92b2lkX21ldGhvZCI6X19lbXZhbF9jYWxsX3ZvaWRfbWV0aG9kLCJfZW12YWxfZGVjcmVmIjpfX2VtdmFsX2RlY3JlZiwiX2VtdmFsX2dldF9tZXRob2RfY2FsbGVyIjpfX2VtdmFsX2dldF9tZXRob2RfY2FsbGVyLCJfZW12YWxfaW5jcmVmIjpfX2VtdmFsX2luY3JlZiwiX2VtdmFsX3Rha2VfdmFsdWUiOl9fZW12YWxfdGFrZV92YWx1ZSwiX2dtdGltZV9qcyI6X19nbXRpbWVfanMsIl9sb2NhbHRpbWVfanMiOl9fbG9jYWx0aW1lX2pzLCJfbWt0aW1lX2pzIjpfX21rdGltZV9qcywiX21tYXBfanMiOl9fbW1hcF9qcywiX211bm1hcF9qcyI6X19tdW5tYXBfanMsIl90enNldF9qcyI6X190enNldF9qcywiYWJvcnQiOl9hYm9ydCwiZW1zY3JpcHRlbl9hc21fY29uc3RfaW50IjpfZW1zY3JpcHRlbl9hc21fY29uc3RfaW50LCJlbXNjcmlwdGVuX2NoZWNrX2Jsb2NraW5nX2FsbG93ZWQiOl9lbXNjcmlwdGVuX2NoZWNrX2Jsb2NraW5nX2FsbG93ZWQsImVtc2NyaXB0ZW5fZGF0ZV9ub3ciOl9lbXNjcmlwdGVuX2RhdGVfbm93LCJlbXNjcmlwdGVuX2dldF9oZWFwX21heCI6X2Vtc2NyaXB0ZW5fZ2V0X2hlYXBfbWF4LCJlbXNjcmlwdGVuX2dldF9ub3ciOl9lbXNjcmlwdGVuX2dldF9ub3csImVtc2NyaXB0ZW5fbWVtY3B5X2JpZyI6X2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZywiZW1zY3JpcHRlbl9udW1fbG9naWNhbF9jb3JlcyI6X2Vtc2NyaXB0ZW5fbnVtX2xvZ2ljYWxfY29yZXMsImVtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qcyI6X2Vtc2NyaXB0ZW5fcmVjZWl2ZV9vbl9tYWluX3RocmVhZF9qcywiZW1zY3JpcHRlbl9yZXNpemVfaGVhcCI6X2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAsImVtc2NyaXB0ZW5fc3RhY2tfc25hcHNob3QiOl9lbXNjcmlwdGVuX3N0YWNrX3NuYXBzaG90LCJlbXNjcmlwdGVuX3N0YWNrX3Vud2luZF9idWZmZXIiOl9lbXNjcmlwdGVuX3N0YWNrX3Vud2luZF9idWZmZXIsImVtc2NyaXB0ZW5fdW53aW5kX3RvX2pzX2V2ZW50X2xvb3AiOl9lbXNjcmlwdGVuX3Vud2luZF90b19qc19ldmVudF9sb29wLCJlbnZpcm9uX2dldCI6X2Vudmlyb25fZ2V0LCJlbnZpcm9uX3NpemVzX2dldCI6X2Vudmlyb25fc2l6ZXNfZ2V0LCJleGl0IjpfZXhpdCwiZmRfY2xvc2UiOl9mZF9jbG9zZSwiZmRfcmVhZCI6X2ZkX3JlYWQsImZkX3NlZWsiOl9mZF9zZWVrLCJmZF93cml0ZSI6X2ZkX3dyaXRlLCJnZXRlbnRyb3B5IjpfZ2V0ZW50cm9weSwibWVtb3J5Ijp3YXNtTWVtb3J5fHxNb2R1bGVbIndhc21NZW1vcnkiXSwic3RyZnRpbWVfbCI6X3N0cmZ0aW1lX2x9O2NyZWF0ZVdhc20oKTtNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbIl9fX3dhc21fY2FsbF9jdG9ycyJdPU1vZHVsZVsiYXNtIl1bIl9fd2FzbV9jYWxsX2N0b3JzIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9fX2Vycm5vX2xvY2F0aW9uPU1vZHVsZVsiX19fZXJybm9fbG9jYXRpb24iXT1mdW5jdGlvbigpe3JldHVybiAoX19fZXJybm9fbG9jYXRpb249TW9kdWxlWyJfX19lcnJub19sb2NhdGlvbiJdPU1vZHVsZVsiYXNtIl1bIl9fZXJybm9fbG9jYXRpb24iXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX21hbGxvYz1Nb2R1bGVbIl9tYWxsb2MiXT1mdW5jdGlvbigpe3JldHVybiAoX21hbGxvYz1Nb2R1bGVbIl9tYWxsb2MiXT1Nb2R1bGVbImFzbSJdWyJtYWxsb2MiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2ZyZWU9TW9kdWxlWyJfZnJlZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfZnJlZT1Nb2R1bGVbIl9mcmVlIl09TW9kdWxlWyJhc20iXVsiZnJlZSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfcHRocmVhZF9zZWxmPU1vZHVsZVsiX3B0aHJlYWRfc2VsZiJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfcHRocmVhZF9zZWxmPU1vZHVsZVsiX3B0aHJlYWRfc2VsZiJdPU1vZHVsZVsiYXNtIl1bInB0aHJlYWRfc2VsZiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19lbXNjcmlwdGVuX3Rsc19pbml0Il09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX19lbXNjcmlwdGVuX3Rsc19pbml0Il09TW9kdWxlWyJhc20iXVsiX2Vtc2NyaXB0ZW5fdGxzX2luaXQiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX2Vtc2NyaXB0ZW5fYnVpbHRpbl9tZW1hbGlnbj1Nb2R1bGVbIl9lbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24iXT1mdW5jdGlvbigpe3JldHVybiAoX2Vtc2NyaXB0ZW5fYnVpbHRpbl9tZW1hbGlnbj1Nb2R1bGVbIl9lbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24iXT1Nb2R1bGVbImFzbSJdWyJlbXNjcmlwdGVuX2J1aWx0aW5fbWVtYWxpZ24iXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgX19fZ2V0VHlwZU5hbWU9TW9kdWxlWyJfX19nZXRUeXBlTmFtZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX19nZXRUeXBlTmFtZT1Nb2R1bGVbIl9fX2dldFR5cGVOYW1lIl09TW9kdWxlWyJhc20iXVsiX19nZXRUeXBlTmFtZSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19lbWJpbmRfaW5pdGlhbGl6ZV9iaW5kaW5ncyJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbIl9fZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MiXT1Nb2R1bGVbImFzbSJdWyJfZW1iaW5kX2luaXRpYWxpemVfYmluZGluZ3MiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbIl9fX2RsX3NldGVyciJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbIl9fX2RsX3NldGVyciJdPU1vZHVsZVsiYXNtIl1bIl9fZGxfc2V0ZXJyIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdD1Nb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfaW5pdCJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQ9TW9kdWxlWyJfX2Vtc2NyaXB0ZW5fdGhyZWFkX2luaXQiXT1Nb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90aHJlYWRfaW5pdCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9jcmFzaGVkIl09TW9kdWxlWyJhc20iXVsiX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbIl9lbXNjcmlwdGVuX21haW5fdGhyZWFkX3Byb2Nlc3NfcXVldWVkX2NhbGxzIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX2Vtc2NyaXB0ZW5fbWFpbl90aHJlYWRfcHJvY2Vzc19xdWV1ZWRfY2FsbHMiXT1Nb2R1bGVbImFzbSJdWyJlbXNjcmlwdGVuX21haW5fdGhyZWFkX3Byb2Nlc3NfcXVldWVkX2NhbGxzIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJfZW1zY3JpcHRlbl9tYWluX2Jyb3dzZXJfdGhyZWFkX2lkIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX2Vtc2NyaXB0ZW5fbWFpbl9icm93c2VyX3RocmVhZF9pZCJdPU1vZHVsZVsiYXNtIl1bImVtc2NyaXB0ZW5fbWFpbl9icm93c2VyX3RocmVhZF9pZCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfZW1zY3JpcHRlbl9ydW5faW5fbWFpbl9ydW50aW1lX3RocmVhZF9qcz1Nb2R1bGVbIl9lbXNjcmlwdGVuX3J1bl9pbl9tYWluX3J1bnRpbWVfdGhyZWFkX2pzIl09ZnVuY3Rpb24oKXtyZXR1cm4gKF9lbXNjcmlwdGVuX3J1bl9pbl9tYWluX3J1bnRpbWVfdGhyZWFkX2pzPU1vZHVsZVsiX2Vtc2NyaXB0ZW5fcnVuX2luX21haW5fcnVudGltZV90aHJlYWRfanMiXT1Nb2R1bGVbImFzbSJdWyJlbXNjcmlwdGVuX3J1bl9pbl9tYWluX3J1bnRpbWVfdGhyZWFkX2pzIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJfZW1zY3JpcHRlbl9kaXNwYXRjaF90b190aHJlYWRfIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiX2Vtc2NyaXB0ZW5fZGlzcGF0Y2hfdG9fdGhyZWFkXyJdPU1vZHVsZVsiYXNtIl1bImVtc2NyaXB0ZW5fZGlzcGF0Y2hfdG9fdGhyZWFkXyJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfX2Vtc2NyaXB0ZW5fcHJveHlfZXhlY3V0ZV90YXNrX3F1ZXVlPU1vZHVsZVsiX19lbXNjcmlwdGVuX3Byb3h5X2V4ZWN1dGVfdGFza19xdWV1ZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX2Vtc2NyaXB0ZW5fcHJveHlfZXhlY3V0ZV90YXNrX3F1ZXVlPU1vZHVsZVsiX19lbXNjcmlwdGVuX3Byb3h5X2V4ZWN1dGVfdGFza19xdWV1ZSJdPU1vZHVsZVsiYXNtIl1bIl9lbXNjcmlwdGVuX3Byb3h5X2V4ZWN1dGVfdGFza19xdWV1ZSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfX2Vtc2NyaXB0ZW5fdGhyZWFkX2ZyZWVfZGF0YT1Nb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhIl09ZnVuY3Rpb24oKXtyZXR1cm4gKF9fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhPU1vZHVsZVsiX19lbXNjcmlwdGVuX3RocmVhZF9mcmVlX2RhdGEiXT1Nb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIF9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdD1Nb2R1bGVbIl9fZW1zY3JpcHRlbl90aHJlYWRfZXhpdCJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQ9TW9kdWxlWyJfX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQiXT1Nb2R1bGVbImFzbSJdWyJfZW1zY3JpcHRlbl90aHJlYWRfZXhpdCJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzPU1vZHVsZVsiX2Vtc2NyaXB0ZW5fc3RhY2tfc2V0X2xpbWl0cyJdPWZ1bmN0aW9uKCl7cmV0dXJuIChfZW1zY3JpcHRlbl9zdGFja19zZXRfbGltaXRzPU1vZHVsZVsiX2Vtc2NyaXB0ZW5fc3RhY2tfc2V0X2xpbWl0cyJdPU1vZHVsZVsiYXNtIl1bImVtc2NyaXB0ZW5fc3RhY2tfc2V0X2xpbWl0cyJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBzdGFja1NhdmU9TW9kdWxlWyJzdGFja1NhdmUiXT1mdW5jdGlvbigpe3JldHVybiAoc3RhY2tTYXZlPU1vZHVsZVsic3RhY2tTYXZlIl09TW9kdWxlWyJhc20iXVsic3RhY2tTYXZlIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIHN0YWNrUmVzdG9yZT1Nb2R1bGVbInN0YWNrUmVzdG9yZSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChzdGFja1Jlc3RvcmU9TW9kdWxlWyJzdGFja1Jlc3RvcmUiXT1Nb2R1bGVbImFzbSJdWyJzdGFja1Jlc3RvcmUiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTt2YXIgc3RhY2tBbGxvYz1Nb2R1bGVbInN0YWNrQWxsb2MiXT1mdW5jdGlvbigpe3JldHVybiAoc3RhY2tBbGxvYz1Nb2R1bGVbInN0YWNrQWxsb2MiXT1Nb2R1bGVbImFzbSJdWyJzdGFja0FsbG9jIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX2pqaiJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfampqIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF9qamoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfamlpaSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfamlpaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfamlpaSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF9paWlpamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlqaiJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfaWlpaWpqIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX3ZpaWpqIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiZHluQ2FsbF92aWlqaiJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfdmlpamoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfdmlpaWpqamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpaWlqampqIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF92aWlpampqaiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF9qaWkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2ppaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfamlpIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX3ZpamkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpamkiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZpamkiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfamkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2ppIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF9qaSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF92aiJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfdmoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZqIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX3ZpaWoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpaWoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZpaWoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfdmlqIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiZHluQ2FsbF92aWoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX3ZpaiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF92aWlqaWkiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX3ZpaWppaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfdmlpamlpIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX2lpamppaWlpIl09ZnVuY3Rpb24oKXtyZXR1cm4gKE1vZHVsZVsiZHluQ2FsbF9paWpqaWlpaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfaWlqamlpaWkiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfamlqaSJdPWZ1bmN0aW9uKCl7cmV0dXJuIChNb2R1bGVbImR5bkNhbGxfamlqaSJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfamlqaSJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiZHluQ2FsbF9paWlpaWoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlpaiJdPU1vZHVsZVsiYXNtIl1bImR5bkNhbGxfaWlpaWlqIl0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX07TW9kdWxlWyJkeW5DYWxsX2lpaWlpamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlpamoiXT1Nb2R1bGVbImFzbSJdWyJkeW5DYWxsX2lpaWlpamoiXSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtNb2R1bGVbImR5bkNhbGxfaWlpaWlpamoiXT1mdW5jdGlvbigpe3JldHVybiAoTW9kdWxlWyJkeW5DYWxsX2lpaWlpaWpqIl09TW9kdWxlWyJhc20iXVsiZHluQ2FsbF9paWlpaWlqaiJdKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O01vZHVsZVsiX19fc3RhcnRfZW1fanMiXT0yMDk2NTc7TW9kdWxlWyJfX19zdG9wX2VtX2pzIl09MjA5NzE4O01vZHVsZVsiYWRkUnVuRGVwZW5kZW5jeSJdPWFkZFJ1bkRlcGVuZGVuY3k7TW9kdWxlWyJyZW1vdmVSdW5EZXBlbmRlbmN5Il09cmVtb3ZlUnVuRGVwZW5kZW5jeTtNb2R1bGVbIkZTX2NyZWF0ZVBhdGgiXT1GUy5jcmVhdGVQYXRoO01vZHVsZVsiRlNfY3JlYXRlRGF0YUZpbGUiXT1GUy5jcmVhdGVEYXRhRmlsZTtNb2R1bGVbIkZTX2NyZWF0ZVByZWxvYWRlZEZpbGUiXT1GUy5jcmVhdGVQcmVsb2FkZWRGaWxlO01vZHVsZVsiRlNfY3JlYXRlTGF6eUZpbGUiXT1GUy5jcmVhdGVMYXp5RmlsZTtNb2R1bGVbIkZTX2NyZWF0ZURldmljZSJdPUZTLmNyZWF0ZURldmljZTtNb2R1bGVbIkZTX3VubGluayJdPUZTLnVubGluaztNb2R1bGVbImtlZXBSdW50aW1lQWxpdmUiXT1rZWVwUnVudGltZUFsaXZlO01vZHVsZVsid2FzbU1lbW9yeSJdPXdhc21NZW1vcnk7TW9kdWxlWyJFeGl0U3RhdHVzIl09RXhpdFN0YXR1cztNb2R1bGVbIlBUaHJlYWQiXT1QVGhyZWFkO3ZhciBjYWxsZWRSdW47ZGVwZW5kZW5jaWVzRnVsZmlsbGVkPWZ1bmN0aW9uIHJ1bkNhbGxlcigpe2lmKCFjYWxsZWRSdW4pcnVuKCk7aWYoIWNhbGxlZFJ1bilkZXBlbmRlbmNpZXNGdWxmaWxsZWQ9cnVuQ2FsbGVyO307ZnVuY3Rpb24gcnVuKGFyZ3Mpe2lmKHJ1bkRlcGVuZGVuY2llcz4wKXtyZXR1cm59aWYoRU5WSVJPTk1FTlRfSVNfUFRIUkVBRCl7cmVhZHlQcm9taXNlUmVzb2x2ZShNb2R1bGUpO2luaXRSdW50aW1lKCk7cG9zdE1lc3NhZ2UoeyJjbWQiOiJsb2FkZWQifSk7cmV0dXJufXByZVJ1bigpO2lmKHJ1bkRlcGVuZGVuY2llcz4wKXtyZXR1cm59ZnVuY3Rpb24gZG9SdW4oKXtpZihjYWxsZWRSdW4pcmV0dXJuO2NhbGxlZFJ1bj10cnVlO01vZHVsZVsiY2FsbGVkUnVuIl09dHJ1ZTtpZihBQk9SVClyZXR1cm47aW5pdFJ1bnRpbWUoKTtyZWFkeVByb21pc2VSZXNvbHZlKE1vZHVsZSk7aWYoTW9kdWxlWyJvblJ1bnRpbWVJbml0aWFsaXplZCJdKU1vZHVsZVsib25SdW50aW1lSW5pdGlhbGl6ZWQiXSgpO3Bvc3RSdW4oKTt9aWYoTW9kdWxlWyJzZXRTdGF0dXMiXSl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7TW9kdWxlWyJzZXRTdGF0dXMiXSgiIik7fSwxKTtkb1J1bigpO30sMSk7fWVsc2Uge2RvUnVuKCk7fX1pZihNb2R1bGVbInByZUluaXQiXSl7aWYodHlwZW9mIE1vZHVsZVsicHJlSW5pdCJdPT0iZnVuY3Rpb24iKU1vZHVsZVsicHJlSW5pdCJdPVtNb2R1bGVbInByZUluaXQiXV07d2hpbGUoTW9kdWxlWyJwcmVJbml0Il0ubGVuZ3RoPjApe01vZHVsZVsicHJlSW5pdCJdLnBvcCgpKCk7fX1ydW4oKTsKCgogICAgcmV0dXJuIEx5cmFXYXNtTW9kdWxlLnJlYWR5CiAgfQogICk7CiAgfSkoKTsKCiAgLyoqCiAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4nlvaLlvI/jga7jg5Djg7zjgrjjg6fjg7PjgIIKICAgKgogICAqIOOCqOODs+OCs+ODvOODieW9ouW8j+OBq+mdnuS6kuaPm+OBquWkieabtOOBjOWFpeOBo+OBn+aZgueCueOBp+OBriBnb29nbGUvbHlyYSDjga7jg5Djg7zjgrjjg6fjg7PjgYzmoLzntI3jgZXjgozjgabjgYTjgovjgIIKICAgKi8KICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgY29uc3QgREVGQVVMVF9CSVRSQVRFID0gOTIwMDsKICBjb25zdCBERUZBVUxUX0VOQUJMRV9EVFggPSBmYWxzZTsKICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHMpIHsKICAgICAgaWYgKHMuc2xpY2UoLTEpID09PSAiLyIpIHsKICAgICAgICAgIHJldHVybiBzLnNsaWNlKDAsIC0xKTsKICAgICAgfQogICAgICByZXR1cm4gczsKICB9CiAgZnVuY3Rpb24gY2hlY2tTYW1wbGVSYXRlKG4pIHsKICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDoKICAgICAgICAgIGNhc2UgODAwMDoKICAgICAgICAgIGNhc2UgMTYwMDA6CiAgICAgICAgICBjYXNlIDMyMDAwOgogICAgICAgICAgY2FzZSA0ODAwMDoKICAgICAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBzYW1wbGUgcmF0ZTogZXhwZWN0ZWQgb25lIG9mIDgwMDAsIDE2MDAwLCAzMjAwMCBvciA0ODAwMCwgYnV0IGdvdCAke259YCk7CiAgfQogIGZ1bmN0aW9uIGNoZWNrTnVtYmVyT2ZDaGFubmVscyhuKSB7CiAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgY2FzZSB1bmRlZmluZWQ6CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRocm93IG5ldyBFcnJvcihgdW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoYW5uZWxzOiBleHBlY3RlZCAxLCBidXQgZ290ICR7bn1gKTsKICB9CiAgZnVuY3Rpb24gY2hlY2tCaXRyYXRlKG4pIHsKICAgICAgc3dpdGNoIChuKSB7CiAgICAgICAgICBjYXNlIHVuZGVmaW5lZDoKICAgICAgICAgIGNhc2UgMzIwMDoKICAgICAgICAgIGNhc2UgNjAwMDoKICAgICAgICAgIGNhc2UgOTIwMDoKICAgICAgICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bnN1cHBvcnRlZCBiaXRyYXRlOiBleHBlY3RlZCBvbmUgb2YgMzIwMCwgNjAwMCBvciA5MjAwLCBidXQgZ290ICR7bn1gKTsKICB9CgogIGNvbnN0IE1FTUZTX01PREVMX1BBVEggPSAiL3RtcC8iOwogIGNvbnN0IEZSQU1FX0RVUkFUSU9OX01TID0gMjA7CiAgY2xhc3MgTHlyYVN5bmNNb2R1bGUgewogICAgICB3YXNtTW9kdWxlOwogICAgICBjb25zdHJ1Y3Rvcih3YXNtTW9kdWxlKSB7CiAgICAgICAgICB0aGlzLndhc21Nb2R1bGUgPSB3YXNtTW9kdWxlOwogICAgICB9CiAgICAgIHN0YXRpYyBhc3luYyBsb2FkKHdhc21QYXRoLCBtb2RlbFBhdGgpIHsKICAgICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBMeXJhV2FzbU1vZHVsZSh7CiAgICAgICAgICAgICAgbG9jYXRlRmlsZTogKHBhdGgpID0+IHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyaW1MYXN0U2xhc2god2FzbVBhdGgpICsgIi8iICsgcGF0aDsKICAgICAgICAgICAgICB9LAogICAgICAgICAgfSk7CiAgICAgICAgICBjb25zdCBtb2RlbEZpbGVOYW1lcyA9IFsibHlyYV9jb25maWcuYmluYXJ5cGIiLCAic291bmRzdHJlYW1fZW5jb2Rlci50ZmxpdGUiLCAicXVhbnRpemVyLnRmbGl0ZSIsICJseXJhZ2FuLnRmbGl0ZSJdOwogICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobW9kZWxGaWxlTmFtZXMubWFwKChuYW1lKSA9PiB7CiAgICAgICAgICAgICAgY29uc3QgdXJsID0gdHJpbUxhc3RTbGFzaChtb2RlbFBhdGgpICsgIi8iICsgbmFtZTsKICAgICAgICAgICAgICByZXR1cm4gZmV0Y2godXJsKS50aGVuKGFzeW5jIChyZXMpID0+IHsKICAgICAgICAgICAgICAgICAgaWYgKCFyZXMub2spIHsKICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgZmFpbGVkIHRvIGZldGNoICR7dXJsfTogJHtyZXMuc3RhdHVzfSAke3Jlcy5zdGF0dXNUZXh0fWApOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHdhc21Nb2R1bGUuRlNfY3JlYXRlRGF0YUZpbGUoTUVNRlNfTU9ERUxfUEFUSCwgbmFtZSwgbmV3IFVpbnQ4QXJyYXkoYXdhaXQgcmVzLmFycmF5QnVmZmVyKCkpLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgfSkpOwogICAgICAgICAgcmV0dXJuIG5ldyBMeXJhU3luY01vZHVsZSh3YXNtTW9kdWxlKTsKICAgICAgfQogICAgICBjcmVhdGVFbmNvZGVyKG9wdGlvbnMgPSB7fSkgewogICAgICAgICAgY2hlY2tTYW1wbGVSYXRlKG9wdGlvbnMuc2FtcGxlUmF0ZSk7CiAgICAgICAgICBjaGVja051bWJlck9mQ2hhbm5lbHMob3B0aW9ucy5udW1iZXJPZkNoYW5uZWxzKTsKICAgICAgICAgIGNoZWNrQml0cmF0ZShvcHRpb25zLmJpdHJhdGUpOwogICAgICAgICAgY29uc3QgZW5jb2RlciA9IHRoaXMud2FzbU1vZHVsZS5MeXJhRW5jb2Rlci5jcmVhdGUob3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEUsIG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTLCBvcHRpb25zLmJpdHJhdGUgfHwgREVGQVVMVF9CSVRSQVRFLCBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFgsIE1FTUZTX01PREVMX1BBVEgpOwogICAgICAgICAgaWYgKGVuY29kZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIGNyZWF0ZSBseXJhIGVuY29kZXIiKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIGNvbnN0IGZyYW1lU2l6ZSA9ICgob3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEUpICogRlJBTUVfRFVSQVRJT05fTVMpIC8gMTAwMDsKICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLndhc21Nb2R1bGUubmV3QXVkaW9EYXRhKGZyYW1lU2l6ZSk7CiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMeXJhU3luY0VuY29kZXIodGhpcy53YXNtTW9kdWxlLCBlbmNvZGVyLCBidWZmZXIsIG9wdGlvbnMpOwogICAgICAgICAgfQogICAgICB9CiAgICAgIGNyZWF0ZURlY29kZXIob3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICBjaGVja1NhbXBsZVJhdGUob3B0aW9ucy5zYW1wbGVSYXRlKTsKICAgICAgICAgIGNoZWNrTnVtYmVyT2ZDaGFubmVscyhvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMpOwogICAgICAgICAgY29uc3QgZGVjb2RlciA9IHRoaXMud2FzbU1vZHVsZS5MeXJhRGVjb2Rlci5jcmVhdGUob3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEUsIG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTLCBNRU1GU19NT0RFTF9QQVRIKTsKICAgICAgICAgIGlmIChkZWNvZGVyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBjcmVhdGUgbHlyYSBkZWNvZGVyIik7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBjb25zdCBidWZmZXIgPSB0aGlzLndhc21Nb2R1bGUubmV3Qnl0ZXMoKTsKICAgICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFTeW5jRGVjb2Rlcih0aGlzLndhc21Nb2R1bGUsIGRlY29kZXIsIGJ1ZmZlciwgb3B0aW9ucyk7CiAgICAgICAgICB9CiAgICAgIH0KICB9CiAgY2xhc3MgTHlyYVN5bmNFbmNvZGVyIHsKICAgICAgd2FzbU1vZHVsZTsKICAgICAgZW5jb2RlcjsKICAgICAgYnVmZmVyOwogICAgICBzYW1wbGVSYXRlOwogICAgICBudW1iZXJPZkNoYW5uZWxzOwogICAgICBiaXRyYXRlOwogICAgICBlbmFibGVEdHg7CiAgICAgIGZyYW1lU2l6ZTsKICAgICAgY29uc3RydWN0b3Iod2FzbU1vZHVsZSwgZW5jb2RlciwgYnVmZmVyLCBvcHRpb25zKSB7CiAgICAgICAgICB0aGlzLndhc21Nb2R1bGUgPSB3YXNtTW9kdWxlOwogICAgICAgICAgdGhpcy5lbmNvZGVyID0gZW5jb2RlcjsKICAgICAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyOwogICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgIHRoaXMuYml0cmF0ZSA9IG9wdGlvbnMuYml0cmF0ZSB8fCBERUZBVUxUX0JJVFJBVEU7CiAgICAgICAgICB0aGlzLmVuYWJsZUR0eCA9IG9wdGlvbnMuZW5hYmxlRHR4IHx8IERFRkFVTFRfRU5BQkxFX0RUWDsKICAgICAgICAgIHRoaXMuZnJhbWVTaXplID0gYnVmZmVyLnNpemUoKTsKICAgICAgfQogICAgICBlbmNvZGUoYXVkaW9EYXRhKSB7CiAgICAgICAgICBpZiAoYXVkaW9EYXRhLmxlbmd0aCAhPT0gdGhpcy5mcmFtZVNpemUpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVkIGFuIGF1ZGlvIGRhdGEgd2l0aCAke3RoaXMuZnJhbWVTaXplfSBzYW1wbGVzLCBidXQgZ290IG9uZSB3aXRoICR7YXVkaW9EYXRhLmxlbmd0aH0gc2FtcGxlc2ApOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy53YXNtTW9kdWxlLmNvcHlJbnQxNkFycmF5VG9BdWRpb0RhdGEodGhpcy5idWZmZXIsIGF1ZGlvRGF0YSk7CiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmVuY29kZXIuZW5jb2RlKHRoaXMuYnVmZmVyKTsKICAgICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZmFpbGVkIHRvIGVuY29kZSIpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlZEF1ZGlvRGF0YSA9IG5ldyBVaW50OEFycmF5KHJlc3VsdC5zaXplKCkpOwogICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVuY29kZWRBdWRpb0RhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRBdWRpb0RhdGFbaV0gPSByZXN1bHQuZ2V0KGkpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgLy8gRFRYIOOBjOacieWKueOAgeOBi+OBpOOAgSBhdWRpb0RhdGEg44GM54Sh6Z+z44Gq44GE44GX44OO44Kk44K644Gg44GR44KS5ZCr44KT44Gn44GE44KL5aC05ZCI44Gr44Gv44GT44GT44Gr5p2l44KLCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVkQXVkaW9EYXRhOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgcmVzdWx0LmRlbGV0ZSgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICBzZXRCaXRyYXRlKGJpdHJhdGUpIHsKICAgICAgICAgIGNoZWNrQml0cmF0ZShiaXRyYXRlKTsKICAgICAgICAgIGlmICghdGhpcy5lbmNvZGVyLnNldEJpdHJhdGUoYml0cmF0ZSkpIHsKICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGZhaWxlZCB0byB1cGRhdGUgYml0cmF0ZSBmcm9tICR7dGhpcy5iaXRyYXRlfSB0byAke2JpdHJhdGV9YCk7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZGVzdHJveSgpIHsKICAgICAgICAgIHRoaXMuZW5jb2Rlci5kZWxldGUoKTsKICAgICAgICAgIHRoaXMuYnVmZmVyLmRlbGV0ZSgpOwogICAgICB9CiAgfQogIGNsYXNzIEx5cmFTeW5jRGVjb2RlciB7CiAgICAgIHdhc21Nb2R1bGU7CiAgICAgIGRlY29kZXI7CiAgICAgIGJ1ZmZlcjsKICAgICAgc2FtcGxlUmF0ZTsKICAgICAgbnVtYmVyT2ZDaGFubmVsczsKICAgICAgZnJhbWVTaXplOwogICAgICBjb25zdHJ1Y3Rvcih3YXNtTW9kdWxlLCBkZWNvZGVyLCBidWZmZXIsIG9wdGlvbnMpIHsKICAgICAgICAgIHRoaXMud2FzbU1vZHVsZSA9IHdhc21Nb2R1bGU7CiAgICAgICAgICB0aGlzLmRlY29kZXIgPSBkZWNvZGVyOwogICAgICAgICAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgICAgICAgICB0aGlzLnNhbXBsZVJhdGUgPSBvcHRpb25zLnNhbXBsZVJhdGUgfHwgREVGQVVMVF9TQU1QTEVfUkFURTsKICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSAodGhpcy5zYW1wbGVSYXRlICogRlJBTUVfRFVSQVRJT05fTVMpIC8gMTAwMDsKICAgICAgfQogICAgICBkZWNvZGUoZW5jb2RlZEF1ZGlvRGF0YSkgewogICAgICAgICAgaWYgKGVuY29kZWRBdWRpb0RhdGEgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIHRoaXMuYnVmZmVyLnJlc2l6ZSgwLCAwKTsgLy8gY2xlYXIoKSDjgpLkvb/jgYbjgajjgIzplqLmlbDjgYzlrZjlnKjjgZfjgarjgYTjgI3jgajjgYTjgYbjgqjjg6njg7zjgYzlh7rjgovjga7jgacgcmVzaXplKCkg44Gn5Luj55SoCiAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5idWZmZXIucHVzaF9iYWNrKHYpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXRoaXMuZGVjb2Rlci5zZXRFbmNvZGVkUGFja2V0KHRoaXMuYnVmZmVyKSkgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImZhaWxlZCB0byBzZXQgZW5jb2RlZCBwYWNrZXQiKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmRlY29kZXIuZGVjb2RlU2FtcGxlcyh0aGlzLmZyYW1lU2l6ZSk7CiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICB0aHJvdyBFcnJvcigiZmFpbGVkIHRvIGRlY29kZSBzYW1wbGVzIik7CiAgICAgICAgICB9CiAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGNvbnN0IGF1ZGlvRGF0YSA9IG5ldyBJbnQxNkFycmF5KHRoaXMuZnJhbWVTaXplKTsKICAgICAgICAgICAgICB0aGlzLndhc21Nb2R1bGUuY29weUF1ZGlvRGF0YVRvSW50MTZBcnJheShhdWRpb0RhdGEsIHJlc3VsdCk7CiAgICAgICAgICAgICAgcmV0dXJuIGF1ZGlvRGF0YTsKICAgICAgICAgIH0KICAgICAgICAgIGZpbmFsbHkgewogICAgICAgICAgICAgIHJlc3VsdC5kZWxldGUoKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBkZXN0cm95KCkgewogICAgICAgICAgdGhpcy5kZWNvZGVyLmRlbGV0ZSgpOwogICAgICAgICAgdGhpcy5idWZmZXIuZGVsZXRlKCk7CiAgICAgIH0KICB9CgogIC8vIOOCqOODs+OCs+ODvOODgOOBqOODh+OCs+ODvOODgOOBruOCpOODs+OCueOCv+ODs+OCueOBruWQiOioiOaVsOOBruacgOWkp+WApAogIC8vCiAgLy8g44GT44Gu5YCk44KS5aSJ5pu044GZ44KL5aC05ZCI44Gr44GvIHdhc20vQlVJTEQg44Gr44GC44KLIGAtcyBJTklUSUFMX01FTU9SWWAg44Gu5YCk44KC5ZCI44KP44Gb44Gm5aSJ5pu044GZ44KL44GT44GoCiAgY29uc3QgTUFYX1JFU09VUkNFUyA9IDEwOwogIGxldCBSRVNPVVJDRV9NQU5BR0VSOwogIGNsYXNzIFJlc291cmNlTWFuYWdlciB7CiAgICAgIGx5cmFNb2R1bGU7CiAgICAgIGVuY29kZXJzID0gbmV3IE1hcCgpOwogICAgICBkZWNvZGVycyA9IG5ldyBNYXAoKTsKICAgICAgY29uc3RydWN0b3IobHlyYU1vZHVsZSkgewogICAgICAgICAgdGhpcy5seXJhTW9kdWxlID0gbHlyYU1vZHVsZTsKICAgICAgfQogICAgICBjcmVhdGVFbmNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIHRoaXMuZXZpY3RJZk5lZWQoKTsKICAgICAgICAgIGNvbnN0IGVuY29kZXIgPSB0aGlzLmx5cmFNb2R1bGUuY3JlYXRlRW5jb2RlcihvcHRpb25zKTsKICAgICAgICAgIHRoaXMuZW5jb2RlcnMuc2V0KHBvcnQsIG5ldyBSZXNvdXJjZShlbmNvZGVyKSk7CiAgICAgICAgICByZXR1cm4gZW5jb2RlcjsKICAgICAgfQogICAgICBjcmVhdGVEZWNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIHRoaXMuZXZpY3RJZk5lZWQoKTsKICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSB0aGlzLmx5cmFNb2R1bGUuY3JlYXRlRGVjb2RlcihvcHRpb25zKTsKICAgICAgICAgIHRoaXMuZGVjb2RlcnMuc2V0KHBvcnQsIG5ldyBSZXNvdXJjZShkZWNvZGVyKSk7CiAgICAgICAgICByZXR1cm4gZGVjb2RlcjsKICAgICAgfQogICAgICBnZXRFbmNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIGNvbnN0IGVuY29kZXIgPSB0aGlzLmVuY29kZXJzLmdldChwb3J0KTsKICAgICAgICAgIGlmIChlbmNvZGVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICBlbmNvZGVyLmxhc3RBY2Nlc3NlZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgICAgICAgICByZXR1cm4gZW5jb2Rlci5pdGVtOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRW5jb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICBnZXREZWNvZGVyKHBvcnQsIG9wdGlvbnMpIHsKICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSB0aGlzLmRlY29kZXJzLmdldChwb3J0KTsKICAgICAgICAgIGlmIChkZWNvZGVyICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICBkZWNvZGVyLmxhc3RBY2Nlc3NlZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgICAgICAgICByZXR1cm4gZGVjb2Rlci5pdGVtOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGVjb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgIH0KICAgICAgfQogICAgICByZW1vdmUocG9ydCkgewogICAgICAgICAgewogICAgICAgICAgICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5lbmNvZGVycy5nZXQocG9ydCk7CiAgICAgICAgICAgICAgaWYgKHJlc291cmNlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgcmVzb3VyY2UuaXRlbS5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RlcnMuZGVsZXRlKHBvcnQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIHsKICAgICAgICAgICAgICBjb25zdCByZXNvdXJjZSA9IHRoaXMuZGVjb2RlcnMuZ2V0KHBvcnQpOwogICAgICAgICAgICAgIGlmIChyZXNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgIHJlc291cmNlLml0ZW0uZGVzdHJveSgpOwogICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZXJzLmRlbGV0ZShwb3J0KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZXZpY3RJZk5lZWQoKSB7CiAgICAgICAgICBpZiAodGhpcy5lbmNvZGVycy5zaXplICsgdGhpcy5kZWNvZGVycy5zaXplIDwgTUFYX1JFU09VUkNFUykgewogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIC8vIOOCpOODs+OCueOCv+ODs+OCueaVsOOBruS4iumZkOOBq+mBlOOBl+OBpuOBhOOCi+WgtOWQiOOBq+OBr+OAgeS9v+eUqOOBleOCjOOBn+aZguWIu+OBjOS4gOeVquWPpOOBhOOCguOBruOCkuWJiumZpOOBmeOCiwogICAgICAgICAgbGV0IG9sZGVzdFBvcnQ7CiAgICAgICAgICBsZXQgb2xkZXN0VGltZTsKICAgICAgICAgIGZvciAoY29uc3QgW3BvcnQsIHJlc291cmNlXSBvZiB0aGlzLmVuY29kZXJzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgIGlmIChvbGRlc3RUaW1lID09PSB1bmRlZmluZWQgfHwgcmVzb3VyY2UubGFzdEFjY2Vzc2VkVGltZSA8IG9sZGVzdFRpbWUpIHsKICAgICAgICAgICAgICAgICAgb2xkZXN0UG9ydCA9IHBvcnQ7CiAgICAgICAgICAgICAgICAgIG9sZGVzdFRpbWUgPSByZXNvdXJjZS5sYXN0QWNjZXNzZWRUaW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGZvciAoY29uc3QgW3BvcnQsIHJlc291cmNlXSBvZiB0aGlzLmRlY29kZXJzLmVudHJpZXMoKSkgewogICAgICAgICAgICAgIGlmIChvbGRlc3RUaW1lID09PSB1bmRlZmluZWQgfHwgcmVzb3VyY2UubGFzdEFjY2Vzc2VkVGltZSA8IG9sZGVzdFRpbWUpIHsKICAgICAgICAgICAgICAgICAgb2xkZXN0UG9ydCA9IHBvcnQ7CiAgICAgICAgICAgICAgICAgIG9sZGVzdFRpbWUgPSByZXNvdXJjZS5sYXN0QWNjZXNzZWRUaW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChvbGRlc3RQb3J0ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICB0aGlzLnJlbW92ZShvbGRlc3RQb3J0KTsKICAgICAgICAgIH0KICAgICAgfQogIH0KICBjbGFzcyBSZXNvdXJjZSB7CiAgICAgIGl0ZW07CiAgICAgIGxhc3RBY2Nlc3NlZFRpbWU7CiAgICAgIGNvbnN0cnVjdG9yKGl0ZW0pIHsKICAgICAgICAgIHRoaXMuaXRlbSA9IGl0ZW07CiAgICAgICAgICB0aGlzLmxhc3RBY2Nlc3NlZFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgfQogIH0KICBhc3luYyBmdW5jdGlvbiBpbml0UmVzb3VyY2VNYW5hZ2VyKHdhc21QYXRoLCBtb2RlbFBhdGgpIHsKICAgICAgUkVTT1VSQ0VfTUFOQUdFUiA9IG5ldyBSZXNvdXJjZU1hbmFnZXIoYXdhaXQgTHlyYVN5bmNNb2R1bGUubG9hZCh3YXNtUGF0aCwgbW9kZWxQYXRoKSk7CiAgfQogIHNlbGYub25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24gaGFuZGxlTW9kdWxlTWVzc2FnZShtc2cpIHsKICAgICAgc3dpdGNoIChtc2cuZGF0YS50eXBlKSB7CiAgICAgICAgICBjYXNlICJMeXJhTW9kdWxlLmxvYWQiOgogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIGF3YWl0IGluaXRSZXNvdXJjZU1hbmFnZXIobXNnLmRhdGEud2FzbVBhdGgsIG1zZy5kYXRhLm1vZGVsUGF0aCk7CiAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHt9IH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7IHR5cGU6IGAke21zZy5kYXRhLnR5cGV9LnJlc3VsdGAsIHJlc3VsdDogeyBlcnJvciB9IH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgIkx5cmFNb2R1bGUuY3JlYXRlRW5jb2RlciI6CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBjb25zdCBwb3J0ID0gbXNnLmRhdGEucG9ydDsKICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hbmFnZXIgPSBSRVNPVVJDRV9NQU5BR0VSOwogICAgICAgICAgICAgICAgICAgICAgaWYgKG1hbmFnZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiUkVTT1VSQ0VfTUFOQUdFUiBpcyB1bmRlZmluZWQiKTsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBtc2cuZGF0YS5vcHRpb25zOwogICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5jb2RlciA9IG1hbmFnZXIuY3JlYXRlRW5jb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICAgIHBvcnQub25tZXNzYWdlID0gKG1zZykgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUVuY29kZXJNZXNzYWdlKG1hbmFnZXIsIHBvcnQsIG9wdGlvbnMsIG1zZyk7CiAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6IGAke21zZy5kYXRhLnR5cGV9LnJlc3VsdGAsIHJlc3VsdDogeyBmcmFtZVNpemU6IGVuY29kZXIuZnJhbWVTaXplIH0gfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogYCR7bXNnLmRhdGEudHlwZX0ucmVzdWx0YCwgcmVzdWx0OiB7IGVycm9yIH0gfSk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJMeXJhTW9kdWxlLmNyZWF0ZURlY29kZXIiOgogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgY29uc3QgcG9ydCA9IG1zZy5kYXRhLnBvcnQ7CiAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYW5hZ2VyID0gUkVTT1VSQ0VfTUFOQUdFUjsKICAgICAgICAgICAgICAgICAgICAgIGlmIChtYW5hZ2VyID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlJFU09VUkNFX01BTkFHRVIgaXMgdW5kZWZpbmVkIik7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25zID0gbXNnLmRhdGEub3B0aW9uczsKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlY29kZXIgPSBtYW5hZ2VyLmNyZWF0ZURlY29kZXIocG9ydCwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgICBwb3J0Lm9ubWVzc2FnZSA9IChtc2cpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEZWNvZGVyTWVzc2FnZShtYW5hZ2VyLCBwb3J0LCBvcHRpb25zLCBtc2cpOwogICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHsgZnJhbWVTaXplOiBkZWNvZGVyLmZyYW1lU2l6ZSB9IH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6IGAke21zZy5kYXRhLnR5cGV9LnJlc3VsdGAsIHJlc3VsdDogeyBlcnJvciB9IH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBjb25zb2xlLndhcm4oInJlY2VpdmVkIHVua25vd24gbWVzc2FnZSIpOwogICAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICB9CiAgfTsKICBmdW5jdGlvbiBoYW5kbGVFbmNvZGVyTWVzc2FnZShtYW5hZ2VyLCBwb3J0LCBvcHRpb25zLCBtc2cpIHsKICAgICAgc3dpdGNoIChtc2cuZGF0YS50eXBlKSB7CiAgICAgICAgICBjYXNlICJMeXJhRW5jb2Rlci5lbmNvZGUiOgogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZXIgPSBtYW5hZ2VyLmdldEVuY29kZXIocG9ydCwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRBdWRpb0RhdGEgPSBlbmNvZGVyLmVuY29kZShtc2cuZGF0YS5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHsgdHlwZTogYCR7bXNnLmRhdGEudHlwZX0ucmVzdWx0YCwgcmVzdWx0OiB7IGVuY29kZWRBdWRpb0RhdGEgfSB9OwogICAgICAgICAgICAgICAgICBpZiAoZW5jb2RlZEF1ZGlvRGF0YSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UocmVzcG9uc2UsIFtlbmNvZGVkQXVkaW9EYXRhLmJ1ZmZlcl0pOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogYCR7bXNnLmRhdGEudHlwZX0ucmVzdWx0YCwgcmVzdWx0OiB7IGVycm9yIH0gfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAiTHlyYUVuY29kZXIuZGVzdHJveSI6CiAgICAgICAgICAgICAgbWFuYWdlci5yZW1vdmUocG9ydCk7CiAgICAgICAgICAgICAgcG9ydC5vbm1lc3NhZ2UgPSBudWxsOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICBjb25zb2xlLndhcm4oInJlY2VpdmVkIHVua25vd24gbWVzc2FnZSIpOwogICAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICB9CiAgfQogIGZ1bmN0aW9uIGhhbmRsZURlY29kZXJNZXNzYWdlKG1hbmFnZXIsIHBvcnQsIG9wdGlvbnMsIG1zZykgewogICAgICBzd2l0Y2ggKG1zZy5kYXRhLnR5cGUpIHsKICAgICAgICAgIGNhc2UgIkx5cmFEZWNvZGVyLmRlY29kZSI6CiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlciA9IG1hbmFnZXIuZ2V0RGVjb2Rlcihwb3J0LCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgY29uc3QgYXVkaW9EYXRhID0gZGVjb2Rlci5kZWNvZGUobXNnLmRhdGEuZW5jb2RlZEF1ZGlvRGF0YSk7CiAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHsgYXVkaW9EYXRhIH0gfSwgW2F1ZGlvRGF0YS5idWZmZXJdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiBgJHttc2cuZGF0YS50eXBlfS5yZXN1bHRgLCByZXN1bHQ6IHsgZXJyb3IgfSB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICJMeXJhRGVjb2Rlci5kZXN0cm95IjoKICAgICAgICAgICAgICBtYW5hZ2VyLnJlbW92ZShwb3J0KTsKICAgICAgICAgICAgICBwb3J0Lm9ubWVzc2FnZSA9IG51bGw7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIGNvbnNvbGUud2FybigicmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlIik7CiAgICAgICAgICAgICAgY29uc29sZS53YXJuKG1zZyk7CiAgICAgIH0KICB9Cgp9KSk7Cg=="; -/** - * Lyra 用の WebAssembly ファイルやモデルファイルのロードや web worker の管理を行うためのクラス - */ -class LyraModule { - worker; - constructor(worker) { - this.worker = worker; - } - /** - * Lyra の WebAssembly ファイルやモデルファイルをロードや web worker の起動を行い、 {@link LyraModule} のインスタンスを生成する - * - * @param wasmPath lyra.wasm および lyra.worker.js が配置されているディレクトリのパスないし URL - * @param modelPath Lyra 用の *.binarypb および *.tflite が配置されているディレクトリのパスないし URL - * @returns 生成された {@link LyraModule} インスタンス - */ - static load(wasmPath, modelPath) { - // lyra は SharedArrayBufffer を使うので COEP / COOP 応答ヘッダ周りの対処が必要になるが、 - // chrome / firefox と safari で挙動が異なる(前者は COEP / COOP ヘッダが必要で、後者はそれがあるとエラーになる)ので - // その問題を回避するために object url で worker を生成するようにする - const webWorkerScriptObjectUrl = URL.createObjectURL(new Blob([atob(WEB_WORKER_SCRIPT)], { type: "application/javascript" })); - const worker = new Worker(webWorkerScriptObjectUrl, { - name: "lyra_sync_worker", - }); - // 各種ファイルは web worker の中でロードされることになるので、 - // 事前に絶対 URL に変換しておく必要がある - wasmPath = new URL(wasmPath, document.location.href).toString(); - modelPath = new URL(modelPath, document.location.href).toString(); - const promise = new Promise((resolve, reject) => { - worker.addEventListener("message", (res) => { - const error = res.data.result.error; - if (error === undefined) { - resolve(new LyraModule(worker)); - } - else { - reject(error); - } - }, { once: true }); - }); - worker.postMessage({ type: "LyraModule.load", modelPath, wasmPath }); - return promise; - } - /** - * {@link LyraEncoder} のインスタンスを生成する - * - * 生成したインスタンスが不要になったら {@link LyraEncoder.destroy} メソッドを呼び出してリソースを解放すること - * - * なお、同じオプションで複数回 {@link createEncoder} メソッドが呼び出された場合には、 - * 内部的には(wasm レベルでは)同じエンコーダインスタンスが共有して使い回されることになり、 - * エンコーダ用に確保された wasm メモリ領域は、生成された全ての {@link LyraEncoder} が - * {@link LyraEncoder.destroy} を呼び出すまでは解放されない - * - * @params options エンコーダに指定するオプション - * @returns 生成された {@link LyraEncoder} インスタンス - */ - createEncoder(options = {}) { - const channel = new MessageChannel(); - const promise = new Promise((resolve, reject) => { - channel.port1.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(new LyraEncoder(channel.port1, result.frameSize, options)); - } - }, { once: true }); - channel.port1.start(); - }); - this.worker.postMessage({ type: "LyraModule.createEncoder", port: channel.port2, options }, [channel.port2]); - return promise; - } - /** - * {@link LyraDecoder} のインスタンスを生成する - * - * 生成したインスタンスが不要になったら {@link LyraDecoder.destroy} メソッドを呼び出してリソースを解放すること - * - * なお、同じオプションで複数回 {@link createDecoder} メソッドが呼び出された場合には、 - * 内部的には(wasm レベルでは)同じデコーダインスタンスが共有して使い回されることになり、 - * エンコーダ用に確保された wasm メモリ領域は、生成された全ての {@link LyraDecoder} が - * {@link LyraDecoder.destroy} を呼び出すまでは解放されない - * - * @params options デコーダに指定するオプション - * @returns 生成された {@link LyraDecoder} インスタンス - */ - createDecoder(options = {}) { - const channel = new MessageChannel(); - const promise = new Promise((resolve, reject) => { - channel.port1.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(new LyraDecoder(channel.port1, result.frameSize, options)); - } - }, { once: true }); - channel.port1.start(); - }); - this.worker.postMessage({ type: "LyraModule.createDecoder", port: channel.port2, options }, [channel.port2]); - return promise; - } -} -/** - * Lyra のエンコーダ - */ -class LyraEncoder { - /** - * wasm でのエンコード処理を実行する web worker と通信するためのポート - */ - port; - /** - * 現在のサンププリングレート - */ - sampleRate; - /** - * 現在のチャネル数 - */ - numberOfChannels; - /** - * 現在のエンコードビットレート - */ - bitrate; - /** - * DTX が有効になっているかどうか - */ - enableDtx; - /** - * 一つのフレーム({@link LyraEncoder.encode} メソッドに渡す音声データ)に含めるサンプル数 - */ - frameSize; - /** - * @internal - */ - constructor(port, frameSize, options) { - this.port = port; - this.frameSize = frameSize; - this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE; - this.numberOfChannels = options.numberOfChannels || DEFAULT_CHANNELS; - this.bitrate = options.bitrate || DEFAULT_BITRATE; - this.enableDtx = options.enableDtx || DEFAULT_ENABLE_DTX; - } - /** - * 20ms 分の音声データをエンコードする - * - * なお audioData の所有権は web worker に移転されるので、 - * このメソッド呼び出し後には呼び出しもとスレッドからはデータに参照できなくなります - * (つまり同じ audioData インスタンスの使い回しはできない) - * - * @params audioData エンコード対象の音声データ - * @returns エンコード後のバイト列。もし DTX が有効で音声データが無音な場合には undefined が代わりに返される。 - * - * @throws - * - * 以下のいずれかに該当する場合には例外が送出される: - * - 入力音声データが 20ms 単位(サンプル数としては {@link LyraEncoder.frameSize})ではない - * - その他、何らかの理由でエンコードに失敗した場合 - */ - encode(audioData) { - const promise = new Promise((resolve, reject) => { - this.port.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(result.encodedAudioData); - } - }, { once: true }); - }); - this.port.postMessage({ type: "LyraEncoder.encode", audioData }, [audioData.buffer]); - return promise; - } - /** - * エンコーダ用に確保したリソースを解放する - */ - destroy() { - this.port.postMessage({ type: "LyraEncoder.destroy" }); - this.port.close(); - } - /** - * {@link LyraEncoderState} から {@link LyraEncoder} を復元する - * - * {@link LyraEncoder} は {@link MessagePort.postMessage()} を使って、 - * 別の web worker に転送することが可能。 - * ただし、転送時にはクラスやメソッドの状態は落ちてしまうので、 - * それを復元して再び利用可能にするための関数。 - * なお、転送の際には {@link LyraEncoder.port} の所有権を移譲する必要がある。 - * - * @param state エンコーダの状態 - * @return 復元されたエンコーダ - */ - static fromState(state) { - state.port.start(); - return new LyraEncoder(state.port, state.frameSize, state); - } -} -/** - * Lyra のデコーダ - */ -class LyraDecoder { - /** - * wasm でのデコード処理を実行する web worker と通信するためのポート - */ - port; - /** - * 現在のサンププリングレート - */ - sampleRate; - /** - * 現在のチャネル数 - */ - numberOfChannels; - /** - * 一つのフレーム({@link LyraEncoder.decode} メソッドの返り値の音声データ)に含まれるサンプル数 - */ - frameSize; - /** - * @internal - */ - constructor(port, frameSize, options) { - this.port = port; - this.frameSize = frameSize; - this.sampleRate = options.sampleRate || DEFAULT_SAMPLE_RATE; - this.numberOfChannels = options.numberOfChannels || DEFAULT_CHANNELS; - } - /** - * {@link LyraEncoder.encode} メソッドによってエンコードされた音声データをデコードする - * - * なお encodedAudioData の所有権は web worker に移転されるので、 - * このメソッド呼び出し後には呼び出しもとスレッドからはデータに参照できなくなります - * (つまり同じ encodedAudioData インスタンスの使い回しはできない) - * - * @params encodedAudioData デコード対象のバイナリ列ないし undefined - * @returns デコードされた 20ms 分の音声データ。undefined が渡された場合には代わりにコンフォートノイズが生成される。 - */ - decode(encodedAudioData) { - const promise = new Promise((resolve, reject) => { - this.port.addEventListener("message", (res) => { - const result = res.data.result; - if ("error" in result) { - reject(result.error); - } - else { - resolve(result.audioData); - } - }, { once: true }); - }); - if (encodedAudioData === undefined) { - this.port.postMessage({ type: "LyraDecoder.decode", encodedAudioData }); - } - else { - this.port.postMessage({ type: "LyraDecoder.decode", encodedAudioData }, [encodedAudioData.buffer]); - } - return promise; - } - /** - * デコーダ用に確保したリソースを解放する - */ - destroy() { - this.port.postMessage({ type: "LyraDecoder.destroy" }); - this.port.close(); - } - /** - * {@link LyraDecoderState} から {@link LyraDecoder} を復元する - * - * {@link LyraDecoder} は {@link MessagePort.postMessage()} を使って、 - * 別の web worker に転送することが可能。 - * ただし、転送時にはクラスやメソッドの状態は落ちてしまうので、 - * それを復元して再び利用可能にするための関数。 - * なお、転送の際には {@link LyraDecoder.port} の所有権を移譲する必要がある。 - * - * @param state デコーダの状態 - * @return 復元されたデコーダ - */ - static fromState(state) { - state.port.start(); - return new LyraDecoder(state.port, state.frameSize, state); - } -} - -/** - * ビルド時に lyra_worker.ts のビルド結果(の base64 )で置換される文字列 - */ -const LYRA_WORKER_SCRIPT = 'KGZ1bmN0aW9uIChmYWN0b3J5KSB7CiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOgogICAgZmFjdG9yeSgpOwp9KSgoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBAc2hpZ3VyZWRvL2x5cmEtd2FzbQogICAgICogTHlyYSBWMiBXZWJBc3NlbWJseSBidWlsZAogICAgICogQHZlcnNpb246IDIwMjIuMi4wCiAgICAgKiBAYXV0aG9yOiBTaGlndXJlZG8gSW5jLgogICAgICogQGxpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICAqKi8KCiAgICBjb25zdCBERUZBVUxUX1NBTVBMRV9SQVRFID0gMTYwMDA7CiAgICBjb25zdCBERUZBVUxUX0JJVFJBVEUgPSA5MjAwOwogICAgY29uc3QgREVGQVVMVF9FTkFCTEVfRFRYID0gZmFsc2U7CiAgICBjb25zdCBERUZBVUxUX0NIQU5ORUxTID0gMTsKICAgIC8qKgogICAgICogTHlyYSDjga7jgqjjg7PjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYUVuY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44Ko44Oz44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog54++5Zyo44Gu44Ko44Oz44Kz44O844OJ44OT44OD44OI44Os44O844OICiAgICAgICAgICovCiAgICAgICAgYml0cmF0ZTsKICAgICAgICAvKioKICAgICAgICAgKiBEVFgg44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44KL44GL44Gp44GG44GLCiAgICAgICAgICovCiAgICAgICAgZW5hYmxlRHR4OwogICAgICAgIC8qKgogICAgICAgICAqIOS4gOOBpOOBruODleODrOODvOODoO+8iHtAbGluayBMeXJhRW5jb2Rlci5lbmNvZGV9IOODoeOCveODg+ODieOBq+a4oeOBmemfs+WjsOODh+ODvOOCv++8ieOBq+WQq+OCgeOCi+OCteODs+ODl+ODq+aVsAogICAgICAgICAqLwogICAgICAgIGZyYW1lU2l6ZTsKICAgICAgICAvKioKICAgICAgICAgKiBAaW50ZXJuYWwKICAgICAgICAgKi8KICAgICAgICBjb25zdHJ1Y3Rvcihwb3J0LCBmcmFtZVNpemUsIG9wdGlvbnMpIHsKICAgICAgICAgICAgdGhpcy5wb3J0ID0gcG9ydDsKICAgICAgICAgICAgdGhpcy5mcmFtZVNpemUgPSBmcmFtZVNpemU7CiAgICAgICAgICAgIHRoaXMuc2FtcGxlUmF0ZSA9IG9wdGlvbnMuc2FtcGxlUmF0ZSB8fCBERUZBVUxUX1NBTVBMRV9SQVRFOwogICAgICAgICAgICB0aGlzLm51bWJlck9mQ2hhbm5lbHMgPSBvcHRpb25zLm51bWJlck9mQ2hhbm5lbHMgfHwgREVGQVVMVF9DSEFOTkVMUzsKICAgICAgICAgICAgdGhpcy5iaXRyYXRlID0gb3B0aW9ucy5iaXRyYXRlIHx8IERFRkFVTFRfQklUUkFURTsKICAgICAgICAgICAgdGhpcy5lbmFibGVEdHggPSBvcHRpb25zLmVuYWJsZUR0eCB8fCBERUZBVUxUX0VOQUJMRV9EVFg7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIDIwbXMg5YiG44Gu6Z+z5aOw44OH44O844K/44KS44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiDjgarjgYogYXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBhdWRpb0RhdGEg44Kk44Oz44K544K/44Oz44K544Gu5L2/44GE5Zue44GX44Gv44Gn44GN44Gq44GE77yJCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW1zIGF1ZGlvRGF0YSDjgqjjg7PjgrPjg7zjg4nlr77osaHjga7pn7Plo7Djg4fjg7zjgr8KICAgICAgICAgKiBAcmV0dXJucyDjgqjjg7PjgrPjg7zjg4nlvozjga7jg5DjgqTjg4jliJfjgILjgoLjgZcgRFRYIOOBjOacieWKueOBp+mfs+WjsOODh+ODvOOCv+OBjOeEoemfs+OBquWgtOWQiOOBq+OBryB1bmRlZmluZWQg44GM5Luj44KP44KK44Gr6L+U44GV44KM44KL44CCCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzCiAgICAgICAgICoKICAgICAgICAgKiDku6XkuIvjga7jgYTjgZrjgozjgYvjgavoqbLlvZPjgZnjgovloLTlkIjjgavjga/kvovlpJbjgYzpgIHlh7rjgZXjgozjgos6CiAgICAgICAgICogLSDlhaXlipvpn7Plo7Djg4fjg7zjgr/jgYwgMjBtcyDljZjkvY3vvIjjgrXjg7Pjg5fjg6vmlbDjgajjgZfjgabjga8ge0BsaW5rIEx5cmFFbmNvZGVyLmZyYW1lU2l6ZX3vvInjgafjga/jgarjgYQKICAgICAgICAgKiAtIOOBneOBruS7luOAgeS9leOCieOBi+OBrueQhueUseOBp+OCqOODs+OCs+ODvOODieOBq+WkseaVl+OBl+OBn+WgtOWQiAogICAgICAgICAqLwogICAgICAgIGVuY29kZShhdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5lbmNvZGVkQXVkaW9EYXRhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCB7IG9uY2U6IHRydWUgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZW5jb2RlIiwgYXVkaW9EYXRhIH0sIFthdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiDjgqjjg7PjgrPjg7zjg4DnlKjjgavnorrkv53jgZfjgZ/jg6rjgr3jg7zjgrnjgpLop6PmlL7jgZnjgosKICAgICAgICAgKi8KICAgICAgICBkZXN0cm95KCkgewogICAgICAgICAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeyB0eXBlOiAiTHlyYUVuY29kZXIuZGVzdHJveSIgfSk7CiAgICAgICAgICAgIHRoaXMucG9ydC5jbG9zZSgpOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJTdGF0ZX0g44GL44KJIHtAbGluayBMeXJhRW5jb2Rlcn0g44KS5b6p5YWD44GZ44KLCiAgICAgICAgICoKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXJ9IOOBryB7QGxpbmsgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKX0g44KS5L2/44Gj44Gm44CBCiAgICAgICAgICog5Yil44GuIHdlYiB3b3JrZXIg44Gr6Lui6YCB44GZ44KL44GT44Go44GM5Y+v6IO944CCCiAgICAgICAgICog44Gf44Gg44GX44CB6Lui6YCB5pmC44Gr44Gv44Kv44Op44K544KE44Oh44K944OD44OJ44Gu54q25oWL44Gv6JC944Gh44Gm44GX44G+44GG44Gu44Gn44CBCiAgICAgICAgICog44Gd44KM44KS5b6p5YWD44GX44Gm5YaN44Gz5Yip55So5Y+v6IO944Gr44GZ44KL44Gf44KB44Gu6Zai5pWw44CCCiAgICAgICAgICog44Gq44GK44CB6Lui6YCB44Gu6Zqb44Gr44GvIHtAbGluayBMeXJhRW5jb2Rlci5wb3J0fSDjga7miYDmnInmqKnjgpLnp7vorbLjgZnjgovlv4XopoHjgYzjgYLjgovjgIIKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdGF0ZSDjgqjjg7PjgrPjg7zjg4Djga7nirbmhYsKICAgICAgICAgKiBAcmV0dXJuIOW+qeWFg+OBleOCjOOBn+OCqOODs+OCs+ODvOODgAogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBmcm9tU3RhdGUoc3RhdGUpIHsKICAgICAgICAgICAgc3RhdGUucG9ydC5zdGFydCgpOwogICAgICAgICAgICByZXR1cm4gbmV3IEx5cmFFbmNvZGVyKHN0YXRlLnBvcnQsIHN0YXRlLmZyYW1lU2l6ZSwgc3RhdGUpOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjga7jg4fjgrPjg7zjg4AKICAgICAqLwogICAgY2xhc3MgTHlyYURlY29kZXIgewogICAgICAgIC8qKgogICAgICAgICAqIHdhc20g44Gn44Gu44OH44Kz44O844OJ5Yem55CG44KS5a6f6KGM44GZ44KLIHdlYiB3b3JrZXIg44Go6YCa5L+h44GZ44KL44Gf44KB44Gu44Od44O844OICiAgICAgICAgICovCiAgICAgICAgcG9ydDsKICAgICAgICAvKioKICAgICAgICAgKiDnj77lnKjjga7jgrXjg7Pjg5fjg5fjg6rjg7PjgrDjg6zjg7zjg4gKICAgICAgICAgKi8KICAgICAgICBzYW1wbGVSYXRlOwogICAgICAgIC8qKgogICAgICAgICAqIOePvuWcqOOBruODgeODo+ODjeODq+aVsAogICAgICAgICAqLwogICAgICAgIG51bWJlck9mQ2hhbm5lbHM7CiAgICAgICAgLyoqCiAgICAgICAgICog5LiA44Gk44Gu44OV44Os44O844Og77yIe0BsaW5rIEx5cmFFbmNvZGVyLmRlY29kZX0g44Oh44K944OD44OJ44Gu6L+U44KK5YCk44Gu6Z+z5aOw44OH44O844K/77yJ44Gr5ZCr44G+44KM44KL44K144Oz44OX44Or5pWwCiAgICAgICAgICovCiAgICAgICAgZnJhbWVTaXplOwogICAgICAgIC8qKgogICAgICAgICAqIEBpbnRlcm5hbAogICAgICAgICAqLwogICAgICAgIGNvbnN0cnVjdG9yKHBvcnQsIGZyYW1lU2l6ZSwgb3B0aW9ucykgewogICAgICAgICAgICB0aGlzLnBvcnQgPSBwb3J0OwogICAgICAgICAgICB0aGlzLmZyYW1lU2l6ZSA9IGZyYW1lU2l6ZTsKICAgICAgICAgICAgdGhpcy5zYW1wbGVSYXRlID0gb3B0aW9ucy5zYW1wbGVSYXRlIHx8IERFRkFVTFRfU0FNUExFX1JBVEU7CiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IG9wdGlvbnMubnVtYmVyT2ZDaGFubmVscyB8fCBERUZBVUxUX0NIQU5ORUxTOwogICAgICAgIH0KICAgICAgICAvKioKICAgICAgICAgKiB7QGxpbmsgTHlyYUVuY29kZXIuZW5jb2RlfSDjg6Hjgr3jg4Pjg4njgavjgojjgaPjgabjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZnjgosKICAgICAgICAgKgogICAgICAgICAqIOOBquOBiiBlbmNvZGVkQXVkaW9EYXRhIOOBruaJgOacieaoqeOBryB3ZWIgd29ya2VyIOOBq+enu+i7ouOBleOCjOOCi+OBruOBp+OAgQogICAgICAgICAqIOOBk+OBruODoeOCveODg+ODieWRvOOBs+WHuuOBl+W+jOOBq+OBr+WRvOOBs+WHuuOBl+OCguOBqOOCueODrOODg+ODieOBi+OCieOBr+ODh+ODvOOCv+OBq+WPgueFp+OBp+OBjeOBquOBj+OBquOCiuOBvuOBmQogICAgICAgICAqIO+8iOOBpOOBvuOCiuWQjOOBmCBlbmNvZGVkQXVkaW9EYXRhIOOCpOODs+OCueOCv+ODs+OCueOBruS9v+OBhOWbnuOBl+OBr+OBp+OBjeOBquOBhO+8iQogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtcyBlbmNvZGVkQXVkaW9EYXRhIOODh+OCs+ODvOODieWvvuixoeOBruODkOOCpOODiuODquWIl+OBquOBhOOBlyB1bmRlZmluZWQKICAgICAgICAgKiBAcmV0dXJucyDjg4fjgrPjg7zjg4njgZXjgozjgZ8gMjBtcyDliIbjga7pn7Plo7Djg4fjg7zjgr/jgIJ1bmRlZmluZWQg44GM5rih44GV44KM44Gf5aC05ZCI44Gr44Gv5Luj44KP44KK44Gr44Kz44Oz44OV44Kp44O844OI44OO44Kk44K644GM55Sf5oiQ44GV44KM44KL44CCCiAgICAgICAgICovCiAgICAgICAgZGVjb2RlKGVuY29kZWRBdWRpb0RhdGEpIHsKICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKHJlcykgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5kYXRhLnJlc3VsdDsKICAgICAgICAgICAgICAgICAgICBpZiAoImVycm9yIiBpbiByZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5lcnJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5hdWRpb0RhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIHsgb25jZTogdHJ1ZSB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmIChlbmNvZGVkQXVkaW9EYXRhID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZWNvZGUiLCBlbmNvZGVkQXVkaW9EYXRhIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsgdHlwZTogIkx5cmFEZWNvZGVyLmRlY29kZSIsIGVuY29kZWRBdWRpb0RhdGEgfSwgW2VuY29kZWRBdWRpb0RhdGEuYnVmZmVyXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIOODh+OCs+ODvOODgOeUqOOBq+eiuuS/neOBl+OBn+ODquOCveODvOOCueOCkuino+aUvuOBmeOCiwogICAgICAgICAqLwogICAgICAgIGRlc3Ryb3koKSB7CiAgICAgICAgICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7IHR5cGU6ICJMeXJhRGVjb2Rlci5kZXN0cm95IiB9KTsKICAgICAgICAgICAgdGhpcy5wb3J0LmNsb3NlKCk7CiAgICAgICAgfQogICAgICAgIC8qKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2RlclN0YXRlfSDjgYvjgokge0BsaW5rIEx5cmFEZWNvZGVyfSDjgpLlvqnlhYPjgZnjgosKICAgICAgICAgKgogICAgICAgICAqIHtAbGluayBMeXJhRGVjb2Rlcn0g44GvIHtAbGluayBNZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgpfSDjgpLkvb/jgaPjgabjgIEKICAgICAgICAgKiDliKXjga4gd2ViIHdvcmtlciDjgavou6LpgIHjgZnjgovjgZPjgajjgYzlj6/og73jgIIKICAgICAgICAgKiDjgZ/jgaDjgZfjgIHou6LpgIHmmYLjgavjga/jgq/jg6njgrnjgoTjg6Hjgr3jg4Pjg4njga7nirbmhYvjga/okL3jgaHjgabjgZfjgb7jgYbjga7jgafjgIEKICAgICAgICAgKiDjgZ3jgozjgpLlvqnlhYPjgZfjgablho3jgbPliKnnlKjlj6/og73jgavjgZnjgovjgZ/jgoHjga7plqLmlbDjgIIKICAgICAgICAgKiDjgarjgYrjgIHou6LpgIHjga7pmpvjgavjga8ge0BsaW5rIEx5cmFEZWNvZGVyLnBvcnR9IOOBruaJgOacieaoqeOCkuenu+itsuOBmeOCi+W/heimgeOBjOOBguOCi+OAggogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0YXRlIOODh+OCs+ODvOODgOOBrueKtuaFiwogICAgICAgICAqIEByZXR1cm4g5b6p5YWD44GV44KM44Gf44OH44Kz44O844OACiAgICAgICAgICovCiAgICAgICAgc3RhdGljIGZyb21TdGF0ZShzdGF0ZSkgewogICAgICAgICAgICBzdGF0ZS5wb3J0LnN0YXJ0KCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgTHlyYURlY29kZXIoc3RhdGUucG9ydCwgc3RhdGUuZnJhbWVTaXplLCBzdGF0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUENN77yITDE277yJ44Gu6Z+z5aOw44OH44O844K/44KSIEx5cmEg44Gn44Ko44Oz44Kz44O844OJ44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGVuY29kZXIgTHlyYSDjgqjjg7PjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgUENNIOmfs+WjsOODh+ODvOOCvwogICAgICogQHBhcmFtIGNvbnRyb2xsZXIg6Z+z5aOw44OH44O844K/44Gu5Ye65Yqb44Kt44Ol44O8CiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoZW5jb2RlZEZyYW1lLmRhdGEpOwogICAgICAgIGNvbnN0IHJhd0RhdGEgPSBuZXcgSW50MTZBcnJheShlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoIC8gMik7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmNvZGVkRnJhbWUuZGF0YS5ieXRlTGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICAgICAgcmF3RGF0YVtpIC8gMl0gPSB2aWV3LmdldEludDE2KGksIGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgZW5jb2RlZCA9IGF3YWl0IGVuY29kZXIuZW5jb2RlKHJhd0RhdGEpOwogICAgICAgIGlmIChlbmNvZGVkID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgLy8gRFRYIOOBjOacieWKueOAgeOBi+OBpOOAgSBlbmNvZGVkRnJhbWUg44GM54Sh6Z+z77yI44Gq44GE44GX44OO44Kk44K644Gu44G/44KS5ZCr44KT44Gn44GE44KL77yJ5aC05ZCI44Gr44Gv44GT44GT44Gr5p2l44KLCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgZW5jb2RlZEZyYW1lLmRhdGEgPSBlbmNvZGVkLmJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KICAgIC8qKgogICAgICogTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr/jgpLjg4fjgrPjg7zjg4njgZfjgaYgUENN77yITDE277yJ44Gr5aSJ5o+b44GZ44KLCiAgICAgKgogICAgICogQHBhcmFtIGRlY29kZXIgTHlyYSDjg4fjgrPjg7zjg4AKICAgICAqIEBwYXJhbSBlbmNvZGVkRnJhbWUgTHlyYSDjgafjgqjjg7PjgrPjg7zjg4njgZXjgozjgZ/pn7Plo7Djg4fjg7zjgr8KICAgICAqIEBwYXJhbSBjb250cm9sbGVyIOmfs+WjsOODh+ODvOOCv+OBruWHuuWKm+OCreODpeODvAogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUx5cmFUb1BjbShkZWNvZGVyLCBlbmNvZGVkRnJhbWUsIGNvbnRyb2xsZXIpIHsKICAgICAgICBpZiAoZW5jb2RlZEZyYW1lLmRhdGEuYnl0ZUxlbmd0aCA9PT0gMykgewogICAgICAgICAgICAvLyBlMmVlIOOCkuacieWKueOBq+OBl+OBn+WgtOWQiOOBq+OBr+OAgWUyZWUg44Oi44K444Ol44O844Or44GM5LiN5piO44Gq44OR44Kx44OD44OI44KS5Y+X5L+h44GX44Gf5aC05ZCI44GrCiAgICAgICAgICAgIC8vIG9wdXMg44Gu54Sh6Z+z44OR44Kx44OD44OI44KS55Sf5oiQ44GZ44KL44Gu44Gn44Gd44KM44KS54Sh6KaW44GZ44KL44CCCiAgICAgICAgICAgIC8vIOOBquOBiuOAgXNlbmRyZWN2IG9yIHNlbmRvbmx5IOOBp+aOpee2muebtOW+jOOBq+eUn+aIkOOBleOCjOOBn+ODkeOCseODg+ODiOOCkuWPl+S/oeOBmeOCi+OBqOW4uOOBq+OBk+OBk+OBq+OBj+OCi+aooeanmOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBMeXJhIOOBp+OBr+Wcp+e4ruW+jOOBrumfs+WjsOODh+ODvOOCv+OCteOCpOOCuuOBjOWbuuWumuiqv+OBp+OAgTMg44OQ44Kk44OI44Go44Gq44KL44GT44Go44Gv44Gq44GE44Gu44Gn44CBCiAgICAgICAgICAgIC8vIOOBk+OBruadoeS7tuOBp+ato+W4uOOBqiBMeXJhIOODkeOCseODg+ODiOOBjOaNqOOBpuOCieOCjOOCi+OBk+OBqOOBr+OBquOBhOOAggogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyBGSVhNRShzaXplKTogZTJlZSDlgbTjgYvjgokgb3B1cyDjgpLku67lrprjgZfjgZ/nhKHpn7PnlJ/miJDjgrPjg7zjg4njgYzjgarjgY/jgarjgaPjgZ/jgonjgZPjga7jg6/jg7zjgq/jgqLjg6njgqbjg7Pjg4njgoLpmaTljrvjgZnjgosKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBkZWNvZGVkID0gYXdhaXQgZGVjb2Rlci5kZWNvZGUobmV3IFVpbnQ4QXJyYXkoZW5jb2RlZEZyYW1lLmRhdGEpKTsKICAgICAgICBjb25zdCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoZGVjb2RlZC5sZW5ndGggKiAyKTsKICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CiAgICAgICAgZm9yIChjb25zdCBbaSwgdl0gb2YgZGVjb2RlZC5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgdmlldy5zZXRJbnQxNihpICogMiwgdiwgZmFsc2UpOwogICAgICAgIH0KICAgICAgICBlbmNvZGVkRnJhbWUuZGF0YSA9IGJ1ZmZlcjsKICAgICAgICBjb250cm9sbGVyLmVucXVldWUoZW5jb2RlZEZyYW1lKTsKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVTZW5kZXJUcmFuc2Zvcm0oZW5jb2RlclN0YXRlKSB7CiAgICAgICAgY29uc3QgZW5jb2RlciA9IEx5cmFFbmNvZGVyLmZyb21TdGF0ZShlbmNvZGVyU3RhdGUpOwogICAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHsKICAgICAgICAgICAgYXN5bmMgdHJhbnNmb3JtKGVuY29kZWRGcmFtZSwgY29udHJvbGxlcikgewogICAgICAgICAgICAgICAgYXdhaXQgdHJhbnNmb3JtUGNtVG9MeXJhKGVuY29kZXIsIGVuY29kZWRGcmFtZSwgY29udHJvbGxlcik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZsdXNoKCkgewogICAgICAgICAgICAgICAgZW5jb2Rlci5kZXN0cm95KCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgfSk7CiAgICB9CiAgICBmdW5jdGlvbiBjcmVhdGVSZWNlaXZlclRyYW5zZm9ybShkZWNvZGVyU3RhdGUpIHsKICAgICAgICBjb25zdCBkZWNvZGVyID0gTHlyYURlY29kZXIuZnJvbVN0YXRlKGRlY29kZXJTdGF0ZSk7CiAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oewogICAgICAgICAgICBhc3luYyB0cmFuc2Zvcm0oZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKSB7CiAgICAgICAgICAgICAgICBhd2FpdCB0cmFuc2Zvcm1MeXJhVG9QY20oZGVjb2RlciwgZW5jb2RlZEZyYW1lLCBjb250cm9sbGVyKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZmx1c2goKSB7CiAgICAgICAgICAgICAgICBkZWNvZGVyLmRlc3Ryb3koKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIH0KICAgIG9ucnRjdHJhbnNmb3JtID0gKG1zZykgPT4gewogICAgICAgIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdzZW5kZXJUcmFuc2Zvcm0nKSB7CiAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IGNyZWF0ZVNlbmRlclRyYW5zZm9ybShtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5seXJhRW5jb2Rlcik7CiAgICAgICAgICAgIG1zZy50cmFuc2Zvcm1lci5yZWFkYWJsZQogICAgICAgICAgICAgICAgLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSkKICAgICAgICAgICAgICAgIC5waXBlVG8obXNnLnRyYW5zZm9ybWVyLndyaXRhYmxlKQogICAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLndhcm4oZSkpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChtc2cudHJhbnNmb3JtZXIub3B0aW9ucy5uYW1lID09ICdyZWNlaXZlclRyYW5zZm9ybScpIHsKICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlUmVjZWl2ZXJUcmFuc2Zvcm0obXNnLnRyYW5zZm9ybWVyLm9wdGlvbnMubHlyYURlY29kZXIpOwogICAgICAgICAgICBtc2cudHJhbnNmb3JtZXIucmVhZGFibGUKICAgICAgICAgICAgICAgIC5waXBlVGhyb3VnaCh0cmFuc2Zvcm0pCiAgICAgICAgICAgICAgICAucGlwZVRvKG1zZy50cmFuc2Zvcm1lci53cml0YWJsZSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS53YXJuKGUpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUud2FybigndW5rbm93biBtZXNzYWdlJyk7CiAgICAgICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICAgIH0KICAgIH07Cgp9KSk7Cg=='; -/** - * Lyra を使用するために必要な設定を保持するためのグローバル変数 - * - * undefined の場合には Lyra が無効になっていると判断され、 - * その状態で Lyra で音声をエンコード・デコード使用とすると実行時エラーとなる - */ -let LYRA_CONFIG; -/** - * Lyra のエンコード・デコードに必要な WebAssembly インスタンスを保持するためのグローバル変数 - */ -let LYRA_MODULE; -/** - * Lyra の初期化を行うメソッド - * - * このメソッドの呼び出し時には設定情報の保存のみを行い、 - * Lyra での音声エンコード・デコードに必要な WebAssembly ファイルおよびモデルファイルは、 - * 実際に必要になったタイミングで初めてロードされます - * - * Lyra を使うためには以下の機能がブラウザで利用可能である必要があります: - * - クロスオリジン分離(内部で SharedArrayBuffer クラスを使用しているため) - * - WebRTC Encoded Transform - * - * これらの機能が利用不可の場合には、このメソッドは警告メッセージを出力した上で、 - * 返り値として false を返します - * - * @param config Lyra の設定情報 - * @returns Lyra の初期化に成功したかどうか - * - * @public - */ -function initLyra(config) { - if (!('createEncodedStreams' in RTCRtpSender.prototype || 'transform' in RTCRtpSender.prototype)) { - console.warn("This browser doesn't support WebRTC Encoded Transform feature that Lyra requires."); - return false; - } - if (typeof SharedArrayBuffer === 'undefined') { - console.warn('Lyra requires cross-origin isolation to use SharedArrayBuffer.'); - return false; - } - LYRA_CONFIG = config; - LYRA_MODULE = undefined; - return true; -} -/*** - * Lyra が初期化済みかどうか - * - * @returns Lyra が初期化済みかどうか - * @internal - */ -function isLyraInitialized() { - return LYRA_CONFIG !== undefined; -} -/** - * Lyra のエンコーダを生成して返す - * - * @param options エンコーダに指定するオプション - * @returns Lyra エンコーダのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - * @internal - */ -async function createLyraEncoder(options = {}) { - return (await loadLyraModule()).createEncoder(options); -} -/** - * Lyra のデコーダを生成して返す - * - * @param options デコーダに指定するオプション - * @returns Lyra デコーダのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - * @internal - */ -async function createLyraDecoder(options = {}) { - return (await loadLyraModule()).createDecoder(options); -} -/** - * Lyra 用の WebAssembly インスタンスをロードする - * - * 既にロード済みの場合には、そのインスタンスを返す - * - * @returns LyraModule インスタンスのプロミス - * @throws Lyra が未初期化の場合 or LyraConfig で指定したファイルの取得に失敗した場合 - * @internal - */ -async function loadLyraModule() { - if (LYRA_CONFIG === undefined) { - throw new Error('Lyra has not been initialized. Please call `Sora.initLyra()` beforehand.'); - } - if (LYRA_MODULE === undefined) { - LYRA_MODULE = await LyraModule.load(LYRA_CONFIG.wasmPath, LYRA_CONFIG.modelPath); - } - return LYRA_MODULE; -} -/** - * WebRTC Encoded Transform に渡される Lyra 用の web worker を生成する - * - * @returns Lyra でエンコードおよびデコードを行う web worker インスタンス - * @internal - */ -function createLyraWorker() { - const lyraWorkerScript = atob(LYRA_WORKER_SCRIPT); - const lyraWorker = new Worker(URL.createObjectURL(new Blob([lyraWorkerScript], { type: 'application/javascript' }))); - return lyraWorker; -} -/** - * PCM(L16)の音声データを Lyra でエンコードする - * - * @param encoder Lyra エンコーダ - * @param encodedFrame PCM 音声データ - * @param controller 音声データの出力キュー - * @internal - */ -async function transformPcmToLyra(encoder, encodedFrame, controller) { - const view = new DataView(encodedFrame.data); - const rawData = new Int16Array(encodedFrame.data.byteLength / 2); - for (let i = 0; i < encodedFrame.data.byteLength; i += 2) { - rawData[i / 2] = view.getInt16(i, false); - } - const encoded = await encoder.encode(rawData); - if (encoded === undefined) { - // DTX が有効、かつ、 encodedFrame が無音(ないしノイズのみを含んでいる)場合にはここに来る - return; - } - encodedFrame.data = encoded.buffer; - controller.enqueue(encodedFrame); -} -/** - * Lyra でエンコードされた音声データをデコードして PCM(L16)に変換する - * - * @param decoder Lyra デコーダ - * @param encodedFrame Lyra でエンコードされた音声データ - * @param controller 音声データの出力キュー - * @internal - */ -async function transformLyraToPcm(decoder, encodedFrame, controller) { - if (encodedFrame.data.byteLength === 3) { - // e2ee を有効にした場合には、e2ee モジュールが不明なパケットを受信した場合に - // opus の無音パケットを生成するのでそれを無視する。 - // なお、sendrecv or sendonly で接続直後に生成されたパケットを受信すると常にここにくる模様。 - // - // Lyra では圧縮後の音声データサイズが固定調で、3 バイトとなることはないので、 - // この条件で正常な Lyra パケットが捨てられることはない。 - // - // FIXME(size): e2ee 側から opus を仮定した無音生成コードがなくなったらこのワークアラウンドも除去する - return; - } - const decoded = await decoder.decode(new Uint8Array(encodedFrame.data)); - const buffer = new ArrayBuffer(decoded.length * 2); - const view = new DataView(buffer); - for (const [i, v] of decoded.entries()) { - view.setInt16(i * 2, v, false); - } - encodedFrame.data = buffer; - controller.enqueue(encodedFrame); -} -/** - * SDP に記載される Lyra のエンコードパラメータ - * @internal - */ -class LyraParams { - constructor(version, bitrate, enableDtx) { - if (version !== LYRA_VERSION) { - throw new Error(`Unsupported Lyra version: ${version} (supported version is ${LYRA_VERSION})`); - } - if (bitrate !== 3200 && bitrate !== 6000 && bitrate !== 9200) { - throw new Error(`Unsupported Lyra bitrate: ${bitrate} (must be one of 3200, 6000, or 9200)`); - } - this.version = version; - this.bitrate = bitrate; - this.enableDtx = enableDtx; - } - /** - * SDP の media description 部分をパースして Lyra のエンコードパラメータを取得する - * - * @param media SDP の media description 部分 - * @returns パース結果 - * @throws SDP の内容が期待通りではなくパースに失敗した場合 - */ - static parseMediaDescription(media) { - const version = /^a=fmtp:109.*[ ;]version=([0-9.]+)([;]|$)/m.exec(media); - if (!version) { - throw new Error(`Lyra parameter 'version' is not found in media description: ${media}`); - } - const bitrate = /^a=fmtp:109.*[ ;]bitrate=([0-9]+)([;]|$)/m.exec(media); - if (!bitrate) { - throw new Error(`Lyra parameter 'bitrate' is not found in media description: ${media}`); - } - const usedtx = /^a=fmtp:109.*[ ;]usedtx=([01])([;]|$)/m.exec(media); - if (!usedtx) { - throw new Error(`Lyra parameter 'usedtx' is not found in media description: ${media}`); - } - return new LyraParams(version[1], Number(bitrate[1]), usedtx[1] == '1'); - } - /** - * このエンコードパラメータに対応する SDP の fmtp 行を生成する - * - * @returns SDP の fmtp 行 - */ - toFmtpString() { - return `a=fmtp:109 version=${this.version};bitrate=${this.bitrate};usedtx=${this.enableDtx ? 1 : 0}`; - } -} -/** - * 接続単位の Lyra 関連の状態を保持するためのクラス - * - * @internal - */ -class LyraState { - constructor() { - this.encoderOptions = {}; - this.midToLyraParams = new Map(); - } - /** - * offer SDP を受け取り Lyra 対応のために必要な置換や情報の収集を行う - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - processOfferSdp(sdp) { - if (!sdp.includes('109 lyra/')) { - // 対象外なので処理する必要はない - return sdp; - } - this.midToLyraParams = new Map(); - const splited = sdp.split(/^m=/m); - let replacedSdp = splited[0]; - for (let media of splited.slice(1)) { - const midResult = /a=mid:(.*)/.exec(media); - if (midResult === null) { - continue; - } - const mid = midResult[1]; - if (media.startsWith('audio') && media.includes('109 lyra/')) { - if (media.includes('a=fmtp:109 ')) { - const params = LyraParams.parseMediaDescription(media); - if (media.includes('a=recvonly')) { - // sora からの offer SDP で recvonly ということは client から見れば送信側なので - // このパラメータをエンコード用に保存しておく - this.encoderOptions.bitrate = params.bitrate; - this.encoderOptions.enableDtx = params.enableDtx; - } - this.midToLyraParams.set(mid, params); - } - // SDP を置換する: - // - libwebrtc は lyra を認識しないので L16 に置き換える - // - ただし SDP に L16 しか含まれていないと音声なし扱いになってしまうので、それを防ぐために 110 で opus を追加する - media = media - .replace(/SAVPF([0-9 ]*) 109/, 'SAVPF$1 109 110') - .replace(/109 lyra[/]16000[/]1/, '110 opus/48000/2') - .replace(/a=fmtp:109 .*/, 'a=rtpmap:109 L16/16000\r\na=ptime:20'); - } - replacedSdp += 'm=' + media; - } - return replacedSdp; - } - /** - * setLocalDescription() に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForLocal(sdp) { - if (!sdp.includes('a=rtpmap:110 ')) { - // Lyra は使われていないので書き換えは不要 - return sdp; - } - const splited = sdp.split(/^m=/m); - let replacedSdp = splited[0]; - for (let media of splited.slice(1)) { - if (media.startsWith('audio') && media.includes('a=rtpmap:110 ')) { - // opus(110) ではなく L16(109) を使うように SDP を書き換える - // - // なお libwebrtc 的にはこの置換を行わなくても内部的には L16 が採用されるが、 - // SDP と実際の動作を一致させるためにここで SDP を置換しておく - media = media - .replace(/SAVPF([0-9 ]*) 110/, 'SAVPF$1 109') - .replace(/a=rtpmap:110 opus[/]48000[/]2/, 'a=rtpmap:109 L16/16000') - .replace(/a=fmtp:110 .*/, 'a=ptime:20'); - } - replacedSdp += 'm=' + media; - } - return replacedSdp; - } - /** - * Sora に渡される answer SDP を受け取り、Lyra 対応のために必要な処理を行う - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForSora(sdp) { - if (!sdp.includes('a=rtpmap:109 L16/16000')) { - // Lyra は使われていないので書き換えは不要 - return sdp; - } - const splited = sdp.split(/^m=/m); - let replacedSdp = splited[0]; - for (let media of splited.splice(1)) { - const midResult = /a=mid:(.*)/.exec(media); - if (midResult === null) { - continue; - } - const mid = midResult[1]; - if (mid && media.startsWith('audio') && media.includes('a=rtpmap:109 L16/16000')) { - // Sora 用に L16 を Lyra に置換する - const params = this.midToLyraParams.get(mid); - if (params === undefined) { - throw new Error(`Unknown audio mid ${mid}`); - } - media = media - .replace(/a=rtpmap:109 L16[/]16000/, 'a=rtpmap:109 lyra/16000/1') - .replace(/a=ptime:20/, params.toFmtpString()); - } - replacedSdp += 'm=' + media; - } - return replacedSdp; - } - /** - * Lyra のエンコーダを生成する - * - * @returns 生成されたエンコーダ - */ - async createEncoder() { - return await createLyraEncoder(this.encoderOptions); - } - /** - * Lyra のデコーダを生成する - * - * @returns 生成されたデコーダ - */ - async createDecoder() { - return await createLyraDecoder({}); - } -} - -// DEFLATE is a complex format; to read this code, you should probably check the RFC first: -// https://tools.ietf.org/html/rfc1951 -// You may also wish to take a look at the guide I made about this program: -// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad -// Some of the following code is similar to that of UZIP.js: -// https://github.com/photopea/UZIP.js -// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size. -// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint -// is better for memory in most engines (I *think*). - -// aliases for shorter compressed code (most minifers don't do this) -var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array; -// fixed length extra bits -var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]); -// fixed distance extra bits -var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]); -// code length index map -var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -// get base, reverse index map from extra bits -var freb = function (eb, start) { - var b = new u16(31); - for (var i = 0; i < 31; ++i) { - b[i] = start += 1 << eb[i - 1]; - } - // numbers here are at max 18 bits - var r = new i32(b[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b[i]; j < b[i + 1]; ++j) { - r[j] = ((j - b[i]) << 5) | i; - } - } - return { b: b, r: r }; -}; -var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r; -// we can ignore the fact that the other numbers are wrong; they never happen anyway -fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r; -// map of value to reverse (assuming 16 bits) -var rev = new u16(32768); -for (var i = 0; i < 32768; ++i) { - // reverse table algorithm from SO - var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1); - x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2); - x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4); - rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1; -} -// create huffman tree from u8 "map": index -> code length for code index -// mb (max bits) must be at most 15 -// TODO: optimize/split up? -var hMap = (function (cd, mb, r) { - var s = cd.length; - // index - var i = 0; - // u16 "map": index -> # of codes with bit length = index - var l = new u16(mb); - // length of cd must be 288 (total # of codes) - for (; i < s; ++i) { - if (cd[i]) - ++l[cd[i] - 1]; - } - // u16 "map": index -> minimum code for bit length = index - var le = new u16(mb); - for (i = 1; i < mb; ++i) { - le[i] = (le[i - 1] + l[i - 1]) << 1; - } - var co; - if (r) { - // u16 "map": index -> number of actual bits, symbol for code - co = new u16(1 << mb); - // bits to remove for reverser - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - // ignore 0 lengths - if (cd[i]) { - // num encoding both symbol and bits read - var sv = (i << 4) | cd[i]; - // free bits - var r_1 = mb - cd[i]; - // start value - var v = le[cd[i] - 1]++ << r_1; - // m is end value - for (var m = v | ((1 << r_1) - 1); v <= m; ++v) { - // every 16 bit value starting with the code yields the same result - co[rev[v] >> rvb] = sv; - } - } - } - } - else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]); - } - } - } - return co; -}); -// fixed length tree -var flt = new u8(288); -for (var i = 0; i < 144; ++i) - flt[i] = 8; -for (var i = 144; i < 256; ++i) - flt[i] = 9; -for (var i = 256; i < 280; ++i) - flt[i] = 7; -for (var i = 280; i < 288; ++i) - flt[i] = 8; -// fixed distance tree -var fdt = new u8(32); -for (var i = 0; i < 32; ++i) - fdt[i] = 5; -// fixed length map -var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1); -// fixed distance map -var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1); -// find max of array -var max = function (a) { - var m = a[0]; - for (var i = 1; i < a.length; ++i) { - if (a[i] > m) - m = a[i]; - } - return m; -}; -// read d, starting at bit p and mask with m -var bits = function (d, p, m) { - var o = (p / 8) | 0; - return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m; -}; -// read d, starting at bit p continuing for at least 16 bits -var bits16 = function (d, p) { - var o = (p / 8) | 0; - return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7)); -}; -// get end of byte -var shft = function (p) { return ((p + 7) / 8) | 0; }; -// typed array slice - allows garbage collector to free original reference, -// while being more compatible than .slice -var slc = function (v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - // can't use .constructor in case user-supplied - var n = new u8(e - s); - n.set(v.subarray(s, e)); - return n; -}; -// error codes -var ec = [ - 'unexpected EOF', - 'invalid block type', - 'invalid length/literal', - 'invalid distance', - 'stream finished', - 'no stream handler', - , - 'no callback', - 'invalid UTF-8 data', - 'extra field too long', - 'date not in range 1980-2099', - 'filename too long', - 'stream finishing', - 'invalid zip data' - // determined by unknown compression method -]; -var err = function (ind, msg, nt) { - var e = new Error(msg || ec[ind]); - e.code = ind; - if (Error.captureStackTrace) - Error.captureStackTrace(e, err); - if (!nt) - throw e; - return e; -}; -// expands raw DEFLATE data -var inflt = function (dat, st, buf, dict) { - // source length dict length - var sl = dat.length, dl = dict ? dict.length : 0; - if (!sl || st.f && !st.l) - return buf || new u8(0); - // have to estimate size - var noBuf = !buf || st.i != 2; - // no state - var noSt = st.i; - // Assumes roughly 33% compression ratio average - if (!buf) - buf = new u8(sl * 3); - // ensure buffer can fit at least l elements - var cbuf = function (l) { - var bl = buf.length; - // need to increase size to fit - if (l > bl) { - // Double or set to necessary, whichever is greater - var nbuf = new u8(Math.max(bl * 2, l)); - nbuf.set(buf); - buf = nbuf; - } - }; - // last chunk bitpos bytes - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - // total bits - var tbts = sl * 8; - do { - if (!lm) { - // BFINAL - this is only 1 when last chunk is next - final = bits(dat, pos, 1); - // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - // go to end of byte boundary - var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l; - if (t > sl) { - if (noSt) - err(0); - break; - } - // ensure size - if (noBuf) - cbuf(bt + l); - // Copy over uncompressed data - buf.set(dat.subarray(s, t), bt); - // Get new bitpos, update byte count - st.b = bt += l, st.p = pos = t * 8, st.f = final; - continue; - } - else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - // literal lengths - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - // length+distance tree - var ldt = new u8(tl); - // code length tree - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - // use index map to get real code - clt[clim[i]] = bits(dat, pos + i * 3, 7); - } - pos += hcLen * 3; - // code lengths bits - var clb = max(clt), clbmsk = (1 << clb) - 1; - // code lengths map - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl;) { - var r = clm[bits(dat, pos, clbmsk)]; - // bits read - pos += r & 15; - // symbol - var s = r >> 4; - // code length to copy - if (s < 16) { - ldt[i++] = s; - } - else { - // copy count - var c = 0, n = 0; - if (s == 16) - n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; - else if (s == 17) - n = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n = 11 + bits(dat, pos, 127), pos += 7; - while (n--) - ldt[i++] = c; - } - } - // length tree distance tree - var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); - // max length bits - lbt = max(lt); - // max dist bits - dbt = max(dt); - lm = hMap(lt, lbt, 1); - dm = hMap(dt, dbt, 1); - } - else - err(1); - if (pos > tbts) { - if (noSt) - err(0); - break; - } - } - // Make sure the buffer can hold this + the largest possible addition - // Maximum chunk size (practically, theoretically infinite) is 2^17 - if (noBuf) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (;; lpos = pos) { - // bits read, code - var c = lm[bits16(dat, pos) & lms], sym = c >> 4; - pos += c & 15; - if (pos > tbts) { - if (noSt) - err(0); - break; - } - if (!c) - err(2); - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } - else { - var add = sym - 254; - // no extra bits needed if less - if (sym > 264) { - // index - var i = sym - 257, b = fleb[i]; - add = bits(dat, pos, (1 << b) - 1) + fl[i]; - pos += b; - } - // dist - var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; - if (!d) - err(3); - pos += d & 15; - var dt = fd[dsym]; - if (dsym > 3) { - var b = fdeb[dsym]; - dt += bits16(dat, pos) & (1 << b) - 1, pos += b; - } - if (pos > tbts) { - if (noSt) - err(0); - break; - } - if (noBuf) - cbuf(bt + 131072); - var end = bt + add; - if (bt < dt) { - var shift = dl - dt, dend = Math.min(dt, end); - if (shift + bt < 0) - err(3); - for (; bt < dend; ++bt) - buf[bt] = dict[shift + bt]; - } - for (; bt < end; bt += 4) { - buf[bt] = buf[bt - dt]; - buf[bt + 1] = buf[bt + 1 - dt]; - buf[bt + 2] = buf[bt + 2 - dt]; - buf[bt + 3] = buf[bt + 3 - dt]; - } - bt = end; - } - } - st.l = lm, st.p = lpos, st.b = bt, st.f = final; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt == buf.length ? buf : slc(buf, 0, bt); -}; -// starting at p, write the minimum number of bits that can hold v to d -var wbits = function (d, p, v) { - v <<= p & 7; - var o = (p / 8) | 0; - d[o] |= v; - d[o + 1] |= v >> 8; -}; -// starting at p, write the minimum number of bits (>8) that can hold v to d -var wbits16 = function (d, p, v) { - v <<= p & 7; - var o = (p / 8) | 0; - d[o] |= v; - d[o + 1] |= v >> 8; - d[o + 2] |= v >> 16; -}; -// creates code lengths from a frequency table -var hTree = function (d, mb) { - // Need extra info to make a tree - var t = []; - for (var i = 0; i < d.length; ++i) { - if (d[i]) - t.push({ s: i, f: d[i] }); - } - var s = t.length; - var t2 = t.slice(); - if (!s) - return { t: et, l: 0 }; - if (s == 1) { - var v = new u8(t[0].s + 1); - v[t[0].s] = 1; - return { t: v, l: 1 }; - } - t.sort(function (a, b) { return a.f - b.f; }); - // after i2 reaches last ind, will be stopped - // freq must be greater than largest possible number of symbols - t.push({ s: -1, f: 25001 }); - var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2; - t[0] = { s: -1, f: l.f + r.f, l: l, r: r }; - // efficient algorithm from UZIP.js - // i0 is lookbehind, i2 is lookahead - after processing two low-freq - // symbols that combined have high freq, will start processing i2 (high-freq, - // non-composite) symbols instead - // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/ - while (i1 != s - 1) { - l = t[t[i0].f < t[i2].f ? i0++ : i2++]; - r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++]; - t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r }; - } - var maxSym = t2[0].s; - for (var i = 1; i < s; ++i) { - if (t2[i].s > maxSym) - maxSym = t2[i].s; - } - // code lengths - var tr = new u16(maxSym + 1); - // max bits in tree - var mbt = ln(t[i1 - 1], tr, 0); - if (mbt > mb) { - // more algorithms from UZIP.js - // TODO: find out how this code works (debt) - // ind debt - var i = 0, dt = 0; - // left cost - var lft = mbt - mb, cst = 1 << lft; - t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; }); - for (; i < s; ++i) { - var i2_1 = t2[i].s; - if (tr[i2_1] > mb) { - dt += cst - (1 << (mbt - tr[i2_1])); - tr[i2_1] = mb; - } - else - break; - } - dt >>= lft; - while (dt > 0) { - var i2_2 = t2[i].s; - if (tr[i2_2] < mb) - dt -= 1 << (mb - tr[i2_2]++ - 1); - else - ++i; - } - for (; i >= 0 && dt; --i) { - var i2_3 = t2[i].s; - if (tr[i2_3] == mb) { - --tr[i2_3]; - ++dt; - } - } - mbt = mb; - } - return { t: new u8(tr), l: mbt }; -}; -// get the max length and assign length codes -var ln = function (n, l, d) { - return n.s == -1 - ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) - : (l[n.s] = d); -}; -// length codes generation -var lc = function (c) { - var s = c.length; - // Note that the semicolon was intentional - while (s && !c[--s]) - ; - var cl = new u16(++s); - // ind num streak - var cli = 0, cln = c[0], cls = 1; - var w = function (v) { cl[cli++] = v; }; - for (var i = 1; i <= s; ++i) { - if (c[i] == cln && i != s) - ++cls; - else { - if (!cln && cls > 2) { - for (; cls > 138; cls -= 138) - w(32754); - if (cls > 2) { - w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305); - cls = 0; - } - } - else if (cls > 3) { - w(cln), --cls; - for (; cls > 6; cls -= 6) - w(8304); - if (cls > 2) - w(((cls - 3) << 5) | 8208), cls = 0; - } - while (cls--) - w(cln); - cls = 1; - cln = c[i]; - } - } - return { c: cl.subarray(0, cli), n: s }; -}; -// calculate the length of output from tree, code lengths -var clen = function (cf, cl) { - var l = 0; - for (var i = 0; i < cl.length; ++i) - l += cf[i] * cl[i]; - return l; -}; -// writes a fixed block -// returns the new bit pos -var wfblk = function (out, pos, dat) { - // no need to write 00 as type: TypedArray defaults to 0 - var s = dat.length; - var o = shft(pos + 2); - out[o] = s & 255; - out[o + 1] = s >> 8; - out[o + 2] = out[o] ^ 255; - out[o + 3] = out[o + 1] ^ 255; - for (var i = 0; i < s; ++i) - out[o + i + 4] = dat[i]; - return (o + 4 + s) * 8; -}; -// writes a block -var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) { - wbits(out, p++, final); - ++lf[256]; - var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l; - var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l; - var _c = lc(dlt), lclt = _c.c, nlc = _c.n; - var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; - var lcfreq = new u16(19); - for (var i = 0; i < lclt.length; ++i) - ++lcfreq[lclt[i] & 31]; - for (var i = 0; i < lcdt.length; ++i) - ++lcfreq[lcdt[i] & 31]; - var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; - var nlcc = 19; - for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) - ; - var flen = (bl + 5) << 3; - var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; - if (bs >= 0 && flen <= ftlen && flen <= dtlen) - return wfblk(out, p, dat.subarray(bs, bs + bl)); - var lm, ll, dm, dl; - wbits(out, p, 1 + (dtlen < ftlen)), p += 2; - if (dtlen < ftlen) { - lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt; - var llm = hMap(lct, mlcb, 0); - wbits(out, p, nlc - 257); - wbits(out, p + 5, ndc - 1); - wbits(out, p + 10, nlcc - 4); - p += 14; - for (var i = 0; i < nlcc; ++i) - wbits(out, p + 3 * i, lct[clim[i]]); - p += 3 * nlcc; - var lcts = [lclt, lcdt]; - for (var it = 0; it < 2; ++it) { - var clct = lcts[it]; - for (var i = 0; i < clct.length; ++i) { - var len = clct[i] & 31; - wbits(out, p, llm[len]), p += lct[len]; - if (len > 15) - wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12; - } - } - } - else { - lm = flm, ll = flt, dm = fdm, dl = fdt; - } - for (var i = 0; i < li; ++i) { - var sym = syms[i]; - if (sym > 255) { - var len = (sym >> 18) & 31; - wbits16(out, p, lm[len + 257]), p += ll[len + 257]; - if (len > 7) - wbits(out, p, (sym >> 23) & 31), p += fleb[len]; - var dst = sym & 31; - wbits16(out, p, dm[dst]), p += dl[dst]; - if (dst > 3) - wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst]; - } - else { - wbits16(out, p, lm[sym]), p += ll[sym]; - } - } - wbits16(out, p, lm[256]); - return p + ll[256]; -}; -// deflate options (nice << 13) | chain -var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); -// empty -var et = /*#__PURE__*/ new u8(0); -// compresses data into a raw DEFLATE buffer -var dflt = function (dat, lvl, plvl, pre, post, st) { - var s = st.z || dat.length; - var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post); - // writing to this writes to the output buffer - var w = o.subarray(pre, o.length - post); - var lst = st.l; - var pos = (st.r || 0) & 7; - if (lvl) { - if (pos) - w[0] = st.r >> 3; - var opt = deo[lvl - 1]; - var n = opt >> 13, c = opt & 8191; - var msk_1 = (1 << plvl) - 1; - // prev 2-byte val map curr 2-byte val map - var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1); - var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; - var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; }; - // 24576 is an arbitrary number of maximum symbols per block - // 424 buffer for last block - var syms = new i32(25000); - // length/literal freq distance freq - var lf = new u16(288), df = new u16(32); - // l/lcnt exbits index l/lind waitdx blkpos - var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; - for (; i + 2 < s; ++i) { - // hash value - var hv = hsh(i); - // index mod 32768 previous index mod - var imod = i & 32767, pimod = head[hv]; - prev[imod] = pimod; - head[hv] = imod; - // We always should modify head and prev, but only add symbols if - // this data is not yet processed ("wait" for wait index) - if (wi <= i) { - // bytes remaining - var rem = s - i; - if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) { - pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); - li = lc_1 = eb = 0, bs = i; - for (var j = 0; j < 286; ++j) - lf[j] = 0; - for (var j = 0; j < 30; ++j) - df[j] = 0; - } - // len dist chain - var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767; - if (rem > 2 && hv == hsh(i - dif)) { - var maxn = Math.min(n, rem) - 1; - var maxd = Math.min(32767, i); - // max possible length - // not capped at dif because decompressors implement "rolling" index population - var ml = Math.min(258, rem); - while (dif <= maxd && --ch_1 && imod != pimod) { - if (dat[i + l] == dat[i + l - dif]) { - var nl = 0; - for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) - ; - if (nl > l) { - l = nl, d = dif; - // break out early when we reach "nice" (we are satisfied enough) - if (nl > maxn) - break; - // now, find the rarest 2-byte sequence within this - // length of literals and search for that instead. - // Much faster than just using the start - var mmd = Math.min(dif, nl - 2); - var md = 0; - for (var j = 0; j < mmd; ++j) { - var ti = i - dif + j & 32767; - var pti = prev[ti]; - var cd = ti - pti & 32767; - if (cd > md) - md = cd, pimod = ti; - } - } - } - // check the previous match - imod = pimod, pimod = prev[imod]; - dif += imod - pimod & 32767; - } - } - // d will be nonzero only when a match was found - if (d) { - // store both dist and len data in one int32 - // Make sure this is recognized as a len/dist with 28th bit (2^28) - syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d]; - var lin = revfl[l] & 31, din = revfd[d] & 31; - eb += fleb[lin] + fdeb[din]; - ++lf[257 + lin]; - ++df[din]; - wi = i + l; - ++lc_1; - } - else { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - } - } - for (i = Math.max(i, wi); i < s; ++i) { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - if (!lst) { - st.r = (pos & 7) | w[(pos / 8) | 0] << 3; - // shft(pos) now 1 less if pos & 7 != 0 - pos -= 7; - st.h = head, st.p = prev, st.i = i, st.w = wi; - } - } - else { - for (var i = st.w || 0; i < s + lst; i += 65535) { - // end - var e = i + 65535; - if (e >= s) { - // write final block - w[(pos / 8) | 0] = lst; - e = s; - } - pos = wfblk(w, pos + 1, dat.subarray(i, e)); - } - st.i = s; - } - return slc(o, 0, pre + shft(pos) + post); -}; -// Adler32 -var adler = function () { - var a = 1, b = 0; - return { - p: function (d) { - // closures have awful performance - var n = a, m = b; - var l = d.length | 0; - for (var i = 0; i != l;) { - var e = Math.min(i + 2655, l); - for (; i < e; ++i) - m += n += d[i]; - n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16); - } - a = n, b = m; - }, - d: function () { - a %= 65521, b %= 65521; - return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8); - } - }; -}; -// deflate with opts -var dopt = function (dat, opt, pre, post, st) { - if (!st) { - st = { l: 1 }; - if (opt.dictionary) { - var dict = opt.dictionary.subarray(-32768); - var newDat = new u8(dict.length + dat.length); - newDat.set(dict); - newDat.set(dat, dict.length); - dat = newDat; - st.w = dict.length; - } - } - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, st); -}; -// write bytes -var wbytes = function (d, b, v) { - for (; v; ++b) - d[b] = v, v >>>= 8; -}; -// zlib header -var zlh = function (c, o) { - var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2; - c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32); - c[1] |= 31 - ((c[0] << 8) | c[1]) % 31; - if (o.dictionary) { - var h = adler(); - h.p(o.dictionary); - wbytes(c, 2, h.d()); - } -}; -// zlib start -var zls = function (d, dict) { - if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31)) - err(6, 'invalid zlib data'); - if ((d[1] >> 5 & 1) == +!dict) - err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary'); - return (d[1] >> 3 & 4) + 2; -}; -/** - * Compress data with Zlib - * @param data The data to compress - * @param opts The compression options - * @returns The zlib-compressed version of the data - */ -function zlibSync(data, opts) { - if (!opts) - opts = {}; - var a = adler(); - a.p(data); - var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4); - return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d; -} -/** - * Expands Zlib data - * @param data The data to decompress - * @param opts The decompression options - * @returns The decompressed version of the data - */ -function unzlibSync(data, opts) { - return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary); -} -// text decoder -var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder(); -// text decoder stream -var tds = 0; -try { - td.decode(et, { stream: true }); - tds = 1; -} -catch (e) { } - -function browser() { - const ua = window.navigator.userAgent.toLocaleLowerCase(); - if (ua.indexOf('edge') !== -1) { - return 'edge'; - } - else if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { - return 'chrome'; - } - else if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { - return 'safari'; - } - else if (ua.indexOf('opera') !== -1) { - return 'opera'; - } - else if (ua.indexOf('firefox') !== -1) { - return 'firefox'; - } - return null; -} -function enabledSimulcast() { - const REQUIRED_HEADER_EXTEMSIONS = [ - 'urn:ietf:params:rtp-hdrext:sdes:mid', - 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', - 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id', - ]; - if (!window.RTCRtpSender) { - return false; - } - if (!RTCRtpSender.getCapabilities) { - return false; - } - const capabilities = RTCRtpSender.getCapabilities('video'); - if (!capabilities) { - return false; - } - const headerExtensions = capabilities.headerExtensions.map((h) => h.uri); - const hasAllRequiredHeaderExtensions = REQUIRED_HEADER_EXTEMSIONS.every((h) => headerExtensions.includes(h)); - return hasAllRequiredHeaderExtensions; -} -function parseDataChannelConfiguration(dataChannelConfiguration) { - if (typeof dataChannelConfiguration !== 'object' || dataChannelConfiguration === null) { - throw new Error("Failed to parse options dataChannels. Options dataChannels element must be type 'object'"); - } - const configuration = dataChannelConfiguration; - const result = {}; - if (typeof configuration.label === 'string') { - result.label = configuration.label; - } - if (typeof configuration.direction === 'string') { - result.direction = configuration.direction; - } - if (typeof configuration.ordered === 'boolean') { - result.ordered = configuration.ordered; - } - if (typeof configuration.compress === 'boolean') { - result.compress = configuration.compress; - } - if (typeof configuration.maxPacketLifeTime === 'number') { - result.max_packet_life_time = configuration.maxPacketLifeTime; - } - if (typeof configuration.maxRetransmits === 'number') { - result.max_retransmits = configuration.maxRetransmits; - } - if (typeof configuration.protocol === 'string') { - result.protocol = configuration.protocol; - } - return result; -} -function parseDataChannelConfigurations(dataChannelConfigurations) { - const result = []; - for (const dataChannelConfiguration of dataChannelConfigurations) { - result.push(parseDataChannelConfiguration(dataChannelConfiguration)); - } - return result; -} -function isSafari() { - return browser() === 'safari'; -} -function isFirefox() { - return browser() === 'firefox'; -} -function createSignalingMessage(offerSDP, role, channelId, metadata, options, redirect) { - if (role !== 'sendrecv' && role !== 'sendonly' && role !== 'recvonly') { - throw new Error('Unknown role type'); - } - if (channelId === null || channelId === undefined) { - throw new Error('channelId can not be null or undefined'); - } - const message = { - type: 'connect', - sora_client: 'Sora JavaScript SDK 2023.2.0-canary.0', - environment: window.navigator.userAgent, - role: role, - channel_id: channelId, - sdp: offerSDP, - audio: true, - video: true, - }; - // role: sendrecv で multistream: false の場合は例外を発生させる - if (role === 'sendrecv' && options.multistream !== true) { - throw new Error("Failed to parse options. Options multistream must be true when connecting using 'sendrecv'"); - } - if (redirect === true) { - message.redirect = true; - } - if (typeof options.multistream === 'boolean') { - message.multistream = options.multistream; - } - if (typeof options.simulcast === 'boolean') { - message.simulcast = options.simulcast; - } - const simalcastRids = ['r0', 'r1', 'r2']; - if (options.simulcastRid !== undefined && 0 <= simalcastRids.indexOf(options.simulcastRid)) { - message.simulcast_rid = options.simulcastRid; - } - if (typeof options.spotlight === 'boolean') { - message.spotlight = options.spotlight; - } - if ('spotlightNumber' in options) { - message.spotlight_number = options.spotlightNumber; - } - const spotlightFocusRids = ['none', 'r0', 'r1', 'r2']; - if (options.spotlightFocusRid !== undefined && - 0 <= spotlightFocusRids.indexOf(options.spotlightFocusRid)) { - message.spotlight_focus_rid = options.spotlightFocusRid; - } - if (options.spotlightUnfocusRid !== undefined && - 0 <= spotlightFocusRids.indexOf(options.spotlightUnfocusRid)) { - message.spotlight_unfocus_rid = options.spotlightUnfocusRid; - } - if (metadata !== undefined) { - message.metadata = metadata; - } - if (options.signalingNotifyMetadata !== undefined) { - message.signaling_notify_metadata = options.signalingNotifyMetadata; - } - if (options.forwardingFilter !== undefined) { - message.forwarding_filter = options.forwardingFilter; - } - if (options.clientId !== undefined) { - message.client_id = options.clientId; - } - if (options.bundleId !== undefined) { - message.bundle_id = options.bundleId; - } - if (typeof options.dataChannelSignaling === 'boolean') { - message.data_channel_signaling = options.dataChannelSignaling; - } - if (typeof options.ignoreDisconnectWebSocket === 'boolean') { - message.ignore_disconnect_websocket = options.ignoreDisconnectWebSocket; - } - // parse options - const audioPropertyKeys = ['audioCodecType', 'audioBitRate']; - const audioOpusParamsPropertyKeys = [ - 'audioOpusParamsChannels', - 'audioOpusParamsMaxplaybackrate', - 'audioOpusParamsStereo', - 'audioOpusParamsSpropStereo', - 'audioOpusParamsMinptime', - 'audioOpusParamsPtime', - 'audioOpusParamsUseinbandfec', - 'audioOpusParamsUsedtx', - ]; - const audioLyraParamsPropertyKeys = ['audioLyraParamsBitrate', 'audioLyraParamsUsedtx']; - const videoPropertyKeys = [ - 'videoCodecType', - 'videoBitRate', - 'videoVP9Params', - 'videoH264Params', - 'videoAV1Params', - ]; - const copyOptions = Object.assign({}, options); - Object.keys(copyOptions).forEach((key) => { - if (key === 'audio' && typeof copyOptions[key] === 'boolean') { - return; - } - if (key === 'video' && typeof copyOptions[key] === 'boolean') { - return; - } - if (0 <= audioPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - if (0 <= audioOpusParamsPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - if (0 <= audioLyraParamsPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - if (0 <= videoPropertyKeys.indexOf(key) && copyOptions[key] !== null) { - return; - } - delete copyOptions[key]; - }); - if (copyOptions.audio !== undefined) { - message.audio = copyOptions.audio; - } - const hasAudioProperty = Object.keys(copyOptions).some((key) => { - return 0 <= audioPropertyKeys.indexOf(key); - }); - if (message.audio && hasAudioProperty) { - message.audio = {}; - if ('audioCodecType' in copyOptions) { - message.audio['codec_type'] = copyOptions.audioCodecType; - } - if ('audioBitRate' in copyOptions) { - message.audio['bit_rate'] = copyOptions.audioBitRate; - } - } - const hasAudioOpusParamsProperty = Object.keys(copyOptions).some((key) => { - return 0 <= audioOpusParamsPropertyKeys.indexOf(key); - }); - if (message.audio && hasAudioOpusParamsProperty) { - if (typeof message.audio != 'object') { - message.audio = {}; - } - message.audio.opus_params = {}; - if ('audioOpusParamsChannels' in copyOptions) { - message.audio.opus_params.channels = copyOptions.audioOpusParamsChannels; - } - if ('audioOpusParamsMaxplaybackrate' in copyOptions) { - message.audio.opus_params.maxplaybackrate = copyOptions.audioOpusParamsMaxplaybackrate; - } - if ('audioOpusParamsStereo' in copyOptions) { - message.audio.opus_params.stereo = copyOptions.audioOpusParamsStereo; - } - if ('audioOpusParamsSpropStereo' in copyOptions) { - message.audio.opus_params.sprop_stereo = copyOptions.audioOpusParamsSpropStereo; - } - if ('audioOpusParamsMinptime' in copyOptions) { - message.audio.opus_params.minptime = copyOptions.audioOpusParamsMinptime; - } - if ('audioOpusParamsPtime' in copyOptions) { - message.audio.opus_params.ptime = copyOptions.audioOpusParamsPtime; - } - if ('audioOpusParamsUseinbandfec' in copyOptions) { - message.audio.opus_params.useinbandfec = copyOptions.audioOpusParamsUseinbandfec; - } - if ('audioOpusParamsUsedtx' in copyOptions) { - message.audio.opus_params.usedtx = copyOptions.audioOpusParamsUsedtx; - } - } - if (message.audio && options.audioCodecType == 'LYRA') { - if (typeof message.audio != 'object') { - message.audio = {}; - } - message.audio.lyra_params = { version: LYRA_VERSION }; - if ('audioLyraParamsBitrate' in copyOptions) { - message.audio.lyra_params.bitrate = copyOptions.audioLyraParamsBitrate; - } - if ('audioLyraParamsUsedtx' in copyOptions) { - message.audio.lyra_params.usedtx = copyOptions.audioLyraParamsUsedtx; - } - } - if (copyOptions.video !== undefined) { - message.video = copyOptions.video; - } - const hasVideoProperty = Object.keys(copyOptions).some((key) => { - return 0 <= videoPropertyKeys.indexOf(key); - }); - if (message.video && hasVideoProperty) { - message.video = {}; - if ('videoCodecType' in copyOptions) { - message.video['codec_type'] = copyOptions.videoCodecType; - } - if ('videoBitRate' in copyOptions) { - message.video['bit_rate'] = copyOptions.videoBitRate; - } - if ('videoVP9Params' in copyOptions) { - message.video['vp9_params'] = copyOptions.videoVP9Params; - } - if ('videoH264Params' in copyOptions) { - message.video['h264_params'] = copyOptions.videoH264Params; - } - if ('videoAV1Params' in copyOptions) { - message.video['av1_params'] = copyOptions.videoAV1Params; - } - } - if (message.simulcast && !enabledSimulcast() && role !== 'recvonly') { - throw new Error('Simulcast can not be used with this browser'); - } - if (typeof options.e2ee === 'boolean') { - message.e2ee = options.e2ee; - } - if (options.e2ee === true) { - if (message.signaling_notify_metadata === undefined) { - message.signaling_notify_metadata = {}; - } - if (message.signaling_notify_metadata === null || - typeof message.signaling_notify_metadata !== 'object') { - throw new Error("E2EE failed. Options signalingNotifyMetadata must be type 'object'"); - } - if (message.video === true) { - message.video = {}; - } - if (message.video) { - message.video['codec_type'] = 'VP8'; - } - } - if (Array.isArray(options.dataChannels) && 0 < options.dataChannels.length) { - message.data_channels = parseDataChannelConfigurations(options.dataChannels); - } - if (options.audioStreamingLanguageCode !== undefined) { - message.audio_streaming_language_code = options.audioStreamingLanguageCode; - } - return message; -} -function getSignalingNotifyAuthnMetadata(message) { - if (message.authn_metadata !== undefined) { - return message.authn_metadata; - } - else if (message.metadata !== undefined) { - return message.metadata; - } - return null; -} -function getSignalingNotifyData(message) { - if (message.data && Array.isArray(message.data)) { - return message.data; - } - else if (message.metadata_list && Array.isArray(message.metadata_list)) { - return message.metadata_list; - } - return []; -} -function getPreKeyBundle(message) { - if (typeof message === 'object' && message !== null && 'pre_key_bundle' in message) { - return message.pre_key_bundle; - } - return null; -} -function trace(clientId, title, value) { - const dump = (record) => { - if (record && typeof record === 'object') { - let keys = null; - try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - keys = Object.keys(JSON.parse(JSON.stringify(record))); - } - catch (_) { - // 何もしない - } - if (keys && Array.isArray(keys)) { - keys.forEach((key) => { - console.group(key); - dump(record[key]); - console.groupEnd(); - }); - } - else { - console.info(record); - } - } - else { - console.info(record); - } - }; - let prefix = ''; - if (window.performance) { - prefix = '[' + (window.performance.now() / 1000).toFixed(3) + ']'; - } - if (clientId) { - prefix = prefix + '[' + clientId + ']'; - } - if (console.info !== undefined && console.group !== undefined) { - console.group(prefix + ' ' + title); - dump(value); - console.groupEnd(); - } - else { - console.log(prefix + ' ' + title + '\n', value); - } -} -class ConnectError extends Error { -} -function createSignalingEvent(eventType, data, transportType) { - const event = new Event(eventType); - // data をコピーする - try { - event.data = JSON.parse(JSON.stringify(data)); - } - catch (_) { - event.data = data; - } - event.transportType = transportType; - return event; -} -function createDataChannelData(channel) { - return { - binaryType: channel.binaryType, - bufferedAmount: channel.bufferedAmount, - bufferedAmountLowThreshold: channel.bufferedAmountLowThreshold, - id: channel.id, - label: channel.label, - maxPacketLifeTime: channel.maxPacketLifeTime, - maxRetransmits: channel.maxRetransmits, - negotiated: channel.negotiated, - ordered: channel.ordered, - protocol: channel.protocol, - readyState: channel.readyState, - // @ts-ignore w3c 仕様には存在しない property - reliable: channel.reliable, - }; -} -function createTimelineEvent(eventType, data, logType, dataChannelId, dataChannelLabel) { - const event = new Event(eventType); - // data をコピーする - try { - event.data = JSON.parse(JSON.stringify(data)); - } - catch (_) { - event.data = data; - } - event.logType = logType; - event.dataChannelId = dataChannelId; - event.dataChannelLabel = dataChannelLabel; - return event; -} -function createDataChannelMessageEvent(label, data) { - const event = new Event('message'); - event.label = label; - event.data = data; - return event; -} -function createDataChannelEvent(channel) { - const event = new Event('datachannel'); - event.datachannel = channel; - return event; -} -function parseDataChannelEventData(eventData, compress) { - if (compress) { - const unzlibMessage = unzlibSync(new Uint8Array(eventData)); - return new TextDecoder().decode(unzlibMessage); - } - return eventData; -} - -/** - * Sora との WebRTC 接続を扱う基底クラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param role - ロール - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * @param debug - デバッグフラグ - */ -class ConnectionBase { - constructor(signalingUrlCandidates, role, channelId, metadata, options, debug) { - /** - * mid と AudioCodecType の対応づけを保持するマップ - * - * Lyra などのカスタム音声コーデック使用時に RTCRtpReceiver をどのコーデックでデコードすべきかを - * 判別するために使われる - * - * カスタム音声コーデックが有効になっていない場合には空のままとなる - */ - this.midToAudioCodecType = new Map(); - /** - * キーとなる sender が setupSenderTransform で初期化済みかどうか - */ - this.senderStreamInitialized = new WeakSet(); - this.role = role; - this.channelId = channelId; - this.metadata = metadata; - this.signalingUrlCandidates = signalingUrlCandidates; - this.options = options; - // connection timeout の初期値をセットする - this.connectionTimeout = 60000; - if (typeof this.options.timeout === 'number') { - console.warn('@deprecated timeout option will be removed in a future version. Use connectionTimeout.'); - this.connectionTimeout = this.options.timeout; - } - if (typeof this.options.connectionTimeout === 'number') { - this.connectionTimeout = this.options.connectionTimeout; - } - // WebSocket/DataChannel の disconnect timeout の初期値をセットする - this.disconnectWaitTimeout = 3000; - if (typeof this.options.disconnectWaitTimeout === 'number') { - this.disconnectWaitTimeout = this.options.disconnectWaitTimeout; - } - // signalingUrlCandidates に設定されている URL への接続チェック timeout の初期値をセットする - this.signalingCandidateTimeout = 3000; - if (typeof this.options.signalingCandidateTimeout === 'number') { - this.signalingCandidateTimeout = this.options.signalingCandidateTimeout; - } - this.constraints = null; - this.debug = debug; - this.clientId = null; - this.connectionId = null; - this.remoteConnectionIds = []; - this.stream = null; - this.ws = null; - this.pc = null; - this.encodings = []; - this.callbacks = { - disconnect: () => { }, - push: () => { }, - addstream: () => { }, - track: () => { }, - removestream: () => { }, - removetrack: () => { }, - notify: () => { }, - log: () => { }, - timeout: () => { }, - timeline: () => { }, - signaling: () => { }, - message: () => { }, - datachannel: () => { }, - }; - this.authMetadata = null; - this.e2ee = null; - this.connectionTimeoutTimerId = 0; - this.monitorSignalingWebSocketEventTimerId = 0; - this.monitorIceConnectionStateChangeTimerId = 0; - this.soraDataChannels = {}; - this.mids = { - audio: '', - video: '', - }; - this.signalingSwitched = false; - this.signalingOfferMessageDataChannels = {}; - this.connectedSignalingUrl = ''; - this.contactSignalingUrl = ''; - if (isLyraInitialized()) { - this.lyra = new LyraState(); - } - } - /** - * SendRecv Object で発火するイベントのコールバックを設定するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * sendrecv.on("track", (event) => { - * // callback 処理 - * }); - * ``` - * - * @remarks - * addstream イベントは非推奨です. track イベントを使用してください - * - * removestream イベントは非推奨です. removetrack イベントを使用してください - * - * @param kind - イベントの種類(disconnect, push, track, removetrack, notify, log, timeout, timeline, signaling, message, datachannel) - * @param callback - コールバック関数 - * - * @public - */ - on(kind, callback) { - // @deprecated message - if (kind === 'addstream') { - console.warn('@deprecated addstream callback will be removed in a future version. Use track callback.'); - } - else if (kind === 'removestream') { - console.warn('@deprecated removestream callback will be removed in a future version. Use removetrack callback.'); - } - if (kind in this.callbacks) { - this.callbacks[kind] = callback; - } - } - /** - * audio track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopAudioTrack(mediaStream); - * ``` - * - * @remarks - * stream の audio track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - audio track を削除する MediaStream - * - * @public - */ - stopAudioTrack(stream) { - for (const track of stream.getAudioTracks()) { - track.enabled = false; - } - return new Promise((resolve) => { - // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する - setTimeout(async () => { - for (const track of stream.getAudioTracks()) { - track.stop(); - stream.removeTrack(track); - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id; - }); - if (sender) { - await sender.replaceTrack(null); - } - } - } - resolve(); - }, 100); - }); - } - /** - * video track を停止するメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * sendrecv.stopVideoTrack(mediaStream); - * ``` - * - * @remarks - * stream の video track を停止後、PeerConnection の senders から対象の sender を削除します - * - * @param stream - video track を削除する MediaStream - * - * @public - */ - stopVideoTrack(stream) { - for (const track of stream.getVideoTracks()) { - track.enabled = false; - } - return new Promise((resolve) => { - // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する - setTimeout(async () => { - for (const track of stream.getVideoTracks()) { - track.stop(); - stream.removeTrack(track); - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id; - }); - if (sender) { - await sender.replaceTrack(null); - } - } - } - resolve(); - }, 100); - }); - } - /** - * audio track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({audio: true}); - * await sendrecv.replaceAudioTrack(mediaStream, replacedMediaStream.getAudioTracks()[0]); - * ``` - * - * @remarks - * stream の audio track を停止後、新しい audio track をセットします - * - * @param stream - audio track を削除する MediaStream - * @param audioTrack - 新しい audio track - * - * @public - */ - async replaceAudioTrack(stream, audioTrack) { - await this.stopAudioTrack(stream); - const transceiver = this.getAudioTransceiver(); - if (transceiver === null) { - throw new Error('Unable to set an audio track. Audio track sender is undefined'); - } - stream.addTrack(audioTrack); - await transceiver.sender.replaceTrack(audioTrack); - await this.setupSenderTransform(transceiver.sender); - } - /** - * video track を入れ替えするメソッド - * - * @example - * ``` - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * - * const replacedMediaStream = await navigator.mediaDevices.getUserMedia({video: true}); - * await sendrecv.replaceVideoTrack(mediaStream, replacedMediaStream.getVideoTracks()[0]); - * ``` - * - * @remarks - * stream の video track を停止後、新しい video track をセットします - * - * @param stream - video track を削除する MediaStream - * @param videoTrack - 新しい video track - * - * @public - */ - async replaceVideoTrack(stream, videoTrack) { - await this.stopVideoTrack(stream); - const transceiver = this.getVideoTransceiver(); - if (transceiver === null) { - throw new Error('Unable to set video track. Video track sender is undefined'); - } - stream.addTrack(videoTrack); - await transceiver.sender.replaceTrack(videoTrack); - await this.setupSenderTransform(transceiver.sender); - } - /** - * connect 処理中に例外が発生した場合の切断処理をするメソッド - */ - signalingTerminate() { - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - if (this.ws) { - this.ws.close(); - this.ws = null; - } - if (this.pc) { - this.pc.close(); - } - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - } - /** - * PeerConnection の state に異常が発生した場合の切断処理をするメソッド - * - * @param title - disconnect callback に渡すイベントのタイトル - */ - abendPeerConnectionState(title) { - this.clearMonitorIceConnectionStateChange(); - // callback を止める - if (this.pc) { - this.pc.ondatachannel = null; - this.pc.oniceconnectionstatechange = null; - this.pc.onicegatheringstatechange = null; - this.pc.onconnectionstatechange = null; - } - if (this.ws) { - // onclose はログを吐く専用に残す - this.ws.onclose = (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - }; - this.ws.onmessage = null; - this.ws.onerror = null; - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - // onclose はログを吐く専用に残す - dataChannel.onclose = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - }; - dataChannel.onmessage = null; - dataChannel.onerror = null; - } - } - // DataChannel を終了する - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - // WebSocket を終了する - if (this.ws) { - this.ws.close(); - this.ws = null; - } - // PeerConnection を終了する - if (this.pc) { - this.pc.close(); - } - // E2EE worker を終了する - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - const event = this.soraCloseEvent('abend', title); - this.callbacks.disconnect(event); - this.writeSoraTimelineLog('disconnect-abend', event); - } - /** - * 何かしらの異常があった場合の切断処理 - * - * @param title - disconnect callback に渡すイベントのタイトル - * @param params - 切断時の状況を入れる Record - */ - async abend(title, params) { - this.clearMonitorIceConnectionStateChange(); - // callback を止める - if (this.pc) { - this.pc.ondatachannel = null; - this.pc.oniceconnectionstatechange = null; - this.pc.onicegatheringstatechange = null; - this.pc.onconnectionstatechange = null; - } - if (this.ws) { - // onclose はログを吐く専用に残す - this.ws.onclose = (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - }; - this.ws.onmessage = null; - this.ws.onerror = null; - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - // onclose はログを吐く専用に残す - dataChannel.onclose = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - }; - dataChannel.onmessage = null; - dataChannel.onerror = null; - } - } - // 終了処理を開始する - if (this.soraDataChannels.signaling) { - const message = { type: 'disconnect', reason: title }; - if (this.signalingOfferMessageDataChannels.signaling && - this.signalingOfferMessageDataChannels.signaling.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(zlibMessage); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - else { - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(JSON.stringify(message)); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.onerror = null; - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - await this.disconnectWebSocket(title); - await this.disconnectPeerConnection(); - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - if (title === 'WEBSOCKET-ONCLOSE' && params && (params.code === 1000 || params.code === 1005)) { - const event = this.soraCloseEvent('normal', 'DISCONNECT', params); - this.writeSoraTimelineLog('disconnect-normal', event); - this.callbacks.disconnect(event); - return; - } - const event = this.soraCloseEvent('abend', title, params); - this.writeSoraTimelineLog('disconnect-abend', event); - this.callbacks.disconnect(this.soraCloseEvent('abend', title, params)); - } - /** - * 接続状態の初期化をするメソッド - */ - initializeConnection() { - this.clientId = null; - this.connectionId = null; - this.remoteConnectionIds = []; - this.stream = null; - this.ws = null; - this.pc = null; - this.encodings = []; - this.authMetadata = null; - this.e2ee = null; - this.soraDataChannels = {}; - this.mids = { - audio: '', - video: '', - }; - this.signalingSwitched = false; - this.signalingOfferMessageDataChannels = {}; - this.contactSignalingUrl = ''; - this.connectedSignalingUrl = ''; - this.clearConnectionTimeout(); - } - /** - * WebSocket を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - * - * @param title - type disconnect 時の reason - */ - disconnectWebSocket(title) { - let timerId = 0; - if (this.signalingSwitched) { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - return Promise.resolve(null); - } - return new Promise((resolve, _) => { - if (!this.ws) { - return resolve(null); - } - this.ws.onclose = (event) => { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - clearTimeout(timerId); - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - return resolve({ code: event.code, reason: event.reason }); - }; - if (this.ws.readyState === 1) { - const message = { type: 'disconnect', reason: title }; - this.ws.send(JSON.stringify(message)); - this.writeWebSocketSignalingLog('send-disconnect', message); - // WebSocket 切断を待つ - timerId = setTimeout(() => { - if (this.ws) { - this.ws.close(); - this.ws = null; - } - resolve({ code: 1006, reason: '' }); - }, this.disconnectWaitTimeout); - } - else { - // ws の state が open ではない場合は後処理をして終わる - this.ws.close(); - this.ws = null; - return resolve(null); - } - }); - } - /** - * DataChannel を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - disconnectDataChannel() { - // DataChannel の強制終了処理 - const closeDataChannels = () => { - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.onerror = null; - dataChannel.close(); - } - delete this.soraDataChannels[key]; - } - }; - return new Promise((resolve, reject) => { - // DataChannel label signaling が存在しない場合は強制終了処理をする - if (!this.soraDataChannels.signaling) { - closeDataChannels(); - return resolve({ code: 4999, reason: '' }); - } - // disconnectWaitTimeout で指定された時間経過しても切断しない場合は強制終了処理をする - const disconnectWaitTimeoutId = setTimeout(() => { - closeDataChannels(); - return reject(); - }, this.disconnectWaitTimeout); - const onClosePromises = []; - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - // onerror が発火した場合は強制終了処理をする - dataChannel.onerror = () => { - clearTimeout(disconnectWaitTimeoutId); - closeDataChannels(); - return resolve({ code: 4999, reason: '' }); - }; - // すべての DataChannel の readyState が "closed" になったことを確認する Promsie を生成する - const p = () => { - return new Promise((res, _) => { - // disconnectWaitTimeout 時間を過ぎた場合に終了させるための counter を作成する - let counter = 0; - // onclose 内で readyState の変化を待つと非同期のまま複数回 disconnect を呼んだ場合に - // callback が上書きされて必ず DISCONNECT-TIMEOUT になってしまうので setInterval を使う - const timerId = setInterval(() => { - counter++; - if (dataChannel.readyState === 'closed') { - clearInterval(timerId); - res(); - } - if (this.disconnectWaitTimeout < counter * 100) { - res(); - clearInterval(timerId); - } - }, 100); - }); - }; - onClosePromises.push(p()); - } - } - // すべての DataChannel で onclose が発火した場合は resolve にする - Promise.all(onClosePromises) - .then(() => { - // dataChannels が空の場合は切断処理が終わっているとみなす - if (0 === Object.keys(this.soraDataChannels).length) { - resolve(null); - } - else { - resolve({ code: 4999, reason: '' }); - } - }) - .finally(() => { - closeDataChannels(); - clearTimeout(disconnectWaitTimeoutId); - }); - const message = { type: 'disconnect', reason: 'NO-ERROR' }; - if (this.signalingOfferMessageDataChannels.signaling && - this.signalingOfferMessageDataChannels.signaling.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(zlibMessage); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - else { - if (this.soraDataChannels.signaling.readyState === 'open') { - // Firefox で readyState が open でも DataChannel send で例外がでる場合があるため処理する - try { - this.soraDataChannels.signaling.send(JSON.stringify(message)); - this.writeDataChannelSignalingLog('send-disconnect', this.soraDataChannels.signaling, message); - } - catch (e) { - const errorMessage = e.message; - this.writeDataChannelSignalingLog('failed-to-send-disconnect', this.soraDataChannels.signaling, errorMessage); - } - } - } - }); - } - /** - * PeerConnection を切断するメソッド - * - * @remarks - * 正常/異常どちらの切断でも使用する - */ - disconnectPeerConnection() { - return new Promise((resolve, _) => { - if (this.pc && this.pc.connectionState !== 'closed') { - this.pc.close(); - } - return resolve(); - }); - } - /** - * 切断処理をするメソッド - * - * @example - * ``` - * await sendrecv.disconnect(); - * ``` - * - * @public - */ - async disconnect() { - this.clearMonitorIceConnectionStateChange(); - // callback を止める - if (this.pc) { - this.pc.ondatachannel = null; - this.pc.oniceconnectionstatechange = null; - this.pc.onicegatheringstatechange = null; - this.pc.onconnectionstatechange = null; - } - if (this.ws) { - // onclose はログを吐く専用に残す - this.ws.onclose = (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - }; - this.ws.onmessage = null; - this.ws.onerror = null; - } - for (const key of Object.keys(this.soraDataChannels)) { - const dataChannel = this.soraDataChannels[key]; - if (dataChannel) { - dataChannel.onmessage = null; - // onclose はログを吐く専用に残す - dataChannel.onclose = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - }; - } - } - let event = null; - if (this.signalingSwitched) { - // DataChannel の切断処理がタイムアウトした場合は event を abend に差し替える - try { - const reason = await this.disconnectDataChannel(); - if (reason !== null) { - event = this.soraCloseEvent('normal', 'DISCONNECT', reason); - } - } - catch (_) { - event = this.soraCloseEvent('abend', 'DISCONNECT-TIMEOUT'); - } - await this.disconnectWebSocket('NO-ERROR'); - await this.disconnectPeerConnection(); - } - else { - const reason = await this.disconnectWebSocket('NO-ERROR'); - await this.disconnectPeerConnection(); - if (reason !== null) { - event = this.soraCloseEvent('normal', 'DISCONNECT', reason); - } - } - if (this.e2ee) { - this.e2ee.terminateWorker(); - } - this.initializeConnection(); - if (event) { - if (event.type === 'abend') { - this.writeSoraTimelineLog('disconnect-abend', event); - } - else if (event.type === 'normal') { - this.writeSoraTimelineLog('disconnect-normal', event); - } - this.callbacks.disconnect(event); - } - } - /** - * E2EE の初期設定をするメソッド - */ - setupE2EE() { - if (this.options.e2ee === true) { - this.e2ee = new SoraE2EE(); - this.e2ee.onWorkerDisconnect = async () => { - await this.abend('INTERNAL-ERROR', { reason: 'CRASH-E2EE-WORKER' }); - }; - this.e2ee.startWorker(); - } - } - /** - * E2EE を開始するメソッド - */ - startE2EE() { - if (this.options.e2ee === true && this.e2ee) { - if (!this.connectionId) { - const error = new Error(); - error.message = `E2EE failed. Self connectionId is null`; - throw error; - } - this.e2ee.clearWorker(); - const result = this.e2ee.start(this.connectionId); - this.e2ee.postSelfSecretKeyMaterial(this.connectionId, result.selfKeyId, result.selfSecretKeyMaterial); - } - } - /** - * シグナリングに使う WebSocket インスタンスを作成するメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param signalingUrlCandidates - シグナリング候補の URL. 後方互換のため string | string[] を受け取る - * - * @returns - * 接続できた WebScoket インスタンスを返します - */ - async getSignalingWebSocket(signalingUrlCandidates) { - if (typeof signalingUrlCandidates === 'string') { - // signaling url の候補が文字列の場合 - const signalingUrl = signalingUrlCandidates; - return new Promise((resolve, reject) => { - const ws = new WebSocket(signalingUrl); - ws.onclose = (event) => { - const error = new ConnectError(`Signaling failed. CloseEventCode:${event.code} CloseEventReason:'${event.reason}'`); - error.code = event.code; - error.reason = event.reason; - this.writeWebSocketTimelineLog('onclose', error); - reject(error); - }; - ws.onopen = (_) => { - resolve(ws); - }; - }); - } - else if (Array.isArray(signalingUrlCandidates)) { - // signaling url の候補が Array の場合 - // すでに候補の WebSocket が発見されているかどうかのフラグ - let resolved = false; - const testSignalingUrlCandidate = (signalingUrl) => { - return new Promise((resolve, reject) => { - const ws = new WebSocket(signalingUrl); - // 一定時間経過しても反応がなかった場合は処理を中断する - const timerId = setTimeout(() => { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'timeout', - url: ws.url, - }); - if (ws && !resolved) { - ws.onclose = null; - ws.onerror = null; - ws.onopen = null; - ws.close(); - reject(); - } - }, this.signalingCandidateTimeout); - ws.onclose = (event) => { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'close', - url: ws.url, - message: `WebSocket closed`, - code: event.code, - reason: event.reason, - }); - if (ws) { - ws.close(); - } - clearInterval(timerId); - reject(); - }; - ws.onerror = (_) => { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'error', - url: ws.url, - message: `Failed to connect WebSocket`, - }); - if (ws) { - ws.onclose = null; - ws.close(); - } - clearInterval(timerId); - reject(); - }; - ws.onopen = (_) => { - if (ws) { - clearInterval(timerId); - if (resolved) { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'open', - url: ws.url, - selected: false, - }); - ws.onerror = null; - ws.onclose = null; - ws.onopen = null; - ws.close(); - reject(); - } - else { - this.writeWebSocketSignalingLog('signaling-url-candidate', { - type: 'open', - url: ws.url, - selected: true, - }); - ws.onerror = null; - ws.onclose = null; - ws.onopen = null; - resolved = true; - resolve(ws); - } - } - }; - }); - }; - try { - return await Promise.any(signalingUrlCandidates.map((signalingUrl) => testSignalingUrlCandidate(signalingUrl))); - } - catch (e) { - throw new ConnectError('Signaling failed. All signaling URL candidates failed to connect'); - } - } - throw new ConnectError('Signaling failed. Invalid format signaling URL candidates'); - } - /** - * シグナリング処理を行うメソッド - * - * @remarks - * シグナリング候補の URL 一覧に順に接続します - * - * 接続できた URL がない場合は例外が発生します - * - * @param ws - WebSocket インスタンス - * @param redirect - クラスター接続時にリダイレクトされた場合のフラグ - * - * @returns - * Sora から受け取った type offer メッセージを返します - */ - async signaling(ws, redirect = false) { - const offer = await this.createOffer(); - this.trace('CREATE OFFER', offer); - return new Promise((resolve, reject) => { - this.writeWebSocketSignalingLog('new-websocket', ws.url); - // websocket の各 callback を設定する - ws.binaryType = 'arraybuffer'; - ws.onclose = (event) => { - const error = new ConnectError(`Signaling failed. CloseEventCode:${event.code} CloseEventReason:'${event.reason}'`); - error.code = event.code; - error.reason = event.reason; - this.writeWebSocketTimelineLog('onclose', error); - this.signalingTerminate(); - reject(error); - }; - ws.onmessage = async (event) => { - // E2EE 時専用処理 - if (event.data instanceof ArrayBuffer) { - this.writeWebSocketSignalingLog('onmessage-e2ee', event.data); - this.signalingOnMessageE2EE(event.data); - return; - } - if (typeof event.data !== 'string') { - throw new Error('Received invalid signaling data'); - } - const message = JSON.parse(event.data); - if (message.type == 'offer') { - this.writeWebSocketSignalingLog('onmessage-offer', message); - this.signalingOnMessageTypeOffer(message); - this.connectedSignalingUrl = ws.url; - resolve(message); - } - else if (message.type == 'update') { - this.writeWebSocketSignalingLog('onmessage-update', message); - await this.signalingOnMessageTypeUpdate(message); - } - else if (message.type == 're-offer') { - this.writeWebSocketSignalingLog('onmessage-re-offer', message); - await this.signalingOnMessageTypeReOffer(message); - } - else if (message.type == 'ping') { - await this.signalingOnMessageTypePing(message); - } - else if (message.type == 'push') { - this.callbacks.push(message, 'websocket'); - } - else if (message.type == 'notify') { - if (message.event_type === 'connection.created') { - this.writeWebSocketTimelineLog('notify-connection.created', message); - } - else if (message.event_type === 'connection.destroyed') { - this.writeWebSocketTimelineLog('notify-connection.destroyed', message); - } - this.signalingOnMessageTypeNotify(message, 'websocket'); - } - else if (message.type == 'switched') { - this.writeWebSocketSignalingLog('onmessage-switched', message); - this.signalingOnMessageTypeSwitched(message); - } - else if (message.type == 'redirect') { - this.writeWebSocketSignalingLog('onmessage-redirect', message); - try { - const redirectMessage = await this.signalingOnMessageTypeRedirect(message); - resolve(redirectMessage); - } - catch (error) { - reject(error); - } - } - }; - (async () => { - let signalingMessage; - try { - signalingMessage = createSignalingMessage(offer.sdp || '', this.role, this.channelId, this.metadata, this.options, redirect); - } - catch (error) { - reject(error); - return; - } - if (signalingMessage.e2ee && this.e2ee) { - const initResult = await this.e2ee.init(); - // @ts-ignore signalingMessage の e2ee が true の場合は signalingNotifyMetadata が必ず object になる - signalingMessage['signaling_notify_metadata']['pre_key_bundle'] = initResult; - } - this.trace('SIGNALING CONNECT MESSAGE', signalingMessage); - if (ws) { - ws.send(JSON.stringify(signalingMessage)); - this.writeWebSocketSignalingLog(`send-${signalingMessage.type}`, signalingMessage); - this.ws = ws; - // 初回に接続した URL を状態管理する - if (!redirect) { - this.contactSignalingUrl = ws.url; - this.writeWebSocketSignalingLog('contact-signaling-url', this.contactSignalingUrl); - } - } - })(); - }); - } - /** - * PeerConnection 接続処理をするメソッド - * - * @param message - シグナリング処理で受け取った type offer メッセージ - */ - async connectPeerConnection(message) { - let config = Object.assign({}, message.config); - if (this.e2ee || this.lyra) { - // @ts-ignore https://w3c.github.io/webrtc-encoded-transform/#specification - config = Object.assign({ encodedInsertableStreams: true }, config); - } - if (window.RTCPeerConnection.generateCertificate !== undefined) { - const certificate = await window.RTCPeerConnection.generateCertificate({ - name: 'ECDSA', - namedCurve: 'P-256', - }); - config = Object.assign({ certificates: [certificate] }, config); - } - this.trace('PEER CONNECTION CONFIG', config); - this.writePeerConnectionTimelineLog('new-peerconnection', config); - // @ts-ignore Chrome の場合は第2引数に goog オプションを渡すことができる - this.pc = new window.RTCPeerConnection(config, this.constraints); - this.pc.oniceconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('oniceconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - this.trace('ONICECONNECTIONSTATECHANGE ICECONNECTIONSTATE', this.pc.iceConnectionState); - } - }; - this.pc.onicegatheringstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('onicegatheringstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - } - }; - this.pc.onconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('onconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - } - }; - this.pc.ondatachannel = (event) => { - this.onDataChannel(event); - }; - return; - } - /** - * setRemoteDescription 処理を行うメソッド - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - async setRemoteDescription(message) { - if (!this.pc) { - return; - } - const sdp = this.processOfferSdp(message.sdp); - const sessionDescription = new RTCSessionDescription({ type: 'offer', sdp }); - await this.pc.setRemoteDescription(sessionDescription); - this.writePeerConnectionTimelineLog('set-remote-description', sessionDescription); - return; - } - /** - * createAnswer 処理を行うメソッド - * - * @remarks - * サイマルキャスト用の setParameters 処理もここで行う - * - * @param message - シグナリング処理で受け取った type offer | type update | type re-offer メッセージ - */ - async createAnswer(message) { - if (!this.pc) { - return; - } - // mid と transceiver.direction を合わせる - for (const mid of Object.values(this.mids)) { - const transceiver = this.pc.getTransceivers().find((t) => t.mid === mid); - if (transceiver && transceiver.direction === 'recvonly') { - transceiver.direction = 'sendrecv'; - } - } - // simulcast の場合 - if (this.options.simulcast && (this.role === 'sendrecv' || this.role === 'sendonly')) { - const transceiver = this.pc.getTransceivers().find((t) => { - if (t.mid === null) { - return; - } - if (t.sender.track === null) { - return; - } - if (t.currentDirection !== null && t.currentDirection !== 'sendonly') { - return; - } - if (this.mids.video !== '' && this.mids.video === t.mid) { - return t; - } - if (0 <= t.mid.indexOf('video')) { - return t; - } - }); - if (transceiver) { - await this.setSenderParameters(transceiver, this.encodings); - await this.setRemoteDescription(message); - this.trace('TRANSCEIVER SENDER GET_PARAMETERS', transceiver.sender.getParameters()); - // setRemoteDescription 後でないと active が反映されないのでもう一度呼ぶ - await this.setSenderParameters(transceiver, this.encodings); - const sessionDescription = await this.pc.createAnswer(); - // TODO(sile): 動作確認 - if (sessionDescription.sdp !== undefined) { - sessionDescription.sdp = this.processAnswerSdpForLocal(sessionDescription.sdp); - } - await this.pc.setLocalDescription(sessionDescription); - this.trace('TRANSCEIVER SENDER GET_PARAMETERS', transceiver.sender.getParameters()); - return; - } - } - const sessionDescription = await this.pc.createAnswer(); - if (sessionDescription.sdp !== undefined) { - sessionDescription.sdp = this.processAnswerSdpForLocal(sessionDescription.sdp); - } - this.writePeerConnectionTimelineLog('create-answer', sessionDescription); - await this.pc.setLocalDescription(sessionDescription); - this.writePeerConnectionTimelineLog('set-local-description', sessionDescription); - return; - } - /** - * カスタムコーデック対応用に offer SDP を処理するメソッド - * - * @param sdp offer SDP - * @returns 処理後の SDP - */ - processOfferSdp(sdp) { - if (isFirefox()) { - // 同じ mid が採用される際にはもう使用されない transceiver を解放するために - // port に 0 が指定された SDP が送られてくる。 - // ただし Firefox (バージョン 109.0 で確認) はこれを正常に処理できず、 - // port で 0 が指定された場合には onremovetrack イベントが発行されないので、 - // ワークアラウンドとしてここで SDP の置換を行っている。 - sdp = sdp.replace(/^m=(audio|video) 0 /gm, (_match, kind) => `m=${kind} 9 `); - } - this.midToAudioCodecType.clear(); - if (this.lyra === undefined || !sdp.includes('109 lyra/')) { - return sdp; - } - // mid と音声コーデックの対応を保存する - for (const media of sdp.split(/^m=/m).slice(1)) { - if (!media.startsWith('audio')) { - continue; - } - const mid = /a=mid:(.*)/.exec(media); - if (mid) { - const codecType = media.includes('109 lyra/') ? 'LYRA' : 'OPUS'; - this.midToAudioCodecType.set(mid[1], codecType); - } - } - return this.lyra.processOfferSdp(sdp); - } - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は setLocalDescription() メソッドに渡される - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForLocal(sdp) { - if (this.lyra === undefined) { - return sdp; - } - return this.lyra.processAnswerSdpForLocal(sdp); - } - /** - * カスタムコーデック用に answer SDP を処理するメソッド - * - * 処理後の SDP は Sora に送信される - * - * @param answer SDP - * @returns 処理後の SDP - */ - processAnswerSdpForSora(sdp) { - if (this.lyra === undefined) { - return sdp; - } - return this.lyra.processAnswerSdpForSora(sdp); - } - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、送信側の WebRTC Encoded Transform をセットアップする - * - * @param sender 対象となる RTCRtpSender インスタンス - */ - async setupSenderTransform(sender) { - if ((this.e2ee === null && this.lyra === undefined) || sender.track === null) { - return; - } - // 既に初期化済み - if (this.senderStreamInitialized.has(sender)) { - return; - } - const isLyraCodec = sender.track.kind === 'audio' && this.options.audioCodecType === 'LYRA'; - if ('transform' in RTCRtpSender.prototype) { - // WebRTC Encoded Transform に対応しているブラウザ - if (!isLyraCodec || this.lyra === undefined) { - return; - } - const lyraWorker = createLyraWorker(); - const lyraEncoder = await this.lyra.createEncoder(); - // @ts-ignore - sender.transform = new RTCRtpScriptTransform(lyraWorker, { - name: 'senderTransform', - lyraEncoder, - }, [lyraEncoder.port]); - } - else { - // 古い API (i.e., createEncodedStreams) を使っているブラウザ - // @ts-ignore - // eslint-disable-next-line - const senderStreams = sender.createEncodedStreams(); - let readable = senderStreams.readable; - if (isLyraCodec && this.lyra !== undefined) { - const lyraEncoder = await this.lyra.createEncoder(); - const transformStream = new TransformStream({ - transform: (data, controller) => transformPcmToLyra(lyraEncoder, data, controller), - }); - readable = senderStreams.readable.pipeThrough(transformStream); - } - if (this.e2ee) { - this.e2ee.setupSenderTransform(readable, senderStreams.writable); - } - else { - readable.pipeTo(senderStreams.writable).catch((e) => console.warn(e)); - } - } - this.senderStreamInitialized.add(sender); - } - /** - * E2EE あるいはカスタムコーデックが有効になっている場合に、受信側の WebRTC Encoded Transform をセットアップする - * - * @param mid コーデックの判別に使う mid - * @param receiver 対象となる RTCRtpReceiver インスタンス - */ - async setupReceiverTransform(mid, receiver) { - if (this.e2ee === null && this.lyra === undefined) { - return; - } - const codecType = this.midToAudioCodecType.get(mid || ''); - if ('transform' in RTCRtpSender.prototype) { - // WebRTC Encoded Transform に対応しているブラウザ - if (codecType !== 'LYRA' || this.lyra === undefined) { - return; - } - const lyraWorker = createLyraWorker(); - const lyraDecoder = await this.lyra.createDecoder(); - // @ts-ignore - receiver.transform = new RTCRtpScriptTransform(lyraWorker, { - name: 'receiverTransform', - lyraDecoder, - }, [lyraDecoder.port]); - } - else { - // 古い API (i.e., createEncodedStreams) を使っているブラウザ - // @ts-ignore - // eslint-disable-next-line - const receiverStreams = receiver.createEncodedStreams(); - let writable = receiverStreams.writable; - if (codecType === 'LYRA' && this.lyra !== undefined) { - const lyraDecoder = await this.lyra.createDecoder(); - const transformStream = new TransformStream({ - transform: (data, controller) => transformLyraToPcm(lyraDecoder, data, controller), - }); - transformStream.readable.pipeTo(receiverStreams.writable).catch((e) => console.warn(e)); - writable = transformStream.writable; - } - if (this.e2ee) { - this.e2ee.setupReceiverTransform(receiverStreams.readable, writable); - } - else { - receiverStreams.readable.pipeTo(writable).catch((e) => console.warn(e)); - } - } - } - /** - * シグナリングサーバーに type answer を投げるメソッド - */ - sendAnswer() { - if (this.pc && this.ws && this.pc.localDescription) { - this.trace('ANSWER SDP', this.pc.localDescription.sdp); - const sdp = this.processAnswerSdpForSora(this.pc.localDescription.sdp); - const message = { type: 'answer', sdp }; - this.ws.send(JSON.stringify(message)); - this.writeWebSocketSignalingLog('send-answer', message); - } - return; - } - /** - * iceCnadidate 処理をするメソッド - */ - onIceCandidate() { - return new Promise((resolve, _) => { - if (this.pc) { - this.pc.oniceconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('oniceconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - this.trace('ONICECONNECTIONSTATECHANGE ICECONNECTIONSTATE', this.pc.iceConnectionState); - if (this.pc.iceConnectionState === 'connected') { - resolve(); - } - } - }; - this.pc.onicecandidate = (event) => { - this.writePeerConnectionTimelineLog('onicecandidate', event.candidate); - if (this.pc) { - this.trace('ONICECANDIDATE ICEGATHERINGSTATE', this.pc.iceGatheringState); - } - // TODO(yuito): Firefox は を投げてくるようになったので対応する - if (event.candidate === null) { - resolve(); - } - else { - const candidate = event.candidate.toJSON(); - const message = Object.assign(candidate, { type: 'candidate' }); - this.trace('ONICECANDIDATE CANDIDATE MESSAGE', message); - this.sendSignalingMessage(message); - } - }; - } - }); - } - /** - * connectionState が "connected" になるのを監視するメソッド - * - * @remarks - * PeerConnection.connectionState が実装されていない場合は何もしない - */ - waitChangeConnectionStateConnected() { - return new Promise((resolve, reject) => { - // connectionState が存在しない場合はそのまま抜ける - if (this.pc && this.pc.connectionState === undefined) { - resolve(); - return; - } - const timerId = setInterval(() => { - if (!this.pc) { - const error = new Error(); - error.message = "PeerConnection connectionState did not change to 'connected'"; - clearInterval(timerId); - reject(error); - } - else if (this.pc && this.pc.connectionState === 'connected') { - clearInterval(timerId); - resolve(); - } - }, 10); - }); - } - /** - * 初回シグナリング接続時の WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - monitorSignalingWebSocketEvent() { - return new Promise((_, reject) => { - this.monitorSignalingWebSocketEventTimerId = setInterval(() => { - if (!this.ws) { - return; - } - this.clearMonitorSignalingWebSocketEvent(); - this.ws.onclose = (event) => { - const error = new ConnectError(`Signaling failed. CloseEventCode:${event.code} CloseEventReason:'${event.reason}'`); - error.code = event.code; - error.reason = event.reason; - this.writeWebSocketTimelineLog('onclose', error); - this.signalingTerminate(); - reject(error); - }; - this.ws.onerror = (_) => { - const error = new ConnectError(`Signaling failed. WebSocket onerror was called`); - this.writeWebSocketSignalingLog('onerror', error); - this.signalingTerminate(); - reject(error); - }; - }, 100); - }); - } - /** - * WebSocket の切断を監視するメソッド - * - * @remarks - * 意図しない切断があった場合には異常終了処理を実行する - */ - monitorWebSocketEvent() { - if (!this.ws) { - return; - } - this.ws.onclose = async (event) => { - this.writeWebSocketTimelineLog('onclose', { code: event.code, reason: event.reason }); - await this.abend('WEBSOCKET-ONCLOSE', { code: event.code, reason: event.reason }); - }; - this.ws.onerror = async (_) => { - this.writeWebSocketSignalingLog('onerror'); - await this.abend('WEBSOCKET-ONERROR'); - }; - } - /** - * 初回シグナリング後 PeerConnection の state を監視するメソッド - * - * @remarks - * connectionState, iceConnectionState を監視して不正な場合に切断する - */ - monitorPeerConnectionState() { - if (!this.pc) { - return; - } - this.pc.oniceconnectionstatechange = (_) => { - // connectionState が undefined の場合は iceConnectionState を見て判定する - if (this.pc && this.pc.connectionState === undefined) { - this.writePeerConnectionTimelineLog('oniceconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - this.trace('ONICECONNECTIONSTATECHANGE ICECONNECTIONSTATE', this.pc.iceConnectionState); - clearTimeout(this.monitorIceConnectionStateChangeTimerId); - // iceConnectionState "failed" で切断する - if (this.pc.iceConnectionState === 'failed') { - this.abendPeerConnectionState('ICE-CONNECTION-STATE-FAILED'); - } - // iceConnectionState "disconnected" になってから 10000ms の間変化がない場合切断する - else if (this.pc.iceConnectionState === 'disconnected') { - this.monitorIceConnectionStateChangeTimerId = setTimeout(() => { - if (this.pc && this.pc.iceConnectionState === 'disconnected') { - this.abendPeerConnectionState('ICE-CONNECTION-STATE-DISCONNECTED-TIMEOUT'); - } - }, 10000); - } - } - }; - this.pc.onconnectionstatechange = (_) => { - if (this.pc) { - this.writePeerConnectionTimelineLog('onconnectionstatechange', { - connectionState: this.pc.connectionState, - iceConnectionState: this.pc.iceConnectionState, - iceGatheringState: this.pc.iceGatheringState, - }); - if (this.pc.connectionState === 'failed') { - this.abendPeerConnectionState('CONNECTION-STATE-FAILED'); - } - } - }; - } - /** - * 初回シグナリングの接続タイムアウト処理をするメソッド - */ - setConnectionTimeout() { - return new Promise((_, reject) => { - if (0 < this.connectionTimeout) { - this.connectionTimeoutTimerId = setTimeout(() => { - if (!this.pc || - (this.pc && - this.pc.connectionState !== undefined && - this.pc.connectionState !== 'connected')) { - const error = new Error(); - error.message = 'Signaling connection timeout'; - this.callbacks.timeout(); - this.trace('DISCONNECT', 'Signaling connection timeout'); - this.writePeerConnectionTimelineLog('signaling-connection-timeout', { - connectionTimeout: this.connectionTimeout, - }); - this.signalingTerminate(); - reject(error); - } - }, this.connectionTimeout); - } - }); - } - /** - * setConnectionTimeout でセットしたタイマーを止めるメソッド - */ - clearConnectionTimeout() { - clearTimeout(this.connectionTimeoutTimerId); - } - /** - * monitorSignalingWebSocketEvent でセットしたタイマーを止めるメソッド - */ - clearMonitorSignalingWebSocketEvent() { - clearInterval(this.monitorSignalingWebSocketEventTimerId); - } - /** - * monitorPeerConnectionState でセットしたタイマーを止めるメソッド - */ - clearMonitorIceConnectionStateChange() { - clearInterval(this.monitorIceConnectionStateChangeTimerId); - } - /** - * trace log を出力するメソッド - * - * @param title - ログのタイトル - * @param message - ログの本文 - */ - trace(title, message) { - this.callbacks.log(title, message); - if (!this.debug) { - return; - } - trace(this.clientId, title, message); - } - /** - * WebSocket のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeWebSocketSignalingLog(eventType, data) { - this.callbacks.signaling(createSignalingEvent(eventType, data, 'websocket')); - this.writeWebSocketTimelineLog(eventType, data); - } - /** - * DataChannel のシグナリングログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeDataChannelSignalingLog(eventType, channel, data) { - this.callbacks.signaling(createSignalingEvent(eventType, data, 'datachannel')); - this.writeDataChannelTimelineLog(eventType, channel, data); - } - /** - * WebSocket のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeWebSocketTimelineLog(eventType, data) { - const event = createTimelineEvent(eventType, data, 'websocket'); - this.callbacks.timeline(event); - } - /** - * DataChannel のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeDataChannelTimelineLog(eventType, channel, data) { - const event = createTimelineEvent(eventType, data, 'datachannel', channel.id, channel.label); - this.callbacks.timeline(event); - } - /** - * PeerConnection のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writePeerConnectionTimelineLog(eventType, data) { - const event = createTimelineEvent(eventType, data, 'peerconnection'); - this.callbacks.timeline(event); - } - /** - * Sora との接続のタイムラインログ処理をするメソッド - * - * @param eventType - イベントタイプ - * @param data - イベントデータ - */ - writeSoraTimelineLog(eventType, data) { - const event = createTimelineEvent(eventType, data, 'sora'); - this.callbacks.timeline(event); - } - /** - * createOffer 処理をするメソッド - * - * @returns - * 生成した RTCSessionDescription を返します - */ - async createOffer() { - const config = { iceServers: [] }; - const pc = new window.RTCPeerConnection(config); - if (isSafari()) { - pc.addTransceiver('video', { direction: 'recvonly' }); - pc.addTransceiver('audio', { direction: 'recvonly' }); - const offer = await pc.createOffer(); - pc.close(); - this.writePeerConnectionTimelineLog('create-offer', offer); - return offer; - } - const offer = await pc.createOffer({ offerToReceiveAudio: true, offerToReceiveVideo: true }); - pc.close(); - this.writePeerConnectionTimelineLog('create-offer', offer); - return offer; - } - /** - * シグナリングサーバーから受け取った type e2ee メッセージを処理をするメソッド - * - * @param data - E2EE 用バイナリメッセージ - */ - signalingOnMessageE2EE(data) { - if (this.e2ee) { - const message = new Uint8Array(data); - const result = this.e2ee.receiveMessage(message); - this.e2ee.postRemoteSecretKeyMaterials(result); - result.messages.forEach((message) => { - this.sendE2EEMessage(message.buffer); - }); - } - } - /** - * シグナリングサーバーから受け取った type offer メッセージを処理をするメソッド - * - * @param message - type offer メッセージ - */ - signalingOnMessageTypeOffer(message) { - this.clientId = message.client_id; - this.connectionId = message.connection_id; - if (message.metadata !== undefined) { - this.authMetadata = message.metadata; - } - if (Array.isArray(message.encodings)) { - this.encodings = message.encodings; - } - if (message.mid !== undefined && message.mid.audio !== undefined) { - this.mids.audio = message.mid.audio; - } - if (message.mid !== undefined && message.mid.video !== undefined) { - this.mids.video = message.mid.video; - } - if (message.data_channels) { - for (const dc of message.data_channels) { - this.signalingOfferMessageDataChannels[dc.label] = dc; - } - } - this.trace('SIGNALING OFFER MESSAGE', message); - this.trace('OFFER SDP', message.sdp); - } - /** - * シグナリングサーバーに type update を投げるメソッド - */ - sendUpdateAnswer() { - if (this.pc && this.ws && this.pc.localDescription) { - this.trace('ANSWER SDP', this.pc.localDescription.sdp); - this.sendSignalingMessage({ type: 'update', sdp: this.pc.localDescription.sdp }); - } - } - /** - * シグナリングサーバーに type re-answer を投げるメソッド - */ - sendReAnswer() { - if (this.pc && this.pc.localDescription) { - this.trace('RE ANSWER SDP', this.pc.localDescription.sdp); - this.sendSignalingMessage({ type: 're-answer', sdp: this.pc.localDescription.sdp }); - } - } - /** - * シグナリングサーバーから受け取った type update メッセージを処理をするメソッド - * - * @param message - type update メッセージ - */ - async signalingOnMessageTypeUpdate(message) { - this.trace('SIGNALING UPDATE MESSGE', message); - this.trace('UPDATE SDP', message.sdp); - await this.setRemoteDescription(message); - await this.createAnswer(message); - this.sendUpdateAnswer(); - } - /** - * シグナリングサーバーから受け取った type re-offer メッセージを処理をするメソッド - * - * @param message - type re-offer メッセージ - */ - async signalingOnMessageTypeReOffer(message) { - this.trace('SIGNALING RE OFFER MESSGE', message); - this.trace('RE OFFER SDP', message.sdp); - await this.setRemoteDescription(message); - await this.createAnswer(message); - this.sendReAnswer(); - } - /** - * シグナリングサーバーから受け取った type ping メッセージを処理をするメソッド - * - * @param message - type ping メッセージ - */ - async signalingOnMessageTypePing(message) { - const pongMessage = { type: 'pong' }; - if (message.stats) { - const stats = await this.getStats(); - pongMessage.stats = stats; - } - if (this.ws) { - this.ws.send(JSON.stringify(pongMessage)); - } - } - /** - * シグナリングサーバーから受け取った type notify メッセージを処理をするメソッド - * - * @param message - type notify メッセージ - */ - signalingOnMessageTypeNotify(message, transportType) { - if (message.event_type === 'connection.created') { - const connectionId = message.connection_id; - if (this.connectionId !== connectionId) { - const authnMetadata = getSignalingNotifyAuthnMetadata(message); - const preKeyBundle = getPreKeyBundle(authnMetadata); - if (preKeyBundle && this.e2ee && connectionId) { - const result = this.e2ee.startSession(connectionId, preKeyBundle); - this.e2ee.postRemoteSecretKeyMaterials(result); - result.messages.forEach((message) => { - this.sendE2EEMessage(message.buffer); - }); - // messages を送信し終えてから、selfSecretKeyMaterial を更新する - this.e2ee.postSelfSecretKeyMaterial(result.selfConnectionId, result.selfKeyId, result.selfSecretKeyMaterial); - } - } - const data = getSignalingNotifyData(message); - data.forEach((metadata) => { - const authnMetadata = getSignalingNotifyAuthnMetadata(metadata); - const preKeyBundle = getPreKeyBundle(authnMetadata); - const connectionId = metadata.connection_id; - if (connectionId && this.e2ee && preKeyBundle) { - this.e2ee.addPreKeyBundle(connectionId, preKeyBundle); - } - }); - } - else if (message.event_type === 'connection.destroyed') { - const authnMetadata = getSignalingNotifyAuthnMetadata(message); - const preKeyBundle = getPreKeyBundle(authnMetadata); - const connectionId = message.connection_id; - if (preKeyBundle && this.e2ee && connectionId) { - const result = this.e2ee.stopSession(connectionId); - this.e2ee.postSelfSecretKeyMaterial(result.selfConnectionId, result.selfKeyId, result.selfSecretKeyMaterial, 5000); - result.messages.forEach((message) => { - this.sendE2EEMessage(message.buffer); - }); - this.e2ee.postRemoveRemoteDeriveKey(connectionId); - } - } - this.callbacks.notify(message, transportType); - } - /** - * シグナリングサーバーから受け取った type switched メッセージを処理をするメソッド - * - * @param message - type switched メッセージ - */ - signalingOnMessageTypeSwitched(message) { - this.signalingSwitched = true; - if (!this.ws) { - return; - } - if (message['ignore_disconnect_websocket']) { - if (this.ws) { - this.ws.onclose = null; - this.ws.close(); - this.ws = null; - } - this.writeWebSocketSignalingLog('close'); - } - for (const channel of this.datachannels) { - this.callbacks.datachannel(createDataChannelEvent(channel)); - } - } - /** - * シグナリングサーバーから受け取った type redirect メッセージを処理をするメソッド - * - * @param message - type redirect メッセージ - */ - async signalingOnMessageTypeRedirect(message) { - if (this.ws) { - this.ws.onclose = null; - this.ws.onerror = null; - this.ws.close(); - this.ws = null; - } - const ws = await this.getSignalingWebSocket(message.location); - const signalingMessage = await this.signaling(ws, true); - return signalingMessage; - } - /** - * sender の parameters に encodings をセットするメソッド - * - * @remarks - * サイマルキャスト用の処理 - */ - async setSenderParameters(transceiver, encodings) { - const originalParameters = transceiver.sender.getParameters(); - // @ts-ignore - originalParameters.encodings = encodings; - await transceiver.sender.setParameters(originalParameters); - this.trace('TRANSCEIVER SENDER SET_PARAMETERS', originalParameters); - this.writePeerConnectionTimelineLog('transceiver-sender-set-parameters', originalParameters); - return; - } - /** - * PeerConnection から RTCStatsReport を取得するためのメソッド - */ - async getStats() { - const stats = []; - if (!this.pc) { - return stats; - } - const reports = await this.pc.getStats(); - reports.forEach((s) => { - stats.push(s); - }); - return stats; - } - /** - * PeerConnection の ondatachannel callback メソッド - * - * @param dataChannelEvent - DataChannel イベント - */ - onDataChannel(dataChannelEvent) { - const dataChannel = dataChannelEvent.channel; - dataChannel.bufferedAmountLowThreshold = 65536; - dataChannel.binaryType = 'arraybuffer'; - this.soraDataChannels[dataChannel.label] = dataChannel; - this.writeDataChannelTimelineLog('ondatachannel', dataChannel, createDataChannelData(dataChannel)); - // onbufferedamountlow - dataChannelEvent.channel.onbufferedamountlow = (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onbufferedamountlow', channel); - }; - // onopen - dataChannelEvent.channel.onopen = (event) => { - const channel = event.currentTarget; - this.trace('OPEN DATA CHANNEL', channel.label); - if (channel.label === 'signaling' && this.ws) { - this.writeDataChannelSignalingLog('onopen', channel); - } - else { - this.writeDataChannelTimelineLog('onopen', channel); - } - }; - // onclose - dataChannelEvent.channel.onclose = async (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onclose', channel); - this.trace('CLOSE DATA CHANNEL', channel.label); - await this.disconnect(); - }; - // onerror - dataChannelEvent.channel.onerror = async (event) => { - const channel = event.currentTarget; - this.writeDataChannelTimelineLog('onerror', channel); - this.trace('ERROR DATA CHANNEL', channel.label); - await this.abend('DATA-CHANNEL-ONERROR', { params: { label: channel.label } }); - }; - // onmessage - if (dataChannelEvent.channel.label === 'signaling') { - dataChannelEvent.channel.onmessage = async (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - this.writeDataChannelSignalingLog(`onmessage-${message.type}`, channel, message); - if (message.type === 're-offer') { - await this.signalingOnMessageTypeReOffer(message); - } - }; - } - else if (dataChannelEvent.channel.label === 'notify') { - dataChannelEvent.channel.onmessage = (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - if (message.event_type === 'connection.created') { - this.writeDataChannelTimelineLog('notify-connection.created', channel, message); - } - else if (message.event_type === 'connection.destroyed') { - this.writeDataChannelTimelineLog('notify-connection.destroyed', channel, message); - } - this.signalingOnMessageTypeNotify(message, 'datachannel'); - }; - } - else if (dataChannelEvent.channel.label === 'push') { - dataChannelEvent.channel.onmessage = (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - this.callbacks.push(message, 'datachannel'); - }; - } - else if (dataChannelEvent.channel.label === 'e2ee') { - dataChannelEvent.channel.onmessage = (event) => { - const channel = event.currentTarget; - const data = event.data; - this.signalingOnMessageE2EE(data); - this.writeDataChannelSignalingLog('onmessage-e2ee', channel, data); - }; - } - else if (dataChannelEvent.channel.label === 'stats') { - dataChannelEvent.channel.onmessage = async (event) => { - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const data = parseDataChannelEventData(event.data, dataChannelSettings.compress); - const message = JSON.parse(data); - if (message.type === 'req-stats') { - const stats = await this.getStats(); - this.sendStatsMessage(stats); - } - }; - } - else if (/^#.*/.exec(dataChannelEvent.channel.label)) { - dataChannelEvent.channel.onmessage = (event) => { - if (event.currentTarget === null) { - return; - } - const channel = event.currentTarget; - const label = channel.label; - const dataChannelSettings = this.signalingOfferMessageDataChannels[label]; - if (!dataChannelSettings) { - console.warn(`Received onmessage event for '${label}' DataChannel. But '${label}' DataChannel settings doesn't exist`); - return; - } - const dataChannel = event.target; - let data = undefined; - if (typeof event.data === 'string') { - data = new TextEncoder().encode(event.data); - } - else if (event.data instanceof ArrayBuffer) { - data = event.data; - } - else { - console.warn('Received onmessage event data is not of type String or ArrayBuffer.'); - } - if (data !== undefined) { - if (dataChannelSettings.compress === true) { - data = unzlibSync(new Uint8Array(data)).buffer; - } - this.callbacks.message(createDataChannelMessageEvent(dataChannel.label, data)); - } - }; - } - } - /** - * シグナリングサーバーへメッセージを送信するメソッド - * - * @param message - 送信するメッセージ - */ - sendSignalingMessage(message) { - if (this.soraDataChannels.signaling) { - if (this.signalingOfferMessageDataChannels.signaling && - this.signalingOfferMessageDataChannels.signaling.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - this.soraDataChannels.signaling.send(zlibMessage); - } - else { - this.soraDataChannels.signaling.send(JSON.stringify(message)); - } - this.writeDataChannelSignalingLog(`send-${message.type}`, this.soraDataChannels.signaling, message); - } - else if (this.ws !== null) { - this.ws.send(JSON.stringify(message)); - this.writeWebSocketSignalingLog(`send-${message.type}`, message); - } - } - /** - * シグナリングサーバーに E2E 用メッセージを投げるメソッド - * - * @param message - 送信するバイナリメッセージ - */ - sendE2EEMessage(message) { - if (this.soraDataChannels.e2ee) { - this.soraDataChannels.e2ee.send(message); - this.writeDataChannelSignalingLog('send-e2ee', this.soraDataChannels.e2ee, message); - } - else if (this.ws !== null) { - this.ws.send(message); - this.writeWebSocketSignalingLog('send-e2ee', message); - } - } - /** - * シグナリングサーバーに stats メッセージを投げるメソッド - * - * @param reports - RTCStatsReport のリスト - */ - sendStatsMessage(reports) { - if (this.soraDataChannels.stats) { - const message = { - type: 'stats', - reports: reports, - }; - if (this.signalingOfferMessageDataChannels.stats && - this.signalingOfferMessageDataChannels.stats.compress === true) { - const binaryMessage = new TextEncoder().encode(JSON.stringify(message)); - const zlibMessage = zlibSync(binaryMessage, {}); - this.soraDataChannels.stats.send(zlibMessage); - } - else { - this.soraDataChannels.stats.send(JSON.stringify(message)); - } - } - } - /** - * audio transceiver を取得するメソッド - */ - getAudioTransceiver() { - if (this.pc && this.mids.audio) { - const transceiver = this.pc.getTransceivers().find((transceiver) => { - return transceiver.mid === this.mids.audio; - }); - return transceiver || null; - } - return null; - } - /** - * video transceiver を取得するメソッド - */ - getVideoTransceiver() { - if (this.pc && this.mids.video) { - const transceiver = this.pc.getTransceivers().find((transceiver) => { - return transceiver.mid === this.mids.video; - }); - return transceiver || null; - } - return null; - } - /** - * disconnect callback に渡す Event オブジェクトを生成するためのメソッド - * - * @param type - Event タイプ(normal | abend) - * @param title - Event タイトル - * @param initDict - Event に設定するオプションパラメーター - */ - soraCloseEvent(type, title, initDict) { - const soraCloseEvent = class SoraCloseEvent extends Event { - constructor(type, title, initDict) { - super(type); - if (initDict) { - if (initDict.code) { - this.code = initDict.code; - } - if (initDict.reason) { - this.reason = initDict.reason; - } - if (initDict.params) { - this.params = initDict.params; - } - } - this.title = title; - } - }; - return new soraCloseEvent(type, title, initDict); - } - /** - * DataChannel を使用してメッセージを送信するメソッド - * - * @param label - メッセージを送信する DataChannel のラベル - * @param message - Uint8Array - */ - sendMessage(label, message) { - const dataChannel = this.soraDataChannels[label]; - // 接続していない場合は何もしない - if (this.pc === null) { - return; - } - if (dataChannel === undefined) { - throw new Error('Could not find DataChannel'); - } - if (dataChannel.readyState !== 'open') { - throw new Error('Messaging DataChannel is not open'); - } - const settings = this.signalingOfferMessageDataChannels[label]; - if (settings !== undefined && settings.compress === true) { - const zlibMessage = zlibSync(message, {}); - dataChannel.send(zlibMessage); - } - else { - dataChannel.send(message); - } - } - /** - * E2EE の自分のフィンガープリント - */ - get e2eeSelfFingerprint() { - if (this.options.e2ee && this.e2ee) { - return this.e2ee.selfFingerprint(); - } - return; - } - /** - * E2EE のリモートのフィンガープリントリスト - */ - get e2eeRemoteFingerprints() { - if (this.options.e2ee && this.e2ee) { - return this.e2ee.remoteFingerprints(); - } - return; - } - /** - * audio が有効かどうか - */ - get audio() { - return this.getAudioTransceiver() !== null; - } - /** - * video が有効かどうか - */ - get video() { - return this.getVideoTransceiver() !== null; - } - /** - * シグナリングに使用する URL - * - * @deprecated - */ - get signalingUrl() { - return this.signalingUrlCandidates; - } - /** - * DataChannel メッセージング用の DataChannel 情報のリスト - */ - get datachannels() { - if (!this.signalingSwitched) { - return []; - } - const messagingDataChannellabels = Object.keys(this.signalingOfferMessageDataChannels).filter((label) => { - return /^#.*/.exec(label); - }); - const result = []; - for (const label of messagingDataChannellabels) { - const dataChannel = this.soraDataChannels[label]; - if (!dataChannel) { - continue; - } - const settings = this.signalingOfferMessageDataChannels[label]; - if (!settings) { - continue; - } - const messagingDataChannel = { - label: dataChannel.label, - ordered: dataChannel.ordered, - protocol: dataChannel.protocol, - compress: settings.compress, - direction: settings.direction, - }; - if (typeof dataChannel.maxPacketLifeTime === 'number') { - messagingDataChannel.maxPacketLifeTime = dataChannel.maxPacketLifeTime; - } - if (typeof dataChannel.maxRetransmits === 'number') { - messagingDataChannel.maxRetransmits = dataChannel.maxRetransmits; - } - result.push(messagingDataChannel); - } - return result; - } -} - -/** - * Role が "sendonly" または "sendrecv" の場合に Sora との WebRTC 接続を扱うクラス - */ -class ConnectionPublisher extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const sendrecv = connection.sendrecv("sora"); - * const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true, video: true}); - * await sendrecv.connect(mediaStream); - * ``` - * - * @param stream - メディアストリーム - * - * @public - */ - async connect(stream) { - if (this.options.multistream) { - await Promise.race([ - this.multiStream(stream).finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - } - else { - await Promise.race([ - this.singleStream(stream).finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - } - this.monitorWebSocketEvent(); - this.monitorPeerConnectionState(); - return stream; - } - /** - * シングルストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - async singleStream(stream) { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - await this.setRemoteDescription(signalingMessage); - stream.getTracks().forEach((track) => { - if (this.pc) { - this.pc.addTrack(track, stream); - } - }); - if (this.pc) { - for (const sender of this.pc.getSenders()) { - await this.setupSenderTransform(sender); - } - } - this.stream = stream; - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return stream; - } - /** - * マルチストリームで Sora へ接続するメソッド - * - * @param stream - メディアストリーム - */ - async multiStream(stream) { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - if (this.pc) { - this.pc.ontrack = async (event) => { - await this.setupReceiverTransform(event.transceiver.mid, event.receiver); - const stream = event.streams[0]; - if (!stream) { - return; - } - const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'stream.id': stream.id, - id: event.track.id, - label: event.track.label, - enabled: event.track.enabled, - kind: event.track.kind, - muted: event.track.muted, - readyState: event.track.readyState, - }; - this.writePeerConnectionTimelineLog('ontrack', data); - if (stream.id === 'default') { - return; - } - if (stream.id === this.connectionId) { - return; - } - this.callbacks.track(event); - stream.onremovetrack = (event) => { - this.callbacks.removetrack(event); - if (event.target) { - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - const index = this.remoteConnectionIds.indexOf(event.target.id); - if (-1 < index) { - delete this.remoteConnectionIds[index]; - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - event.stream = event.target; - this.callbacks.removestream(event); - } - } - }; - if (-1 < this.remoteConnectionIds.indexOf(stream.id)) { - return; - } - // @ts-ignore TODO(yuito): 最新ブラウザでは無くなった API だが後方互換のため残す - event.stream = stream; - this.remoteConnectionIds.push(stream.id); - this.callbacks.addstream(event); - }; - } - await this.setRemoteDescription(signalingMessage); - stream.getTracks().forEach((track) => { - if (this.pc) { - this.pc.addTrack(track, stream); - } - }); - if (this.pc) { - for (const sender of this.pc.getSenders()) { - await this.setupSenderTransform(sender); - } - } - this.stream = stream; - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return stream; - } -} - -/** - * Role が "recvonly" の場合に Sora との WebRTC 接続を扱うクラス - */ -class ConnectionSubscriber extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const recvonly = connection.sendrecv("sora"); - * await recvonly.connect(); - * ``` - * - * @public - */ - async connect() { - if (this.options.multistream) { - await Promise.race([ - this.multiStream().finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - this.monitorWebSocketEvent(); - this.monitorPeerConnectionState(); - return; - } - else { - const stream = await Promise.race([ - this.singleStream().finally(() => { - this.clearConnectionTimeout(); - this.clearMonitorSignalingWebSocketEvent(); - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]); - this.monitorWebSocketEvent(); - this.monitorPeerConnectionState(); - return stream; - } - } - /** - * シングルストリームで Sora へ接続するメソッド - */ - async singleStream() { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - if (this.pc) { - this.pc.ontrack = async (event) => { - await this.setupReceiverTransform(event.transceiver.mid, event.receiver); - this.stream = event.streams[0]; - const streamId = this.stream.id; - if (streamId === 'default') { - return; - } - const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'stream.id': streamId, - id: event.track.id, - label: event.track.label, - enabled: event.track.enabled, - kind: event.track.kind, - muted: event.track.muted, - readyState: event.track.readyState, - }; - this.writePeerConnectionTimelineLog('ontrack', data); - this.callbacks.track(event); - this.stream.onremovetrack = (event) => { - this.callbacks.removetrack(event); - if (event.target) { - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - const targetId = event.target.id; - const index = this.remoteConnectionIds.indexOf(targetId); - if (-1 < index) { - delete this.remoteConnectionIds[index]; - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - event.stream = event.target; - this.callbacks.removestream(event); - } - } - }; - if (-1 < this.remoteConnectionIds.indexOf(streamId)) { - return; - } - // @ts-ignore TODO(yuito): 最新ブラウザでは無くなった API だが後方互換のため残す - event.stream = this.stream; - this.remoteConnectionIds.push(streamId); - this.callbacks.addstream(event); - }; - } - await this.setRemoteDescription(signalingMessage); - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return this.stream || new MediaStream(); - } - /** - * マルチストリームで Sora へ接続するメソッド - */ - async multiStream() { - await this.disconnect(); - this.setupE2EE(); - const ws = await this.getSignalingWebSocket(this.signalingUrlCandidates); - const signalingMessage = await this.signaling(ws); - this.startE2EE(); - await this.connectPeerConnection(signalingMessage); - if (this.pc) { - this.pc.ontrack = async (event) => { - await this.setupReceiverTransform(event.transceiver.mid, event.receiver); - const stream = event.streams[0]; - if (stream.id === 'default') { - return; - } - if (stream.id === this.connectionId) { - return; - } - const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention - 'stream.id': stream.id, - id: event.track.id, - label: event.track.label, - enabled: event.track.enabled, - kind: event.track.kind, - muted: event.track.muted, - readyState: event.track.readyState, - }; - this.writePeerConnectionTimelineLog('ontrack', data); - this.callbacks.track(event); - stream.onremovetrack = (event) => { - this.callbacks.removetrack(event); - if (event.target) { - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - const targetId = event.target.id; - const index = this.remoteConnectionIds.indexOf(targetId); - if (-1 < index) { - delete this.remoteConnectionIds[index]; - // @ts-ignore TODO(yuito): 後方互換のため peerConnection.onremovestream と同じ仕様で残す - event.stream = event.target; - this.callbacks.removestream(event); - } - } - }; - if (-1 < this.remoteConnectionIds.indexOf(stream.id)) { - return; - } - // @ts-ignore TODO(yuito): 最新ブラウザでは無くなった API だが後方互換のため残す - event.stream = stream; - this.remoteConnectionIds.push(stream.id); - this.callbacks.addstream(event); - }; - } - await this.setRemoteDescription(signalingMessage); - await this.createAnswer(signalingMessage); - this.sendAnswer(); - await this.onIceCandidate(); - await this.waitChangeConnectionStateConnected(); - return; - } -} - -/** - * MediaStream の constraints を動的に変更するメソッド. - * - * @param mediastream - メディアストリーム - * - * @param constraints - メディアストリーム制約 - * - * @public - */ -async function applyMediaStreamConstraints(mediastream, constraints) { - if (constraints.audio && typeof constraints.audio !== 'boolean') { - for (const track of mediastream.getAudioTracks()) { - await track.applyConstraints(constraints.audio); - } - } - if (constraints.video && typeof constraints.video !== 'boolean') { - for (const track of mediastream.getVideoTracks()) { - await track.applyConstraints(constraints.video); - } - } -} - -/** - * Role 毎の Connection インスタンスを生成するためのクラス - * - * @param signalingUrlCandidates - シグナリングに使用する URL の候補 - * @param debug - デバッグフラグ - */ -class SoraConnection { - constructor(signalingUrlCandidates, debug = false) { - this.signalingUrlCandidates = signalingUrlCandidates; - this.debug = debug; - } - /** - * role sendrecv で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendrecv = connection.sendrecv("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role sendrecv な Connection オブジェクトを返します - * - * @public - */ - sendrecv(channelId, metadata = null, options = { audio: true, video: true }) { - // sendrecv の場合、multistream に初期値を指定する - const sendrecvOptions = Object.assign({ multistream: true }, options); - return new ConnectionPublisher(this.signalingUrlCandidates, 'sendrecv', channelId, metadata, sendrecvOptions, this.debug); - } - /** - * role sendonly で接続するための Connecion インスタンスを生成するメソッド - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const sendonly = connection.sendonly("sora"); - * ``` - * - * @returns - * role sendonly な Connection オブジェクトを返します - * - * @public - */ - sendonly(channelId, metadata = null, options = { audio: true, video: true }) { - return new ConnectionPublisher(this.signalingUrlCandidates, 'sendonly', channelId, metadata, options, this.debug); - } - /** - * role recvonly で接続するための Connecion インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * const recvonly = connection.recvonly("sora"); - * ``` - * - * @param channelId - チャネルID - * @param metadata - メタデータ - * @param options - コネクションオプション - * - * @returns - * role recvonly な Connection オブジェクトを返します - * - * @public - */ - recvonly(channelId, metadata = null, options = { audio: true, video: true }) { - return new ConnectionSubscriber(this.signalingUrlCandidates, 'recvonly', channelId, metadata, options, this.debug); - } - /** - * シグナリングに使用する URL の候補 - * - * @public - * @deprecated - */ - get signalingUrl() { - return this.signalingUrlCandidates; - } -} -/** - * Sora JS SDK package - */ -var sora = { - /** - * E2EE で使用する WASM の読み込みを行うメソッド - * - * @example - * ```typescript - * Sora.initE2EE("http://192.0.2.100/wasm.wasm"); - * ``` - * @param wasmUrl - E2EE WASM の URL - * - * @public - */ - initE2EE: async function (wasmUrl) { - await SoraE2EE.loadWasm(wasmUrl); - }, - /** - * Lyra の初期化を行うメソッド - * - * 詳細は lyra.ts の initLyra() メソッドのドキュメントを参照 - */ - initLyra, - /** - * SoraConnection インスタンスを生成するメソッド - * - * @example - * ```typescript - * const connection = Sora.connection('ws://192.0.2.100:5000/signaling', true); - * ``` - * - * @param signalingUrlCandidates - シグナリングに使用する URL 候補 - * @param debug - デバッグフラグ - * - * @public - * - */ - connection: function (signalingUrlCandidates, debug = false) { - return new SoraConnection(signalingUrlCandidates, debug); - }, - /** - * SDK のバージョンを返すメソッド - * - * @public - */ - version: function () { - return '2023.2.0-canary.0'; - }, - /** - * WebRTC のユーティリティ関数群 - * - * @public - */ - helpers: { - applyMediaStreamConstraints, - }, -}; - -export { sora as default }; diff --git a/dist/subscriber.d.ts b/dist/subscriber.d.ts deleted file mode 100644 index 1c89f493..00000000 --- a/dist/subscriber.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import ConnectionBase from './base'; -/** - * Role が "recvonly" の場合に Sora との WebRTC 接続を扱うクラス - */ -export default class ConnectionSubscriber extends ConnectionBase { - /** - * Sora へ接続するメソッド - * - * @example - * ```typescript - * const recvonly = connection.sendrecv("sora"); - * await recvonly.connect(); - * ``` - * - * @public - */ - connect(): Promise; - /** - * シングルストリームで Sora へ接続するメソッド - */ - private singleStream; - /** - * マルチストリームで Sora へ接続するメソッド - */ - private multiStream; -} diff --git a/dist/types.d.ts b/dist/types.d.ts deleted file mode 100644 index 9d8fbe21..00000000 --- a/dist/types.d.ts +++ /dev/null @@ -1,337 +0,0 @@ -export type JSONType = null | boolean | number | string | JSONType[] | { - [prop: string]: JSONType | undefined; -}; -export type SimulcastRid = 'r0' | 'r1' | 'r2'; -export type SpotlightFocusRid = 'none' | SimulcastRid; -export type Simulcast = boolean | { - rid: SimulcastRid; -}; -export type AudioCodecType = 'OPUS' | 'LYRA'; -export type SignalingAudio = boolean | { - codec_type?: AudioCodecType; - bit_rate?: number; - opus_params?: { - channels?: number; - maxplaybackrate?: number; - minptime?: number; - ptime?: number; - stereo?: boolean; - sprop_stereo?: boolean; - useinbandfec?: boolean; - usedtx?: boolean; - }; - lyra_params?: { - version?: string; - bitrate?: 3200 | 6000 | 9200; - usedtx?: boolean; - }; -}; -export type VideoCodecType = 'VP9' | 'VP8' | 'AV1' | 'H264' | 'H265'; -export type SignalingVideo = boolean | { - codec_type?: VideoCodecType; - bit_rate?: number; - vp9_params?: JSONType; - h264_params?: JSONType; - av1_params?: JSONType; -}; -export type Role = 'sendrecv' | 'sendonly' | 'recvonly'; -export type SignalingConnectDataChannel = { - label?: string; - direction?: DataChannelDirection; - compress?: boolean; - max_packet_life_time?: number; - max_retransmits?: number; - protocol?: string; - ordered?: boolean; -}; -export type SignalingConnectMessage = { - type: 'connect'; - role: Role; - channel_id: string; - client_id?: string; - bundle_id?: string; - metadata?: JSONType; - signaling_notify_metadata?: JSONType; - multistream?: boolean; - spotlight?: boolean; - spotlight_number?: number; - simulcast?: Simulcast; - simulcast_rid?: SimulcastRid; - audio: SignalingAudio; - video: SignalingVideo; - sdp: string; - sora_client: string; - environment: string; - e2ee?: boolean; - spotlight_focus_rid?: SpotlightFocusRid; - spotlight_unfocus_rid?: SpotlightFocusRid; - data_channel_signaling?: boolean; - ignore_disconnect_websocket?: boolean; - redirect?: true; - data_channels?: SignalingConnectDataChannel[]; - audio_streaming_language_code?: string; - forwarding_filter?: JSONType; -}; -export type SignalingMessage = SignalingOfferMessage | SignalingUpdateMessage | SignalingReOfferMessage | SignalingPingMessage | SignalingPushMessage | SignalingNotifyMessage | SignalingReqStatsMessage | SignalingSwitchedMessage | SignalingRedirectMessage; -export type SignalingOfferMessageDataChannel = { - label: string; - direction: DataChannelDirection; - compress: boolean; -}; -export type SignalingOfferMessage = { - type: 'offer'; - sdp: string; - client_id: string; - connection_id: string; - bundle_id?: string; - metadata?: JSONType; - config?: RTCConfiguration; - encodings?: RTCRtpEncodingParameters[]; - ignore_disconnect_websocket?: boolean; - data_channel_signaling?: boolean; - data_channels?: SignalingOfferMessageDataChannel[]; - mid?: { - audio?: string; - video?: string; - }; -}; -export type SignalingUpdateMessage = { - type: 'update'; - sdp: string; -}; -export type SignalingReOfferMessage = { - type: 're-offer'; - sdp: string; -}; -export type SignalingPingMessage = { - type: 'ping'; - stats: boolean; -}; -export type SignalingPushMessage = { - type: 'push'; - data: Record; -}; -export type SignalingReqStatsMessage = { - type: 'req-stats'; -}; -export type SignalingSwitchedMessage = { - type: 'switched'; - ignore_disconnect_websocket: boolean; -}; -export type SignalingRedirectMessage = { - type: 'redirect'; - location: string; -}; -export type SignalingNotifyMessage = SignalingNotifyConnectionCreated | SignalingNotifyConnectionUpdated | SignalingNotifyConnectionDestroyed | SignalingNotifySpotlightChanged | SignalingNotifySpotlightFocused | SignalingNotifySpotlightUnfocused | SignalingNotifyNetworkStatus; -export type SignalingNotifyMetadata = { - client_id?: string; - connection_id?: string; - authn_metadata?: JSONType; - authz_metadata?: JSONType; - metadata?: JSONType; -}; -export type SignalingNotifyConnectionCreated = { - type: 'notify'; - event_type: 'connection.created'; - role: Role; - client_id?: string; - connection_id?: string; - audio?: boolean; - video?: boolean; - authn_metadata?: JSONType; - authz_metadata?: JSONType; - metadata?: JSONType; - metadata_list?: SignalingNotifyMetadata[]; - data?: SignalingNotifyMetadata[]; - minutes: number; - channel_connections: number; - channel_sendrecv_connections: number; - channel_sendonly_connections: number; - channel_recvonly_connections: number; - turn_transport_type: 'udp' | 'tcp'; -}; -export type SignalingNotifyConnectionUpdated = { - type: 'notify'; - event_type: 'connection.updated'; - role: Role; - client_id?: string; - connection_id?: string; - audio?: boolean; - video?: boolean; - minutes: number; - channel_connections: number; - channel_sendrecv_connections: number; - channel_sendonly_connections: number; - channel_recvonly_connections: number; - turn_transport_type: 'udp' | 'tcp'; -}; -export type SignalingNotifyConnectionDestroyed = { - type: 'notify'; - event_type: 'connection.destroyed'; - role: Role; - client_id?: string; - connection_id?: string; - audio?: boolean; - video?: boolean; - minutes: number; - authn_metadata?: JSONType; - authz_metadata?: JSONType; - metadata?: JSONType; - channel_connections: number; - channel_sendrecv_connections: number; - channel_sendonly_connections: number; - channel_recvonly_connections: number; - turn_transport_type: 'udp' | 'tcp'; -}; -export type SignalingNotifySpotlightChanged = { - type: 'notify'; - event_type: 'spotlight.changed'; - client_id: string | null; - connection_id: string | null; - spotlight_id: string; - fixed?: boolean; - audio: boolean; - video: boolean; -}; -export type SignalingNotifySpotlightFocused = { - type: 'notify'; - event_type: 'spotlight.focused'; - client_id: string | null; - connection_id: string; - audio: boolean; - video: boolean; - fixed: boolean; -}; -export type SignalingNotifySpotlightUnfocused = { - type: 'notify'; - event_type: 'spotlight.unfocused'; - client_id: string | null; - connection_id: string; - audio: boolean; - video: boolean; - fixed: boolean; -}; -export type SignalingNotifyNetworkStatus = { - type: 'notify'; - event_type: 'network.status'; - unstable_level: 0 | 1 | 2 | 3; -}; -export type DataChannelDirection = 'sendonly' | 'sendrecv' | 'recvonly'; -export type DataChannelConfiguration = { - label: string; - direction: DataChannelDirection; - compress?: boolean; - maxPacketLifeTime?: number; - maxRetransmits?: number; - protocol?: string; - ordered?: boolean; -}; -export type ConnectionOptions = { - audio?: boolean; - audioCodecType?: AudioCodecType; - audioBitRate?: number; - audioOpusParamsChannels?: number; - audioOpusParamsMaxplaybackrate?: number; - audioOpusParamsStereo?: boolean; - audioOpusParamsSpropStereo?: boolean; - audioOpusParamsMinptime?: number; - audioOpusParamsPtime?: number; - audioOpusParamsUseinbandfec?: boolean; - audioOpusParamsUsedtx?: boolean; - audioLyraParamsBitrate?: 3200 | 6000 | 9200; - audioLyraParamsUsedtx?: boolean; - video?: boolean; - videoCodecType?: VideoCodecType; - videoBitRate?: number; - videoVP9Params?: JSONType; - videoH264Params?: JSONType; - videoAV1Params?: JSONType; - multistream?: boolean; - spotlight?: boolean; - spotlightNumber?: number; - spotlightFocusRid?: SpotlightFocusRid; - spotlightUnfocusRid?: SpotlightFocusRid; - simulcast?: boolean; - simulcastRid?: SimulcastRid; - clientId?: string; - timeout?: number; - connectionTimeout?: number; - e2ee?: boolean; - signalingNotifyMetadata?: JSONType; - dataChannelSignaling?: boolean; - ignoreDisconnectWebSocket?: boolean; - disconnectWaitTimeout?: number; - signalingCandidateTimeout?: number; - dataChannels?: DataChannelConfiguration[]; - bundleId?: string; - audioStreamingLanguageCode?: string; - forwardingFilter?: JSONType; -}; -export type Callbacks = { - disconnect: (event: SoraCloseEvent) => void; - push: (event: SignalingPushMessage, transportType: TransportType) => void; - addstream: (event: RTCTrackEvent) => void; - track: (event: RTCTrackEvent) => void; - removestream: (event: MediaStreamTrackEvent) => void; - removetrack: (event: MediaStreamTrackEvent) => void; - notify: (event: SignalingNotifyMessage, transportType: TransportType) => void; - log: (title: string, message: JSONType) => void; - timeout: () => void; - timeline: (event: TimelineEvent) => void; - signaling: (event: SignalingEvent) => void; - message: (event: DataChannelMessageEvent) => void; - datachannel: (event: DataChannelEvent) => void; -}; -export type PreKeyBundle = { - identityKey: string; - signedPreKey: string; - preKeySignature: string; -}; -export type Browser = 'edge' | 'chrome' | 'safari' | 'opera' | 'firefox' | null; -export type TransportType = 'websocket' | 'datachannel' | 'peerconnection'; -export type TimelineEventLogType = 'websocket' | 'datachannel' | 'peerconnection' | 'sora'; -export interface SignalingEvent extends Event { - transportType: TransportType; - data?: any; -} -export interface DataChannelMessageEvent extends Event { - label: string; - data: ArrayBuffer; -} -export interface DataChannelEvent extends Event { - datachannel: DataChannelConfiguration; -} -export interface TimelineEvent extends Event { - logType: TimelineEventLogType; - data?: any; - dataChannelId?: number | null; - dataChannelLabel?: string; -} -export interface SoraCloseEvent extends Event { - title: string; - code?: number; - reason?: string; - params?: Record; -} -export type SoraCloseEventType = 'normal' | 'abend'; -export type SoraCloseEventInitDict = { - code?: number; - reason?: string; - params?: Record; -}; -export type SoraAbendTitle = 'CONNECTION-STATE-FAILED' | 'DATA-CHANNEL-ONERROR' | 'ICE-CONNECTION-STATE-DISCONNECTED-TIMEOUT' | 'ICE-CONNECTION-STATE-FAILED' | 'INTERNAL-ERROR' | 'WEBSOCKET-ONCLOSE' | 'WEBSOCKET-ONERROR'; -export interface RTCEncodedAudioFrame { - readonly timestamp: number; - data: ArrayBuffer; - getMetadata(): RTCEncodedAudioFrameMetadata; -} -export interface RTCEncodedAudioFrameMetadata { - synchronizationSource: number; - payloadType: number; - contributingSources: [number]; -} -declare global { - class RTCRtpScriptTransform { - constructor(worker: Worker, options?: object, transfer?: object[]); - } -} diff --git a/dist/utils.d.ts b/dist/utils.d.ts deleted file mode 100644 index 5262dea7..00000000 --- a/dist/utils.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ConnectionOptions, JSONType, DataChannelConfiguration, DataChannelEvent, DataChannelMessageEvent, PreKeyBundle, SignalingConnectMessage, SignalingEvent, SignalingNotifyMetadata, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, TimelineEvent, TimelineEventLogType, TransportType } from './types'; -export declare function isSafari(): boolean; -export declare function isChrome(): boolean; -export declare function isFirefox(): boolean; -export declare function createSignalingMessage(offerSDP: string, role: string, channelId: string | null | undefined, metadata: JSONType | undefined, options: ConnectionOptions, redirect: boolean): SignalingConnectMessage; -export declare function getSignalingNotifyAuthnMetadata(message: SignalingNotifyConnectionCreated | SignalingNotifyConnectionDestroyed | SignalingNotifyMetadata): JSONType; -export declare function getSignalingNotifyData(message: SignalingNotifyConnectionCreated): SignalingNotifyMetadata[]; -export declare function getPreKeyBundle(message: JSONType): PreKeyBundle | null; -export declare function trace(clientId: string | null, title: string, value: unknown): void; -export declare class ConnectError extends Error { - code?: number; - reason?: string; -} -export declare function createSignalingEvent(eventType: string, data: unknown, transportType: TransportType): SignalingEvent; -export declare function createDataChannelData(channel: RTCDataChannel): Record; -export declare function createTimelineEvent(eventType: string, data: unknown, logType: TimelineEventLogType, dataChannelId?: number | null, dataChannelLabel?: string): TimelineEvent; -export declare function createDataChannelMessageEvent(label: string, data: ArrayBuffer): DataChannelMessageEvent; -export declare function createDataChannelEvent(channel: DataChannelConfiguration): DataChannelEvent; -export declare function parseDataChannelEventData(eventData: unknown, compress: boolean): string; From 6abba9af440bbcab40a2afbad44014eaeccd9e40 Mon Sep 17 00:00:00 2001 From: Takeru Ohta Date: Thu, 6 Jul 2023 16:48:31 +0900 Subject: [PATCH 040/182] 2023.2.0-canary.1 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 902d96c7..89394f66 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.0", + "version": "2023.2.0-canary.1", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -38,4 +38,4 @@ "engines": { "node": ">=16.20.0" } -} \ No newline at end of file +} From 594c24ba7ecc5d04407ca14ed6eeeb4befdd9a31 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jul 2023 15:39:41 +0000 Subject: [PATCH 041/182] Update all non-major dependencies --- package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 64 +++++++++++++++++++-------------------- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index 89394f66..c6af2634 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.5", + "packageManager": "pnpm@8.6.6", "engines": { "node": ">=16.20.0" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index b5d43f19..efdba5b7 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -23,7 +23,7 @@ "rollup": "3.26.0", "rollup-plugin-delete": "2.0.0", "typescript": "5.1.6", - "vitest": "0.32.4" + "vitest": "0.33.0" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 029a1e0c..7eff43ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,8 +115,8 @@ importers: specifier: 5.1.6 version: 5.1.6 vitest: - specifier: 0.32.4 - version: 0.32.4(jsdom@22.1.0) + specifier: 0.33.0 + version: 0.33.0(jsdom@22.1.0) packages: @@ -680,38 +680,38 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@vitest/expect@0.32.4: - resolution: {integrity: sha512-m7EPUqmGIwIeoU763N+ivkFjTzbaBn0n9evsTOcde03ugy2avPs3kZbYmw3DkcH1j5mxhMhdamJkLQ6dM1bk/A==} + /@vitest/expect@0.33.0: + resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} dependencies: - '@vitest/spy': 0.32.4 - '@vitest/utils': 0.32.4 + '@vitest/spy': 0.33.0 + '@vitest/utils': 0.33.0 chai: 4.3.7 dev: true - /@vitest/runner@0.32.4: - resolution: {integrity: sha512-cHOVCkiRazobgdKLnczmz2oaKK9GJOw6ZyRcaPdssO1ej+wzHVIkWiCiNacb3TTYPdzMddYkCgMjZ4r8C0JFCw==} + /@vitest/runner@0.33.0: + resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} dependencies: - '@vitest/utils': 0.32.4 + '@vitest/utils': 0.33.0 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.32.4: - resolution: {integrity: sha512-IRpyqn9t14uqsFlVI2d7DFMImGMs1Q9218of40bdQQgMePwVdmix33yMNnebXcTzDU5eiV3eUsoxxH5v0x/IQA==} + /@vitest/snapshot@0.33.0: + resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} dependencies: - magic-string: 0.30.0 + magic-string: 0.30.1 pathe: 1.1.1 pretty-format: 29.5.0 dev: true - /@vitest/spy@0.32.4: - resolution: {integrity: sha512-oA7rCOqVOOpE6rEoXuCOADX7Lla1LIa4hljI2MSccbpec54q+oifhziZIJXxlE/CvI2E+ElhBHzVu0VEvJGQKQ==} + /@vitest/spy@0.33.0: + resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.32.4: - resolution: {integrity: sha512-Gwnl8dhd1uJ+HXrYyV0eRqfmk9ek1ASE/LWfTCuWMw+d07ogHqp4hEAV28NiecimK6UY9DpSEPh+pXBA5gtTBg==} + /@vitest/utils@0.33.0: + resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 @@ -1821,8 +1821,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -2413,8 +2413,8 @@ packages: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true - /tinypool@0.5.0: - resolution: {integrity: sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==} + /tinypool@0.6.0: + resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} engines: {node: '>=14.0.0'} dev: true @@ -2537,8 +2537,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.32.4(@types/node@20.3.3): - resolution: {integrity: sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==} + /vite-node@0.33.0(@types/node@20.3.3): + resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2591,8 +2591,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest@0.32.4(jsdom@22.1.0): - resolution: {integrity: sha512-3czFm8RnrsWwIzVDu/Ca48Y/M+qh3vOnF16czJm98Q/AN1y3B6PBsyV8Re91Ty5s7txKNjEhpgtGPcfdbh2MZg==} + /vitest@0.33.0(jsdom@22.1.0): + resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2625,11 +2625,11 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.3.3 - '@vitest/expect': 0.32.4 - '@vitest/runner': 0.32.4 - '@vitest/snapshot': 0.32.4 - '@vitest/spy': 0.32.4 - '@vitest/utils': 0.32.4 + '@vitest/expect': 0.33.0 + '@vitest/runner': 0.33.0 + '@vitest/snapshot': 0.33.0 + '@vitest/spy': 0.33.0 + '@vitest/utils': 0.33.0 acorn: 8.9.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -2637,15 +2637,15 @@ packages: debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.0 + magic-string: 0.30.1 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 strip-literal: 1.0.1 tinybench: 2.5.0 - tinypool: 0.5.0 + tinypool: 0.6.0 vite: 4.3.9(@types/node@20.3.3) - vite-node: 0.32.4(@types/node@20.3.3) + vite-node: 0.33.0(@types/node@20.3.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From fc33aad8ea7773f6256078e22eddae62d57e32fc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jul 2023 18:02:57 +0000 Subject: [PATCH 042/182] Update dependency rollup to v3.26.2 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 56 +++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 8ea463eb..485bb05b 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -25,7 +25,7 @@ "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", "prettier": "2.8.8", - "rollup": "3.26.0", + "rollup": "3.26.2", "typescript": "5.1.6" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index efdba5b7..8a9195ac 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -20,7 +20,7 @@ "eslint-plugin-prettier": "4.2.1", "jsdom": "22.1.0", "prettier": "2.8.8", - "rollup": "3.26.0", + "rollup": "3.26.2", "rollup-plugin-delete": "2.0.0", "typescript": "5.1.6", "vitest": "0.33.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7eff43ac..ceba91f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,13 +26,13 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.26.0) + version: 15.1.0(rollup@3.26.2) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.26.0) + version: 5.0.2(rollup@3.26.2) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.0)(typescript@5.1.6) + version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) '@typescript-eslint/eslint-plugin': specifier: 5.60.1 version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6) @@ -52,8 +52,8 @@ importers: specifier: 2.8.8 version: 2.8.8 rollup: - specifier: 3.26.0 - version: 3.26.0 + specifier: 3.26.2 + version: 3.26.2 typescript: specifier: 5.1.6 version: 5.1.6 @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.2 - version: 25.0.2(rollup@3.26.0) + version: 25.0.2(rollup@3.26.2) '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.26.0) + version: 15.1.0(rollup@3.26.2) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.26.0) + version: 5.0.2(rollup@3.26.2) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.0)(typescript@5.1.6) + version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -106,8 +106,8 @@ importers: specifier: 2.8.8 version: 2.8.8 rollup: - specifier: 3.26.0 - version: 3.26.0 + specifier: 3.26.2 + version: 3.26.2 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -412,7 +412,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.2(rollup@3.26.0): + /@rollup/plugin-commonjs@25.0.2(rollup@3.26.2): resolution: {integrity: sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==} engines: {node: '>=14.0.0'} peerDependencies: @@ -421,16 +421,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.26.0 + rollup: 3.26.2 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.0): + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.2): resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -439,16 +439,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.26.0 + rollup: 3.26.2 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.26.0): + /@rollup/plugin-replace@5.0.2(rollup@3.26.2): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -457,12 +457,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) magic-string: 0.27.0 - rollup: 3.26.0 + rollup: 3.26.2 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.26.0)(typescript@5.1.6): + /@rollup/plugin-typescript@11.1.2(rollup@3.26.2)(typescript@5.1.6): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -475,13 +475,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.0) + '@rollup/pluginutils': 5.0.2(rollup@3.26.2) resolve: 1.22.2 - rollup: 3.26.0 + rollup: 3.26.2 typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.26.0): + /@rollup/pluginutils@5.0.2(rollup@3.26.2): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -493,7 +493,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.26.0 + rollup: 3.26.2 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2211,8 +2211,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.26.0: - resolution: {integrity: sha512-YzJH0eunH2hr3knvF3i6IkLO/jTjAEwU4HoMUbQl4//Tnl3ou0e7P5SjxdDr8HQJdeUJShlbEHXrrnEHy1l7Yg==} + /rollup@3.26.2: + resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2586,7 +2586,7 @@ packages: '@types/node': 20.3.3 esbuild: 0.17.19 postcss: 8.4.24 - rollup: 3.26.0 + rollup: 3.26.2 optionalDependencies: fsevents: 2.3.2 dev: true From 7d15e3b70885aeaf81362e1f065a69054f86546d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 9 Jul 2023 22:26:13 +0000 Subject: [PATCH 043/182] Update eslint to v5.61.0 --- packages/e2ee/package.json | 4 +- packages/sdk/package.json | 4 +- pnpm-lock.yaml | 88 ++++++++++++++++++-------------------- 3 files changed, 46 insertions(+), 50 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 485bb05b..8481999e 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,8 +19,8 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "@typescript-eslint/eslint-plugin": "5.60.1", - "@typescript-eslint/parser": "5.60.1", + "@typescript-eslint/eslint-plugin": "5.61.0", + "@typescript-eslint/parser": "5.61.0", "eslint": "8.44.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 8a9195ac..38028a41 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -13,8 +13,8 @@ "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", "@shiguredo/lyra-wasm": "2023.1.0", - "@typescript-eslint/eslint-plugin": "5.60.1", - "@typescript-eslint/parser": "5.60.1", + "@typescript-eslint/eslint-plugin": "5.61.0", + "@typescript-eslint/parser": "5.61.0", "eslint": "8.44.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ceba91f2..df509d65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,11 +34,11 @@ importers: specifier: 11.1.2 version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) '@typescript-eslint/eslint-plugin': - specifier: 5.60.1 - version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.61.0 + version: 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 5.60.1 - version: 5.60.1(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.61.0 + version: 5.61.0(eslint@8.44.0)(typescript@5.1.6) eslint: specifier: 8.44.0 version: 8.44.0 @@ -85,11 +85,11 @@ importers: specifier: 2023.1.0 version: 2023.1.0 '@typescript-eslint/eslint-plugin': - specifier: 5.60.1 - version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.61.0 + version: 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 5.60.1 - version: 5.60.1(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.61.0 + version: 5.61.0(eslint@8.44.0)(typescript@5.1.6) eslint: specifier: 8.44.0 version: 8.44.0 @@ -550,8 +550,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==} + /@typescript-eslint/eslint-plugin@5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -562,13 +562,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.60.1(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/type-utils': 5.60.1(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.61.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.61.0 + '@typescript-eslint/type-utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.44.0 - grapheme-splitter: 1.0.4 + graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 semver: 7.5.3 @@ -578,8 +578,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==} + /@typescript-eslint/parser@5.61.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -588,9 +588,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.61.0 + '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) debug: 4.3.4 eslint: 8.44.0 typescript: 5.1.6 @@ -598,16 +598,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.60.1: - resolution: {integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==} + /@typescript-eslint/scope-manager@5.61.0: + resolution: {integrity: sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 + '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/visitor-keys': 5.61.0 dev: true - /@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==} + /@typescript-eslint/type-utils@5.61.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -616,8 +616,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) - '@typescript-eslint/utils': 5.60.1(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) + '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.44.0 tsutils: 3.21.0(typescript@5.1.6) @@ -626,13 +626,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@5.60.1: - resolution: {integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==} + /@typescript-eslint/types@5.61.0: + resolution: {integrity: sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.60.1(typescript@5.1.6): - resolution: {integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==} + /@typescript-eslint/typescript-estree@5.61.0(typescript@5.1.6): + resolution: {integrity: sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -640,8 +640,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/visitor-keys': 5.60.1 + '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/visitor-keys': 5.61.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -652,8 +652,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==} + /@typescript-eslint/utils@5.61.0(eslint@8.44.0)(typescript@5.1.6): + resolution: {integrity: sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -661,9 +661,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.60.1 - '@typescript-eslint/types': 5.60.1 - '@typescript-eslint/typescript-estree': 5.60.1(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.61.0 + '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) eslint: 8.44.0 eslint-scope: 5.1.1 semver: 7.5.3 @@ -672,11 +672,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.60.1: - resolution: {integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==} + /@typescript-eslint/visitor-keys@5.61.0: + resolution: {integrity: sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.60.1 + '@typescript-eslint/types': 5.61.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1528,10 +1528,6 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true From fb214d00bda648bec123342b2017784104ef577b Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 10 Jul 2023 09:56:15 +0900 Subject: [PATCH 044/182] pnpm up --- pnpm-lock.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df509d65..a67e6c86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1889,8 +1889,8 @@ packages: brace-expansion: 2.0.1 dev: true - /minimatch@9.0.2: - resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -2488,7 +2488,7 @@ packages: dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 9.0.2 + minimatch: 9.0.3 shiki: 0.14.3 typescript: 5.1.6 dev: true From c3b50b550b9bb6d4a44fc3c257bf83d811c9beed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 16 Jul 2023 18:05:27 +0000 Subject: [PATCH 045/182] Update actions/upload-pages-artifact action to v2 --- .github/workflows/deploy-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 269adeb6..f53882ec 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -29,7 +29,7 @@ jobs: cp example/check.html _site/ cp example/sw.js _site/ - name: Upload files - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v2 - name: Slack Notification if: failure() uses: rtCamp/action-slack-notify@v2 From e8281486a920da6f1e6bceca98a06a8e95ad7fbd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 16 Jul 2023 18:04:53 +0000 Subject: [PATCH 046/182] Update dependency @rollup/plugin-commonjs to v25.0.3 --- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 38028a41..ad441b0e 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -8,7 +8,7 @@ "test": "vitest run" }, "devDependencies": { - "@rollup/plugin-commonjs": "25.0.2", + "@rollup/plugin-commonjs": "25.0.3", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a67e6c86..deaa2d05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,8 +70,8 @@ importers: version: 0.8.0 devDependencies: '@rollup/plugin-commonjs': - specifier: 25.0.2 - version: 25.0.2(rollup@3.26.2) + specifier: 25.0.3 + version: 25.0.3(rollup@3.26.2) '@rollup/plugin-node-resolve': specifier: 15.1.0 version: 15.1.0(rollup@3.26.2) @@ -412,8 +412,8 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.2(rollup@3.26.2): - resolution: {integrity: sha512-NGTwaJxIO0klMs+WSFFtBP7b9TdTJ3K76HZkewT8/+yHzMiUGVQgaPtLQxNVYIgT5F7lxkEyVID+yS3K7bhCow==} + /@rollup/plugin-commonjs@25.0.3(rollup@3.26.2): + resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.68.0||^3.0.0 From 38850aad3f83de88ef1f7606c7969caa04237566 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 16 Jul 2023 22:32:09 +0000 Subject: [PATCH 047/182] Update pnpm to v8.6.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c6af2634..9c6ff7fc 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.6", + "packageManager": "pnpm@8.6.7", "engines": { "node": ">=16.20.0" } From 267a4f98717c329ff46538704b49d17e3e958b10 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 02:20:26 +0000 Subject: [PATCH 048/182] Update eslint --- packages/e2ee/package.json | 6 +- packages/sdk/package.json | 6 +- pnpm-lock.yaml | 130 ++++++++++++++++++------------------- 3 files changed, 70 insertions(+), 72 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 8481999e..266013e1 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,9 +19,9 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "@typescript-eslint/eslint-plugin": "5.61.0", - "@typescript-eslint/parser": "5.61.0", - "eslint": "8.44.0", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "eslint": "8.45.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", "prettier": "2.8.8", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index ad441b0e..c9626ccd 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -13,9 +13,9 @@ "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", "@shiguredo/lyra-wasm": "2023.1.0", - "@typescript-eslint/eslint-plugin": "5.61.0", - "@typescript-eslint/parser": "5.61.0", - "eslint": "8.44.0", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "eslint": "8.45.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "4.2.1", "jsdom": "22.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index deaa2d05..c4fbe7a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,20 +34,20 @@ importers: specifier: 11.1.2 version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) '@typescript-eslint/eslint-plugin': - specifier: 5.61.0 - version: 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 5.61.0 - version: 5.61.0(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.62.0 + version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) eslint: - specifier: 8.44.0 - version: 8.44.0 + specifier: 8.45.0 + version: 8.45.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.44.0) + version: 8.8.0(eslint@8.45.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@2.8.8) prettier: specifier: 2.8.8 version: 2.8.8 @@ -85,20 +85,20 @@ importers: specifier: 2023.1.0 version: 2023.1.0 '@typescript-eslint/eslint-plugin': - specifier: 5.61.0 - version: 5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 5.61.0 - version: 5.61.0(eslint@8.44.0)(typescript@5.1.6) + specifier: 5.62.0 + version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) eslint: - specifier: 8.44.0 - version: 8.44.0 + specifier: 8.45.0 + version: 8.45.0 eslint-config-prettier: specifier: 8.8.0 - version: 8.8.0(eslint@8.44.0) + version: 8.8.0(eslint@8.45.0) eslint-plugin-prettier: specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@2.8.8) jsdom: specifier: 22.1.0 version: 22.1.0 @@ -323,13 +323,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.44.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.44.0 + eslint: 8.45.0 eslint-visitor-keys: 3.4.1 dev: true @@ -550,8 +550,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@5.61.0(@typescript-eslint/parser@5.61.0)(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-A5l/eUAug103qtkwccSCxn8ZRwT+7RXWkFECdA4Cvl1dOlDUgTpAOfSEElZn2uSUxhdDpnCdetrf0jvU4qrL+g==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -562,12 +562,12 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.61.0(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/type-utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 @@ -578,8 +578,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@5.61.0(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-yGr4Sgyh8uO6fSi9hw3jAFXNBHbCtKKFMdX2IkT3ZqpKmtAq3lHS4ixB/COFuAIJpwl9/AqF7j72ZDWYKmIfvg==} + /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -588,26 +588,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.61.0: - resolution: {integrity: sha512-W8VoMjoSg7f7nqAROEmTt6LoBpn81AegP7uKhhW5KzYlehs8VV0ZW0fIDVbcZRcaP3aPSW+JZFua+ysQN+m/Nw==} + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/visitor-keys': 5.61.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.61.0(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-kk8u//r+oVK2Aj3ph/26XdH0pbAkC2RiSjUYhKD+PExemG4XSjpGFeyZ/QM8lBOa7O8aGOU+/yEbMJgQv/DnCg==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -616,23 +616,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) - '@typescript-eslint/utils': 5.61.0(eslint@8.44.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.44.0 + eslint: 8.45.0 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.61.0: - resolution: {integrity: sha512-ldyueo58KjngXpzloHUog/h9REmHl59G1b3a5Sng1GfBo14BkS3ZbMEb3693gnP1k//97lh7bKsp6/V/0v1veQ==} + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.61.0(typescript@5.1.6): - resolution: {integrity: sha512-Fud90PxONnnLZ36oR5ClJBLTLfU4pIWBmnvGwTbEa2cXIqj70AEDEmOmpkFComjBZ/037ueKrOdHuYmSFVD7Rw==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -640,8 +640,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/visitor-keys': 5.61.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -652,19 +652,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.61.0(eslint@8.44.0)(typescript@5.1.6): - resolution: {integrity: sha512-mV6O+6VgQmVE6+xzlA91xifndPW9ElFW8vbSF0xCT/czPXVhwDewKila1jOyRwa9AE19zKnrr7Cg5S3pJVrTWQ==} + /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.61.0 - '@typescript-eslint/types': 5.61.0 - '@typescript-eslint/typescript-estree': 5.61.0(typescript@5.1.6) - eslint: 8.44.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.5.3 transitivePeerDependencies: @@ -672,11 +672,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.61.0: - resolution: {integrity: sha512-50XQ5VdbWrX06mQXhy93WywSFZZGsv3EOjq+lqp6WC2t+j3mb6A9xYVdrRxafvK88vg9k9u+CT4l6D8PEatjKg==} + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.61.0 + '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1192,16 +1192,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.44.0): + /eslint-config-prettier@8.8.0(eslint@8.45.0): resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.44.0 + eslint: 8.45.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1212,8 +1212,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.44.0 - eslint-config-prettier: 8.8.0(eslint@8.44.0) + eslint: 8.45.0 + eslint-config-prettier: 8.8.0(eslint@8.45.0) prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true @@ -1239,12 +1239,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.44.0: - resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.44.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@eslint-community/regexpp': 4.5.1 '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.44.0 @@ -1269,7 +1269,6 @@ packages: globals: 13.20.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -1281,7 +1280,6 @@ packages: natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color From 5faf25b6c7b870032b73c0ed023477cfd242ce99 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 17 Jul 2023 12:49:51 +0900 Subject: [PATCH 049/182] pnpm up --- pnpm-lock.yaml | 239 +++++++++++++++++++++++++------------------------ 1 file changed, 122 insertions(+), 117 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4fbe7a9..706589f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,8 +125,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/android-arm64@0.18.13: + resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -134,8 +134,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.18.13: + resolution: {integrity: sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -143,8 +143,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.18.13: + resolution: {integrity: sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -152,8 +152,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/darwin-arm64@0.18.13: + resolution: {integrity: sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -161,8 +161,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-x64@0.18.13: + resolution: {integrity: sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -170,8 +170,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.18.13: + resolution: {integrity: sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -179,8 +179,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-x64@0.18.13: + resolution: {integrity: sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -188,8 +188,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.18.13: + resolution: {integrity: sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -197,8 +197,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm@0.18.13: + resolution: {integrity: sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -206,8 +206,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-ia32@0.18.13: + resolution: {integrity: sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -215,8 +215,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.18.13: + resolution: {integrity: sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -224,8 +224,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.18.13: + resolution: {integrity: sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -233,8 +233,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-ppc64@0.18.13: + resolution: {integrity: sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -242,8 +242,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.18.13: + resolution: {integrity: sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -251,8 +251,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.18.13: + resolution: {integrity: sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -260,8 +260,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-x64@0.18.13: + resolution: {integrity: sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -269,8 +269,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.18.13: + resolution: {integrity: sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -278,8 +278,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/openbsd-x64@0.18.13: + resolution: {integrity: sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -287,8 +287,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/sunos-x64@0.18.13: + resolution: {integrity: sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -296,8 +296,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.18.13: + resolution: {integrity: sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -305,8 +305,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-ia32@0.18.13: + resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -314,8 +314,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.18.13: + resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -344,7 +344,7 @@ packages: dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.0 + espree: 9.6.1 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -380,11 +380,11 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + /@jest/schemas@29.6.0: + resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.25.24 + '@sinclair/typebox': 0.27.8 dev: true /@jridgewell/sourcemap-codec@1.4.15: @@ -500,8 +500,8 @@ packages: resolution: {integrity: sha512-RVOyPYrZMCHYb5QM6S8BTAOnGHiqYpoBOG8+9uct4gg1ut9IK8LsVgwv5Q+/t+hWZeRhuyYNXt1PhBUm1cJZzg==} dev: true - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true /@tootallnate/once@2.0.0: @@ -527,7 +527,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.3.3 + '@types/node': 20.4.2 dev: true /@types/json-schema@7.0.12: @@ -538,8 +538,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.3.3: - resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==} + /@types/node@20.4.2: + resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} dev: true /@types/resolve@1.20.2: @@ -571,7 +571,7 @@ packages: graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 - semver: 7.5.3 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: @@ -645,7 +645,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.3 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: @@ -666,7 +666,7 @@ packages: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) eslint: 8.45.0 eslint-scope: 5.1.1 - semver: 7.5.3 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript @@ -701,7 +701,7 @@ packages: dependencies: magic-string: 0.30.1 pathe: 1.1.1 - pretty-format: 29.5.0 + pretty-format: 29.6.1 dev: true /@vitest/spy@0.33.0: @@ -715,7 +715,7 @@ packages: dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 - pretty-format: 29.5.0 + pretty-format: 29.6.1 dev: true /@zeit/schemas@2.29.0: @@ -734,12 +734,12 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx@5.3.2(acorn@8.9.0): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.9.0 + acorn: 8.10.0 dev: true /acorn-walk@8.2.0: @@ -747,8 +747,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1157,34 +1157,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.18.13: + resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 + '@esbuild/android-arm': 0.18.13 + '@esbuild/android-arm64': 0.18.13 + '@esbuild/android-x64': 0.18.13 + '@esbuild/darwin-arm64': 0.18.13 + '@esbuild/darwin-x64': 0.18.13 + '@esbuild/freebsd-arm64': 0.18.13 + '@esbuild/freebsd-x64': 0.18.13 + '@esbuild/linux-arm': 0.18.13 + '@esbuild/linux-arm64': 0.18.13 + '@esbuild/linux-ia32': 0.18.13 + '@esbuild/linux-loong64': 0.18.13 + '@esbuild/linux-mips64el': 0.18.13 + '@esbuild/linux-ppc64': 0.18.13 + '@esbuild/linux-riscv64': 0.18.13 + '@esbuild/linux-s390x': 0.18.13 + '@esbuild/linux-x64': 0.18.13 + '@esbuild/netbsd-x64': 0.18.13 + '@esbuild/openbsd-x64': 0.18.13 + '@esbuild/sunos-x64': 0.18.13 + '@esbuild/win32-arm64': 0.18.13 + '@esbuild/win32-ia32': 0.18.13 + '@esbuild/win32-x64': 0.18.13 dev: true /escape-string-regexp@4.0.0: @@ -1226,8 +1226,8 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.1: + resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -1257,9 +1257,9 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 + eslint-scope: 7.2.1 eslint-visitor-keys: 3.4.1 - espree: 9.6.0 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -1285,12 +1285,12 @@ packages: - supports-color dev: true - /espree@9.6.0: - resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.9.0 - acorn-jsx: 5.3.2(acorn@8.9.0) + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.1 dev: true @@ -1732,7 +1732,7 @@ packages: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.6 + nwsapi: 2.2.7 parse5: 7.1.2 rrweb-cssom: 0.6.0 saxes: 6.0.0 @@ -1901,7 +1901,7 @@ packages: /mlly@1.4.0: resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} dependencies: - acorn: 8.9.0 + acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.1.2 @@ -1941,8 +1941,8 @@ packages: path-key: 3.1.1 dev: true - /nwsapi@2.2.6: - resolution: {integrity: sha512-vSZ4miHQ4FojLjmz2+ux4B0/XA16jfwt/LBzIUftDpRd8tujHFkXjMyLwjS08fIZCzesj2z7gJukOKJwqebJAQ==} + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true /on-headers@1.0.2: @@ -2073,8 +2073,8 @@ packages: pathe: 1.1.1 dev: true - /postcss@8.4.24: - resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -2100,11 +2100,11 @@ packages: hasBin: true dev: true - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + /pretty-format@29.6.1: + resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.3 + '@jest/schemas': 29.6.0 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -2242,8 +2242,8 @@ packages: xmlchars: 2.2.0 dev: true - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2380,7 +2380,7 @@ packages: /strip-literal@1.0.1: resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} dependencies: - acorn: 8.9.0 + acorn: 8.10.0 dev: true /supports-color@7.2.0: @@ -2531,7 +2531,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.33.0(@types/node@20.3.3): + /vite-node@0.33.0(@types/node@20.4.2): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2541,10 +2541,11 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.3.9(@types/node@20.3.3) + vite: 4.4.4(@types/node@20.4.2) transitivePeerDependencies: - '@types/node' - less + - lightningcss - sass - stylus - sugarss @@ -2552,13 +2553,14 @@ packages: - terser dev: true - /vite@4.3.9(@types/node@20.3.3): - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.4(@types/node@20.4.2): + resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -2568,6 +2570,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -2577,9 +2581,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.3.3 - esbuild: 0.17.19 - postcss: 8.4.24 + '@types/node': 20.4.2 + esbuild: 0.18.13 + postcss: 8.4.26 rollup: 3.26.2 optionalDependencies: fsevents: 2.3.2 @@ -2618,13 +2622,13 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.3.3 + '@types/node': 20.4.2 '@vitest/expect': 0.33.0 '@vitest/runner': 0.33.0 '@vitest/snapshot': 0.33.0 '@vitest/spy': 0.33.0 '@vitest/utils': 0.33.0 - acorn: 8.9.0 + acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 chai: 4.3.7 @@ -2638,11 +2642,12 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.3.9(@types/node@20.3.3) - vite-node: 0.33.0(@types/node@20.3.3) + vite: 4.4.4(@types/node@20.4.2) + vite-node: 0.33.0(@types/node@20.4.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less + - lightningcss - sass - stylus - sugarss From b429caead91fb7acbe5661025faaddb98822d638 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 17 Jul 2023 12:57:38 +0900 Subject: [PATCH 050/182] =?UTF-8?q?=E5=85=B1=E9=80=9A=E3=81=AE=E4=BE=9D?= =?UTF-8?q?=E5=AD=98=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=82=92?= =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=88=E3=81=AB=E3=82=82=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E6=9D=A5=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 11 +- packages/e2ee/package.json | 9 +- packages/sdk/package.json | 11 +- pnpm-lock.yaml | 365 ++++++++++++++++++++++++++----------- 4 files changed, 268 insertions(+), 128 deletions(-) diff --git a/package.json b/package.json index 9c6ff7fc..5101b290 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,14 @@ ], "devDependencies": { "serve": "14.2.0", - "typedoc": "0.24.8" + "typedoc": "0.24.8", + "@typescript-eslint/eslint-plugin": "6.0.0", + "@typescript-eslint/parser": "6.0.0", + "eslint": "8.45.0", + "eslint-config-prettier": "8.8.0", + "eslint-plugin-prettier": "5.0.0", + "typescript": "5.1.6", + "prettier": "3.0.0" }, "resolutions": { "get-pkg-repo": "5.0.0" @@ -38,4 +45,4 @@ "engines": { "node": ">=16.20.0" } -} +} \ No newline at end of file diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 266013e1..412b186f 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,14 +19,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "@typescript-eslint/eslint-plugin": "5.62.0", - "@typescript-eslint/parser": "5.62.0", - "eslint": "8.45.0", - "eslint-config-prettier": "8.8.0", - "eslint-plugin-prettier": "4.2.1", - "prettier": "2.8.8", - "rollup": "3.26.2", - "typescript": "5.1.6" + "rollup": "3.26.2" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c9626ccd..3b86c55f 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -8,21 +8,14 @@ "test": "vitest run" }, "devDependencies": { + "@shiguredo/lyra-wasm": "2023.1.0", + "jsdom": "22.1.0", "@rollup/plugin-commonjs": "25.0.3", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "@shiguredo/lyra-wasm": "2023.1.0", - "@typescript-eslint/eslint-plugin": "5.62.0", - "@typescript-eslint/parser": "5.62.0", - "eslint": "8.45.0", - "eslint-config-prettier": "8.8.0", - "eslint-plugin-prettier": "4.2.1", - "jsdom": "22.1.0", - "prettier": "2.8.8", "rollup": "3.26.2", "rollup-plugin-delete": "2.0.0", - "typescript": "5.1.6", "vitest": "0.33.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 706589f5..796fb30e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,12 +11,33 @@ importers: .: devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: 6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': + specifier: 6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.1.6) + eslint: + specifier: 8.45.0 + version: 8.45.0 + eslint-config-prettier: + specifier: 8.8.0 + version: 8.8.0(eslint@8.45.0) + eslint-plugin-prettier: + specifier: 5.0.0 + version: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0) + prettier: + specifier: 3.0.0 + version: 3.0.0 serve: specifier: 14.2.0 version: 14.2.0 typedoc: specifier: 0.24.8 version: 0.24.8(typescript@5.1.6) + typescript: + specifier: 5.1.6 + version: 5.1.6 packages/e2ee: dependencies: @@ -33,30 +54,9 @@ importers: '@rollup/plugin-typescript': specifier: 11.1.2 version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) - '@typescript-eslint/eslint-plugin': - specifier: 5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': - specifier: 5.62.0 - version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) - eslint: - specifier: 8.45.0 - version: 8.45.0 - eslint-config-prettier: - specifier: 8.8.0 - version: 8.8.0(eslint@8.45.0) - eslint-plugin-prettier: - specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@2.8.8) - prettier: - specifier: 2.8.8 - version: 2.8.8 rollup: specifier: 3.26.2 version: 3.26.2 - typescript: - specifier: 5.1.6 - version: 5.1.6 packages/go-wasm: {} @@ -84,36 +84,15 @@ importers: '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 - '@typescript-eslint/eslint-plugin': - specifier: 5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/parser': - specifier: 5.62.0 - version: 5.62.0(eslint@8.45.0)(typescript@5.1.6) - eslint: - specifier: 8.45.0 - version: 8.45.0 - eslint-config-prettier: - specifier: 8.8.0 - version: 8.8.0(eslint@8.45.0) - eslint-plugin-prettier: - specifier: 4.2.1 - version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@2.8.8) jsdom: specifier: 22.1.0 version: 22.1.0 - prettier: - specifier: 2.8.8 - version: 2.8.8 rollup: specifier: 3.26.2 version: 3.26.2 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 - typescript: - specifier: 5.1.6 - version: 5.1.6 vitest: specifier: 0.33.0 version: 0.33.0(jsdom@22.1.0) @@ -412,6 +391,18 @@ packages: fastq: 1.15.0 dev: true + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.0 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.0 + dev: true + /@rollup/plugin-commonjs@25.0.3(rollup@3.26.2): resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} engines: {node: '>=14.0.0'} @@ -550,47 +541,51 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 eslint: 8.45.0 + grapheme-splitter: 1.0.4 graphemer: 1.4.0 ignore: 5.2.4 + natural-compare: 1.4.0 natural-compare-lite: 1.4.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 eslint: 8.45.0 typescript: 5.1.6 @@ -598,72 +593,72 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager@6.0.0: + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) - '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.45.0 - tsutils: 3.21.0(typescript@5.1.6) + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/types@6.0.0: + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.1.6) + ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) eslint: 8.45.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -672,11 +667,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@6.0.0: + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/types': 6.0.0 eslint-visitor-keys: 3.4.1 dev: true @@ -854,6 +849,11 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} @@ -868,6 +868,13 @@ packages: wrap-ansi: 8.1.0 dev: true + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -893,6 +900,13 @@ packages: engines: {node: '>=6'} dev: true + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -1095,6 +1109,29 @@ packages: engines: {node: '>=0.10.0'} dev: true + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.1.1 + titleize: 3.0.0 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + /del@5.1.0: resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} engines: {node: '>=8'} @@ -1201,21 +1238,25 @@ packages: eslint: 8.45.0 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@2.8.8): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0): + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - eslint: '>=7.28.0' + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' eslint-config-prettier: '*' - prettier: '>=2.0.0' + prettier: '>=3.0.0' peerDependenciesMeta: + '@types/eslint': + optional: true eslint-config-prettier: optional: true dependencies: eslint: 8.45.0 eslint-config-prettier: 8.8.0(eslint@8.45.0) - prettier: 2.8.8 + prettier: 3.0.0 prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true /eslint-scope@5.1.1: @@ -1342,6 +1383,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1526,6 +1582,10 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -1575,6 +1635,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -1639,6 +1704,12 @@ packages: hasBin: true dev: true + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1656,6 +1727,14 @@ packages: is-extglob: 2.1.1 dev: true + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -1695,6 +1774,11 @@ packages: engines: {node: '>=8'} dev: true + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -1874,6 +1958,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -1941,6 +2030,13 @@ packages: path-key: 3.1.1 dev: true + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -1963,6 +2059,23 @@ packages: mimic-fn: 2.1.0 dev: true + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -2035,6 +2148,11 @@ packages: engines: {node: '>=8'} dev: true + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -2094,9 +2212,9 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} + /prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} hasBin: true dev: true @@ -2217,6 +2335,13 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -2367,6 +2492,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -2399,6 +2529,14 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.0 + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -2417,6 +2555,11 @@ packages: engines: {node: '>=14.0.0'} dev: true + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2441,20 +2584,19 @@ packages: punycode: 2.3.0 dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tsutils@3.21.0(typescript@5.1.6): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} + /ts-api-utils@1.0.1(typescript@5.1.6): + resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + engines: {node: '>=16.13.0'} peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + typescript: '>=4.2.0' dependencies: - tslib: 1.14.1 typescript: 5.1.6 dev: true + /tslib@2.6.0: + resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + dev: true + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2506,6 +2648,11 @@ packages: engines: {node: '>= 4.0.0'} dev: true + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: From 0698ec2e63baa57b0ca88cc34806031b0b46653e Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 18 Jul 2023 16:55:29 +0900 Subject: [PATCH 051/182] =?UTF-8?q?=E3=82=B5=E3=83=B3=E3=83=97=E3=83=AB?= =?UTF-8?q?=E9=9B=86=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index c679869d..0c08f4f7 100644 --- a/README.md +++ b/README.md @@ -21,33 +21,39 @@ Please read https://github.com/shiguredo/oss before use. 使い方は [Sora JavaScript SDK ドキュメント](https://sora-js-sdk.shiguredo.jp/) を参照してください。 - sora.js - - https://github.com/shiguredo/sora-js-sdk/blob/master/dist/sora.js + - https://github.com/shiguredo/sora-js-sdk/blob/master/dist/sora.js - sora.mjs - - https://github.com/shiguredo/sora-js-sdk/blob/master/dist/sora.mjs + - https://github.com/shiguredo/sora-js-sdk/blob/master/dist/sora.mjs ## システム条件 - WebRTC SFU Sora 2022.2.0 以降 - TypeScript 3.8 以降 -## サンプル +## 組み込みサンプル - Multistream Sendrecv - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/sendrecv.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/sendrecv.html - Multistream Sendonly - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/sendonly.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/sendonly.html - Multistream Recvonly - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/recvonly.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/recvonly.html - Spotlight Sendrecv - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/spotlight_sendrecv.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/spotlight_sendrecv.html - Spotlight Recvonly - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/spotlight_recvonly.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/spotlight_recvonly.html - Simulcast - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/simulcast.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/simulcast.html - DataChannelMessaging - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/data_channel_messaging.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/data_channel_messaging.html - E2EE - - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/e2ee.html + - https://github.com/shiguredo/sora-js-sdk/blob/develop/example/e2ee.html + +## サンプル集 + +Vite と pnpm を利用したサンプル集はこちらです。 + +https://github.com/shiguredo/sora-js-sdk-samples ## E2EE について From 03188516f77efd86063b7aa2635fe847836a4d85 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 18 Jul 2023 16:55:54 +0900 Subject: [PATCH 052/182] =?UTF-8?q?=E6=94=B9=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c08f4f7..734477a4 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,8 @@ https://github.com/shiguredo/sora-js-sdk-samples ## マルチトラックについて -[WebRTC SFU Sora](https://sora.shiguredo.jp) は 1 メディアストリームにつき 1 音声トラック、1 映像トラックまでしか対応していないため, Sora JavaScript SDK はマルチトラックに対応していません。 +[WebRTC SFU Sora](https://sora.shiguredo.jp) は 1 メディアストリームにつき 1 音声トラック、 +1 映像トラックまでしか対応していないため, Sora JavaScript SDK はマルチトラックに対応していません。 マルチトラックへの対応は今のところ未定です。 From a80a7267e952cd9530c49e12e5ef1c83ce4a8ab8 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 21 Jul 2023 16:09:33 +0900 Subject: [PATCH 053/182] pnpm up --- pnpm-lock.yaml | 146 ++++++++++++++++++++++++------------------------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 796fb30e..7892e8d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,8 +104,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@esbuild/android-arm64@0.18.13: - resolution: {integrity: sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg==} + /@esbuild/android-arm64@0.18.15: + resolution: {integrity: sha512-NI/gnWcMl2kXt1HJKOn2H69SYn4YNheKo6NZt1hyfKWdMbaGadxjZIkcj4Gjk/WPxnbFXs9/3HjGHaknCqjrww==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -113,8 +113,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.13: - resolution: {integrity: sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ==} + /@esbuild/android-arm@0.18.15: + resolution: {integrity: sha512-wlkQBWb79/jeEEoRmrxt/yhn5T1lU236OCNpnfRzaCJHZ/5gf82uYx1qmADTBWE0AR/v7FiozE1auk2riyQd3w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -122,8 +122,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.13: - resolution: {integrity: sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg==} + /@esbuild/android-x64@0.18.15: + resolution: {integrity: sha512-FM9NQamSaEm/IZIhegF76aiLnng1kEsZl2eve/emxDeReVfRuRNmvT28l6hoFD9TsCxpK+i4v8LPpEj74T7yjA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -131,8 +131,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.13: - resolution: {integrity: sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w==} + /@esbuild/darwin-arm64@0.18.15: + resolution: {integrity: sha512-XmrFwEOYauKte9QjS6hz60FpOCnw4zaPAb7XV7O4lx1r39XjJhTN7ZpXqJh4sN6q60zbP6QwAVVA8N/wUyBH/w==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -140,8 +140,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.13: - resolution: {integrity: sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw==} + /@esbuild/darwin-x64@0.18.15: + resolution: {integrity: sha512-bMqBmpw1e//7Fh5GLetSZaeo9zSC4/CMtrVFdj+bqKPGJuKyfNJ5Nf2m3LknKZTS+Q4oyPiON+v3eaJ59sLB5A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -149,8 +149,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.13: - resolution: {integrity: sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg==} + /@esbuild/freebsd-arm64@0.18.15: + resolution: {integrity: sha512-LoTK5N3bOmNI9zVLCeTgnk5Rk0WdUTrr9dyDAQGVMrNTh9EAPuNwSTCgaKOKiDpverOa0htPcO9NwslSE5xuLA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -158,8 +158,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.13: - resolution: {integrity: sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA==} + /@esbuild/freebsd-x64@0.18.15: + resolution: {integrity: sha512-62jX5n30VzgrjAjOk5orYeHFq6sqjvsIj1QesXvn5OZtdt5Gdj0vUNJy9NIpjfdNdqr76jjtzBJKf+h2uzYuTQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -167,8 +167,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.13: - resolution: {integrity: sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ==} + /@esbuild/linux-arm64@0.18.15: + resolution: {integrity: sha512-BWncQeuWDgYv0jTNzJjaNgleduV4tMbQjmk/zpPh/lUdMcNEAxy+jvneDJ6RJkrqloG7tB9S9rCrtfk/kuplsQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -176,8 +176,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.13: - resolution: {integrity: sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw==} + /@esbuild/linux-arm@0.18.15: + resolution: {integrity: sha512-dT4URUv6ir45ZkBqhwZwyFV6cH61k8MttIwhThp2BGiVtagYvCToF+Bggyx2VI57RG4Fbt21f9TmXaYx0DeUJg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -185,8 +185,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.13: - resolution: {integrity: sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug==} + /@esbuild/linux-ia32@0.18.15: + resolution: {integrity: sha512-JPXORvgHRHITqfms1dWT/GbEY89u848dC08o0yK3fNskhp0t2TuNUnsrrSgOdH28ceb1hJuwyr8R/1RnyPwocw==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -194,8 +194,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.13: - resolution: {integrity: sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg==} + /@esbuild/linux-loong64@0.18.15: + resolution: {integrity: sha512-kArPI0DopjJCEplsVj/H+2Qgzz7vdFSacHNsgoAKpPS6W/Ndh8Oe24HRDQ5QCu4jHgN6XOtfFfLpRx3TXv/mEg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -203,8 +203,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.13: - resolution: {integrity: sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg==} + /@esbuild/linux-mips64el@0.18.15: + resolution: {integrity: sha512-b/tmngUfO02E00c1XnNTw/0DmloKjb6XQeqxaYuzGwHe0fHVgx5/D6CWi+XH1DvkszjBUkK9BX7n1ARTOst59w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -212,8 +212,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.13: - resolution: {integrity: sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w==} + /@esbuild/linux-ppc64@0.18.15: + resolution: {integrity: sha512-KXPY69MWw79QJkyvUYb2ex/OgnN/8N/Aw5UDPlgoRtoEfcBqfeLodPr42UojV3NdkoO4u10NXQdamWm1YEzSKw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -221,8 +221,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.13: - resolution: {integrity: sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg==} + /@esbuild/linux-riscv64@0.18.15: + resolution: {integrity: sha512-komK3NEAeeGRnvFEjX1SfVg6EmkfIi5aKzevdvJqMydYr9N+pRQK0PGJXk+bhoPZwOUgLO4l99FZmLGk/L1jWg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -230,8 +230,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.13: - resolution: {integrity: sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA==} + /@esbuild/linux-s390x@0.18.15: + resolution: {integrity: sha512-632T5Ts6gQ2WiMLWRRyeflPAm44u2E/s/TJvn+BP6M5mnHSk93cieaypj3VSMYO2ePTCRqAFXtuYi1yv8uZJNA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -239,8 +239,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.13: - resolution: {integrity: sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA==} + /@esbuild/linux-x64@0.18.15: + resolution: {integrity: sha512-MsHtX0NgvRHsoOtYkuxyk4Vkmvk3PLRWfA4okK7c+6dT0Fu4SUqXAr9y4Q3d8vUf1VWWb6YutpL4XNe400iQ1g==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -248,8 +248,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.13: - resolution: {integrity: sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ==} + /@esbuild/netbsd-x64@0.18.15: + resolution: {integrity: sha512-djST6s+jQiwxMIVQ5rlt24JFIAr4uwUnzceuFL7BQT4CbrRtqBPueS4GjXSiIpmwVri1Icj/9pFRJ7/aScvT+A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -257,8 +257,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.13: - resolution: {integrity: sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g==} + /@esbuild/openbsd-x64@0.18.15: + resolution: {integrity: sha512-naeRhUIvhsgeounjkF5mvrNAVMGAm6EJWiabskeE5yOeBbLp7T89tAEw0j5Jm/CZAwyLe3c67zyCWH6fsBLCpw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -266,8 +266,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.13: - resolution: {integrity: sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw==} + /@esbuild/sunos-x64@0.18.15: + resolution: {integrity: sha512-qkT2+WxyKbNIKV1AEhI8QiSIgTHMcRctzSaa/I3kVgMS5dl3fOeoqkb7pW76KwxHoriImhx7Mg3TwN/auMDsyQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -275,8 +275,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.13: - resolution: {integrity: sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw==} + /@esbuild/win32-arm64@0.18.15: + resolution: {integrity: sha512-HC4/feP+pB2Vb+cMPUjAnFyERs+HJN7E6KaeBlFdBv799MhD+aPJlfi/yk36SED58J9TPwI8MAcVpJgej4ud0A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -284,8 +284,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.13: - resolution: {integrity: sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg==} + /@esbuild/win32-ia32@0.18.15: + resolution: {integrity: sha512-ovjwoRXI+gf52EVF60u9sSDj7myPixPxqzD5CmkEUmvs+W9Xd0iqISVBQn8xcx4ciIaIVlWCuTbYDOXOnOL44Q==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -293,8 +293,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.13: - resolution: {integrity: sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA==} + /@esbuild/win32-x64@0.18.15: + resolution: {integrity: sha512-imUxH9a3WJARyAvrG7srLyiK73XdX83NXQkjKvQ+7vPh3ZxoLrzvPkQKKw2DwZ+RV2ZB6vBfNHP8XScAmQC3aA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1194,34 +1194,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.18.13: - resolution: {integrity: sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw==} + /esbuild@0.18.15: + resolution: {integrity: sha512-3WOOLhrvuTGPRzQPU6waSDWrDTnQriia72McWcn6UCi43GhCHrXH4S59hKMeez+IITmdUuUyvbU9JIp+t3xlPQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.13 - '@esbuild/android-arm64': 0.18.13 - '@esbuild/android-x64': 0.18.13 - '@esbuild/darwin-arm64': 0.18.13 - '@esbuild/darwin-x64': 0.18.13 - '@esbuild/freebsd-arm64': 0.18.13 - '@esbuild/freebsd-x64': 0.18.13 - '@esbuild/linux-arm': 0.18.13 - '@esbuild/linux-arm64': 0.18.13 - '@esbuild/linux-ia32': 0.18.13 - '@esbuild/linux-loong64': 0.18.13 - '@esbuild/linux-mips64el': 0.18.13 - '@esbuild/linux-ppc64': 0.18.13 - '@esbuild/linux-riscv64': 0.18.13 - '@esbuild/linux-s390x': 0.18.13 - '@esbuild/linux-x64': 0.18.13 - '@esbuild/netbsd-x64': 0.18.13 - '@esbuild/openbsd-x64': 0.18.13 - '@esbuild/sunos-x64': 0.18.13 - '@esbuild/win32-arm64': 0.18.13 - '@esbuild/win32-ia32': 0.18.13 - '@esbuild/win32-x64': 0.18.13 + '@esbuild/android-arm': 0.18.15 + '@esbuild/android-arm64': 0.18.15 + '@esbuild/android-x64': 0.18.15 + '@esbuild/darwin-arm64': 0.18.15 + '@esbuild/darwin-x64': 0.18.15 + '@esbuild/freebsd-arm64': 0.18.15 + '@esbuild/freebsd-x64': 0.18.15 + '@esbuild/linux-arm': 0.18.15 + '@esbuild/linux-arm64': 0.18.15 + '@esbuild/linux-ia32': 0.18.15 + '@esbuild/linux-loong64': 0.18.15 + '@esbuild/linux-mips64el': 0.18.15 + '@esbuild/linux-ppc64': 0.18.15 + '@esbuild/linux-riscv64': 0.18.15 + '@esbuild/linux-s390x': 0.18.15 + '@esbuild/linux-x64': 0.18.15 + '@esbuild/netbsd-x64': 0.18.15 + '@esbuild/openbsd-x64': 0.18.15 + '@esbuild/sunos-x64': 0.18.15 + '@esbuild/win32-arm64': 0.18.15 + '@esbuild/win32-ia32': 0.18.15 + '@esbuild/win32-x64': 0.18.15 dev: true /escape-string-regexp@4.0.0: @@ -2688,7 +2688,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.4(@types/node@20.4.2) + vite: 4.4.5(@types/node@20.4.2) transitivePeerDependencies: - '@types/node' - less @@ -2700,8 +2700,8 @@ packages: - terser dev: true - /vite@4.4.4(@types/node@20.4.2): - resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==} + /vite@4.4.5(@types/node@20.4.2): + resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2729,7 +2729,7 @@ packages: optional: true dependencies: '@types/node': 20.4.2 - esbuild: 0.18.13 + esbuild: 0.18.15 postcss: 8.4.26 rollup: 3.26.2 optionalDependencies: @@ -2789,7 +2789,7 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.4(@types/node@20.4.2) + vite: 4.4.5(@types/node@20.4.2) vite-node: 0.33.0(@types/node@20.4.2) why-is-node-running: 2.2.2 transitivePeerDependencies: From 85b5b54190edf266addaf52583c1ccba31199cb3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 15:59:02 +0000 Subject: [PATCH 054/182] Update dependency rollup to v3.26.3 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 56 +++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 412b186f..5b4577ce 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.26.2" + "rollup": "3.26.3" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 3b86c55f..5a046a4c 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.26.2", + "rollup": "3.26.3", "rollup-plugin-delete": "2.0.0", "vitest": "0.33.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7892e8d0..03428e74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.26.2) + version: 15.1.0(rollup@3.26.3) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.26.2) + version: 5.0.2(rollup@3.26.3) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) + version: 11.1.2(rollup@3.26.3)(typescript@5.1.6) rollup: - specifier: 3.26.2 - version: 3.26.2 + specifier: 3.26.3 + version: 3.26.3 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.3 - version: 25.0.3(rollup@3.26.2) + version: 25.0.3(rollup@3.26.3) '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.26.2) + version: 15.1.0(rollup@3.26.3) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.26.2) + version: 5.0.2(rollup@3.26.3) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.2)(typescript@5.1.6) + version: 11.1.2(rollup@3.26.3)(typescript@5.1.6) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.26.2 - version: 3.26.2 + specifier: 3.26.3 + version: 3.26.3 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.0 dev: true - /@rollup/plugin-commonjs@25.0.3(rollup@3.26.2): + /@rollup/plugin-commonjs@25.0.3(rollup@3.26.3): resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.26.2 + rollup: 3.26.3 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.2): + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3): resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.26.2 + rollup: 3.26.3 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.26.2): + /@rollup/plugin-replace@5.0.2(rollup@3.26.3): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) magic-string: 0.27.0 - rollup: 3.26.2 + rollup: 3.26.3 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.26.2)(typescript@5.1.6): + /@rollup/plugin-typescript@11.1.2(rollup@3.26.3)(typescript@5.1.6): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.2) + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) resolve: 1.22.2 - rollup: 3.26.2 + rollup: 3.26.3 typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.26.2): + /@rollup/pluginutils@5.0.2(rollup@3.26.3): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.26.2 + rollup: 3.26.3 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2323,8 +2323,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.26.2: - resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} + /rollup@3.26.3: + resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2731,7 +2731,7 @@ packages: '@types/node': 20.4.2 esbuild: 0.18.15 postcss: 8.4.26 - rollup: 3.26.2 + rollup: 3.26.3 optionalDependencies: fsevents: 2.3.2 dev: true From 6c3f7d4b60122782bff8efda709f922804402f89 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Jul 2023 19:40:33 +0000 Subject: [PATCH 055/182] Update pnpm to v8.6.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5101b290..dd86d6af 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.7", + "packageManager": "pnpm@8.6.9", "engines": { "node": ">=16.20.0" } From f9b6b3705ce5d13130f7812c917c95acac4b64e6 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 24 Jul 2023 11:25:59 +0900 Subject: [PATCH 056/182] =?UTF-8?q?=E3=83=91=E3=83=83=E3=82=B1=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=82=92=E6=9C=80=E6=96=B0=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +- pnpm-lock.yaml | 281 +++++++++++++++++++++++-------------------------- 2 files changed, 134 insertions(+), 153 deletions(-) diff --git a/package.json b/package.json index dd86d6af..22831e5e 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ "devDependencies": { "serve": "14.2.0", "typedoc": "0.24.8", - "@typescript-eslint/eslint-plugin": "6.0.0", - "@typescript-eslint/parser": "6.0.0", + "@typescript-eslint/eslint-plugin": "6.1.0", + "@typescript-eslint/parser": "6.1.0", "eslint": "8.45.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "5.0.0", @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.9", + "packageManager": "pnpm@8.6.10", "engines": { "node": ">=16.20.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03428e74..71fb76b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.0.0 - version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: 6.1.0 + version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 6.0.0 - version: 6.0.0(eslint@8.45.0)(typescript@5.1.6) + specifier: 6.1.0 + version: 6.1.0(eslint@8.45.0)(typescript@5.1.6) eslint: specifier: 8.45.0 version: 8.45.0 @@ -104,8 +104,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@esbuild/android-arm64@0.18.15: - resolution: {integrity: sha512-NI/gnWcMl2kXt1HJKOn2H69SYn4YNheKo6NZt1hyfKWdMbaGadxjZIkcj4Gjk/WPxnbFXs9/3HjGHaknCqjrww==} + /@esbuild/android-arm64@0.18.16: + resolution: {integrity: sha512-wsCqSPqLz+6Ov+OM4EthU43DyYVVyfn15S4j1bJzylDpc1r1jZFFfJQNfDuT8SlgwuqpmpJXK4uPlHGw6ve7eA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -113,8 +113,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.15: - resolution: {integrity: sha512-wlkQBWb79/jeEEoRmrxt/yhn5T1lU236OCNpnfRzaCJHZ/5gf82uYx1qmADTBWE0AR/v7FiozE1auk2riyQd3w==} + /@esbuild/android-arm@0.18.16: + resolution: {integrity: sha512-gCHjjQmA8L0soklKbLKA6pgsLk1byULuHe94lkZDzcO3/Ta+bbeewJioEn1Fr7kgy9NWNFy/C+MrBwC6I/WCug==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -122,8 +122,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.15: - resolution: {integrity: sha512-FM9NQamSaEm/IZIhegF76aiLnng1kEsZl2eve/emxDeReVfRuRNmvT28l6hoFD9TsCxpK+i4v8LPpEj74T7yjA==} + /@esbuild/android-x64@0.18.16: + resolution: {integrity: sha512-ldsTXolyA3eTQ1//4DS+E15xl0H/3DTRJaRL0/0PgkqDsI0fV/FlOtD+h0u/AUJr+eOTlZv4aC9gvfppo3C4sw==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -131,8 +131,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.15: - resolution: {integrity: sha512-XmrFwEOYauKte9QjS6hz60FpOCnw4zaPAb7XV7O4lx1r39XjJhTN7ZpXqJh4sN6q60zbP6QwAVVA8N/wUyBH/w==} + /@esbuild/darwin-arm64@0.18.16: + resolution: {integrity: sha512-aBxruWCII+OtluORR/KvisEw0ALuw/qDQWvkoosA+c/ngC/Kwk0lLaZ+B++LLS481/VdydB2u6tYpWxUfnLAIw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -140,8 +140,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.15: - resolution: {integrity: sha512-bMqBmpw1e//7Fh5GLetSZaeo9zSC4/CMtrVFdj+bqKPGJuKyfNJ5Nf2m3LknKZTS+Q4oyPiON+v3eaJ59sLB5A==} + /@esbuild/darwin-x64@0.18.16: + resolution: {integrity: sha512-6w4Dbue280+rp3LnkgmriS1icOUZDyPuZo/9VsuMUTns7SYEiOaJ7Ca1cbhu9KVObAWfmdjUl4gwy9TIgiO5eA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -149,8 +149,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.15: - resolution: {integrity: sha512-LoTK5N3bOmNI9zVLCeTgnk5Rk0WdUTrr9dyDAQGVMrNTh9EAPuNwSTCgaKOKiDpverOa0htPcO9NwslSE5xuLA==} + /@esbuild/freebsd-arm64@0.18.16: + resolution: {integrity: sha512-x35fCebhe9s979DGKbVAwXUOcTmCIE32AIqB9CB1GralMIvxdnMLAw5CnID17ipEw9/3MvDsusj/cspYt2ZLNQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -158,8 +158,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.15: - resolution: {integrity: sha512-62jX5n30VzgrjAjOk5orYeHFq6sqjvsIj1QesXvn5OZtdt5Gdj0vUNJy9NIpjfdNdqr76jjtzBJKf+h2uzYuTQ==} + /@esbuild/freebsd-x64@0.18.16: + resolution: {integrity: sha512-YM98f+PeNXF3GbxIJlUsj+McUWG1irguBHkszCIwfr3BXtXZsXo0vqybjUDFfu9a8Wr7uUD/YSmHib+EeGAFlg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -167,8 +167,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.15: - resolution: {integrity: sha512-BWncQeuWDgYv0jTNzJjaNgleduV4tMbQjmk/zpPh/lUdMcNEAxy+jvneDJ6RJkrqloG7tB9S9rCrtfk/kuplsQ==} + /@esbuild/linux-arm64@0.18.16: + resolution: {integrity: sha512-XIqhNUxJiuy+zsR77+H5Z2f7s4YRlriSJKtvx99nJuG5ATuJPjmZ9n0ANgnGlPCpXGSReFpgcJ7O3SMtzIFeiQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -176,8 +176,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.15: - resolution: {integrity: sha512-dT4URUv6ir45ZkBqhwZwyFV6cH61k8MttIwhThp2BGiVtagYvCToF+Bggyx2VI57RG4Fbt21f9TmXaYx0DeUJg==} + /@esbuild/linux-arm@0.18.16: + resolution: {integrity: sha512-b5ABb+5Ha2C9JkeZXV+b+OruR1tJ33ePmv9ZwMeETSEKlmu/WJ45XTTG+l6a2KDsQtJJ66qo/hbSGBtk0XVLHw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -185,8 +185,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.15: - resolution: {integrity: sha512-JPXORvgHRHITqfms1dWT/GbEY89u848dC08o0yK3fNskhp0t2TuNUnsrrSgOdH28ceb1hJuwyr8R/1RnyPwocw==} + /@esbuild/linux-ia32@0.18.16: + resolution: {integrity: sha512-no+pfEpwnRvIyH+txbBAWtjxPU9grslmTBfsmDndj7bnBmr55rOo/PfQmRfz7Qg9isswt1FP5hBbWb23fRWnow==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -194,8 +194,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.15: - resolution: {integrity: sha512-kArPI0DopjJCEplsVj/H+2Qgzz7vdFSacHNsgoAKpPS6W/Ndh8Oe24HRDQ5QCu4jHgN6XOtfFfLpRx3TXv/mEg==} + /@esbuild/linux-loong64@0.18.16: + resolution: {integrity: sha512-Zbnczs9ZXjmo0oZSS0zbNlJbcwKXa/fcNhYQjahDs4Xg18UumpXG/lwM2lcSvHS3mTrRyCYZvJbmzYc4laRI1g==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -203,8 +203,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.15: - resolution: {integrity: sha512-b/tmngUfO02E00c1XnNTw/0DmloKjb6XQeqxaYuzGwHe0fHVgx5/D6CWi+XH1DvkszjBUkK9BX7n1ARTOst59w==} + /@esbuild/linux-mips64el@0.18.16: + resolution: {integrity: sha512-YMF7hih1HVR/hQVa/ot4UVffc5ZlrzEb3k2ip0nZr1w6fnYypll9td2qcoMLvd3o8j3y6EbJM3MyIcXIVzXvQQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -212,8 +212,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.15: - resolution: {integrity: sha512-KXPY69MWw79QJkyvUYb2ex/OgnN/8N/Aw5UDPlgoRtoEfcBqfeLodPr42UojV3NdkoO4u10NXQdamWm1YEzSKw==} + /@esbuild/linux-ppc64@0.18.16: + resolution: {integrity: sha512-Wkz++LZ29lDwUyTSEnzDaaP5OveOgTU69q9IyIw9WqLRxM4BjTBjz9un4G6TOvehWpf/J3gYVFN96TjGHrbcNQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -221,8 +221,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.15: - resolution: {integrity: sha512-komK3NEAeeGRnvFEjX1SfVg6EmkfIi5aKzevdvJqMydYr9N+pRQK0PGJXk+bhoPZwOUgLO4l99FZmLGk/L1jWg==} + /@esbuild/linux-riscv64@0.18.16: + resolution: {integrity: sha512-LFMKZ30tk78/mUv1ygvIP+568bwf4oN6reG/uczXnz6SvFn4e2QUFpUpZY9iSJT6Qpgstrhef/nMykIXZtZWGQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -230,8 +230,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.15: - resolution: {integrity: sha512-632T5Ts6gQ2WiMLWRRyeflPAm44u2E/s/TJvn+BP6M5mnHSk93cieaypj3VSMYO2ePTCRqAFXtuYi1yv8uZJNA==} + /@esbuild/linux-s390x@0.18.16: + resolution: {integrity: sha512-3ZC0BgyYHYKfZo3AV2/66TD/I9tlSBaW7eWTEIkrQQKfJIifKMMttXl9FrAg+UT0SGYsCRLI35Gwdmm96vlOjg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -239,8 +239,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.15: - resolution: {integrity: sha512-MsHtX0NgvRHsoOtYkuxyk4Vkmvk3PLRWfA4okK7c+6dT0Fu4SUqXAr9y4Q3d8vUf1VWWb6YutpL4XNe400iQ1g==} + /@esbuild/linux-x64@0.18.16: + resolution: {integrity: sha512-xu86B3647DihHJHv/wx3NCz2Dg1gjQ8bbf9cVYZzWKY+gsvxYmn/lnVlqDRazObc3UMwoHpUhNYaZset4X8IPA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -248,8 +248,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.15: - resolution: {integrity: sha512-djST6s+jQiwxMIVQ5rlt24JFIAr4uwUnzceuFL7BQT4CbrRtqBPueS4GjXSiIpmwVri1Icj/9pFRJ7/aScvT+A==} + /@esbuild/netbsd-x64@0.18.16: + resolution: {integrity: sha512-uVAgpimx9Ffw3xowtg/7qQPwHFx94yCje+DoBx+LNm2ePDpQXHrzE+Sb0Si2VBObYz+LcRps15cq+95YM7gkUw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -257,8 +257,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.15: - resolution: {integrity: sha512-naeRhUIvhsgeounjkF5mvrNAVMGAm6EJWiabskeE5yOeBbLp7T89tAEw0j5Jm/CZAwyLe3c67zyCWH6fsBLCpw==} + /@esbuild/openbsd-x64@0.18.16: + resolution: {integrity: sha512-6OjCQM9wf7z8/MBi6BOWaTL2AS/SZudsZtBziXMtNI8r/U41AxS9x7jn0ATOwVy08OotwkPqGRMkpPR2wcTJXA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -266,8 +266,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.15: - resolution: {integrity: sha512-qkT2+WxyKbNIKV1AEhI8QiSIgTHMcRctzSaa/I3kVgMS5dl3fOeoqkb7pW76KwxHoriImhx7Mg3TwN/auMDsyQ==} + /@esbuild/sunos-x64@0.18.16: + resolution: {integrity: sha512-ZoNkruFYJp9d1LbUYCh8awgQDvB9uOMZqlQ+gGEZR7v6C+N6u7vPr86c+Chih8niBR81Q/bHOSKGBK3brJyvkQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -275,8 +275,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.15: - resolution: {integrity: sha512-HC4/feP+pB2Vb+cMPUjAnFyERs+HJN7E6KaeBlFdBv799MhD+aPJlfi/yk36SED58J9TPwI8MAcVpJgej4ud0A==} + /@esbuild/win32-arm64@0.18.16: + resolution: {integrity: sha512-+j4anzQ9hrs+iqO+/wa8UE6TVkKua1pXUb0XWFOx0FiAj6R9INJ+WE//1/Xo6FG1vB5EpH3ko+XcgwiDXTxcdw==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -284,8 +284,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.15: - resolution: {integrity: sha512-ovjwoRXI+gf52EVF60u9sSDj7myPixPxqzD5CmkEUmvs+W9Xd0iqISVBQn8xcx4ciIaIVlWCuTbYDOXOnOL44Q==} + /@esbuild/win32-ia32@0.18.16: + resolution: {integrity: sha512-5PFPmq3sSKTp9cT9dzvI67WNfRZGvEVctcZa1KGjDDu4n3H8k59Inbk0du1fz0KrAbKKNpJbdFXQMDUz7BG4rQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -293,8 +293,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.15: - resolution: {integrity: sha512-imUxH9a3WJARyAvrG7srLyiK73XdX83NXQkjKvQ+7vPh3ZxoLrzvPkQKKw2DwZ+RV2ZB6vBfNHP8XScAmQC3aA==} + /@esbuild/win32-x64@0.18.16: + resolution: {integrity: sha512-sCIVrrtcWN5Ua7jYXNG1xD199IalrbfV2+0k/2Zf2OyV2FtnQnMgdzgpRAbi4AWlKJj1jkX+M+fEGPQj6BQB4w==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -312,8 +312,8 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.6.0: + resolution: {integrity: sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -396,7 +396,7 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.0 + fast-glob: 3.3.1 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 @@ -518,7 +518,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.4.2 + '@types/node': 20.4.4 dev: true /@types/json-schema@7.0.12: @@ -529,8 +529,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.4.2: - resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} + /@types/node@20.4.4: + resolution: {integrity: sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==} dev: true /@types/resolve@1.20.2: @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -552,15 +552,14 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.0.0 + '@eslint-community/regexpp': 4.6.0 + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 eslint: 8.45.0 - grapheme-splitter: 1.0.4 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -572,8 +571,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -582,10 +581,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 eslint: 8.45.0 typescript: 5.1.6 @@ -593,16 +592,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.0.0: - resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + /@typescript-eslint/scope-manager@6.1.0: + resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 dev: true - /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -611,8 +610,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.45.0 ts-api-utils: 1.0.1(typescript@5.1.6) @@ -621,13 +620,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.0.0: - resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + /@typescript-eslint/types@6.1.0: + resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): - resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + /@typescript-eslint/typescript-estree@6.1.0(typescript@5.1.6): + resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -635,8 +634,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -647,8 +646,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -656,22 +655,21 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) eslint: 8.45.0 - eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.0.0: - resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + /@typescript-eslint/visitor-keys@6.1.0: + resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/types': 6.1.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1194,34 +1192,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.18.15: - resolution: {integrity: sha512-3WOOLhrvuTGPRzQPU6waSDWrDTnQriia72McWcn6UCi43GhCHrXH4S59hKMeez+IITmdUuUyvbU9JIp+t3xlPQ==} + /esbuild@0.18.16: + resolution: {integrity: sha512-1xLsOXrDqwdHxyXb/x/SOyg59jpf/SH7YMvU5RNSU7z3TInaASNJWNFJ6iRvLvLETZMasF3d1DdZLg7sgRimRQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.15 - '@esbuild/android-arm64': 0.18.15 - '@esbuild/android-x64': 0.18.15 - '@esbuild/darwin-arm64': 0.18.15 - '@esbuild/darwin-x64': 0.18.15 - '@esbuild/freebsd-arm64': 0.18.15 - '@esbuild/freebsd-x64': 0.18.15 - '@esbuild/linux-arm': 0.18.15 - '@esbuild/linux-arm64': 0.18.15 - '@esbuild/linux-ia32': 0.18.15 - '@esbuild/linux-loong64': 0.18.15 - '@esbuild/linux-mips64el': 0.18.15 - '@esbuild/linux-ppc64': 0.18.15 - '@esbuild/linux-riscv64': 0.18.15 - '@esbuild/linux-s390x': 0.18.15 - '@esbuild/linux-x64': 0.18.15 - '@esbuild/netbsd-x64': 0.18.15 - '@esbuild/openbsd-x64': 0.18.15 - '@esbuild/sunos-x64': 0.18.15 - '@esbuild/win32-arm64': 0.18.15 - '@esbuild/win32-ia32': 0.18.15 - '@esbuild/win32-x64': 0.18.15 + '@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 dev: true /escape-string-regexp@4.0.0: @@ -1259,14 +1257,6 @@ packages: synckit: 0.8.5 dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.1: resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1286,7 +1276,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/regexpp': 4.6.0 '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.44.0 '@humanwhocodes/config-array': 0.11.10 @@ -1349,11 +1339,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -1406,8 +1391,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1559,7 +1544,7 @@ packages: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 glob: 7.2.3 ignore: 5.2.4 merge2: 1.4.1 @@ -1572,7 +1557,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -1582,10 +1567,6 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -2191,8 +2172,8 @@ packages: pathe: 1.1.1 dev: true - /postcss@8.4.26: - resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} + /postcss@8.4.27: + resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -2678,7 +2659,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.33.0(@types/node@20.4.2): + /vite-node@0.33.0(@types/node@20.4.4): resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2688,7 +2669,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.5(@types/node@20.4.2) + vite: 4.4.6(@types/node@20.4.4) transitivePeerDependencies: - '@types/node' - less @@ -2700,8 +2681,8 @@ packages: - terser dev: true - /vite@4.4.5(@types/node@20.4.2): - resolution: {integrity: sha512-4m5kEtAWHYr0O1Fu7rZp64CfO1PsRGZlD3TAB32UmQlpd7qg15VF7ROqGN5CyqN7HFuwr7ICNM2+fDWRqFEKaA==} + /vite@4.4.6(@types/node@20.4.4): + resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2728,9 +2709,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.2 - esbuild: 0.18.15 - postcss: 8.4.26 + '@types/node': 20.4.4 + esbuild: 0.18.16 + postcss: 8.4.27 rollup: 3.26.3 optionalDependencies: fsevents: 2.3.2 @@ -2769,7 +2750,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.4.2 + '@types/node': 20.4.4 '@vitest/expect': 0.33.0 '@vitest/runner': 0.33.0 '@vitest/snapshot': 0.33.0 @@ -2789,8 +2770,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.6.0 - vite: 4.4.5(@types/node@20.4.2) - vite-node: 0.33.0(@types/node@20.4.2) + vite: 4.4.6(@types/node@20.4.4) + vite-node: 0.33.0(@types/node@20.4.4) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From bb289c82606cfbba84c3fbaf9f39ec64f0ec6052 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 24 Jul 2023 11:26:22 +0900 Subject: [PATCH 057/182] =?UTF-8?q?eslint=20=E6=9C=80=E6=96=B0=E7=89=88?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E5=BE=93=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index b5b68940..c905824f 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -821,6 +821,8 @@ export default class ConnectionBase { resolve({ code: 4999, reason: '' }) } }) + // eslint 対策、エラーが発生したら reject(error) を返す + .catch((error) => reject(error)) .finally(() => { closeDataChannels() clearTimeout(disconnectWaitTimeoutId) From 0a71afe01fa2fee2aa91e4243016bf7247ec70fb Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 24 Jul 2023 13:42:23 +0900 Subject: [PATCH 058/182] =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=9D=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index 57bdd8db..7631a42a 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -156,8 +156,8 @@ export function createSignalingMessage( if (typeof options.simulcast === 'boolean') { message.simulcast = options.simulcast } - const simalcastRids = ['r0', 'r1', 'r2'] - if (options.simulcastRid !== undefined && 0 <= simalcastRids.indexOf(options.simulcastRid)) { + const simulcastRids = ['r0', 'r1', 'r2'] + if (options.simulcastRid !== undefined && 0 <= simulcastRids.indexOf(options.simulcastRid)) { message.simulcast_rid = options.simulcastRid } if (typeof options.spotlight === 'boolean') { From 9693a8052e96467858615c2bc7fd7eb94ab6b47b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 21:53:27 +0000 Subject: [PATCH 059/182] Update eslint to v6.2.0 --- package.json | 4 +-- pnpm-lock.yaml | 78 +++++++++++++++++++++++++------------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index 22831e5e..0ed4685a 100644 --- a/package.json +++ b/package.json @@ -30,8 +30,8 @@ "devDependencies": { "serve": "14.2.0", "typedoc": "0.24.8", - "@typescript-eslint/eslint-plugin": "6.1.0", - "@typescript-eslint/parser": "6.1.0", + "@typescript-eslint/eslint-plugin": "6.2.0", + "@typescript-eslint/parser": "6.2.0", "eslint": "8.45.0", "eslint-config-prettier": "8.8.0", "eslint-plugin-prettier": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71fb76b7..18bb311a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.1.0 - version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: 6.2.0 + version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 6.1.0 - version: 6.1.0(eslint@8.45.0)(typescript@5.1.6) + specifier: 6.2.0 + version: 6.2.0(eslint@8.45.0)(typescript@5.1.6) eslint: specifier: 8.45.0 version: 8.45.0 @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} + /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,11 +553,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.0 - '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.1.0 + '@typescript-eslint/parser': 6.2.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.2.0 + '@typescript-eslint/type-utils': 6.2.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 eslint: 8.45.0 graphemer: 1.4.0 @@ -571,8 +571,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} + /@typescript-eslint/parser@6.2.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -581,10 +581,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.1.0 + '@typescript-eslint/scope-manager': 6.2.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 eslint: 8.45.0 typescript: 5.1.6 @@ -592,16 +592,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.1.0: - resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} + /@typescript-eslint/scope-manager@6.2.0: + resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/visitor-keys': 6.1.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/visitor-keys': 6.2.0 dev: true - /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} + /@typescript-eslint/type-utils@6.2.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -610,8 +610,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.45.0 ts-api-utils: 1.0.1(typescript@5.1.6) @@ -620,13 +620,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.1.0: - resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} + /@typescript-eslint/types@6.2.0: + resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.1.0(typescript@5.1.6): - resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} + /@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6): + resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -634,8 +634,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/visitor-keys': 6.1.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -646,8 +646,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} + /@typescript-eslint/utils@6.2.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -655,9 +655,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.2.0 + '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) eslint: 8.45.0 semver: 7.5.4 transitivePeerDependencies: @@ -665,11 +665,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.1.0: - resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} + /@typescript-eslint/visitor-keys@6.2.0: + resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/types': 6.2.0 eslint-visitor-keys: 3.4.1 dev: true From 0c804008d5fa0792d1c97b2b322ea512a22b32bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 15:10:02 +0000 Subject: [PATCH 060/182] Update dependency rollup to v3.27.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 56 +++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 5b4577ce..f7aba48a 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.26.3" + "rollup": "3.27.0" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 5a046a4c..4f4126f2 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.26.3", + "rollup": "3.27.0", "rollup-plugin-delete": "2.0.0", "vitest": "0.33.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 18bb311a..907d7737 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.26.3) + version: 15.1.0(rollup@3.27.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.26.3) + version: 5.0.2(rollup@3.27.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.3)(typescript@5.1.6) + version: 11.1.2(rollup@3.27.0)(typescript@5.1.6) rollup: - specifier: 3.26.3 - version: 3.26.3 + specifier: 3.27.0 + version: 3.27.0 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.3 - version: 25.0.3(rollup@3.26.3) + version: 25.0.3(rollup@3.27.0) '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.26.3) + version: 15.1.0(rollup@3.27.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.26.3) + version: 5.0.2(rollup@3.27.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.26.3)(typescript@5.1.6) + version: 11.1.2(rollup@3.27.0)(typescript@5.1.6) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.26.3 - version: 3.26.3 + specifier: 3.27.0 + version: 3.27.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.0 dev: true - /@rollup/plugin-commonjs@25.0.3(rollup@3.26.3): + /@rollup/plugin-commonjs@25.0.3(rollup@3.27.0): resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@rollup/pluginutils': 5.0.2(rollup@3.27.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.26.3 + rollup: 3.27.0 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3): + /@rollup/plugin-node-resolve@15.1.0(rollup@3.27.0): resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@rollup/pluginutils': 5.0.2(rollup@3.27.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.26.3 + rollup: 3.27.0 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.26.3): + /@rollup/plugin-replace@5.0.2(rollup@3.27.0): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@rollup/pluginutils': 5.0.2(rollup@3.27.0) magic-string: 0.27.0 - rollup: 3.26.3 + rollup: 3.27.0 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.26.3)(typescript@5.1.6): + /@rollup/plugin-typescript@11.1.2(rollup@3.27.0)(typescript@5.1.6): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@rollup/pluginutils': 5.0.2(rollup@3.27.0) resolve: 1.22.2 - rollup: 3.26.3 + rollup: 3.27.0 typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.26.3): + /@rollup/pluginutils@5.0.2(rollup@3.27.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.26.3 + rollup: 3.27.0 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2304,8 +2304,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.26.3: - resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} + /rollup@3.27.0: + resolution: {integrity: sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2712,7 +2712,7 @@ packages: '@types/node': 20.4.4 esbuild: 0.18.16 postcss: 8.4.27 - rollup: 3.26.3 + rollup: 3.27.0 optionalDependencies: fsevents: 2.3.2 dev: true From 202e66435ae2735a67aa8fb93cc55c4f38996bf7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 30 Jul 2023 19:18:34 +0000 Subject: [PATCH 061/182] Update eslint --- package.json | 4 +-- pnpm-lock.yaml | 98 +++++++++++++++++++++++++++----------------------- 2 files changed, 56 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index 0ed4685a..b28de6a2 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "typedoc": "0.24.8", "@typescript-eslint/eslint-plugin": "6.2.0", "@typescript-eslint/parser": "6.2.0", - "eslint": "8.45.0", - "eslint-config-prettier": "8.8.0", + "eslint": "8.46.0", + "eslint-config-prettier": "8.9.0", "eslint-plugin-prettier": "5.0.0", "typescript": "5.1.6", "prettier": "3.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 907d7737..8fd7db1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,19 +13,19 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: 6.2.0 - version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6) + version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/parser': specifier: 6.2.0 - version: 6.2.0(eslint@8.45.0)(typescript@5.1.6) + version: 6.2.0(eslint@8.46.0)(typescript@5.1.6) eslint: - specifier: 8.45.0 - version: 8.45.0 + specifier: 8.46.0 + version: 8.46.0 eslint-config-prettier: - specifier: 8.8.0 - version: 8.8.0(eslint@8.45.0) + specifier: 8.9.0 + version: 8.9.0(eslint@8.46.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0) + version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0) prettier: specifier: 3.0.0 version: 3.0.0 @@ -302,14 +302,14 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.45.0 - eslint-visitor-keys: 3.4.1 + eslint: 8.46.0 + eslint-visitor-keys: 3.4.2 dev: true /@eslint-community/regexpp@4.6.0: @@ -317,8 +317,13 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.0: - resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} + /@eslint-community/regexpp@4.6.2: + resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.1: + resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -334,8 +339,8 @@ packages: - supports-color dev: true - /@eslint/js@8.44.0: - resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + /@eslint/js@8.46.0: + resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -541,7 +546,7 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.45.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -553,13 +558,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.0 - '@typescript-eslint/parser': 6.2.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 - eslint: 8.45.0 + eslint: 8.46.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -571,7 +576,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.2.0(eslint@8.45.0)(typescript@5.1.6): + /@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -586,7 +591,7 @@ packages: '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) '@typescript-eslint/visitor-keys': 6.2.0 debug: 4.3.4 - eslint: 8.45.0 + eslint: 8.46.0 typescript: 5.1.6 transitivePeerDependencies: - supports-color @@ -600,7 +605,7 @@ packages: '@typescript-eslint/visitor-keys': 6.2.0 dev: true - /@typescript-eslint/type-utils@6.2.0(eslint@8.45.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -611,9 +616,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.45.0 + eslint: 8.46.0 ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: @@ -646,19 +651,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.2.0(eslint@8.45.0)(typescript@5.1.6): + /@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 '@typescript-eslint/scope-manager': 6.2.0 '@typescript-eslint/types': 6.2.0 '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - eslint: 8.45.0 + eslint: 8.46.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1227,16 +1232,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.45.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@8.9.0(eslint@8.46.0): + resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.45.0 + eslint: 8.46.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1250,15 +1255,15 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.45.0 - eslint-config-prettier: 8.8.0(eslint@8.45.0) + eslint: 8.46.0 + eslint-config-prettier: 8.9.0(eslint@8.46.0) prettier: 3.0.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-scope@7.2.1: - resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 @@ -1270,15 +1275,20 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.45.0: - resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + /eslint-visitor-keys@3.4.2: + resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.46.0: + resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.6.0 - '@eslint/eslintrc': 2.1.0 - '@eslint/js': 8.44.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/regexpp': 4.6.2 + '@eslint/eslintrc': 2.1.1 + '@eslint/js': 8.46.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1288,8 +1298,8 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.1 - eslint-visitor-keys: 3.4.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.2 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -1322,7 +1332,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.2 dev: true /esquery@1.5.0: From f8a34f459031603ab59f711d38ad2ba36a590439 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 31 Jul 2023 15:15:16 +0900 Subject: [PATCH 062/182] pnpm up --latest --- pnpm-lock.yaml | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fd7db1c..191065a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -312,11 +312,6 @@ packages: eslint-visitor-keys: 3.4.2 dev: true - /@eslint-community/regexpp@4.6.0: - resolution: {integrity: sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint-community/regexpp@4.6.2: resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -405,7 +400,7 @@ packages: is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 - tslib: 2.6.0 + tslib: 2.6.1 dev: true /@rollup/plugin-commonjs@25.0.3(rollup@3.27.0): @@ -557,7 +552,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.0 + '@eslint-community/regexpp': 4.6.2 '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/scope-manager': 6.2.0 '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) @@ -675,7 +670,7 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dependencies: '@typescript-eslint/types': 6.2.0 - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.2 dev: true /@vitest/expect@0.33.0: @@ -802,8 +797,8 @@ packages: engines: {node: '>=12'} dev: true - /ansi-sequence-parser@1.1.0: - resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} dev: true /ansi-styles@4.3.0: @@ -1126,7 +1121,7 @@ packages: dependencies: bundle-name: 3.0.0 default-browser-id: 3.0.0 - execa: 7.1.1 + execa: 7.2.0 titleize: 3.0.0 dev: true @@ -1270,11 +1265,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@3.4.2: resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1378,8 +1368,8 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 @@ -2414,7 +2404,7 @@ packages: /shiki@0.14.3: resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} dependencies: - ansi-sequence-parser: 1.1.0 + ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 @@ -2525,7 +2515,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.2 - tslib: 2.6.0 + tslib: 2.6.1 dev: true /text-table@0.2.0: @@ -2584,8 +2574,8 @@ packages: typescript: 5.1.6 dev: true - /tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + /tslib@2.6.1: + resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} dev: true /type-check@0.4.0: From 03b7314a95bc3f9727ff37f993b38ddaa0099d84 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 13:20:53 +0900 Subject: [PATCH 063/182] =?UTF-8?q?=E3=82=B9=E3=83=9A=E3=83=AB=E3=83=9F?= =?UTF-8?q?=E3=82=B9=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index 7631a42a..bf84937c 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -38,7 +38,7 @@ function browser(): Browser { } function enabledSimulcast(): boolean { - const REQUIRED_HEADER_EXTEMSIONS = [ + const REQUIRED_HEADER_EXTENSIONS = [ 'urn:ietf:params:rtp-hdrext:sdes:mid', 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id', 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id', @@ -55,7 +55,7 @@ function enabledSimulcast(): boolean { return false } const headerExtensions = capabilities.headerExtensions.map((h) => h.uri) - const hasAllRequiredHeaderExtensions = REQUIRED_HEADER_EXTEMSIONS.every((h) => + const hasAllRequiredHeaderExtensions = REQUIRED_HEADER_EXTENSIONS.every((h) => headerExtensions.includes(h), ) return hasAllRequiredHeaderExtensions From 1bf879c6105048bb5a83204ce0a10a1c511663dc Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 13:21:19 +0900 Subject: [PATCH 064/182] =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9?= =?UTF-8?q?=E3=83=AA=E3=82=A2=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 14 ++++----- pnpm-lock.yaml | 78 +++++++++++++++++++++++++------------------------- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/package.json b/package.json index b28de6a2..bcf0991f 100644 --- a/package.json +++ b/package.json @@ -28,20 +28,20 @@ "dist" ], "devDependencies": { - "serve": "14.2.0", - "typedoc": "0.24.8", - "@typescript-eslint/eslint-plugin": "6.2.0", - "@typescript-eslint/parser": "6.2.0", + "@typescript-eslint/eslint-plugin": "6.2.1", + "@typescript-eslint/parser": "6.2.1", "eslint": "8.46.0", "eslint-config-prettier": "8.9.0", "eslint-plugin-prettier": "5.0.0", - "typescript": "5.1.6", - "prettier": "3.0.0" + "prettier": "3.0.0", + "serve": "14.2.0", + "typedoc": "0.24.8", + "typescript": "5.1.6" }, "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.10", + "packageManager": "pnpm@8.6.11", "engines": { "node": ">=16.20.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 191065a2..b0beb998 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.2.0 - version: 6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6) + specifier: 6.2.1 + version: 6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 6.2.0 - version: 6.2.0(eslint@8.46.0)(typescript@5.1.6) + specifier: 6.2.1 + version: 6.2.1(eslint@8.46.0)(typescript@5.1.6) eslint: specifier: 8.46.0 version: 8.46.0 @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0)(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} + /@typescript-eslint/eslint-plugin@6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,11 +553,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.2.1 + '@typescript-eslint/type-utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.2.1 debug: 4.3.4 eslint: 8.46.0 graphemer: 1.4.0 @@ -571,8 +571,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} + /@typescript-eslint/parser@6.2.1(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -581,10 +581,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/scope-manager': 6.2.1 + '@typescript-eslint/types': 6.2.1 + '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.2.1 debug: 4.3.4 eslint: 8.46.0 typescript: 5.1.6 @@ -592,16 +592,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.2.0: - resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} + /@typescript-eslint/scope-manager@6.2.1: + resolution: {integrity: sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.2.1 + '@typescript-eslint/visitor-keys': 6.2.1 dev: true - /@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} + /@typescript-eslint/type-utils@6.2.1(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -610,8 +610,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) + '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.46.0 ts-api-utils: 1.0.1(typescript@5.1.6) @@ -620,13 +620,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.2.0: - resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} + /@typescript-eslint/types@6.2.1: + resolution: {integrity: sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6): - resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} + /@typescript-eslint/typescript-estree@6.2.1(typescript@5.1.6): + resolution: {integrity: sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -634,8 +634,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.2.1 + '@typescript-eslint/visitor-keys': 6.2.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -646,8 +646,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} + /@typescript-eslint/utils@6.2.1(eslint@8.46.0)(typescript@5.1.6): + resolution: {integrity: sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -655,9 +655,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.2.1 + '@typescript-eslint/types': 6.2.1 + '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) eslint: 8.46.0 semver: 7.5.4 transitivePeerDependencies: @@ -665,11 +665,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.2.0: - resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} + /@typescript-eslint/visitor-keys@6.2.1: + resolution: {integrity: sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.0 + '@typescript-eslint/types': 6.2.1 eslint-visitor-keys: 3.4.2 dev: true From 7a3f2afc36150c69574cecfd5e1fb112eea3c291 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 13:27:40 +0900 Subject: [PATCH 065/182] =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=88=E3=81=AB=20?= =?UTF-8?q?tsconfig.json=20=E3=82=92=E7=94=A8=E6=84=8F=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsconfig.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tsconfig.json diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..cb99bb53 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "es2020", + "strict": true, + "declaration": true, + "strictNullChecks": true, + "importHelpers": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "stripInternal": true, + "newLine": "LF", + "types": [], + "lib": ["esnext", "dom", "dom.iterable", "scripthost"] + }, + "exclude": ["node_modules", "tests"] +} From 611646f411c85938629298e828d546ce3930102f Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 13:28:37 +0900 Subject: [PATCH 066/182] =?UTF-8?q?=E4=B8=8D=E8=A6=81=E3=81=AA=E6=83=85?= =?UTF-8?q?=E5=A0=B1=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEVELOPMENT.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index ea6b3145..2ea7b9e2 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -13,10 +13,8 @@ ## 開発準備 -**lerna でパッケージ管理していた時代に yarn install した状態の場合はトップディレクトリと packages 以下のすべての node_modules を削除すること** - -- `npm install` を実行 -- `npm run start` でローカルサーバを起動する +- `pnpm install` を実行 +- `pnpm run start` でローカルサーバを起動する ## 開発 From 29b0c2e8d1d9ec97c414c48e172dfd1c85eca3ff Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 13:47:59 +0900 Subject: [PATCH 067/182] =?UTF-8?q?=E3=82=B3=E3=82=B9=E3=83=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 984bb818..70490e5e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -14,16 +14,13 @@ - [CHANGE] dist/ ディレクトリはリポジトリに含めないようにする - 含めてもあまりメリットがない割に手間が増えるので削除してしまう - @sile - - [FIX] ユーザが直接使わない型には @internal を指定して .d.ts に含まれないようにする - - sora-js-sdk 内部で使われている E2EE と Lyra 関連の型が生成される .d.ts ファイルに含まれないようにする - - これによって sora-js-sdk の利用者は tsconfig.json に `skipLibCheck: true` を指定せずともコンパイルができるようになる - - @sile - + - sora-js-sdk 内部で使われている E2EE と Lyra 関連の型が生成される .d.ts ファイルに含まれないようにする + - これによって sora-js-sdk の利用者は tsconfig.json に `skipLibCheck: true` を指定せずともコンパイルができるようになる + - @sile - [CHANGE] vitest 化 - jest をやめる - @voluntas - - [CHANGE] pnpm 化 - npx 利用をやめる - @voluntas From 9fd5e6ea17d8efacc9fd3fc0857bfef7bea1f7fc Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 13:50:51 +0900 Subject: [PATCH 068/182] =?UTF-8?q?=E3=82=B3=E3=82=B9=E3=83=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/helpers.ts | 8 ++++---- packages/sdk/src/lyra.ts | 2 +- packages/sdk/src/lyra_worker.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/sdk/src/helpers.ts b/packages/sdk/src/helpers.ts index e651b33e..06b28ed8 100644 --- a/packages/sdk/src/helpers.ts +++ b/packages/sdk/src/helpers.ts @@ -1,23 +1,23 @@ /** * MediaStream の constraints を動的に変更するメソッド. * - * @param mediastream - メディアストリーム + * @param mediaStream - メディアストリーム * * @param constraints - メディアストリーム制約 * * @public */ async function applyMediaStreamConstraints( - mediastream: MediaStream, + mediaStream: MediaStream, constraints: MediaStreamConstraints, ): Promise { if (constraints.audio && typeof constraints.audio !== 'boolean') { - for (const track of mediastream.getAudioTracks()) { + for (const track of mediaStream.getAudioTracks()) { await track.applyConstraints(constraints.audio) } } if (constraints.video && typeof constraints.video !== 'boolean') { - for (const track of mediastream.getVideoTracks()) { + for (const track of mediaStream.getVideoTracks()) { await track.applyConstraints(constraints.video) } } diff --git a/packages/sdk/src/lyra.ts b/packages/sdk/src/lyra.ts index 7b6d55cd..efdb6433 100644 --- a/packages/sdk/src/lyra.ts +++ b/packages/sdk/src/lyra.ts @@ -1,4 +1,4 @@ -import { RTCEncodedAudioFrame } from './types' +import { type RTCEncodedAudioFrame } from './types' import { LYRA_VERSION, diff --git a/packages/sdk/src/lyra_worker.ts b/packages/sdk/src/lyra_worker.ts index ecfb1199..62302db3 100644 --- a/packages/sdk/src/lyra_worker.ts +++ b/packages/sdk/src/lyra_worker.ts @@ -1,5 +1,5 @@ import { transformPcmToLyra, transformLyraToPcm } from './lyra' -import { RTCEncodedAudioFrame } from './types' +import { type RTCEncodedAudioFrame } from './types' import { LyraEncoder, LyraEncoderState, LyraDecoder, LyraDecoderState } from '@shiguredo/lyra-wasm' From 3f8b870298579d713b8c7fdf3bae9c3ecef7a470 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 14:18:25 +0900 Subject: [PATCH 069/182] =?UTF-8?q?promise=20=E5=91=A8=E3=82=8A=E3=81=AE?= =?UTF-8?q?=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index c905824f..3a180790 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -391,22 +391,28 @@ export default class ConnectionBase { for (const track of stream.getVideoTracks()) { track.enabled = false } - return new Promise((resolve) => { + return new Promise((resolve, reject) => { // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する - setTimeout(async () => { - for (const track of stream.getVideoTracks()) { - track.stop() - stream.removeTrack(track) - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id - }) - if (sender) { - await sender.replaceTrack(null) + setTimeout(() => { + // 何か問題が起きたら例外が上がる + try { + for (const track of stream.getVideoTracks()) { + track.stop() + stream.removeTrack(track) + if (this.pc !== null) { + const sender = this.pc.getSenders().find((s) => { + return s.track && s.track.id === track.id + }) + if (sender) { + // replaceTrack は非同期操作なので catch(reject) しておく + sender.replaceTrack(null).catch(reject) + } } } + resolve() + } catch (error) { + reject(error) } - resolve() }, 100) }) } From 8ffd4ec2477ac0b7e5195d8e98e15d82aca6c864 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 14:24:05 +0900 Subject: [PATCH 070/182] =?UTF-8?q?=E3=82=82=E3=81=86=E4=B8=80=E3=81=A4?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 3a180790..6d77b552 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -348,22 +348,26 @@ export default class ConnectionBase { for (const track of stream.getAudioTracks()) { track.enabled = false } - return new Promise((resolve) => { + return new Promise((resolve, reject) => { // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する - setTimeout(async () => { - for (const track of stream.getAudioTracks()) { - track.stop() - stream.removeTrack(track) - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id - }) - if (sender) { - await sender.replaceTrack(null) + setTimeout(() => { + try { + for (const track of stream.getAudioTracks()) { + track.stop() + stream.removeTrack(track) + if (this.pc !== null) { + const sender = this.pc.getSenders().find((s) => { + return s.track && s.track.id === track.id + }) + if (sender) { + sender.replaceTrack(null).catch(reject) + } } } + resolve() + } catch (error) { + reject(error) } - resolve() }, 100) }) } From 4d16ea8032a468b80b7aed3044d806f7409aa144 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 14:24:56 +0900 Subject: [PATCH 071/182] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=82=92=E6=9B=B4=E6=96=B0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 70490e5e..f18d1aea 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,8 @@ ## develop +- [FIX] stopVideoTrack で例外を握りつぶしていたのを修正する + - @voluntas - [CHANGE] dist/ ディレクトリはリポジトリに含めないようにする - 含めてもあまりメリットがない割に手間が増えるので削除してしまう - @sile From f3b990d355736224c4ed482eabef1099e29e225b Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 14:35:04 +0900 Subject: [PATCH 072/182] =?UTF-8?q?=E3=82=B3=E3=82=B9=E3=83=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/tests/utils.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sdk/tests/utils.test.ts b/packages/sdk/tests/utils.test.ts index d649c621..cd7a4772 100644 --- a/packages/sdk/tests/utils.test.ts +++ b/packages/sdk/tests/utils.test.ts @@ -1,6 +1,6 @@ import { test, expect } from 'vitest' import { createSignalingMessage } from '../src/utils' -import { AudioCodecType, DataChannelDirection, VideoCodecType } from '../src/types' +import { type AudioCodecType, DataChannelDirection, VideoCodecType } from '../src/types' const channelId = '7N3fsMHob' const metadata = 'PG9A6RXgYqiqWKOVO' @@ -428,7 +428,7 @@ test("createSignalingMessage e2ee: true, videoCodecType: 'VP9'", () => { const options = { e2ee: true, e2eeWasmUrl: 'wasm', - VideoCodecType: 'VP9', + videoCodecType: 'VP9' as VideoCodecType, } const expectedMessage = Object.assign({}, baseExpectedMessage, { e2ee: true, From 5bf7c65b31bc57f60d0ffa1a0182cb1214059e0a Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 16:55:20 +0900 Subject: [PATCH 073/182] =?UTF-8?q?=E3=83=96=E3=83=AD=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=81=97=E3=81=9F=E3=81=84=E3=81=AE=E3=81=A7=20Promise.all=20?= =?UTF-8?q?=E3=81=AB=E3=81=97=E3=81=A6=E3=81=BF=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 6d77b552..81d3d6aa 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -352,7 +352,7 @@ export default class ConnectionBase { // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する setTimeout(() => { try { - for (const track of stream.getAudioTracks()) { + const promises = stream.getVideoTracks().map(async (track) => { track.stop() stream.removeTrack(track) if (this.pc !== null) { @@ -360,18 +360,19 @@ export default class ConnectionBase { return s.track && s.track.id === track.id }) if (sender) { - sender.replaceTrack(null).catch(reject) + return sender.replaceTrack(null) } } - } - resolve() + }) + Promise.all(promises) + .then(() => resolve()) + .catch(reject) } catch (error) { reject(error) } }, 100) }) } - /** * video track を停止するメソッド * @@ -400,7 +401,7 @@ export default class ConnectionBase { setTimeout(() => { // 何か問題が起きたら例外が上がる try { - for (const track of stream.getVideoTracks()) { + const promises = stream.getVideoTracks().map(async (track) => { track.stop() stream.removeTrack(track) if (this.pc !== null) { @@ -409,11 +410,13 @@ export default class ConnectionBase { }) if (sender) { // replaceTrack は非同期操作なので catch(reject) しておく - sender.replaceTrack(null).catch(reject) + return sender.replaceTrack(null) } } - } - resolve() + }) + Promise.all(promises) + .then(() => resolve()) + .catch(reject) } catch (error) { reject(error) } From 80f97dd7584f4e7c53705686708801270c0a8b23 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 1 Aug 2023 16:58:41 +0900 Subject: [PATCH 074/182] =?UTF-8?q?getVideoTracks=20=E3=81=AF=E4=BE=8B?= =?UTF-8?q?=E5=A4=96=E8=B5=B7=E3=81=93=E3=81=95=E3=81=AA=E3=81=84=E3=81=AE?= =?UTF-8?q?=E3=81=A7=20try/catch=20=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 67 +++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 81d3d6aa..8d00f93a 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -351,25 +351,21 @@ export default class ConnectionBase { return new Promise((resolve, reject) => { // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する setTimeout(() => { - try { - const promises = stream.getVideoTracks().map(async (track) => { - track.stop() - stream.removeTrack(track) - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id - }) - if (sender) { - return sender.replaceTrack(null) - } + const promises = stream.getVideoTracks().map(async (track) => { + track.stop() + stream.removeTrack(track) + if (this.pc !== null) { + const sender = this.pc.getSenders().find((s) => { + return s.track && s.track.id === track.id + }) + if (sender) { + return sender.replaceTrack(null) } - }) - Promise.all(promises) - .then(() => resolve()) - .catch(reject) - } catch (error) { - reject(error) - } + } + }) + Promise.all(promises) + .then(() => resolve()) + .catch(reject) }, 100) }) } @@ -399,27 +395,22 @@ export default class ConnectionBase { return new Promise((resolve, reject) => { // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する setTimeout(() => { - // 何か問題が起きたら例外が上がる - try { - const promises = stream.getVideoTracks().map(async (track) => { - track.stop() - stream.removeTrack(track) - if (this.pc !== null) { - const sender = this.pc.getSenders().find((s) => { - return s.track && s.track.id === track.id - }) - if (sender) { - // replaceTrack は非同期操作なので catch(reject) しておく - return sender.replaceTrack(null) - } + const promises = stream.getVideoTracks().map(async (track) => { + track.stop() + stream.removeTrack(track) + if (this.pc !== null) { + const sender = this.pc.getSenders().find((s) => { + return s.track && s.track.id === track.id + }) + if (sender) { + // replaceTrack は非同期操作なので catch(reject) しておく + return sender.replaceTrack(null) } - }) - Promise.all(promises) - .then(() => resolve()) - .catch(reject) - } catch (error) { - reject(error) - } + } + }) + Promise.all(promises) + .then(() => resolve()) + .catch(reject) }, 100) }) } From c2f6af1db443c9cb07fbfdb2025d6c424edeffc7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 6 Aug 2023 15:52:33 +0000 Subject: [PATCH 075/182] Update all non-major dependencies --- package.json | 4 +-- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 70 +++++++++++++++++++-------------------- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/package.json b/package.json index bcf0991f..cd4b21fc 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "eslint": "8.46.0", "eslint-config-prettier": "8.9.0", "eslint-plugin-prettier": "5.0.0", - "prettier": "3.0.0", + "prettier": "3.0.1", "serve": "14.2.0", "typedoc": "0.24.8", "typescript": "5.1.6" @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.11", + "packageManager": "pnpm@8.6.12", "engines": { "node": ">=16.20.0" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 4f4126f2..e16334cd 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -16,7 +16,7 @@ "@rollup/plugin-typescript": "11.1.2", "rollup": "3.27.0", "rollup-plugin-delete": "2.0.0", - "vitest": "0.33.0" + "vitest": "0.34.1" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b0beb998..7ea0ac3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,10 +25,10 @@ importers: version: 8.9.0(eslint@8.46.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0) + version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.1) prettier: - specifier: 3.0.0 - version: 3.0.0 + specifier: 3.0.1 + version: 3.0.1 serve: specifier: 14.2.0 version: 14.2.0 @@ -94,8 +94,8 @@ importers: specifier: 2.0.0 version: 2.0.0 vitest: - specifier: 0.33.0 - version: 0.33.0(jsdom@22.1.0) + specifier: 0.34.1 + version: 0.34.1(jsdom@22.1.0) packages: @@ -673,38 +673,38 @@ packages: eslint-visitor-keys: 3.4.2 dev: true - /@vitest/expect@0.33.0: - resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==} + /@vitest/expect@0.34.1: + resolution: {integrity: sha512-q2CD8+XIsQ+tHwypnoCk8Mnv5e6afLFvinVGCq3/BOT4kQdVQmY6rRfyKkwcg635lbliLPqbunXZr+L1ssUWiQ==} dependencies: - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 + '@vitest/spy': 0.34.1 + '@vitest/utils': 0.34.1 chai: 4.3.7 dev: true - /@vitest/runner@0.33.0: - resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==} + /@vitest/runner@0.34.1: + resolution: {integrity: sha512-YfQMpYzDsYB7yqgmlxZ06NI4LurHWfrH7Wy3Pvf/z/vwUSgq1zLAb1lWcItCzQG+NVox+VvzlKQrYEXb47645g==} dependencies: - '@vitest/utils': 0.33.0 + '@vitest/utils': 0.34.1 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.33.0: - resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==} + /@vitest/snapshot@0.34.1: + resolution: {integrity: sha512-0O9LfLU0114OqdF8lENlrLsnn024Tb1CsS9UwG0YMWY2oGTQfPtkW+B/7ieyv0X9R2Oijhi3caB1xgGgEgclSQ==} dependencies: magic-string: 0.30.1 pathe: 1.1.1 pretty-format: 29.6.1 dev: true - /@vitest/spy@0.33.0: - resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==} + /@vitest/spy@0.34.1: + resolution: {integrity: sha512-UT4WcI3EAPUNO8n6y9QoEqynGGEPmmRxC+cLzneFFXpmacivjHZsNbiKD88KUScv5DCHVDgdBsLD7O7s1enFcQ==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.33.0: - resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==} + /@vitest/utils@0.34.1: + resolution: {integrity: sha512-/ql9dsFi4iuEbiNcjNHQWXBum7aL8pyhxvfnD9gNtbjR9fUKAjxhj4AA3yfLXg6gJpMGGecvtF8Au2G9y3q47Q==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 @@ -1236,7 +1236,7 @@ packages: eslint: 8.46.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.0): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.1): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1252,7 +1252,7 @@ packages: dependencies: eslint: 8.46.0 eslint-config-prettier: 8.9.0(eslint@8.46.0) - prettier: 3.0.0 + prettier: 3.0.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true @@ -2193,8 +2193,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.0.1: + resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} engines: {node: '>=14'} hasBin: true dev: true @@ -2526,8 +2526,8 @@ packages: resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} dev: true - /tinypool@0.6.0: - resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==} + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} engines: {node: '>=14.0.0'} dev: true @@ -2659,8 +2659,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.33.0(@types/node@20.4.4): - resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==} + /vite-node@0.34.1(@types/node@20.4.4): + resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2717,8 +2717,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest@0.33.0(jsdom@22.1.0): - resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==} + /vitest@0.34.1(jsdom@22.1.0): + resolution: {integrity: sha512-G1PzuBEq9A75XSU88yO5G4vPT20UovbC/2osB2KEuV/FisSIIsw7m5y2xMdB7RsAGHAfg2lPmp2qKr3KWliVlQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2751,11 +2751,11 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.4.4 - '@vitest/expect': 0.33.0 - '@vitest/runner': 0.33.0 - '@vitest/snapshot': 0.33.0 - '@vitest/spy': 0.33.0 - '@vitest/utils': 0.33.0 + '@vitest/expect': 0.34.1 + '@vitest/runner': 0.34.1 + '@vitest/snapshot': 0.34.1 + '@vitest/spy': 0.34.1 + '@vitest/utils': 0.34.1 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -2769,9 +2769,9 @@ packages: std-env: 3.3.3 strip-literal: 1.0.1 tinybench: 2.5.0 - tinypool: 0.6.0 + tinypool: 0.7.0 vite: 4.4.6(@types/node@20.4.4) - vite-node: 0.33.0(@types/node@20.4.4) + vite-node: 0.34.1(@types/node@20.4.4) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 8b616071b495ed8a9893842a617b323424783ec1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 6 Aug 2023 18:57:20 +0000 Subject: [PATCH 076/182] Update dependency rollup to v3.27.2 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 56 +++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index f7aba48a..3aadd535 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.27.0" + "rollup": "3.27.2" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e16334cd..90e55573 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.27.0", + "rollup": "3.27.2", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ea0ac3b..e5b3bf39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.27.0) + version: 15.1.0(rollup@3.27.2) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.27.0) + version: 5.0.2(rollup@3.27.2) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.27.0)(typescript@5.1.6) + version: 11.1.2(rollup@3.27.2)(typescript@5.1.6) rollup: - specifier: 3.27.0 - version: 3.27.0 + specifier: 3.27.2 + version: 3.27.2 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.3 - version: 25.0.3(rollup@3.27.0) + version: 25.0.3(rollup@3.27.2) '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.27.0) + version: 15.1.0(rollup@3.27.2) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.27.0) + version: 5.0.2(rollup@3.27.2) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.27.0)(typescript@5.1.6) + version: 11.1.2(rollup@3.27.2)(typescript@5.1.6) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.27.0 - version: 3.27.0 + specifier: 3.27.2 + version: 3.27.2 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.1 dev: true - /@rollup/plugin-commonjs@25.0.3(rollup@3.27.0): + /@rollup/plugin-commonjs@25.0.3(rollup@3.27.2): resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.0) + '@rollup/pluginutils': 5.0.2(rollup@3.27.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.27.0 + rollup: 3.27.2 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.27.0): + /@rollup/plugin-node-resolve@15.1.0(rollup@3.27.2): resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.0) + '@rollup/pluginutils': 5.0.2(rollup@3.27.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.27.0 + rollup: 3.27.2 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.27.0): + /@rollup/plugin-replace@5.0.2(rollup@3.27.2): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.0) + '@rollup/pluginutils': 5.0.2(rollup@3.27.2) magic-string: 0.27.0 - rollup: 3.27.0 + rollup: 3.27.2 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.27.0)(typescript@5.1.6): + /@rollup/plugin-typescript@11.1.2(rollup@3.27.2)(typescript@5.1.6): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.0) + '@rollup/pluginutils': 5.0.2(rollup@3.27.2) resolve: 1.22.2 - rollup: 3.27.0 + rollup: 3.27.2 typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.27.0): + /@rollup/pluginutils@5.0.2(rollup@3.27.2): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.27.0 + rollup: 3.27.2 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2304,8 +2304,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.27.0: - resolution: {integrity: sha512-aOltLCrYZ0FhJDm7fCqwTjIUEVjWjcydKBV/Zeid6Mn8BWgDCUBBWT5beM5ieForYNo/1ZHuGJdka26kvQ3Gzg==} + /rollup@3.27.2: + resolution: {integrity: sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2712,7 +2712,7 @@ packages: '@types/node': 20.4.4 esbuild: 0.18.16 postcss: 8.4.27 - rollup: 3.27.0 + rollup: 3.27.2 optionalDependencies: fsevents: 2.3.2 dev: true From f3016b4d675ac6e166e42d5c10d984e7cb890064 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 6 Aug 2023 22:51:53 +0000 Subject: [PATCH 077/182] Update dependency eslint-config-prettier to v8.10.0 --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index cd4b21fc..39e94f98 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/eslint-plugin": "6.2.1", "@typescript-eslint/parser": "6.2.1", "eslint": "8.46.0", - "eslint-config-prettier": "8.9.0", + "eslint-config-prettier": "8.10.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.1", "serve": "14.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5b3bf39..b8fe65ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,11 +21,11 @@ importers: specifier: 8.46.0 version: 8.46.0 eslint-config-prettier: - specifier: 8.9.0 - version: 8.9.0(eslint@8.46.0) + specifier: 8.10.0 + version: 8.10.0(eslint@8.46.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.1) + version: 5.0.0(eslint-config-prettier@8.10.0)(eslint@8.46.0)(prettier@3.0.1) prettier: specifier: 3.0.1 version: 3.0.1 @@ -1227,8 +1227,8 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.9.0(eslint@8.46.0): - resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} + /eslint-config-prettier@8.10.0(eslint@8.46.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -1236,7 +1236,7 @@ packages: eslint: 8.46.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0)(eslint@8.46.0)(prettier@3.0.1): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.10.0)(eslint@8.46.0)(prettier@3.0.1): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1251,7 +1251,7 @@ packages: optional: true dependencies: eslint: 8.46.0 - eslint-config-prettier: 8.9.0(eslint@8.46.0) + eslint-config-prettier: 8.10.0(eslint@8.46.0) prettier: 3.0.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 From 644dc7d67942eb52f17b87d82284df30ee366d69 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 01:03:26 +0000 Subject: [PATCH 078/182] Update dependency eslint-config-prettier to v9 --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 39e94f98..32a6cc73 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@typescript-eslint/eslint-plugin": "6.2.1", "@typescript-eslint/parser": "6.2.1", "eslint": "8.46.0", - "eslint-config-prettier": "8.10.0", + "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.1", "serve": "14.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b8fe65ca..48487708 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,11 +21,11 @@ importers: specifier: 8.46.0 version: 8.46.0 eslint-config-prettier: - specifier: 8.10.0 - version: 8.10.0(eslint@8.46.0) + specifier: 9.0.0 + version: 9.0.0(eslint@8.46.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@8.10.0)(eslint@8.46.0)(prettier@3.0.1) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.1) prettier: specifier: 3.0.1 version: 3.0.1 @@ -1227,8 +1227,8 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.10.0(eslint@8.46.0): - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + /eslint-config-prettier@9.0.0(eslint@8.46.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -1236,7 +1236,7 @@ packages: eslint: 8.46.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.10.0)(eslint@8.46.0)(prettier@3.0.1): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.1): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1251,7 +1251,7 @@ packages: optional: true dependencies: eslint: 8.46.0 - eslint-config-prettier: 8.10.0(eslint@8.46.0) + eslint-config-prettier: 9.0.0(eslint@8.46.0) prettier: 3.0.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 From 1d869b5a0665afb0a71d690fbbd3336b8d6206c6 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 7 Aug 2023 12:17:43 +0900 Subject: [PATCH 079/182] 2023.2.0-canary.2 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 32a6cc73..6b99ee4a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.1", + "version": "2023.2.0-canary.2", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -45,4 +45,4 @@ "engines": { "node": ">=16.20.0" } -} \ No newline at end of file +} From 01fc06b503bc2115e80a05d355e851a6d904c8b3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 13 Aug 2023 15:36:27 +0000 Subject: [PATCH 080/182] Update rollup --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 4 +-- pnpm-lock.yaml | 60 +++++++++++++++++++------------------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 3aadd535..738a76f8 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.27.2" + "rollup": "3.28.0" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 90e55573..78445e4d 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -10,11 +10,11 @@ "devDependencies": { "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "@rollup/plugin-commonjs": "25.0.3", + "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.1.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.27.2", + "rollup": "3.28.0", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48487708..9c25e444 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.27.2) + version: 15.1.0(rollup@3.28.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.27.2) + version: 5.0.2(rollup@3.28.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.27.2)(typescript@5.1.6) + version: 11.1.2(rollup@3.28.0)(typescript@5.1.6) rollup: - specifier: 3.27.2 - version: 3.27.2 + specifier: 3.28.0 + version: 3.28.0 packages/go-wasm: {} @@ -70,17 +70,17 @@ importers: version: 0.8.0 devDependencies: '@rollup/plugin-commonjs': - specifier: 25.0.3 - version: 25.0.3(rollup@3.27.2) + specifier: 25.0.4 + version: 25.0.4(rollup@3.28.0) '@rollup/plugin-node-resolve': specifier: 15.1.0 - version: 15.1.0(rollup@3.27.2) + version: 15.1.0(rollup@3.28.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.27.2) + version: 5.0.2(rollup@3.28.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.27.2)(typescript@5.1.6) + version: 11.1.2(rollup@3.28.0)(typescript@5.1.6) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.27.2 - version: 3.27.2 + specifier: 3.28.0 + version: 3.28.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,8 +403,8 @@ packages: tslib: 2.6.1 dev: true - /@rollup/plugin-commonjs@25.0.3(rollup@3.27.2): - resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} + /@rollup/plugin-commonjs@25.0.4(rollup@3.28.0): + resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.68.0||^3.0.0 @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.2) + '@rollup/pluginutils': 5.0.2(rollup@3.28.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.27.2 + rollup: 3.28.0 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.27.2): + /@rollup/plugin-node-resolve@15.1.0(rollup@3.28.0): resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.2) + '@rollup/pluginutils': 5.0.2(rollup@3.28.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.2 - rollup: 3.27.2 + rollup: 3.28.0 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.27.2): + /@rollup/plugin-replace@5.0.2(rollup@3.28.0): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.2) + '@rollup/pluginutils': 5.0.2(rollup@3.28.0) magic-string: 0.27.0 - rollup: 3.27.2 + rollup: 3.28.0 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.27.2)(typescript@5.1.6): + /@rollup/plugin-typescript@11.1.2(rollup@3.28.0)(typescript@5.1.6): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.27.2) + '@rollup/pluginutils': 5.0.2(rollup@3.28.0) resolve: 1.22.2 - rollup: 3.27.2 + rollup: 3.28.0 typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.27.2): + /@rollup/pluginutils@5.0.2(rollup@3.28.0): resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.27.2 + rollup: 3.28.0 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2304,8 +2304,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.27.2: - resolution: {integrity: sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==} + /rollup@3.28.0: + resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2712,7 +2712,7 @@ packages: '@types/node': 20.4.4 esbuild: 0.18.16 postcss: 8.4.27 - rollup: 3.27.2 + rollup: 3.28.0 optionalDependencies: fsevents: 2.3.2 dev: true From 77e402a145cb6c65295b59371818cb5cfcb68193 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 13 Aug 2023 18:10:40 +0000 Subject: [PATCH 081/182] Update eslint --- package.json | 6 +-- pnpm-lock.yaml | 139 +++++++++++++++++++++++++------------------------ 2 files changed, 75 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 6b99ee4a..6faae717 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.2.1", - "@typescript-eslint/parser": "6.2.1", - "eslint": "8.46.0", + "@typescript-eslint/eslint-plugin": "6.3.0", + "@typescript-eslint/parser": "6.3.0", + "eslint": "8.47.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9c25e444..cb1ea1db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.2.1 - version: 6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6) + specifier: 6.3.0 + version: 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.47.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 6.2.1 - version: 6.2.1(eslint@8.46.0)(typescript@5.1.6) + specifier: 6.3.0 + version: 6.3.0(eslint@8.47.0)(typescript@5.1.6) eslint: - specifier: 8.46.0 - version: 8.46.0 + specifier: 8.47.0 + version: 8.47.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.46.0) + version: 9.0.0(eslint@8.47.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.1) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.1) prettier: specifier: 3.0.1 version: 3.0.1 @@ -302,14 +302,14 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.46.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.46.0 - eslint-visitor-keys: 3.4.2 + eslint: 8.47.0 + eslint-visitor-keys: 3.4.3 dev: true /@eslint-community/regexpp@4.6.2: @@ -317,8 +317,8 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.1: - resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -334,8 +334,8 @@ packages: - supports-color dev: true - /@eslint/js@8.46.0: - resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} + /@eslint/js@8.47.0: + resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.2.1(@typescript-eslint/parser@6.2.1)(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-iZVM/ALid9kO0+I81pnp1xmYiFyqibAHzrqX4q5YvvVEyJqY+e6rfTXSCsc2jUxGNqJqTfFSSij/NFkZBiBzLw==} + /@typescript-eslint/eslint-plugin@6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-IZYjYZ0ifGSLZbwMqIip/nOamFiWJ9AH+T/GYNZBWkVcyNQOFGtSMoWV7RvY4poYCMZ/4lHzNl796WOSNxmk8A==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,13 +553,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/type-utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/parser': 6.3.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.3.0 + '@typescript-eslint/type-utils': 6.3.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.3.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.47.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -571,8 +571,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.2.1(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-Ld+uL1kYFU8e6btqBFpsHkwQ35rw30IWpdQxgOqOh4NfxSDH6uCkah1ks8R/RgQqI5hHPXMaLy9fbFseIe+dIg==} + /@typescript-eslint/parser@6.3.0(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -581,27 +581,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/scope-manager': 6.3.0 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.47.0 typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.2.1: - resolution: {integrity: sha512-UCqBF9WFqv64xNsIEPfBtenbfodPXsJ3nPAr55mGPkQIkiQvgoWNo+astj9ZUfJfVKiYgAZDMnM6dIpsxUMp3Q==} + /@typescript-eslint/scope-manager@6.3.0: + resolution: {integrity: sha512-WlNFgBEuGu74ahrXzgefiz/QlVb+qg8KDTpknKwR7hMH+lQygWyx0CQFoUmMn1zDkQjTBBIn75IxtWss77iBIQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/visitor-keys': 6.3.0 dev: true - /@typescript-eslint/type-utils@6.2.1(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-fTfCgomBMIgu2Dh2Or3gMYgoNAnQm3RLtRp+jP7A8fY+LJ2+9PNpi5p6QB5C4RSP+U3cjI0vDlI3mspAkpPVbQ==} + /@typescript-eslint/type-utils@6.3.0(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-7Oj+1ox1T2Yc8PKpBvOKWhoI/4rWFd1j7FA/rPE0lbBPXTKjdbtC+7Ev0SeBjEKkIhKWVeZSP+mR7y1Db1CdfQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -610,23 +610,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.1(eslint@8.46.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.3.0(eslint@8.47.0)(typescript@5.1.6) debug: 4.3.4 - eslint: 8.46.0 + eslint: 8.47.0 ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.2.1: - resolution: {integrity: sha512-528bGcoelrpw+sETlyM91k51Arl2ajbNT9L4JwoXE2dvRe1yd8Q64E4OL7vHYw31mlnVsf+BeeLyAZUEQtqahQ==} + /@typescript-eslint/types@6.3.0: + resolution: {integrity: sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.2.1(typescript@5.1.6): - resolution: {integrity: sha512-G+UJeQx9AKBHRQBpmvr8T/3K5bJa485eu+4tQBxFq0KoT22+jJyzo1B50JDT9QdC1DEmWQfdKsa8ybiNWYsi0Q==} + /@typescript-eslint/typescript-estree@6.3.0(typescript@5.1.6): + resolution: {integrity: sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -634,8 +634,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/visitor-keys': 6.2.1 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/visitor-keys': 6.3.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -646,30 +646,30 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.2.1(eslint@8.46.0)(typescript@5.1.6): - resolution: {integrity: sha512-eBIXQeupYmxVB6S7x+B9SdBeB6qIdXKjgQBge2J+Ouv8h9Cxm5dHf/gfAZA6dkMaag+03HdbVInuXMmqFB/lKQ==} + /@typescript-eslint/utils@6.3.0(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-hLLg3BZE07XHnpzglNBG8P/IXq/ZVXraEbgY7FM0Cnc1ehM8RMdn9mat3LubJ3KBeYXXPxV1nugWbQPjGeJk6Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.1 - '@typescript-eslint/types': 6.2.1 - '@typescript-eslint/typescript-estree': 6.2.1(typescript@5.1.6) - eslint: 8.46.0 + '@typescript-eslint/scope-manager': 6.3.0 + '@typescript-eslint/types': 6.3.0 + '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) + eslint: 8.47.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.2.1: - resolution: {integrity: sha512-iTN6w3k2JEZ7cyVdZJTVJx2Lv7t6zFA8DCrJEHD2mwfc16AEvvBWVhbFh34XyG2NORCd0viIgQY1+u7kPI0WpA==} + /@typescript-eslint/visitor-keys@6.3.0: + resolution: {integrity: sha512-kEhRRj7HnvaSjux1J9+7dBen15CdWmDnwrpyiHsFX6Qx2iW5LOBUgNefOFeh2PjWPlNwN8TOn6+4eBU3J/gupw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.2.1 + '@typescript-eslint/types': 6.3.0 eslint-visitor-keys: 3.4.2 dev: true @@ -1227,16 +1227,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.46.0): + /eslint-config-prettier@9.0.0(eslint@8.47.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.46.0 + eslint: 8.47.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.46.0)(prettier@3.0.1): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.1): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1250,8 +1250,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.46.0 - eslint-config-prettier: 9.0.0(eslint@8.46.0) + eslint: 8.47.0 + eslint-config-prettier: 9.0.0(eslint@8.47.0) prettier: 3.0.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1270,15 +1270,20 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.46.0: - resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.47.0: + resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.1 - '@eslint/js': 8.46.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.47.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1289,7 +1294,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 @@ -1322,7 +1327,7 @@ packages: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 dev: true /esquery@1.5.0: From e1137148c0df92402a43beffaae708014a59099a Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 16 Aug 2023 10:42:22 +0900 Subject: [PATCH 082/182] pnpm up --latest --- package.json | 6 +-- pnpm-lock.yaml | 112 ++++++++++++++++++++++--------------------------- 2 files changed, 54 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 6faae717..f5ed5d3f 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,12 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.3.0", - "@typescript-eslint/parser": "6.3.0", + "@typescript-eslint/eslint-plugin": "6.4.0", + "@typescript-eslint/parser": "6.4.0", "eslint": "8.47.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", - "prettier": "3.0.1", + "prettier": "3.0.2", "serve": "14.2.0", "typedoc": "0.24.8", "typescript": "5.1.6" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb1ea1db..c6076f03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.3.0 - version: 6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.47.0)(typescript@5.1.6) + specifier: 6.4.0 + version: 6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: 6.3.0 - version: 6.3.0(eslint@8.47.0)(typescript@5.1.6) + specifier: 6.4.0 + version: 6.4.0(eslint@8.47.0)(typescript@5.1.6) eslint: specifier: 8.47.0 version: 8.47.0 @@ -25,10 +25,10 @@ importers: version: 9.0.0(eslint@8.47.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.1) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.2) prettier: - specifier: 3.0.1 - version: 3.0.1 + specifier: 3.0.2 + version: 3.0.2 serve: specifier: 14.2.0 version: 14.2.0 @@ -324,7 +324,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.20.0 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.3.0(@typescript-eslint/parser@6.3.0)(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-IZYjYZ0ifGSLZbwMqIip/nOamFiWJ9AH+T/GYNZBWkVcyNQOFGtSMoWV7RvY4poYCMZ/4lHzNl796WOSNxmk8A==} + /@typescript-eslint/eslint-plugin@6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-62o2Hmc7Gs3p8SLfbXcipjWAa6qk2wZGChXG2JbBtYpwSRmti/9KHLqfbLs9uDigOexG+3PaQ9G2g3201FWLKg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,17 +553,16 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.3.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/type-utils': 6.3.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.3.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.4.0 + '@typescript-eslint/type-utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.4.0 debug: 4.3.4 eslint: 8.47.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 - natural-compare-lite: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.1(typescript@5.1.6) typescript: 5.1.6 @@ -571,8 +570,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.3.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-ibP+y2Gr6p0qsUkhs7InMdXrwldjxZw66wpcQq9/PzAroM45wdwyu81T+7RibNCh8oc0AgrsyCwJByncY0Ongg==} + /@typescript-eslint/parser@6.4.0(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -581,10 +580,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/scope-manager': 6.4.0 + '@typescript-eslint/types': 6.4.0 + '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.4.0 debug: 4.3.4 eslint: 8.47.0 typescript: 5.1.6 @@ -592,16 +591,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.3.0: - resolution: {integrity: sha512-WlNFgBEuGu74ahrXzgefiz/QlVb+qg8KDTpknKwR7hMH+lQygWyx0CQFoUmMn1zDkQjTBBIn75IxtWss77iBIQ==} + /@typescript-eslint/scope-manager@6.4.0: + resolution: {integrity: sha512-TUS7vaKkPWDVvl7GDNHFQMsMruD+zhkd3SdVW0d7b+7Zo+bd/hXJQ8nsiUZMi1jloWo6c9qt3B7Sqo+flC1nig==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/types': 6.4.0 + '@typescript-eslint/visitor-keys': 6.4.0 dev: true - /@typescript-eslint/type-utils@6.3.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-7Oj+1ox1T2Yc8PKpBvOKWhoI/4rWFd1j7FA/rPE0lbBPXTKjdbtC+7Ev0SeBjEKkIhKWVeZSP+mR7y1Db1CdfQ==} + /@typescript-eslint/type-utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-TvqrUFFyGY0cX3WgDHcdl2/mMCWCDv/0thTtx/ODMY1QhEiyFtv/OlLaNIiYLwRpAxAtOLOY9SUf1H3Q3dlwAg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -610,8 +609,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.3.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.47.0 ts-api-utils: 1.0.1(typescript@5.1.6) @@ -620,13 +619,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.3.0: - resolution: {integrity: sha512-K6TZOvfVyc7MO9j60MkRNWyFSf86IbOatTKGrpTQnzarDZPYPVy0oe3myTMq7VjhfsUAbNUW8I5s+2lZvtx1gg==} + /@typescript-eslint/types@6.4.0: + resolution: {integrity: sha512-+FV9kVFrS7w78YtzkIsNSoYsnOtrYVnKWSTVXoL1761CsCRv5wpDOINgsXpxD67YCLZtVQekDDyaxfjVWUJmmg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.3.0(typescript@5.1.6): - resolution: {integrity: sha512-Xh4NVDaC4eYKY4O3QGPuQNp5NxBAlEvNQYOqJquR2MePNxO11E5K3t5x4M4Mx53IZvtpW+mBxIT0s274fLUocg==} + /@typescript-eslint/typescript-estree@6.4.0(typescript@5.1.6): + resolution: {integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -634,8 +633,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/visitor-keys': 6.3.0 + '@typescript-eslint/types': 6.4.0 + '@typescript-eslint/visitor-keys': 6.4.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -646,8 +645,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.3.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-hLLg3BZE07XHnpzglNBG8P/IXq/ZVXraEbgY7FM0Cnc1ehM8RMdn9mat3LubJ3KBeYXXPxV1nugWbQPjGeJk6Q==} + /@typescript-eslint/utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): + resolution: {integrity: sha512-BvvwryBQpECPGo8PwF/y/q+yacg8Hn/2XS+DqL/oRsOPK+RPt29h5Ui5dqOKHDlbXrAeHUTnyG3wZA0KTDxRZw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -655,9 +654,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.3.0 - '@typescript-eslint/types': 6.3.0 - '@typescript-eslint/typescript-estree': 6.3.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.4.0 + '@typescript-eslint/types': 6.4.0 + '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) eslint: 8.47.0 semver: 7.5.4 transitivePeerDependencies: @@ -665,12 +664,12 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.3.0: - resolution: {integrity: sha512-kEhRRj7HnvaSjux1J9+7dBen15CdWmDnwrpyiHsFX6Qx2iW5LOBUgNefOFeh2PjWPlNwN8TOn6+4eBU3J/gupw==} + /@typescript-eslint/visitor-keys@6.4.0: + resolution: {integrity: sha512-yJSfyT+uJm+JRDWYRYdCm2i+pmvXJSMtPR9Cq5/XQs4QIgNoLcoRtDdzsLbLsFM/c6um6ohQkg/MLxWvoIndJA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.3.0 - eslint-visitor-keys: 3.4.2 + '@typescript-eslint/types': 6.4.0 + eslint-visitor-keys: 3.4.3 dev: true /@vitest/expect@0.34.1: @@ -1236,7 +1235,7 @@ packages: eslint: 8.47.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.1): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.2): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1252,7 +1251,7 @@ packages: dependencies: eslint: 8.47.0 eslint-config-prettier: 9.0.0(eslint@8.47.0) - prettier: 3.0.1 + prettier: 3.0.2 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true @@ -1265,11 +1264,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.2: - resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1302,7 +1296,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -1535,8 +1529,8 @@ packages: once: 1.4.0 dev: true - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -1996,10 +1990,6 @@ packages: hasBin: true dev: true - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -2198,8 +2188,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.1: - resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + /prettier@3.0.2: + resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} engines: {node: '>=14'} hasBin: true dev: true From 625af8d2bcd2bffb7b269a7ad191ad499fe5510c Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 16 Aug 2023 10:42:41 +0900 Subject: [PATCH 083/182] pnpm up --latest -r --- pnpm-lock.yaml | 220 ++++++++++++++++++++++++------------------------- 1 file changed, 110 insertions(+), 110 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c6076f03..badb4608 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,8 +104,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@esbuild/android-arm64@0.18.16: - resolution: {integrity: sha512-wsCqSPqLz+6Ov+OM4EthU43DyYVVyfn15S4j1bJzylDpc1r1jZFFfJQNfDuT8SlgwuqpmpJXK4uPlHGw6ve7eA==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -113,8 +113,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.16: - resolution: {integrity: sha512-gCHjjQmA8L0soklKbLKA6pgsLk1byULuHe94lkZDzcO3/Ta+bbeewJioEn1Fr7kgy9NWNFy/C+MrBwC6I/WCug==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -122,8 +122,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.16: - resolution: {integrity: sha512-ldsTXolyA3eTQ1//4DS+E15xl0H/3DTRJaRL0/0PgkqDsI0fV/FlOtD+h0u/AUJr+eOTlZv4aC9gvfppo3C4sw==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -131,8 +131,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.16: - resolution: {integrity: sha512-aBxruWCII+OtluORR/KvisEw0ALuw/qDQWvkoosA+c/ngC/Kwk0lLaZ+B++LLS481/VdydB2u6tYpWxUfnLAIw==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -140,8 +140,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.16: - resolution: {integrity: sha512-6w4Dbue280+rp3LnkgmriS1icOUZDyPuZo/9VsuMUTns7SYEiOaJ7Ca1cbhu9KVObAWfmdjUl4gwy9TIgiO5eA==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -149,8 +149,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.16: - resolution: {integrity: sha512-x35fCebhe9s979DGKbVAwXUOcTmCIE32AIqB9CB1GralMIvxdnMLAw5CnID17ipEw9/3MvDsusj/cspYt2ZLNQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -158,8 +158,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.16: - resolution: {integrity: sha512-YM98f+PeNXF3GbxIJlUsj+McUWG1irguBHkszCIwfr3BXtXZsXo0vqybjUDFfu9a8Wr7uUD/YSmHib+EeGAFlg==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -167,8 +167,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.16: - resolution: {integrity: sha512-XIqhNUxJiuy+zsR77+H5Z2f7s4YRlriSJKtvx99nJuG5ATuJPjmZ9n0ANgnGlPCpXGSReFpgcJ7O3SMtzIFeiQ==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -176,8 +176,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.16: - resolution: {integrity: sha512-b5ABb+5Ha2C9JkeZXV+b+OruR1tJ33ePmv9ZwMeETSEKlmu/WJ45XTTG+l6a2KDsQtJJ66qo/hbSGBtk0XVLHw==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -185,8 +185,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.16: - resolution: {integrity: sha512-no+pfEpwnRvIyH+txbBAWtjxPU9grslmTBfsmDndj7bnBmr55rOo/PfQmRfz7Qg9isswt1FP5hBbWb23fRWnow==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -194,8 +194,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.16: - resolution: {integrity: sha512-Zbnczs9ZXjmo0oZSS0zbNlJbcwKXa/fcNhYQjahDs4Xg18UumpXG/lwM2lcSvHS3mTrRyCYZvJbmzYc4laRI1g==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -203,8 +203,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.16: - resolution: {integrity: sha512-YMF7hih1HVR/hQVa/ot4UVffc5ZlrzEb3k2ip0nZr1w6fnYypll9td2qcoMLvd3o8j3y6EbJM3MyIcXIVzXvQQ==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -212,8 +212,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.16: - resolution: {integrity: sha512-Wkz++LZ29lDwUyTSEnzDaaP5OveOgTU69q9IyIw9WqLRxM4BjTBjz9un4G6TOvehWpf/J3gYVFN96TjGHrbcNQ==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -221,8 +221,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.16: - resolution: {integrity: sha512-LFMKZ30tk78/mUv1ygvIP+568bwf4oN6reG/uczXnz6SvFn4e2QUFpUpZY9iSJT6Qpgstrhef/nMykIXZtZWGQ==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -230,8 +230,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.16: - resolution: {integrity: sha512-3ZC0BgyYHYKfZo3AV2/66TD/I9tlSBaW7eWTEIkrQQKfJIifKMMttXl9FrAg+UT0SGYsCRLI35Gwdmm96vlOjg==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -239,8 +239,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.16: - resolution: {integrity: sha512-xu86B3647DihHJHv/wx3NCz2Dg1gjQ8bbf9cVYZzWKY+gsvxYmn/lnVlqDRazObc3UMwoHpUhNYaZset4X8IPA==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -248,8 +248,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.16: - resolution: {integrity: sha512-uVAgpimx9Ffw3xowtg/7qQPwHFx94yCje+DoBx+LNm2ePDpQXHrzE+Sb0Si2VBObYz+LcRps15cq+95YM7gkUw==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -257,8 +257,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.16: - resolution: {integrity: sha512-6OjCQM9wf7z8/MBi6BOWaTL2AS/SZudsZtBziXMtNI8r/U41AxS9x7jn0ATOwVy08OotwkPqGRMkpPR2wcTJXA==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -266,8 +266,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.16: - resolution: {integrity: sha512-ZoNkruFYJp9d1LbUYCh8awgQDvB9uOMZqlQ+gGEZR7v6C+N6u7vPr86c+Chih8niBR81Q/bHOSKGBK3brJyvkQ==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -275,8 +275,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.16: - resolution: {integrity: sha512-+j4anzQ9hrs+iqO+/wa8UE6TVkKua1pXUb0XWFOx0FiAj6R9INJ+WE//1/Xo6FG1vB5EpH3ko+XcgwiDXTxcdw==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -284,8 +284,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.16: - resolution: {integrity: sha512-5PFPmq3sSKTp9cT9dzvI67WNfRZGvEVctcZa1KGjDDu4n3H8k59Inbk0du1fz0KrAbKKNpJbdFXQMDUz7BG4rQ==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -293,8 +293,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.16: - resolution: {integrity: sha512-sCIVrrtcWN5Ua7jYXNG1xD199IalrbfV2+0k/2Zf2OyV2FtnQnMgdzgpRAbi4AWlKJj1jkX+M+fEGPQj6BQB4w==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -412,7 +412,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.2 + resolve: 1.22.4 rollup: 3.28.0 dev: true @@ -448,7 +448,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.0) magic-string: 0.27.0 rollup: 3.28.0 dev: true @@ -466,14 +466,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.28.0) - resolve: 1.22.2 + '@rollup/pluginutils': 5.0.3(rollup@3.28.0) + resolve: 1.22.4 rollup: 3.28.0 typescript: 5.1.6 dev: true - /@rollup/pluginutils@5.0.2(rollup@3.28.0): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + /@rollup/pluginutils@5.0.3(rollup@3.28.0): + resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 @@ -518,7 +518,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.4.4 + '@types/node': 20.5.0 dev: true /@types/json-schema@7.0.12: @@ -529,8 +529,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.4.4: - resolution: {integrity: sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==} + /@types/node@20.5.0: + resolution: {integrity: sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==} dev: true /@types/resolve@1.20.2: @@ -691,9 +691,9 @@ packages: /@vitest/snapshot@0.34.1: resolution: {integrity: sha512-0O9LfLU0114OqdF8lENlrLsnn024Tb1CsS9UwG0YMWY2oGTQfPtkW+B/7ieyv0X9R2Oijhi3caB1xgGgEgclSQ==} dependencies: - magic-string: 0.30.1 + magic-string: 0.30.2 pathe: 1.1.1 - pretty-format: 29.6.1 + pretty-format: 29.6.2 dev: true /@vitest/spy@0.34.1: @@ -707,7 +707,7 @@ packages: dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 - pretty-format: 29.6.1 + pretty-format: 29.6.2 dev: true /@zeit/schemas@2.29.0: @@ -1191,34 +1191,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.18.16: - resolution: {integrity: sha512-1xLsOXrDqwdHxyXb/x/SOyg59jpf/SH7YMvU5RNSU7z3TInaASNJWNFJ6iRvLvLETZMasF3d1DdZLg7sgRimRQ==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true 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 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 dev: true /escape-string-regexp@4.0.0: @@ -1672,8 +1672,8 @@ packages: builtin-modules: 3.3.0 dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 dev: true @@ -1879,8 +1879,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.1: - resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + /magic-string@0.30.2: + resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -1973,7 +1973,7 @@ packages: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.1.2 + ufo: 1.2.0 dev: true /ms@2.0.0: @@ -2167,8 +2167,8 @@ packages: pathe: 1.1.1 dev: true - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + /postcss@8.4.28: + resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -2194,8 +2194,8 @@ packages: hasBin: true dev: true - /pretty-format@29.6.1: - resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} + /pretty-format@29.6.2: + resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.0 @@ -2271,11 +2271,11 @@ packages: engines: {node: '>=4'} dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -2483,8 +2483,8 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.0.1: - resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==} + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: acorn: 8.10.0 dev: true @@ -2615,8 +2615,8 @@ packages: hasBin: true dev: true - /ufo@1.1.2: - resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + /ufo@1.2.0: + resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} dev: true /universalify@0.2.0: @@ -2654,7 +2654,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.1(@types/node@20.4.4): + /vite-node@0.34.1(@types/node@20.5.0): resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2664,7 +2664,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.6(@types/node@20.4.4) + vite: 4.4.9(@types/node@20.5.0) transitivePeerDependencies: - '@types/node' - less @@ -2676,8 +2676,8 @@ packages: - terser dev: true - /vite@4.4.6(@types/node@20.4.4): - resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==} + /vite@4.4.9(@types/node@20.5.0): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2704,9 +2704,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.4.4 - esbuild: 0.18.16 - postcss: 8.4.27 + '@types/node': 20.5.0 + esbuild: 0.18.20 + postcss: 8.4.28 rollup: 3.28.0 optionalDependencies: fsevents: 2.3.2 @@ -2745,7 +2745,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.4.4 + '@types/node': 20.5.0 '@vitest/expect': 0.34.1 '@vitest/runner': 0.34.1 '@vitest/snapshot': 0.34.1 @@ -2758,15 +2758,15 @@ packages: debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.1 + magic-string: 0.30.2 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.3.3 - strip-literal: 1.0.1 + strip-literal: 1.3.0 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.4.6(@types/node@20.4.4) - vite-node: 0.34.1(@types/node@20.4.4) + vite: 4.4.9(@types/node@20.5.0) + vite-node: 0.34.1(@types/node@20.5.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 87f0a91e8b2614481a393266e3e560066dce4ac7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 20 Aug 2023 15:29:46 +0000 Subject: [PATCH 084/182] Update dependency vitest to v0.34.2 --- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 50 +++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 78445e4d..cbd129b8 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -16,7 +16,7 @@ "@rollup/plugin-typescript": "11.1.2", "rollup": "3.28.0", "rollup-plugin-delete": "2.0.0", - "vitest": "0.34.1" + "vitest": "0.34.2" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index badb4608..1daec0d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifier: 2.0.0 version: 2.0.0 vitest: - specifier: 0.34.1 - version: 0.34.1(jsdom@22.1.0) + specifier: 0.34.2 + version: 0.34.2(jsdom@22.1.0) packages: @@ -672,38 +672,38 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitest/expect@0.34.1: - resolution: {integrity: sha512-q2CD8+XIsQ+tHwypnoCk8Mnv5e6afLFvinVGCq3/BOT4kQdVQmY6rRfyKkwcg635lbliLPqbunXZr+L1ssUWiQ==} + /@vitest/expect@0.34.2: + resolution: {integrity: sha512-EZm2dMNlLyIfDMha17QHSQcg2KjeAZaXd65fpPzXY5bvnfx10Lcaz3N55uEe8PhF+w4pw+hmrlHLLlRn9vkBJg==} dependencies: - '@vitest/spy': 0.34.1 - '@vitest/utils': 0.34.1 + '@vitest/spy': 0.34.2 + '@vitest/utils': 0.34.2 chai: 4.3.7 dev: true - /@vitest/runner@0.34.1: - resolution: {integrity: sha512-YfQMpYzDsYB7yqgmlxZ06NI4LurHWfrH7Wy3Pvf/z/vwUSgq1zLAb1lWcItCzQG+NVox+VvzlKQrYEXb47645g==} + /@vitest/runner@0.34.2: + resolution: {integrity: sha512-8ydGPACVX5tK3Dl0SUwxfdg02h+togDNeQX3iXVFYgzF5odxvaou7HnquALFZkyVuYskoaHUOqOyOLpOEj5XTA==} dependencies: - '@vitest/utils': 0.34.1 + '@vitest/utils': 0.34.2 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.1: - resolution: {integrity: sha512-0O9LfLU0114OqdF8lENlrLsnn024Tb1CsS9UwG0YMWY2oGTQfPtkW+B/7ieyv0X9R2Oijhi3caB1xgGgEgclSQ==} + /@vitest/snapshot@0.34.2: + resolution: {integrity: sha512-qhQ+xy3u4mwwLxltS4Pd4SR+XHv4EajiTPNY3jkIBLUApE6/ce72neJPSUQZ7bL3EBuKI+NhvzhGj3n5baRQUQ==} dependencies: magic-string: 0.30.2 pathe: 1.1.1 pretty-format: 29.6.2 dev: true - /@vitest/spy@0.34.1: - resolution: {integrity: sha512-UT4WcI3EAPUNO8n6y9QoEqynGGEPmmRxC+cLzneFFXpmacivjHZsNbiKD88KUScv5DCHVDgdBsLD7O7s1enFcQ==} + /@vitest/spy@0.34.2: + resolution: {integrity: sha512-yd4L9OhfH6l0Av7iK3sPb3MykhtcRN5c5K5vm1nTbuN7gYn+yvUVVsyvzpHrjqS7EWqn9WsPJb7+0c3iuY60tA==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.1: - resolution: {integrity: sha512-/ql9dsFi4iuEbiNcjNHQWXBum7aL8pyhxvfnD9gNtbjR9fUKAjxhj4AA3yfLXg6gJpMGGecvtF8Au2G9y3q47Q==} + /@vitest/utils@0.34.2: + resolution: {integrity: sha512-Lzw+kAsTPubhoQDp1uVAOP6DhNia1GMDsI9jgB0yMn+/nDaPieYQ88lKqz/gGjSHL4zwOItvpehec9OY+rS73w==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 @@ -2654,8 +2654,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.1(@types/node@20.5.0): - resolution: {integrity: sha512-odAZAL9xFMuAg8aWd7nSPT+hU8u2r9gU3LRm9QKjxBEF2rRdWpMuqkrkjvyVQEdNFiBctqr2Gg4uJYizm5Le6w==} + /vite-node@0.34.2(@types/node@20.5.0): + resolution: {integrity: sha512-JtW249Zm3FB+F7pQfH56uWSdlltCo1IOkZW5oHBzeQo0iX4jtC7o1t9aILMGd9kVekXBP2lfJBEQt9rBh07ebA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2712,8 +2712,8 @@ packages: fsevents: 2.3.2 dev: true - /vitest@0.34.1(jsdom@22.1.0): - resolution: {integrity: sha512-G1PzuBEq9A75XSU88yO5G4vPT20UovbC/2osB2KEuV/FisSIIsw7m5y2xMdB7RsAGHAfg2lPmp2qKr3KWliVlQ==} + /vitest@0.34.2(jsdom@22.1.0): + resolution: {integrity: sha512-WgaIvBbjsSYMq/oiMlXUI7KflELmzM43BEvkdC/8b5CAod4ryAiY2z8uR6Crbi5Pjnu5oOmhKa9sy7uk6paBxQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2746,11 +2746,11 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.5.0 - '@vitest/expect': 0.34.1 - '@vitest/runner': 0.34.1 - '@vitest/snapshot': 0.34.1 - '@vitest/spy': 0.34.1 - '@vitest/utils': 0.34.1 + '@vitest/expect': 0.34.2 + '@vitest/runner': 0.34.2 + '@vitest/snapshot': 0.34.2 + '@vitest/spy': 0.34.2 + '@vitest/utils': 0.34.2 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -2766,7 +2766,7 @@ packages: tinybench: 2.5.0 tinypool: 0.7.0 vite: 4.4.9(@types/node@20.5.0) - vite-node: 0.34.1(@types/node@20.5.0) + vite-node: 0.34.2(@types/node@20.5.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 892273eb19c296c0c68d8138147d9dad8eff033c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 20 Aug 2023 19:42:15 +0000 Subject: [PATCH 085/182] Update dependency @rollup/plugin-node-resolve to v15.2.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 738a76f8..eb14f216 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -16,7 +16,7 @@ "test": "echo \"no test\"" }, "devDependencies": { - "@rollup/plugin-node-resolve": "15.1.0", + "@rollup/plugin-node-resolve": "15.2.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", "rollup": "3.28.0" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index cbd129b8..04b96ee7 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -11,7 +11,7 @@ "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.1.0", + "@rollup/plugin-node-resolve": "15.2.0", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.2", "rollup": "3.28.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1daec0d9..d1e13a98 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: version: link:../go-wasm devDependencies: '@rollup/plugin-node-resolve': - specifier: 15.1.0 - version: 15.1.0(rollup@3.28.0) + specifier: 15.2.0 + version: 15.2.0(rollup@3.28.0) '@rollup/plugin-replace': specifier: 5.0.2 version: 5.0.2(rollup@3.28.0) @@ -73,8 +73,8 @@ importers: specifier: 25.0.4 version: 25.0.4(rollup@3.28.0) '@rollup/plugin-node-resolve': - specifier: 15.1.0 - version: 15.1.0(rollup@3.28.0) + specifier: 15.2.0 + version: 15.2.0(rollup@3.28.0) '@rollup/plugin-replace': specifier: 5.0.2 version: 5.0.2(rollup@3.28.0) @@ -421,8 +421,8 @@ packages: rollup: 3.28.0 dev: true - /@rollup/plugin-node-resolve@15.1.0(rollup@3.28.0): - resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} + /@rollup/plugin-node-resolve@15.2.0(rollup@3.28.0): + resolution: {integrity: sha512-mKur03xNGT8O9ODO6FtT43ITGqHWZbKPdVJHZb+iV9QYcdlhUUB0wgknvA4KCUmC5oHJF6O2W1EgmyOQyVUI4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 From f67a0bcea279828a1d882d4003dd5b88d5722018 Mon Sep 17 00:00:00 2001 From: voluntas Date: Sun, 27 Aug 2023 19:01:44 +0900 Subject: [PATCH 086/182] =?UTF-8?q?=E4=BE=9D=E5=AD=98=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=96=E3=83=A9=E3=83=AA=E3=82=92=E6=9B=B4=E6=96=B0=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 12 +-- pnpm-lock.yaml | 223 ++++++++++++++++++++++++++----------------------- 2 files changed, 123 insertions(+), 112 deletions(-) diff --git a/package.json b/package.json index f5ed5d3f..c58d0ff5 100644 --- a/package.json +++ b/package.json @@ -28,15 +28,15 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.4.0", - "@typescript-eslint/parser": "6.4.0", - "eslint": "8.47.0", + "@typescript-eslint/eslint-plugin": "6.4.1", + "@typescript-eslint/parser": "6.4.1", + "eslint": "8.48.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.2", - "serve": "14.2.0", - "typedoc": "0.24.8", - "typescript": "5.1.6" + "serve": "14.2.1", + "typedoc": "0.25.0", + "typescript": "5.2.2" }, "resolutions": { "get-pkg-repo": "5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1e13a98..2d7b2e15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,32 +12,32 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.4.0 - version: 6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6) + specifier: 6.4.1 + version: 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.4.0 - version: 6.4.0(eslint@8.47.0)(typescript@5.1.6) + specifier: 6.4.1 + version: 6.4.1(eslint@8.48.0)(typescript@5.2.2) eslint: - specifier: 8.47.0 - version: 8.47.0 + specifier: 8.48.0 + version: 8.48.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.47.0) + version: 9.0.0(eslint@8.48.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.2) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.2) prettier: specifier: 3.0.2 version: 3.0.2 serve: - specifier: 14.2.0 - version: 14.2.0 + specifier: 14.2.1 + version: 14.2.1 typedoc: - specifier: 0.24.8 - version: 0.24.8(typescript@5.1.6) + specifier: 0.25.0 + version: 0.25.0(typescript@5.2.2) typescript: - specifier: 5.1.6 - version: 5.1.6 + specifier: 5.2.2 + version: 5.2.2 packages/e2ee: dependencies: @@ -53,7 +53,7 @@ importers: version: 5.0.2(rollup@3.28.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.28.0)(typescript@5.1.6) + version: 11.1.2(rollup@3.28.0)(typescript@5.2.2) rollup: specifier: 3.28.0 version: 3.28.0 @@ -80,7 +80,7 @@ importers: version: 5.0.2(rollup@3.28.0) '@rollup/plugin-typescript': specifier: 11.1.2 - version: 11.1.2(rollup@3.28.0)(typescript@5.1.6) + version: 11.1.2(rollup@3.28.0)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -302,18 +302,18 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.47.0 + eslint: 8.48.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.6.2: - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -334,8 +334,8 @@ packages: - supports-color dev: true - /@eslint/js@8.47.0: - resolution: {integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -400,7 +400,7 @@ packages: is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 - tslib: 2.6.1 + tslib: 2.6.2 dev: true /@rollup/plugin-commonjs@25.0.4(rollup@3.28.0): @@ -453,7 +453,7 @@ packages: rollup: 3.28.0 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.28.0)(typescript@5.1.6): + /@rollup/plugin-typescript@11.1.2(rollup@3.28.0)(typescript@5.2.2): resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} engines: {node: '>=14.0.0'} peerDependencies: @@ -469,7 +469,7 @@ packages: '@rollup/pluginutils': 5.0.3(rollup@3.28.0) resolve: 1.22.4 rollup: 3.28.0 - typescript: 5.1.6 + typescript: 5.2.2 dev: true /@rollup/pluginutils@5.0.3(rollup@3.28.0): @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.4.0(@typescript-eslint/parser@6.4.0)(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-62o2Hmc7Gs3p8SLfbXcipjWAa6qk2wZGChXG2JbBtYpwSRmti/9KHLqfbLs9uDigOexG+3PaQ9G2g3201FWLKg==} + /@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -552,26 +552,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.4.0 - '@typescript-eslint/type-utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.4.0 + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.4.1 + '@typescript-eslint/type-utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.4.1 debug: 4.3.4 - eslint: 8.47.0 + eslint: 8.48.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.4.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==} + /@typescript-eslint/parser@6.4.1(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,27 +580,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.4.0 - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/scope-manager': 6.4.1 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.4.1 debug: 4.3.4 - eslint: 8.47.0 - typescript: 5.1.6 + eslint: 8.48.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.4.0: - resolution: {integrity: sha512-TUS7vaKkPWDVvl7GDNHFQMsMruD+zhkd3SdVW0d7b+7Zo+bd/hXJQ8nsiUZMi1jloWo6c9qt3B7Sqo+flC1nig==} + /@typescript-eslint/scope-manager@6.4.1: + resolution: {integrity: sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/visitor-keys': 6.4.1 dev: true - /@typescript-eslint/type-utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-TvqrUFFyGY0cX3WgDHcdl2/mMCWCDv/0thTtx/ODMY1QhEiyFtv/OlLaNIiYLwRpAxAtOLOY9SUf1H3Q3dlwAg==} + /@typescript-eslint/type-utils@6.4.1(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,23 +609,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.4.0(eslint@8.47.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) + '@typescript-eslint/utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.47.0 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + eslint: 8.48.0 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.4.0: - resolution: {integrity: sha512-+FV9kVFrS7w78YtzkIsNSoYsnOtrYVnKWSTVXoL1761CsCRv5wpDOINgsXpxD67YCLZtVQekDDyaxfjVWUJmmg==} + /@typescript-eslint/types@6.4.1: + resolution: {integrity: sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.4.0(typescript@5.1.6): - resolution: {integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==} + /@typescript-eslint/typescript-estree@6.4.1(typescript@5.2.2): + resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,42 +633,42 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/visitor-keys': 6.4.0 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/visitor-keys': 6.4.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.4.0(eslint@8.47.0)(typescript@5.1.6): - resolution: {integrity: sha512-BvvwryBQpECPGo8PwF/y/q+yacg8Hn/2XS+DqL/oRsOPK+RPt29h5Ui5dqOKHDlbXrAeHUTnyG3wZA0KTDxRZw==} + /@typescript-eslint/utils@6.4.1(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.4.0 - '@typescript-eslint/types': 6.4.0 - '@typescript-eslint/typescript-estree': 6.4.0(typescript@5.1.6) - eslint: 8.47.0 + '@typescript-eslint/scope-manager': 6.4.1 + '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) + eslint: 8.48.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.4.0: - resolution: {integrity: sha512-yJSfyT+uJm+JRDWYRYdCm2i+pmvXJSMtPR9Cq5/XQs4QIgNoLcoRtDdzsLbLsFM/c6um6ohQkg/MLxWvoIndJA==} + /@typescript-eslint/visitor-keys@6.4.1: + resolution: {integrity: sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.0 + '@typescript-eslint/types': 6.4.1 eslint-visitor-keys: 3.4.3 dev: true @@ -1226,16 +1226,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.47.0): + /eslint-config-prettier@9.0.0(eslint@8.48.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.47.0 + eslint: 8.48.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.47.0)(prettier@3.0.2): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.2): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1249,8 +1249,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.47.0 - eslint-config-prettier: 9.0.0(eslint@8.47.0) + eslint: 8.48.0 + eslint-config-prettier: 9.0.0(eslint@8.48.0) prettier: 3.0.2 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1269,15 +1269,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.47.0: - resolution: {integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.47.0) - '@eslint-community/regexpp': 4.6.2 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.47.0 + '@eslint/js': 8.48.0 '@humanwhocodes/config-array': 0.11.10 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1429,7 +1429,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.0 dev: true /fill-range@7.0.1: @@ -1447,11 +1447,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.7 + keyv: 4.5.3 rimraf: 3.0.2 dev: true @@ -1472,8 +1473,8 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -1815,6 +1816,10 @@ packages: - utf-8-validate dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -1831,6 +1836,12 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + dependencies: + json-buffer: 3.0.1 + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2304,7 +2315,7 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rrweb-cssom@0.6.0: @@ -2364,8 +2375,8 @@ packages: range-parser: 1.2.0 dev: true - /serve@14.2.0: - resolution: {integrity: sha512-+HOw/XK1bW8tw5iBilBz/mJLWRzM8XM6MPxL4J/dKzdxq1vfdEWSwhaR7/yS8EJp5wzvP92p1qirysJvnEtjXg==} + /serve@14.2.1: + resolution: {integrity: sha512-48er5fzHh7GCShLnNyPBRPEjs2I6QBozeGr02gaacROiyS/8ARADlj595j39iZXAqBbJHH/ivJJyPRWY9sQWZA==} engines: {node: '>= 14'} hasBin: true dependencies: @@ -2510,7 +2521,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/utils': 2.4.2 - tslib: 2.6.1 + tslib: 2.6.2 dev: true /text-table@0.2.0: @@ -2560,17 +2571,17 @@ packages: punycode: 2.3.0 dev: true - /ts-api-utils@1.0.1(typescript@5.1.6): - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + /ts-api-utils@1.0.2(typescript@5.2.2): + resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /tslib@2.6.1: - resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true /type-check@0.4.0: @@ -2595,22 +2606,22 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.24.8(typescript@5.1.6): - resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} - engines: {node: '>= 14.14'} + /typedoc@0.25.0(typescript@5.2.2): + resolution: {integrity: sha512-FvCYWhO1n5jACE0C32qg6b3dSfQ8f2VzExnnRboowHtqUD6ARzM2r8YJeZFYXhcm2hI4C2oCRDgNPk/yaQUN9g==} + engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x dependencies: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.3 - typescript: 5.1.6 + typescript: 5.2.2 dev: true - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -2709,7 +2720,7 @@ packages: postcss: 8.4.28 rollup: 3.28.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /vitest@0.34.2(jsdom@22.1.0): From cb8272adde48270e239c82eb4cf2a45bebfa5791 Mon Sep 17 00:00:00 2001 From: voluntas Date: Sun, 27 Aug 2023 19:03:01 +0900 Subject: [PATCH 087/182] =?UTF-8?q?pnpm=20=E3=82=92=208.7.0=20=E3=81=AB?= =?UTF-8?q?=E4=B8=8A=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c58d0ff5..1df899bb 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.6.12", + "packageManager": "pnpm@8.7.0", "engines": { "node": ">=16.20.0" } From d6a86863443107e9e70e8de82fd723d750cd99d5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 27 Aug 2023 15:38:05 +0000 Subject: [PATCH 088/182] Update dependency vitest to v0.34.3 --- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 50 +++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 04b96ee7..92b016ca 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -16,7 +16,7 @@ "@rollup/plugin-typescript": "11.1.2", "rollup": "3.28.0", "rollup-plugin-delete": "2.0.0", - "vitest": "0.34.2" + "vitest": "0.34.3" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d7b2e15..adc8bd3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifier: 2.0.0 version: 2.0.0 vitest: - specifier: 0.34.2 - version: 0.34.2(jsdom@22.1.0) + specifier: 0.34.3 + version: 0.34.3(jsdom@22.1.0) packages: @@ -672,38 +672,38 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitest/expect@0.34.2: - resolution: {integrity: sha512-EZm2dMNlLyIfDMha17QHSQcg2KjeAZaXd65fpPzXY5bvnfx10Lcaz3N55uEe8PhF+w4pw+hmrlHLLlRn9vkBJg==} + /@vitest/expect@0.34.3: + resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} dependencies: - '@vitest/spy': 0.34.2 - '@vitest/utils': 0.34.2 + '@vitest/spy': 0.34.3 + '@vitest/utils': 0.34.3 chai: 4.3.7 dev: true - /@vitest/runner@0.34.2: - resolution: {integrity: sha512-8ydGPACVX5tK3Dl0SUwxfdg02h+togDNeQX3iXVFYgzF5odxvaou7HnquALFZkyVuYskoaHUOqOyOLpOEj5XTA==} + /@vitest/runner@0.34.3: + resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} dependencies: - '@vitest/utils': 0.34.2 + '@vitest/utils': 0.34.3 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.2: - resolution: {integrity: sha512-qhQ+xy3u4mwwLxltS4Pd4SR+XHv4EajiTPNY3jkIBLUApE6/ce72neJPSUQZ7bL3EBuKI+NhvzhGj3n5baRQUQ==} + /@vitest/snapshot@0.34.3: + resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} dependencies: magic-string: 0.30.2 pathe: 1.1.1 pretty-format: 29.6.2 dev: true - /@vitest/spy@0.34.2: - resolution: {integrity: sha512-yd4L9OhfH6l0Av7iK3sPb3MykhtcRN5c5K5vm1nTbuN7gYn+yvUVVsyvzpHrjqS7EWqn9WsPJb7+0c3iuY60tA==} + /@vitest/spy@0.34.3: + resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.2: - resolution: {integrity: sha512-Lzw+kAsTPubhoQDp1uVAOP6DhNia1GMDsI9jgB0yMn+/nDaPieYQ88lKqz/gGjSHL4zwOItvpehec9OY+rS73w==} + /@vitest/utils@0.34.3: + resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} dependencies: diff-sequences: 29.4.3 loupe: 2.3.6 @@ -2665,8 +2665,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.2(@types/node@20.5.0): - resolution: {integrity: sha512-JtW249Zm3FB+F7pQfH56uWSdlltCo1IOkZW5oHBzeQo0iX4jtC7o1t9aILMGd9kVekXBP2lfJBEQt9rBh07ebA==} + /vite-node@0.34.3(@types/node@20.5.0): + resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2723,8 +2723,8 @@ packages: fsevents: 2.3.3 dev: true - /vitest@0.34.2(jsdom@22.1.0): - resolution: {integrity: sha512-WgaIvBbjsSYMq/oiMlXUI7KflELmzM43BEvkdC/8b5CAod4ryAiY2z8uR6Crbi5Pjnu5oOmhKa9sy7uk6paBxQ==} + /vitest@0.34.3(jsdom@22.1.0): + resolution: {integrity: sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2757,11 +2757,11 @@ packages: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 '@types/node': 20.5.0 - '@vitest/expect': 0.34.2 - '@vitest/runner': 0.34.2 - '@vitest/snapshot': 0.34.2 - '@vitest/spy': 0.34.2 - '@vitest/utils': 0.34.2 + '@vitest/expect': 0.34.3 + '@vitest/runner': 0.34.3 + '@vitest/snapshot': 0.34.3 + '@vitest/spy': 0.34.3 + '@vitest/utils': 0.34.3 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -2777,7 +2777,7 @@ packages: tinybench: 2.5.0 tinypool: 0.7.0 vite: 4.4.9(@types/node@20.5.0) - vite-node: 0.34.2(@types/node@20.5.0) + vite-node: 0.34.3(@types/node@20.5.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 8ce8285ec7820c2bbee384d7361999395acd8589 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 27 Aug 2023 18:59:07 +0000 Subject: [PATCH 089/182] Update rollup --- packages/e2ee/package.json | 6 ++-- packages/sdk/package.json | 6 ++-- pnpm-lock.yaml | 68 +++++++++++++++++++------------------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index eb14f216..34f082a7 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -16,10 +16,10 @@ "test": "echo \"no test\"" }, "devDependencies": { - "@rollup/plugin-node-resolve": "15.2.0", + "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.28.0" + "@rollup/plugin-typescript": "11.1.3", + "rollup": "3.28.1" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 92b016ca..c18712c0 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -11,10 +11,10 @@ "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.2.0", + "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.2", - "rollup": "3.28.0", + "@rollup/plugin-typescript": "11.1.3", + "rollup": "3.28.1", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index adc8bd3e..204a73c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,17 +46,17 @@ importers: version: link:../go-wasm devDependencies: '@rollup/plugin-node-resolve': - specifier: 15.2.0 - version: 15.2.0(rollup@3.28.0) + specifier: 15.2.1 + version: 15.2.1(rollup@3.28.1) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.28.0) + version: 5.0.2(rollup@3.28.1) '@rollup/plugin-typescript': - specifier: 11.1.2 - version: 11.1.2(rollup@3.28.0)(typescript@5.2.2) + specifier: 11.1.3 + version: 11.1.3(rollup@3.28.1)(typescript@5.2.2) rollup: - specifier: 3.28.0 - version: 3.28.0 + specifier: 3.28.1 + version: 3.28.1 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 - version: 25.0.4(rollup@3.28.0) + version: 25.0.4(rollup@3.28.1) '@rollup/plugin-node-resolve': - specifier: 15.2.0 - version: 15.2.0(rollup@3.28.0) + specifier: 15.2.1 + version: 15.2.1(rollup@3.28.1) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.28.0) + version: 5.0.2(rollup@3.28.1) '@rollup/plugin-typescript': - specifier: 11.1.2 - version: 11.1.2(rollup@3.28.0)(typescript@5.2.2) + specifier: 11.1.3 + version: 11.1.3(rollup@3.28.1)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.28.0 - version: 3.28.0 + specifier: 3.28.1 + version: 3.28.1 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.28.0): + /@rollup/plugin-commonjs@25.0.4(rollup@3.28.1): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,17 +412,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.28.0 + rollup: 3.28.1 dev: true - /@rollup/plugin-node-resolve@15.2.0(rollup@3.28.0): - resolution: {integrity: sha512-mKur03xNGT8O9ODO6FtT43ITGqHWZbKPdVJHZb+iV9QYcdlhUUB0wgknvA4KCUmC5oHJF6O2W1EgmyOQyVUI4Q==} + /@rollup/plugin-node-resolve@15.2.1(rollup@3.28.1): + resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0 @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.4 - rollup: 3.28.0 + rollup: 3.28.1 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.28.0): + /@rollup/plugin-replace@5.0.2(rollup@3.28.1): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,13 +448,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.1) magic-string: 0.27.0 - rollup: 3.28.0 + rollup: 3.28.1 dev: true - /@rollup/plugin-typescript@11.1.2(rollup@3.28.0)(typescript@5.2.2): - resolution: {integrity: sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg==} + /@rollup/plugin-typescript@11.1.3(rollup@3.28.1)(typescript@5.2.2): + resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0 @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.0) + '@rollup/pluginutils': 5.0.3(rollup@3.28.1) resolve: 1.22.4 - rollup: 3.28.0 + rollup: 3.28.1 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.3(rollup@3.28.0): + /@rollup/pluginutils@5.0.3(rollup@3.28.1): resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.28.0 + rollup: 3.28.1 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2310,8 +2310,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.28.0: - resolution: {integrity: sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw==} + /rollup@3.28.1: + resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2718,7 +2718,7 @@ packages: '@types/node': 20.5.0 esbuild: 0.18.20 postcss: 8.4.28 - rollup: 3.28.0 + rollup: 3.28.1 optionalDependencies: fsevents: 2.3.3 dev: true From cc2210a1f47e6b3d943333066d978229674cc899 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 29 Aug 2023 13:40:30 +0900 Subject: [PATCH 090/182] =?UTF-8?q?=E3=82=A2=E3=83=83=E3=83=97=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +-- pnpm-lock.yaml | 84 +++++++++++++++++++++++++------------------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index 1df899bb..c78c09f4 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.4.1", - "@typescript-eslint/parser": "6.4.1", + "@typescript-eslint/eslint-plugin": "6.5.0", + "@typescript-eslint/parser": "6.5.0", "eslint": "8.48.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 204a73c4..527282a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.4.1 - version: 6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.48.0)(typescript@5.2.2) + specifier: 6.5.0 + version: 6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.4.1 - version: 6.4.1(eslint@8.48.0)(typescript@5.2.2) + specifier: 6.5.0 + version: 6.5.0(eslint@8.48.0)(typescript@5.2.2) eslint: specifier: 8.48.0 version: 8.48.0 @@ -537,12 +537,12 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true - /@typescript-eslint/eslint-plugin@6.4.1(@typescript-eslint/parser@6.4.1)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==} + /@typescript-eslint/eslint-plugin@6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,11 +553,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/type-utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/parser': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.5.0 + '@typescript-eslint/type-utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.5.0 debug: 4.3.4 eslint: 8.48.0 graphemer: 1.4.0 @@ -570,8 +570,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.4.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==} + /@typescript-eslint/parser@6.5.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,10 +580,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/scope-manager': 6.5.0 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.5.0 debug: 4.3.4 eslint: 8.48.0 typescript: 5.2.2 @@ -591,16 +591,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.4.1: - resolution: {integrity: sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==} + /@typescript-eslint/scope-manager@6.5.0: + resolution: {integrity: sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/visitor-keys': 6.5.0 dev: true - /@typescript-eslint/type-utils@6.4.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==} + /@typescript-eslint/type-utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,8 +609,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) - '@typescript-eslint/utils': 6.4.1(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 ts-api-utils: 1.0.2(typescript@5.2.2) @@ -619,13 +619,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.4.1: - resolution: {integrity: sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==} + /@typescript-eslint/types@6.5.0: + resolution: {integrity: sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.4.1(typescript@5.2.2): - resolution: {integrity: sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==} + /@typescript-eslint/typescript-estree@6.5.0(typescript@5.2.2): + resolution: {integrity: sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,8 +633,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/visitor-keys': 6.4.1 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/visitor-keys': 6.5.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -645,18 +645,18 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.4.1(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==} + /@typescript-eslint/utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.4.1 - '@typescript-eslint/types': 6.4.1 - '@typescript-eslint/typescript-estree': 6.4.1(typescript@5.2.2) + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 6.5.0 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) eslint: 8.48.0 semver: 7.5.4 transitivePeerDependencies: @@ -664,11 +664,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.4.1: - resolution: {integrity: sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==} + /@typescript-eslint/visitor-keys@6.5.0: + resolution: {integrity: sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.4.1 + '@typescript-eslint/types': 6.5.0 eslint-visitor-keys: 3.4.3 dev: true From ff232886e8c00dbf5602e46c07042cffd882316c Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 29 Aug 2023 16:43:21 +0900 Subject: [PATCH 091/182] =?UTF-8?q?nodejs=20=E3=81=AE=E6=9C=80=E5=B0=8F?= =?UTF-8?q?=E3=82=92=2018=20=E7=B3=BB=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/{test.yaml => ci.yaml} | 4 ++-- DEVELOPMENT.md | 9 ++++----- package.json | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) rename .github/workflows/{test.yaml => ci.yaml} (94%) diff --git a/.github/workflows/test.yaml b/.github/workflows/ci.yaml similarity index 94% rename from .github/workflows/test.yaml rename to .github/workflows/ci.yaml index a46bc966..cf58ba03 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/ci.yaml @@ -1,4 +1,4 @@ -name: test +name: ci on: push: @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: ["16", "18", "20"] + node: ["18", "20"] steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 2ea7b9e2..a0ce6d58 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -5,11 +5,10 @@ ## 開発環境 - Node.js - - v16.13.0 以上 -- npm - - v8.1.0 以上 -- npm install - - これで事前に利用するライブラリをインストールする + - v16.20.0 以上 +- pnpm + - https://pnpm.io/ + - v8.7.0 以上 ## 開発準備 diff --git a/package.json b/package.json index c78c09f4..a9ba2aca 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,6 @@ }, "packageManager": "pnpm@8.7.0", "engines": { - "node": ">=16.20.0" + "node": ">=18.17.1" } -} +} \ No newline at end of file From 318e74508e49172d25c1d1d0426b0c1b2e58a29e Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 29 Aug 2023 16:45:16 +0900 Subject: [PATCH 092/182] =?UTF-8?q?=E9=95=B7=E3=81=84=E3=81=AE=E3=81=A7?= =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=90=8D=E3=82=92=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEVELOPMENT.md => DEV.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename DEVELOPMENT.md => DEV.md (97%) diff --git a/DEVELOPMENT.md b/DEV.md similarity index 97% rename from DEVELOPMENT.md rename to DEV.md index a0ce6d58..7c1cb20b 100644 --- a/DEVELOPMENT.md +++ b/DEV.md @@ -5,7 +5,7 @@ ## 開発環境 - Node.js - - v16.20.0 以上 + - v18.17.1 以上 - pnpm - https://pnpm.io/ - v8.7.0 以上 From a46e35acf61c9d578cad435d2eaa870c6640b0e4 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 29 Aug 2023 16:48:34 +0900 Subject: [PATCH 093/182] =?UTF-8?q?Node.js=2016=20=E7=B3=BB=E3=82=92?= =?UTF-8?q?=E8=90=BD=E3=81=A8=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index f18d1aea..8db12da7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,8 @@ ## develop +- [CHANGE] Node.js 16 系を落とす + - @voluntas - [FIX] stopVideoTrack で例外を握りつぶしていたのを修正する - @voluntas - [CHANGE] dist/ ディレクトリはリポジトリに含めないようにする From a6c76f6e7aaf131c40f55c95b7aa1461c8f43811 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 1 Sep 2023 09:19:06 +0900 Subject: [PATCH 094/182] =?UTF-8?q?=E3=82=A2=E3=83=83=E3=83=97=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 +- pnpm-lock.yaml | 120 ++++++++++++++++++++++++------------------------- 2 files changed, 62 insertions(+), 62 deletions(-) diff --git a/package.json b/package.json index a9ba2aca..5b227c5b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "eslint": "8.48.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", - "prettier": "3.0.2", + "prettier": "3.0.3", "serve": "14.2.1", "typedoc": "0.25.0", "typescript": "5.2.2" @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.7.0", + "packageManager": "pnpm@8.7.1", "engines": { "node": ">=18.17.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 527282a0..e09b1381 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,10 +25,10 @@ importers: version: 9.0.0(eslint@8.48.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.2) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.3) prettier: - specifier: 3.0.2 - version: 3.0.2 + specifier: 3.0.3 + version: 3.0.3 serve: specifier: 14.2.1 version: 14.2.1 @@ -339,8 +339,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -359,8 +359,8 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 @@ -412,7 +412,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.28.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 @@ -430,7 +430,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.28.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 @@ -448,7 +448,7 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.28.1) magic-string: 0.27.0 rollup: 3.28.1 dev: true @@ -466,14 +466,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.3(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.28.1) resolve: 1.22.4 rollup: 3.28.1 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.3(rollup@3.28.1): - resolution: {integrity: sha512-hfllNN4a80rwNQ9QCxhxuHCGHMAvabXqxNdaChUSSadMre7t4iEUI6fFAhBOn/eIYTgYVhBv7vCLsAJ4u3lf3g==} + /@rollup/pluginutils@5.0.4(rollup@3.28.1): + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0 @@ -518,7 +518,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.5.0 + '@types/node': 20.5.7 dev: true /@types/json-schema@7.0.12: @@ -529,8 +529,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.5.0: - resolution: {integrity: sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==} + /@types/node@20.5.7: + resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==} dev: true /@types/resolve@1.20.2: @@ -677,7 +677,7 @@ packages: dependencies: '@vitest/spy': 0.34.3 '@vitest/utils': 0.34.3 - chai: 4.3.7 + chai: 4.3.8 dev: true /@vitest/runner@0.34.3: @@ -691,9 +691,9 @@ packages: /@vitest/snapshot@0.34.3: resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} dependencies: - magic-string: 0.30.2 + magic-string: 0.30.3 pathe: 1.1.1 - pretty-format: 29.6.2 + pretty-format: 29.6.3 dev: true /@vitest/spy@0.34.3: @@ -705,9 +705,9 @@ packages: /@vitest/utils@0.34.3: resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} dependencies: - diff-sequences: 29.4.3 + diff-sequences: 29.6.3 loupe: 2.3.6 - pretty-format: 29.6.2 + pretty-format: 29.6.3 dev: true /@zeit/schemas@2.29.0: @@ -924,8 +924,8 @@ packages: engines: {node: '>=14.16'} dev: true - /chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} + /chai@4.3.8: + resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 @@ -1148,8 +1148,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -1235,7 +1235,7 @@ packages: eslint: 8.48.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.2): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.3): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1251,7 +1251,7 @@ packages: dependencies: eslint: 8.48.0 eslint-config-prettier: 9.0.0(eslint@8.48.0) - prettier: 3.0.2 + prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true @@ -1278,7 +1278,7 @@ packages: '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.48.0 - '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -1890,8 +1890,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.2: - resolution: {integrity: sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==} + /magic-string@0.30.3: + resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -1978,13 +1978,13 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mlly@1.4.0: - resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} + /mlly@1.4.1: + resolution: {integrity: sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==} dependencies: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.2.0 + ufo: 1.3.0 dev: true /ms@2.0.0: @@ -2174,12 +2174,12 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.0 + mlly: 1.4.1 pathe: 1.1.1 dev: true - /postcss@8.4.28: - resolution: {integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -2199,17 +2199,17 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.2: - resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true - /pretty-format@29.6.2: - resolution: {integrity: sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==} + /pretty-format@29.6.3: + resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.0 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -2407,8 +2407,8 @@ packages: engines: {node: '>=8'} dev: true - /shiki@0.14.3: - resolution: {integrity: sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==} + /shiki@0.14.4: + resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -2438,8 +2438,8 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.3.3: - resolution: {integrity: sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==} + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} dev: true /string-width@4.2.3: @@ -2616,7 +2616,7 @@ packages: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 - shiki: 0.14.3 + shiki: 0.14.4 typescript: 5.2.2 dev: true @@ -2626,8 +2626,8 @@ packages: hasBin: true dev: true - /ufo@1.2.0: - resolution: {integrity: sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==} + /ufo@1.3.0: + resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} dev: true /universalify@0.2.0: @@ -2665,17 +2665,17 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.3(@types/node@20.5.0): + /vite-node@0.34.3(@types/node@20.5.7): resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.0 + mlly: 1.4.1 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.5.0) + vite: 4.4.9(@types/node@20.5.7) transitivePeerDependencies: - '@types/node' - less @@ -2687,7 +2687,7 @@ packages: - terser dev: true - /vite@4.4.9(@types/node@20.5.0): + /vite@4.4.9(@types/node@20.5.7): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -2715,9 +2715,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.5.0 + '@types/node': 20.5.7 esbuild: 0.18.20 - postcss: 8.4.28 + postcss: 8.4.29 rollup: 3.28.1 optionalDependencies: fsevents: 2.3.3 @@ -2756,7 +2756,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 20.5.0 + '@types/node': 20.5.7 '@vitest/expect': 0.34.3 '@vitest/runner': 0.34.3 '@vitest/snapshot': 0.34.3 @@ -2765,19 +2765,19 @@ packages: acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.7 + chai: 4.3.8 debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.2 + magic-string: 0.30.3 pathe: 1.1.1 picocolors: 1.0.0 - std-env: 3.3.3 + std-env: 3.4.3 strip-literal: 1.3.0 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.5.0) - vite-node: 0.34.3(@types/node@20.5.0) + vite: 4.4.9(@types/node@20.5.7) + vite-node: 0.34.3(@types/node@20.5.7) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 2a131025de8802f4cc1e363c9d3105b3feffef14 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 1 Sep 2023 12:20:43 +0900 Subject: [PATCH 095/182] =?UTF-8?q?=E3=81=8A=E8=A9=A6=E3=81=97=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/README.md b/README.md index 734477a4..5729233f 100644 --- a/README.md +++ b/README.md @@ -92,3 +92,60 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` + +## リンク + +### 商用製品 + +- [WebRTC SFU Sora](https://sora.shiguredo.jp) + - [WebRTC SFU Sora ドキュメント](https://sora-doc.shiguredo.jp) +- [Sora Cloud](https://sora-cloud.shiguredo.jp) + - [Sora Cloud ドキュメント](https://doc.sora-cloud.shiguredo.app) + +### 無料検証サービス + +- [Sora Labo](https://sora-labo.shiguredo.app) + - [Sora Labo ドキュメント](https://github.com/shiguredo/sora-labo-doc) + +### クライアント SDK + +- [Sora JavaScript SDK](https://github.com/shiguredo/sora-javascript-sdk) + - [WebRTC SFU Sora JavaScript SDK サンプル集](https://github.com/shiguredo/sora-js-sdk-samples) + - [Sora JavaScript SDK ドキュメント](https://sora-js-sdk.shiguredo.jp/) +- [Sora iOS SDK](https://github.com/shiguredo/sora-ios-sdk) + - [Sora iOS SDK クイックスタート](https://github.com/shiguredo/sora-ios-sdk-quickstart) + - [Sora iOS SDK サンプル集](https://github.com/shiguredo/sora-ios-sdk-samples) + - [Sora iOS SDK ドキュメント](https://sora-ios-sdk.shiguredo.jp/) +- [Sora Android SDK](https://github.com/shiguredo/sora-android-sdk) + - [Sora Android SDK クイックスタート](https://github.com/shiguredo/sora-android-sdk-quickstart) + - [Sora Android SDK サンプル集](https://github.com/shiguredo/sora-android-sdk-samples) + - [Sora Android SDK ドキュメント](https://sora-android-sdk.shiguredo.jp/) +- [Sora C++ SDK](https://github.com/shiguredo/sora-cpp-sdk) + - [Sora C++ SDK ドキュメント](https://sora-cpp-sdk.shiguredo.jp/) +- [Sora Unity SDK](https://github.com/shiguredo/sora-unity-sdk) + - [Sora Unity SDK サンプル集](https://github.com/shiguredo/sora-unity-sdk-samples) + - [Sora Unity SDK ドキュメント](https://sora-unity-sdk.shiguredo.jp/) +- [Sora Python SDK](https://github.com/shiguredo/sora-python-sdk) + - [Sora Python SDK サンプル集](https://github.com/shiguredo/sora-python-sdk-samples) + - [Sora Python SDK ドキュメント](https://sora-python-sdk.shiguredo.jp/) + +### クライアントツール + +- [Sora DevTools](https://github.com/shiguredo/sora-devtools) +- [Media Processors](https://github.com/shiguredo/media-processors) +- [WebRTC Native Client Momo](https://github.com/shiguredo/momo) + +### サーバーツール + +- [WebRTC Load Testing Tool Zakuro](https://github.com/shiguredo/zakuro) + - Sora 専用負荷試験ツール +- [WebRTC Stats Collector Kohaku](https://github.com/shiguredo/kohaku) + - Sora 専用統計収集ツール +- [Recording Composition Tool Hisui](https://github.com/shiguredo/hisui) + - Sora 専用録画ファイル合成ツール +- [Audio Streaming Gateway Suzu](https://github.com/shiguredo/suzu) + - Sora 専用音声解析ゲートウェイ +- [Sora Archive Uploader](https://github.com/shiguredo/sora-archive-uploader) + - Sora 専用録画ファイル S3 互換オブジェクトストレージアップロードツール +- [Prometheus exporter for WebRTC SFU Sora metrics](https://github.com/shiguredo/sora_exporter) + - Sora 専用 OpenMetrics 形式エクスポーター \ No newline at end of file From 9d470e20a94fbc8b9c296d9bacfe5b4ae6a87168 Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 6 Sep 2023 22:43:03 +0900 Subject: [PATCH 096/182] pnpm up --latest --- package.json | 6 +- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 6 +- pnpm-lock.yaml | 178 ++++++++++++++++++------------------- 4 files changed, 96 insertions(+), 96 deletions(-) diff --git a/package.json b/package.json index 5b227c5b..a5f0f103 100644 --- a/package.json +++ b/package.json @@ -28,14 +28,14 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.5.0", - "@typescript-eslint/parser": "6.5.0", + "@typescript-eslint/eslint-plugin": "6.6.0", + "@typescript-eslint/parser": "6.6.0", "eslint": "8.48.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.3", "serve": "14.2.1", - "typedoc": "0.25.0", + "typedoc": "0.25.1", "typescript": "5.2.2" }, "resolutions": { diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 34f082a7..ad12a203 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.3", - "rollup": "3.28.1" + "rollup": "3.29.0" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c18712c0..c2250fbd 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -8,13 +8,13 @@ "test": "vitest run" }, "devDependencies": { - "@shiguredo/lyra-wasm": "2023.1.0", - "jsdom": "22.1.0", "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.3", - "rollup": "3.28.1", + "@shiguredo/lyra-wasm": "2023.1.0", + "jsdom": "22.1.0", + "rollup": "3.29.0", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e09b1381..fd3d1d25 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.5.0 - version: 6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2) + specifier: 6.6.0 + version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.5.0 - version: 6.5.0(eslint@8.48.0)(typescript@5.2.2) + specifier: 6.6.0 + version: 6.6.0(eslint@8.48.0)(typescript@5.2.2) eslint: specifier: 8.48.0 version: 8.48.0 @@ -33,8 +33,8 @@ importers: specifier: 14.2.1 version: 14.2.1 typedoc: - specifier: 0.25.0 - version: 0.25.0(typescript@5.2.2) + specifier: 0.25.1 + version: 0.25.1(typescript@5.2.2) typescript: specifier: 5.2.2 version: 5.2.2 @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.28.1) + version: 15.2.1(rollup@3.29.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.28.1) + version: 5.0.2(rollup@3.29.0) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.28.1)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.0)(typescript@5.2.2) rollup: - specifier: 3.28.1 - version: 3.28.1 + specifier: 3.29.0 + version: 3.29.0 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 - version: 25.0.4(rollup@3.28.1) + version: 25.0.4(rollup@3.29.0) '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.28.1) + version: 15.2.1(rollup@3.29.0) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.28.1) + version: 5.0.2(rollup@3.29.0) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.28.1)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.0)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.28.1 - version: 3.28.1 + specifier: 3.29.0 + version: 3.29.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.28.1): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.0): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.28.1 + rollup: 3.29.0 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.28.1): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.0): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.4 - rollup: 3.28.1 + rollup: 3.29.0 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.28.1): + /@rollup/plugin-replace@5.0.2(rollup@3.29.0): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.0) magic-string: 0.27.0 - rollup: 3.28.1 + rollup: 3.29.0 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@3.28.1)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.3(rollup@3.29.0)(typescript@5.2.2): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.28.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.0) resolve: 1.22.4 - rollup: 3.28.1 + rollup: 3.29.0 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.28.1): + /@rollup/pluginutils@5.0.4(rollup@3.29.0): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.28.1 + rollup: 3.29.0 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -503,11 +503,11 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.6 dev: true - /@types/chai@4.3.5: - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + /@types/chai@4.3.6: + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} dev: true /@types/estree@1.0.1: @@ -518,7 +518,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.5.7 + '@types/node': 20.5.9 dev: true /@types/json-schema@7.0.12: @@ -529,8 +529,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.5.7: - resolution: {integrity: sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==} + /@types/node@20.5.9: + resolution: {integrity: sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==} dev: true /@types/resolve@1.20.2: @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true - /@typescript-eslint/eslint-plugin@6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==} + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,11 +553,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.5.0 - '@typescript-eslint/type-utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.5.0 + '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 eslint: 8.48.0 graphemer: 1.4.0 @@ -570,8 +570,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==} + /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,10 +580,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.5.0 - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.5.0 + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 eslint: 8.48.0 typescript: 5.2.2 @@ -591,16 +591,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.5.0: - resolution: {integrity: sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==} + /@typescript-eslint/scope-manager@6.6.0: + resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/visitor-keys': 6.5.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 dev: true - /@typescript-eslint/type-utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==} + /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,8 +609,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.48.0 ts-api-utils: 1.0.2(typescript@5.2.2) @@ -619,13 +619,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.5.0: - resolution: {integrity: sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==} + /@typescript-eslint/types@6.6.0: + resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.5.0(typescript@5.2.2): - resolution: {integrity: sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==} + /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): + resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,8 +633,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/visitor-keys': 6.5.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -645,8 +645,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): - resolution: {integrity: sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==} + /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -654,9 +654,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.5.0 - '@typescript-eslint/types': 6.5.0 - '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.6.0 + '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) eslint: 8.48.0 semver: 7.5.4 transitivePeerDependencies: @@ -664,11 +664,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.5.0: - resolution: {integrity: sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==} + /@typescript-eslint/visitor-keys@6.6.0: + resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/types': 6.6.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1978,8 +1978,8 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mlly@1.4.1: - resolution: {integrity: sha512-SCDs78Q2o09jiZiE2WziwVBEqXQ02XkGdUy45cbJf+BpYRIjArXRJ1Wbowxkb+NaM9DWvS3UC9GiO/6eqvQ/pg==} + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: acorn: 8.10.0 pathe: 1.1.1 @@ -2174,7 +2174,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.0 - mlly: 1.4.1 + mlly: 1.4.2 pathe: 1.1.1 dev: true @@ -2310,8 +2310,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.28.1: - resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + /rollup@3.29.0: + resolution: {integrity: sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2606,8 +2606,8 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.25.0(typescript@5.2.2): - resolution: {integrity: sha512-FvCYWhO1n5jACE0C32qg6b3dSfQ8f2VzExnnRboowHtqUD6ARzM2r8YJeZFYXhcm2hI4C2oCRDgNPk/yaQUN9g==} + /typedoc@0.25.1(typescript@5.2.2): + resolution: {integrity: sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==} engines: {node: '>= 16'} hasBin: true peerDependencies: @@ -2665,17 +2665,17 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.3(@types/node@20.5.7): + /vite-node@0.34.3(@types/node@20.5.9): resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.1 + mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.5.7) + vite: 4.4.9(@types/node@20.5.9) transitivePeerDependencies: - '@types/node' - less @@ -2687,7 +2687,7 @@ packages: - terser dev: true - /vite@4.4.9(@types/node@20.5.7): + /vite@4.4.9(@types/node@20.5.9): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -2715,10 +2715,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.5.7 + '@types/node': 20.5.9 esbuild: 0.18.20 postcss: 8.4.29 - rollup: 3.28.1 + rollup: 3.29.0 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2754,9 +2754,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.5 + '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.5.7 + '@types/node': 20.5.9 '@vitest/expect': 0.34.3 '@vitest/runner': 0.34.3 '@vitest/snapshot': 0.34.3 @@ -2776,8 +2776,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.5.7) - vite-node: 0.34.3(@types/node@20.5.7) + vite: 4.4.9(@types/node@20.5.9) + vite-node: 0.34.3(@types/node@20.5.9) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From a39bda3a2012ec8a2e1a2d09635fe5203d88a693 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Sep 2023 16:16:57 +0000 Subject: [PATCH 097/182] Update actions/checkout action to v4 --- .github/workflows/ci.yaml | 2 +- .github/workflows/codeql.yml | 2 +- .github/workflows/dependency-review.yml | 2 +- .github/workflows/deploy-pages.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index cf58ba03..1dfc8c28 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,7 +14,7 @@ jobs: matrix: node: ["18", "20"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8569da34..1f58af70 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -38,7 +38,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml index b0dedc42..4e751977 100644 --- a/.github/workflows/dependency-review.yml +++ b/.github/workflows/dependency-review.yml @@ -15,6 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - name: 'Checkout Repository' - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 'Dependency Review' uses: actions/dependency-review-action@v3 diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index f53882ec..4d82f056 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -13,7 +13,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-node@v3 with: node-version: "20" From d966f4d7eb25c9e1a247248f55b30e19bdfd5dd5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Sep 2023 16:16:17 +0000 Subject: [PATCH 098/182] Update all non-major dependencies --- package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 50 +++++++++++++++++++-------------------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index a5f0f103..a2ad9e06 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.7.1", + "packageManager": "pnpm@8.7.4", "engines": { "node": ">=18.17.1" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c2250fbd..c39551b6 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -16,7 +16,7 @@ "jsdom": "22.1.0", "rollup": "3.29.0", "rollup-plugin-delete": "2.0.0", - "vitest": "0.34.3" + "vitest": "0.34.4" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd3d1d25..31336bdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifier: 2.0.0 version: 2.0.0 vitest: - specifier: 0.34.3 - version: 0.34.3(jsdom@22.1.0) + specifier: 0.34.4 + version: 0.34.4(jsdom@22.1.0) packages: @@ -672,38 +672,38 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitest/expect@0.34.3: - resolution: {integrity: sha512-F8MTXZUYRBVsYL1uoIft1HHWhwDbSzwAU9Zgh8S6WFC3YgVb4AnFV2GXO3P5Em8FjEYaZtTnQYoNwwBrlOMXgg==} + /@vitest/expect@0.34.4: + resolution: {integrity: sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==} dependencies: - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 + '@vitest/spy': 0.34.4 + '@vitest/utils': 0.34.4 chai: 4.3.8 dev: true - /@vitest/runner@0.34.3: - resolution: {integrity: sha512-lYNq7N3vR57VMKMPLVvmJoiN4bqwzZ1euTW+XXYH5kzr3W/+xQG3b41xJn9ChJ3AhYOSoweu974S1V3qDcFESA==} + /@vitest/runner@0.34.4: + resolution: {integrity: sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==} dependencies: - '@vitest/utils': 0.34.3 + '@vitest/utils': 0.34.4 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.3: - resolution: {integrity: sha512-QyPaE15DQwbnIBp/yNJ8lbvXTZxS00kRly0kfFgAD5EYmCbYcA+1EEyRalc93M0gosL/xHeg3lKAClIXYpmUiQ==} + /@vitest/snapshot@0.34.4: + resolution: {integrity: sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==} dependencies: magic-string: 0.30.3 pathe: 1.1.1 pretty-format: 29.6.3 dev: true - /@vitest/spy@0.34.3: - resolution: {integrity: sha512-N1V0RFQ6AI7CPgzBq9kzjRdPIgThC340DGjdKdPSE8r86aUSmeliTUgkTqLSgtEwWWsGfBQ+UetZWhK0BgJmkQ==} + /@vitest/spy@0.34.4: + resolution: {integrity: sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.3: - resolution: {integrity: sha512-kiSnzLG6m/tiT0XEl4U2H8JDBjFtwVlaE8I3QfGiMFR0QvnRDfYfdP3YvTBWM/6iJDAyaPY6yVQiCTUc7ZzTHA==} + /@vitest/utils@0.34.4: + resolution: {integrity: sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 @@ -2665,8 +2665,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.3(@types/node@20.5.9): - resolution: {integrity: sha512-+0TzJf1g0tYXj6tR2vEyiA42OPq68QkRZCu/ERSo2PtsDJfBpDyEfuKbRvLmZqi/CgC7SCBtyC+WjTGNMRIaig==} + /vite-node@0.34.4(@types/node@20.5.9): + resolution: {integrity: sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2723,8 +2723,8 @@ packages: fsevents: 2.3.3 dev: true - /vitest@0.34.3(jsdom@22.1.0): - resolution: {integrity: sha512-7+VA5Iw4S3USYk+qwPxHl8plCMhA5rtfwMjgoQXMT7rO5ldWcdsdo3U1QD289JgglGK4WeOzgoLTsGFu6VISyQ==} + /vitest@0.34.4(jsdom@22.1.0): + resolution: {integrity: sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2757,11 +2757,11 @@ packages: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 '@types/node': 20.5.9 - '@vitest/expect': 0.34.3 - '@vitest/runner': 0.34.3 - '@vitest/snapshot': 0.34.3 - '@vitest/spy': 0.34.3 - '@vitest/utils': 0.34.3 + '@vitest/expect': 0.34.4 + '@vitest/runner': 0.34.4 + '@vitest/snapshot': 0.34.4 + '@vitest/spy': 0.34.4 + '@vitest/utils': 0.34.4 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -2777,7 +2777,7 @@ packages: tinybench: 2.5.0 tinypool: 0.7.0 vite: 4.4.9(@types/node@20.5.9) - vite-node: 0.34.3(@types/node@20.5.9) + vite-node: 0.34.4(@types/node@20.5.9) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From bbaa21f6fa04b1f198bc0d48e01cdbbc05847596 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Sep 2023 18:54:36 +0000 Subject: [PATCH 099/182] Update dependency rollup to v3.29.1 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 56 +++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index ad12a203..4d52748f 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.3", - "rollup": "3.29.0" + "rollup": "3.29.1" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c39551b6..99f1f230 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.3", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "3.29.0", + "rollup": "3.29.1", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 31336bdf..28cc4d16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.0) + version: 15.2.1(rollup@3.29.1) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.0) + version: 5.0.2(rollup@3.29.1) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.29.0)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.1)(typescript@5.2.2) rollup: - specifier: 3.29.0 - version: 3.29.0 + specifier: 3.29.1 + version: 3.29.1 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 - version: 25.0.4(rollup@3.29.0) + version: 25.0.4(rollup@3.29.1) '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.0) + version: 15.2.1(rollup@3.29.1) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.0) + version: 5.0.2(rollup@3.29.1) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.29.0)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.1)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.29.0 - version: 3.29.0 + specifier: 3.29.1 + version: 3.29.1 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.0): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.1): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.0 + rollup: 3.29.1 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.0): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.1): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.4 - rollup: 3.29.0 + rollup: 3.29.1 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.0): + /@rollup/plugin-replace@5.0.2(rollup@3.29.1): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) magic-string: 0.27.0 - rollup: 3.29.0 + rollup: 3.29.1 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@3.29.0)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.3(rollup@3.29.1)(typescript@5.2.2): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.0) + '@rollup/pluginutils': 5.0.4(rollup@3.29.1) resolve: 1.22.4 - rollup: 3.29.0 + rollup: 3.29.1 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.0): + /@rollup/pluginutils@5.0.4(rollup@3.29.1): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.0 + rollup: 3.29.1 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2310,8 +2310,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.29.0: - resolution: {integrity: sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==} + /rollup@3.29.1: + resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2718,7 +2718,7 @@ packages: '@types/node': 20.5.9 esbuild: 0.18.20 postcss: 8.4.29 - rollup: 3.29.0 + rollup: 3.29.1 optionalDependencies: fsevents: 2.3.3 dev: true From 5eaff426297a66c58d4bd69662c765c136f4fee6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Sep 2023 23:18:23 +0000 Subject: [PATCH 100/182] Update dependency eslint to v8.49.0 --- package.json | 2 +- pnpm-lock.yaml | 64 +++++++++++++++++++++++++------------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index a2ad9e06..f5e753c7 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "6.6.0", "@typescript-eslint/parser": "6.6.0", - "eslint": "8.48.0", + "eslint": "8.49.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28cc4d16..f9e0b315 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,19 +13,19 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: 6.6.0 - version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2) + version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) '@typescript-eslint/parser': specifier: 6.6.0 - version: 6.6.0(eslint@8.48.0)(typescript@5.2.2) + version: 6.6.0(eslint@8.49.0)(typescript@5.2.2) eslint: - specifier: 8.48.0 - version: 8.48.0 + specifier: 8.49.0 + version: 8.49.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.48.0) + version: 9.0.0(eslint@8.49.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.3) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) prettier: specifier: 3.0.3 version: 3.0.3 @@ -302,13 +302,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.48.0 + eslint: 8.49.0 eslint-visitor-keys: 3.4.3 dev: true @@ -334,8 +334,8 @@ packages: - supports-color dev: true - /@eslint/js@8.48.0: - resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -541,7 +541,7 @@ packages: resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2): resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -553,13 +553,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.49.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -570,7 +570,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.6.0(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/parser@6.6.0(eslint@8.49.0)(typescript@5.2.2): resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -585,7 +585,7 @@ packages: '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.6.0 debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.49.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -599,7 +599,7 @@ packages: '@typescript-eslint/visitor-keys': 6.6.0 dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -610,9 +610,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.48.0 + eslint: 8.49.0 ts-api-utils: 1.0.2(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -645,19 +645,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.6.0(eslint@8.48.0)(typescript@5.2.2): + /@typescript-eslint/utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.1 '@typescript-eslint/scope-manager': 6.6.0 '@typescript-eslint/types': 6.6.0 '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - eslint: 8.48.0 + eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1226,16 +1226,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.48.0): + /eslint-config-prettier@9.0.0(eslint@8.49.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.48.0 + eslint: 8.49.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.48.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1249,8 +1249,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.48.0 - eslint-config-prettier: 9.0.0(eslint@8.48.0) + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1269,15 +1269,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.48.0: - resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) '@eslint-community/regexpp': 4.8.0 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.48.0 + '@eslint/js': 8.49.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 From d7fba08def2e816305b66139907f02d6f3bb6c60 Mon Sep 17 00:00:00 2001 From: voluntas Date: Sat, 16 Sep 2023 19:54:34 +0900 Subject: [PATCH 101/182] pnpm up --latest --- package.json | 4 +- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 218 ++++++++++++++++++------------------- 4 files changed, 113 insertions(+), 113 deletions(-) diff --git a/package.json b/package.json index f5e753c7..d4de684c 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.6.0", - "@typescript-eslint/parser": "6.6.0", + "@typescript-eslint/eslint-plugin": "6.7.0", + "@typescript-eslint/parser": "6.7.0", "eslint": "8.49.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 4d52748f..0fe5d0af 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.3", - "rollup": "3.29.1" + "rollup": "3.29.2" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 99f1f230..1b3515ad 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.3", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "3.29.1", + "rollup": "3.29.2", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9e0b315..9fc55235 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.6.0 - version: 6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2) + specifier: 6.7.0 + version: 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.6.0 - version: 6.6.0(eslint@8.49.0)(typescript@5.2.2) + specifier: 6.7.0 + version: 6.7.0(eslint@8.49.0)(typescript@5.2.2) eslint: specifier: 8.49.0 version: 8.49.0 @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.1) + version: 15.2.1(rollup@3.29.2) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.1) + version: 5.0.2(rollup@3.29.2) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.29.1)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.2)(typescript@5.2.2) rollup: - specifier: 3.29.1 - version: 3.29.1 + specifier: 3.29.2 + version: 3.29.2 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 - version: 25.0.4(rollup@3.29.1) + version: 25.0.4(rollup@3.29.2) '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.1) + version: 15.2.1(rollup@3.29.2) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.1) + version: 5.0.2(rollup@3.29.2) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.29.1)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.2)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.29.1 - version: 3.29.1 + specifier: 3.29.2 + version: 3.29.2 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -312,8 +312,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.0: - resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} + /@eslint-community/regexpp@4.8.1: + resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.1): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.2): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.1 + rollup: 3.29.2 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.1): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.2): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.4 - rollup: 3.29.1 + resolve: 1.22.6 + rollup: 3.29.2 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.1): + /@rollup/plugin-replace@5.0.2(rollup@3.29.2): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) + '@rollup/pluginutils': 5.0.4(rollup@3.29.2) magic-string: 0.27.0 - rollup: 3.29.1 + rollup: 3.29.2 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@3.29.1)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.3(rollup@3.29.2)(typescript@5.2.2): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.1) - resolve: 1.22.4 - rollup: 3.29.1 + '@rollup/pluginutils': 5.0.4(rollup@3.29.2) + resolve: 1.22.6 + rollup: 3.29.2 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.1): + /@rollup/pluginutils@5.0.4(rollup@3.29.2): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.1 + rollup: 3.29.2 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -518,31 +518,31 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.5.9 + '@types/node': 20.6.2 dev: true - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.5.9: - resolution: {integrity: sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==} + /@types/node@20.6.2: + resolution: {integrity: sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==} dev: true /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.1: - resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} + /@types/semver@7.5.2: + resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} dev: true - /@typescript-eslint/eslint-plugin@6.6.0(@typescript-eslint/parser@6.6.0)(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-CW9YDGTQnNYMIo5lMeuiIG08p4E0cXrXTbcZ2saT/ETE7dWUrNxlijsQeU04qAAKkILiLzdQz+cGFxCJjaZUmA==} + /@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -552,26 +552,26 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.6.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/type-utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.0 + '@typescript-eslint/type-utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.0 debug: 4.3.4 eslint: 8.49.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.6.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-setq5aJgUwtzGrhW177/i+DMLqBaJbdwGj2CPIVFFLE0NCliy5ujIdLHd2D1ysmlmsjdL2GWW+hR85neEfc12w==} + /@typescript-eslint/parser@6.7.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,10 +580,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/scope-manager': 6.7.0 + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.0 debug: 4.3.4 eslint: 8.49.0 typescript: 5.2.2 @@ -591,16 +591,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.6.0: - resolution: {integrity: sha512-pT08u5W/GT4KjPUmEtc2kSYvrH8x89cVzkA0Sy2aaOUIw6YxOIjA8ilwLr/1fLjOedX1QAuBpG9XggWqIIfERw==} + /@typescript-eslint/scope-manager@6.7.0: + resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/visitor-keys': 6.7.0 dev: true - /@typescript-eslint/type-utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-8m16fwAcEnQc69IpeDyokNO+D5spo0w1jepWWY2Q6y5ZKNuj5EhVQXjtVAeDDqvW6Yg7dhclbsz6rTtOvcwpHg==} + /@typescript-eslint/type-utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,23 +609,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.6.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.49.0 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.6.0: - resolution: {integrity: sha512-CB6QpJQ6BAHlJXdwUmiaXDBmTqIE2bzGTDLADgvqtHWuhfNP3rAOK7kAgRMAET5rDRr9Utt+qAzRBdu3AhR3sg==} + /@typescript-eslint/types@6.7.0: + resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.6.0(typescript@5.2.2): - resolution: {integrity: sha512-hMcTQ6Al8MP2E6JKBAaSxSVw5bDhdmbCEhGW/V8QXkb9oNsFkA4SBuOMYVPxD3jbtQ4R/vSODBsr76R6fP3tbA==} + /@typescript-eslint/typescript-estree@6.7.0(typescript@5.2.2): + resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,30 +633,30 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/visitor-keys': 6.6.0 + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/visitor-keys': 6.7.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.2(typescript@5.2.2) + ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.6.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-mPHFoNa2bPIWWglWYdR0QfY9GN0CfvvXX1Sv6DlSTive3jlMTUy+an67//Gysc+0Me9pjitrq0LJp0nGtLgftw==} + /@typescript-eslint/utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.1 - '@typescript-eslint/scope-manager': 6.6.0 - '@typescript-eslint/types': 6.6.0 - '@typescript-eslint/typescript-estree': 6.6.0(typescript@5.2.2) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.2 + '@typescript-eslint/scope-manager': 6.7.0 + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) eslint: 8.49.0 semver: 7.5.4 transitivePeerDependencies: @@ -664,11 +664,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.6.0: - resolution: {integrity: sha512-L61uJT26cMOfFQ+lMZKoJNbAEckLe539VhTxiGHrWl5XSKQgA0RTBZJW2HFPy5T0ZvPVSD93QsrTKDkfNwJGyQ==} + /@typescript-eslint/visitor-keys@6.7.0: + resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.6.0 + '@typescript-eslint/types': 6.7.0 eslint-visitor-keys: 3.4.3 dev: true @@ -693,7 +693,7 @@ packages: dependencies: magic-string: 0.30.3 pathe: 1.1.1 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true /@vitest/spy@0.34.4: @@ -707,7 +707,7 @@ packages: dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 - pretty-format: 29.6.3 + pretty-format: 29.7.0 dev: true /@zeit/schemas@2.29.0: @@ -1275,7 +1275,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) - '@eslint-community/regexpp': 4.8.0 + '@eslint-community/regexpp': 4.8.1 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.49.0 '@humanwhocodes/config-array': 0.11.11 @@ -1451,13 +1451,13 @@ packages: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.8 keyv: 4.5.3 rimraf: 3.0.2 dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.8: + resolution: {integrity: sha512-6qu0W+A94UKNJRs3ffE8s/fWSHQbjqdNx8elGAe95IqnJA77P68TFz4+2cwC28ouAibiZdGBeV6DsvvMg+4vhQ==} dev: true /form-data@4.0.0: @@ -1808,7 +1808,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.13.0 + ws: 8.14.1 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -2205,8 +2205,8 @@ packages: hasBin: true dev: true - /pretty-format@29.6.3: - resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 @@ -2282,8 +2282,8 @@ packages: engines: {node: '>=4'} dev: true - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -2310,8 +2310,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.29.1: - resolution: {integrity: sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg==} + /rollup@3.29.2: + resolution: {integrity: sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2528,8 +2528,8 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /tinybench@2.5.0: - resolution: {integrity: sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==} + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true /tinypool@0.7.0: @@ -2571,8 +2571,8 @@ packages: punycode: 2.3.0 dev: true - /ts-api-utils@1.0.2(typescript@5.2.2): - resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' @@ -2665,7 +2665,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.4(@types/node@20.5.9): + /vite-node@0.34.4(@types/node@20.6.2): resolution: {integrity: sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2675,7 +2675,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.5.9) + vite: 4.4.9(@types/node@20.6.2) transitivePeerDependencies: - '@types/node' - less @@ -2687,7 +2687,7 @@ packages: - terser dev: true - /vite@4.4.9(@types/node@20.5.9): + /vite@4.4.9(@types/node@20.6.2): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -2715,10 +2715,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.5.9 + '@types/node': 20.6.2 esbuild: 0.18.20 postcss: 8.4.29 - rollup: 3.29.1 + rollup: 3.29.2 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2756,7 +2756,7 @@ packages: dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.5.9 + '@types/node': 20.6.2 '@vitest/expect': 0.34.4 '@vitest/runner': 0.34.4 '@vitest/snapshot': 0.34.4 @@ -2774,10 +2774,10 @@ packages: picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 - tinybench: 2.5.0 + tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.5.9) - vite-node: 0.34.4(@types/node@20.5.9) + vite: 4.4.9(@types/node@20.6.2) + vite-node: 0.34.4(@types/node@20.6.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -2866,8 +2866,8 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.14.1: + resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 From 489355fb4c08962d347af6ca91bae736e36c4677 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 15:38:37 +0000 Subject: [PATCH 102/182] Update pnpm to v8.7.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d4de684c..62669dcd 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.7.4", + "packageManager": "pnpm@8.7.5", "engines": { "node": ">=18.17.1" } From f7efc107b4083d5ecb47df00dce095e5adfa68a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Sep 2023 16:42:22 +0000 Subject: [PATCH 103/182] Update all non-major dependencies --- package.json | 2 +- packages/sdk/package.json | 4 +-- pnpm-lock.yaml | 58 +++++++++++++++++++-------------------- 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 62669dcd..04c2a875 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.7.5", + "packageManager": "pnpm@8.7.6", "engines": { "node": ">=18.17.1" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1b3515ad..20d9cf1f 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -16,10 +16,10 @@ "jsdom": "22.1.0", "rollup": "3.29.2", "rollup-plugin-delete": "2.0.0", - "vitest": "0.34.4" + "vitest": "0.34.5" }, "dependencies": { "@sora/e2ee": "workspace:^", - "fflate": "0.8.0" + "fflate": "0.8.1" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9fc55235..8fdd6af4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: workspace:^ version: link:../e2ee fflate: - specifier: 0.8.0 - version: 0.8.0 + specifier: 0.8.1 + version: 0.8.1 devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 @@ -94,8 +94,8 @@ importers: specifier: 2.0.0 version: 2.0.0 vitest: - specifier: 0.34.4 - version: 0.34.4(jsdom@22.1.0) + specifier: 0.34.5 + version: 0.34.5(jsdom@22.1.0) packages: @@ -672,38 +672,38 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitest/expect@0.34.4: - resolution: {integrity: sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==} + /@vitest/expect@0.34.5: + resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} dependencies: - '@vitest/spy': 0.34.4 - '@vitest/utils': 0.34.4 + '@vitest/spy': 0.34.5 + '@vitest/utils': 0.34.5 chai: 4.3.8 dev: true - /@vitest/runner@0.34.4: - resolution: {integrity: sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==} + /@vitest/runner@0.34.5: + resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} dependencies: - '@vitest/utils': 0.34.4 + '@vitest/utils': 0.34.5 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.4: - resolution: {integrity: sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==} + /@vitest/snapshot@0.34.5: + resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} dependencies: magic-string: 0.30.3 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/spy@0.34.4: - resolution: {integrity: sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==} + /@vitest/spy@0.34.5: + resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.4: - resolution: {integrity: sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==} + /@vitest/utils@0.34.5: + resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 @@ -1421,8 +1421,8 @@ packages: reusify: 1.0.4 dev: true - /fflate@0.8.0: - resolution: {integrity: sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==} + /fflate@0.8.1: + resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} dev: false /file-entry-cache@6.0.1: @@ -2665,8 +2665,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.4(@types/node@20.6.2): - resolution: {integrity: sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==} + /vite-node@0.34.5(@types/node@20.6.2): + resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2723,8 +2723,8 @@ packages: fsevents: 2.3.3 dev: true - /vitest@0.34.4(jsdom@22.1.0): - resolution: {integrity: sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==} + /vitest@0.34.5(jsdom@22.1.0): + resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2757,11 +2757,11 @@ packages: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 '@types/node': 20.6.2 - '@vitest/expect': 0.34.4 - '@vitest/runner': 0.34.4 - '@vitest/snapshot': 0.34.4 - '@vitest/spy': 0.34.4 - '@vitest/utils': 0.34.4 + '@vitest/expect': 0.34.5 + '@vitest/runner': 0.34.5 + '@vitest/snapshot': 0.34.5 + '@vitest/spy': 0.34.5 + '@vitest/utils': 0.34.5 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 @@ -2777,7 +2777,7 @@ packages: tinybench: 2.5.1 tinypool: 0.7.0 vite: 4.4.9(@types/node@20.6.2) - vite-node: 0.34.4(@types/node@20.6.2) + vite-node: 0.34.5(@types/node@20.6.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From a11f810bbb4ba5b706cc3ac9bce63c51730e4a2c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Sep 2023 19:22:39 +0000 Subject: [PATCH 104/182] Update dependency rollup to v3.29.3 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 56 +++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 0fe5d0af..de67186e 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", "@rollup/plugin-typescript": "11.1.3", - "rollup": "3.29.2" + "rollup": "3.29.3" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 20d9cf1f..f3ed2d21 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.3", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "3.29.2", + "rollup": "3.29.3", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8fdd6af4..067c7ffe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.2) + version: 15.2.1(rollup@3.29.3) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.2) + version: 5.0.2(rollup@3.29.3) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.29.2)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.3)(typescript@5.2.2) rollup: - specifier: 3.29.2 - version: 3.29.2 + specifier: 3.29.3 + version: 3.29.3 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 - version: 25.0.4(rollup@3.29.2) + version: 25.0.4(rollup@3.29.3) '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.2) + version: 15.2.1(rollup@3.29.3) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.2) + version: 5.0.2(rollup@3.29.3) '@rollup/plugin-typescript': specifier: 11.1.3 - version: 11.1.3(rollup@3.29.2)(typescript@5.2.2) + version: 11.1.3(rollup@3.29.3)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.29.2 - version: 3.29.2 + specifier: 3.29.3 + version: 3.29.3 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.2): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.3): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.2) + '@rollup/pluginutils': 5.0.4(rollup@3.29.3) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.2 + rollup: 3.29.3 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.2): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.3): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.2) + '@rollup/pluginutils': 5.0.4(rollup@3.29.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.6 - rollup: 3.29.2 + rollup: 3.29.3 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.2): + /@rollup/plugin-replace@5.0.2(rollup@3.29.3): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.2) + '@rollup/pluginutils': 5.0.4(rollup@3.29.3) magic-string: 0.27.0 - rollup: 3.29.2 + rollup: 3.29.3 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@3.29.2)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.3(rollup@3.29.3)(typescript@5.2.2): resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.2) + '@rollup/pluginutils': 5.0.4(rollup@3.29.3) resolve: 1.22.6 - rollup: 3.29.2 + rollup: 3.29.3 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.2): + /@rollup/pluginutils@5.0.4(rollup@3.29.3): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,7 +484,7 @@ packages: '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.2 + rollup: 3.29.3 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -2310,8 +2310,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.29.2: - resolution: {integrity: sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==} + /rollup@3.29.3: + resolution: {integrity: sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2718,7 +2718,7 @@ packages: '@types/node': 20.6.2 esbuild: 0.18.20 postcss: 8.4.29 - rollup: 3.29.2 + rollup: 3.29.3 optionalDependencies: fsevents: 2.3.3 dev: true From f0a1f39220f15b0f5ae5547b137ecea0691e2cd2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Sep 2023 21:47:42 +0000 Subject: [PATCH 105/182] Update eslint --- package.json | 6 +-- pnpm-lock.yaml | 122 ++++++++++++++++++++++++------------------------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/package.json b/package.json index 04c2a875..d06acfb2 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.7.0", - "@typescript-eslint/parser": "6.7.0", - "eslint": "8.49.0", + "@typescript-eslint/eslint-plugin": "6.7.2", + "@typescript-eslint/parser": "6.7.2", + "eslint": "8.50.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 067c7ffe..a92abe0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.7.0 - version: 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + specifier: 6.7.2 + version: 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.7.0 - version: 6.7.0(eslint@8.49.0)(typescript@5.2.2) + specifier: 6.7.2 + version: 6.7.2(eslint@8.50.0)(typescript@5.2.2) eslint: - specifier: 8.49.0 - version: 8.49.0 + specifier: 8.50.0 + version: 8.50.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.49.0) + version: 9.0.0(eslint@8.50.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3) prettier: specifier: 3.0.3 version: 3.0.3 @@ -302,13 +302,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.49.0 + eslint: 8.50.0 eslint-visitor-keys: 3.4.3 dev: true @@ -334,8 +334,8 @@ packages: - supports-color dev: true - /@eslint/js@8.49.0: - resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} + /@eslint/js@8.50.0: + resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} dev: true - /@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==} + /@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -553,13 +553,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.8.1 - '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/type-utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/parser': 6.7.2(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/type-utils': 6.7.2(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.2(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.50.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -570,8 +570,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==} + /@typescript-eslint/parser@6.7.2(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,27 +580,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.50.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.0: - resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==} + /@typescript-eslint/scope-manager@6.7.2: + resolution: {integrity: sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/visitor-keys': 6.7.2 dev: true - /@typescript-eslint/type-utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==} + /@typescript-eslint/type-utils@6.7.2(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,23 +609,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.2(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.49.0 + eslint: 8.50.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.7.0: - resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==} + /@typescript-eslint/types@6.7.2: + resolution: {integrity: sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.0(typescript@5.2.2): - resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==} + /@typescript-eslint/typescript-estree@6.7.2(typescript@5.2.2): + resolution: {integrity: sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,8 +633,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/visitor-keys': 6.7.0 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/visitor-keys': 6.7.2 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -645,30 +645,30 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): - resolution: {integrity: sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==} + /@typescript-eslint/utils@6.7.2(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.2 - '@typescript-eslint/scope-manager': 6.7.0 - '@typescript-eslint/types': 6.7.0 - '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) - eslint: 8.49.0 + '@typescript-eslint/scope-manager': 6.7.2 + '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) + eslint: 8.50.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.0: - resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==} + /@typescript-eslint/visitor-keys@6.7.2: + resolution: {integrity: sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/types': 6.7.2 eslint-visitor-keys: 3.4.3 dev: true @@ -1226,16 +1226,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.49.0): + /eslint-config-prettier@9.0.0(eslint@8.50.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.49.0 + eslint: 8.50.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1249,8 +1249,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.49.0 - eslint-config-prettier: 9.0.0(eslint@8.49.0) + eslint: 8.50.0 + eslint-config-prettier: 9.0.0(eslint@8.50.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1269,15 +1269,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.49.0: - resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} + /eslint@8.50.0: + resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@eslint-community/regexpp': 4.8.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.49.0 + '@eslint/js': 8.50.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 From 37a3fab0aa3898786bcedf9fe097d67f40910d00 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 25 Sep 2023 10:27:57 +0900 Subject: [PATCH 106/182] pnpm up --latest --- pnpm-lock.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a92abe0d..a5ef6313 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -324,7 +324,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.21.0 + globals: 13.22.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1296,7 +1296,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.21.0 + globals: 13.22.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -1451,13 +1451,13 @@ packages: resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.8 + flatted: 3.2.9 keyv: 4.5.3 rimraf: 3.0.2 dev: true - /flatted@3.2.8: - resolution: {integrity: sha512-6qu0W+A94UKNJRs3ffE8s/fWSHQbjqdNx8elGAe95IqnJA77P68TFz4+2cwC28ouAibiZdGBeV6DsvvMg+4vhQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true /form-data@4.0.0: @@ -1530,8 +1530,8 @@ packages: once: 1.4.0 dev: true - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + /globals@13.22.0: + resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 From 70534d29613af5f29531fd139d8293a272014461 Mon Sep 17 00:00:00 2001 From: voluntas Date: Sun, 1 Oct 2023 21:29:38 +0900 Subject: [PATCH 107/182] pnpm up --latest -r --- package.json | 4 +- packages/e2ee/package.json | 4 +- packages/sdk/package.json | 6 +- pnpm-lock.yaml | 278 +++++++++++++++++++------------------ 4 files changed, 147 insertions(+), 145 deletions(-) diff --git a/package.json b/package.json index d06acfb2..a9309a3f 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.7.2", - "@typescript-eslint/parser": "6.7.2", + "@typescript-eslint/eslint-plugin": "6.7.3", + "@typescript-eslint/parser": "6.7.3", "eslint": "8.50.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index de67186e..34a03b74 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -18,8 +18,8 @@ "devDependencies": { "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.3", - "rollup": "3.29.3" + "@rollup/plugin-typescript": "11.1.4", + "rollup": "3.29.4" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index f3ed2d21..626b9284 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -11,12 +11,12 @@ "@rollup/plugin-commonjs": "25.0.4", "@rollup/plugin-node-resolve": "15.2.1", "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.3", + "@rollup/plugin-typescript": "11.1.4", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "3.29.3", + "rollup": "3.29.4", "rollup-plugin-delete": "2.0.0", - "vitest": "0.34.5" + "vitest": "0.34.6" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a5ef6313..951e8503 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.7.2 - version: 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.50.0)(typescript@5.2.2) + specifier: 6.7.3 + version: 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.7.2 - version: 6.7.2(eslint@8.50.0)(typescript@5.2.2) + specifier: 6.7.3 + version: 6.7.3(eslint@8.50.0)(typescript@5.2.2) eslint: specifier: 8.50.0 version: 8.50.0 @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.3) + version: 15.2.1(rollup@3.29.4) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.3) + version: 5.0.2(rollup@3.29.4) '@rollup/plugin-typescript': - specifier: 11.1.3 - version: 11.1.3(rollup@3.29.3)(typescript@5.2.2) + specifier: 11.1.4 + version: 11.1.4(rollup@3.29.4)(typescript@5.2.2) rollup: - specifier: 3.29.3 - version: 3.29.3 + specifier: 3.29.4 + version: 3.29.4 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.4 - version: 25.0.4(rollup@3.29.3) + version: 25.0.4(rollup@3.29.4) '@rollup/plugin-node-resolve': specifier: 15.2.1 - version: 15.2.1(rollup@3.29.3) + version: 15.2.1(rollup@3.29.4) '@rollup/plugin-replace': specifier: 5.0.2 - version: 5.0.2(rollup@3.29.3) + version: 5.0.2(rollup@3.29.4) '@rollup/plugin-typescript': - specifier: 11.1.3 - version: 11.1.3(rollup@3.29.3)(typescript@5.2.2) + specifier: 11.1.4 + version: 11.1.4(rollup@3.29.4)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,14 +88,14 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.29.3 - version: 3.29.3 + specifier: 3.29.4 + version: 3.29.4 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 vitest: - specifier: 0.34.5 - version: 0.34.5(jsdom@22.1.0) + specifier: 0.34.6 + version: 0.34.6(jsdom@22.1.0) packages: @@ -312,8 +312,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.8.1: - resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} + /@eslint-community/regexpp@4.9.0: + resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.3): + /@rollup/plugin-commonjs@25.0.4(rollup@3.29.4): resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.3): + /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.4): resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.6 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.3): + /@rollup/plugin-replace@5.0.2(rollup@3.29.4): resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,13 +448,13 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) magic-string: 0.27.0 - rollup: 3.29.3 + rollup: 3.29.4 dev: true - /@rollup/plugin-typescript@11.1.3(rollup@3.29.3)(typescript@5.2.2): - resolution: {integrity: sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA==} + /@rollup/plugin-typescript@11.1.4(rollup@3.29.4)(typescript@5.2.2): + resolution: {integrity: sha512-WZRh5LBVLQXdKFICUId5J3eIpmjGURaBqntfg3GSZACgeOAFS+lOSMGTwfzDkELTaZVp/lWdMVNU3UkwCUBg/Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0 @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.3) + '@rollup/pluginutils': 5.0.4(rollup@3.29.4) resolve: 1.22.6 - rollup: 3.29.3 + rollup: 3.29.4 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.3): + /@rollup/pluginutils@5.0.4(rollup@3.29.4): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -481,10 +481,10 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.3 + rollup: 3.29.4 dev: true /@shiguredo/lyra-wasm@2023.1.0: @@ -510,15 +510,15 @@ packages: resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} dev: true - /@types/estree@1.0.1: - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + /@types/estree@1.0.2: + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.6.2 + '@types/node': 20.8.0 dev: true /@types/json-schema@7.0.13: @@ -529,20 +529,20 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.6.2: - resolution: {integrity: sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==} + /@types/node@20.8.0: + resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} dev: true /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.2: - resolution: {integrity: sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==} + /@types/semver@7.5.3: + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true - /@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==} + /@typescript-eslint/eslint-plugin@6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -552,12 +552,12 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.8.1 - '@typescript-eslint/parser': 6.7.2(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/type-utils': 6.7.2(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.2(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.2 + '@eslint-community/regexpp': 4.9.0 + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.3 + '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.3 debug: 4.3.4 eslint: 8.50.0 graphemer: 1.4.0 @@ -570,8 +570,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.2(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==} + /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,10 +580,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/scope-manager': 6.7.3 + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.3 debug: 4.3.4 eslint: 8.50.0 typescript: 5.2.2 @@ -591,16 +591,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.2: - resolution: {integrity: sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==} + /@typescript-eslint/scope-manager@6.7.3: + resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/visitor-keys': 6.7.3 dev: true - /@typescript-eslint/type-utils@6.7.2(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==} + /@typescript-eslint/type-utils@6.7.3(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,8 +609,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.2(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.50.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -619,13 +619,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.7.2: - resolution: {integrity: sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==} + /@typescript-eslint/types@6.7.3: + resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.2(typescript@5.2.2): - resolution: {integrity: sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==} + /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2): + resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,8 +633,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/visitor-keys': 6.7.2 + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/visitor-keys': 6.7.3 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -645,18 +645,18 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.2(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==} + /@typescript-eslint/utils@6.7.3(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.13 - '@types/semver': 7.5.2 - '@typescript-eslint/scope-manager': 6.7.2 - '@typescript-eslint/types': 6.7.2 - '@typescript-eslint/typescript-estree': 6.7.2(typescript@5.2.2) + '@types/semver': 7.5.3 + '@typescript-eslint/scope-manager': 6.7.3 + '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) eslint: 8.50.0 semver: 7.5.4 transitivePeerDependencies: @@ -664,46 +664,46 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.2: - resolution: {integrity: sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==} + /@typescript-eslint/visitor-keys@6.7.3: + resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.2 + '@typescript-eslint/types': 6.7.3 eslint-visitor-keys: 3.4.3 dev: true - /@vitest/expect@0.34.5: - resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 - chai: 4.3.8 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true - /@vitest/runner@0.34.5: - resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: - '@vitest/utils': 0.34.5 + '@vitest/utils': 0.34.6 p-limit: 4.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.5: - resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.3 + magic-string: 0.30.4 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/spy@0.34.5: - resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: tinyspy: 2.1.1 dev: true - /@vitest/utils@0.34.5: - resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 @@ -924,14 +924,14 @@ packages: engines: {node: '>=14.16'} dev: true - /chai@4.3.8: - resolution: {integrity: sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 - check-error: 1.0.2 + check-error: 1.0.3 deep-eql: 4.1.3 - get-func-name: 2.0.0 + get-func-name: 2.0.2 loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 @@ -957,8 +957,10 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 dev: true /clean-stack@2.2.0: @@ -1275,7 +1277,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.8.1 + '@eslint-community/regexpp': 4.9.0 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.50.0 '@humanwhocodes/config-array': 0.11.11 @@ -1485,8 +1487,8 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /get-stream@6.0.1: @@ -1747,7 +1749,7 @@ packages: /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.2 dev: true /is-stream@2.0.1: @@ -1808,7 +1810,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.14.1 + ws: 8.14.2 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -1869,7 +1871,7 @@ packages: /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.2 dev: true /lru-cache@6.0.0: @@ -1890,8 +1892,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.3: - resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} + /magic-string@0.30.4: + resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -1984,7 +1986,7 @@ packages: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.3.0 + ufo: 1.3.1 dev: true /ms@2.0.0: @@ -2178,8 +2180,8 @@ packages: pathe: 1.1.1 dev: true - /postcss@8.4.29: - resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -2310,8 +2312,8 @@ packages: del: 5.1.0 dev: true - /rollup@3.29.3: - resolution: {integrity: sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2626,8 +2628,8 @@ packages: hasBin: true dev: true - /ufo@1.3.0: - resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} + /ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true /universalify@0.2.0: @@ -2665,8 +2667,8 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.5(@types/node@20.6.2): - resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} + /vite-node@0.34.6(@types/node@20.8.0): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true dependencies: @@ -2675,7 +2677,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.6.2) + vite: 4.4.9(@types/node@20.8.0) transitivePeerDependencies: - '@types/node' - less @@ -2687,7 +2689,7 @@ packages: - terser dev: true - /vite@4.4.9(@types/node@20.6.2): + /vite@4.4.9(@types/node@20.8.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -2715,16 +2717,16 @@ packages: terser: optional: true dependencies: - '@types/node': 20.6.2 + '@types/node': 20.8.0 esbuild: 0.18.20 - postcss: 8.4.29 - rollup: 3.29.3 + postcss: 8.4.31 + rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@0.34.5(jsdom@22.1.0): - resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} + /vitest@0.34.6(jsdom@22.1.0): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: @@ -2756,28 +2758,28 @@ packages: dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 - '@types/node': 20.6.2 - '@vitest/expect': 0.34.5 - '@vitest/runner': 0.34.5 - '@vitest/snapshot': 0.34.5 - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 + '@types/node': 20.8.0 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 acorn: 8.10.0 acorn-walk: 8.2.0 cac: 6.7.14 - chai: 4.3.8 + chai: 4.3.10 debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.3 + magic-string: 0.30.4 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.6.2) - vite-node: 0.34.5(@types/node@20.6.2) + vite: 4.4.9(@types/node@20.8.0) + vite-node: 0.34.6(@types/node@20.8.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -2866,8 +2868,8 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.14.1: - resolution: {integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==} + /ws@8.14.2: + resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 From 6fb90fe03322bf8e6f397c1193a1825ed719ec07 Mon Sep 17 00:00:00 2001 From: voluntas Date: Sun, 1 Oct 2023 21:30:14 +0900 Subject: [PATCH 108/182] pnpm 8.8.0 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index a9309a3f..c379a867 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.7.6", + "packageManager": "pnpm@8.8.0", "engines": { "node": ">=18.17.1" } -} \ No newline at end of file +} From bb1f34874dc6112747a4e7827dcd6ff5551ea4cd Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 4 Oct 2023 14:24:44 +0900 Subject: [PATCH 109/182] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5729233f..8dd6d2d1 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ Please read https://github.com/shiguredo/oss before use. ## システム条件 -- WebRTC SFU Sora 2022.2.0 以降 -- TypeScript 3.8 以降 +- WebRTC SFU Sora 2023.1.0 以降 +- TypeScript 5.2 以降 ## 組み込みサンプル @@ -148,4 +148,4 @@ limitations under the License. - [Sora Archive Uploader](https://github.com/shiguredo/sora-archive-uploader) - Sora 専用録画ファイル S3 互換オブジェクトストレージアップロードツール - [Prometheus exporter for WebRTC SFU Sora metrics](https://github.com/shiguredo/sora_exporter) - - Sora 専用 OpenMetrics 形式エクスポーター \ No newline at end of file + - Sora 専用 OpenMetrics 形式エクスポーター From 5d61b2bb1125f40eb964fe4d567d7952cec424f6 Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 4 Oct 2023 15:02:07 +0900 Subject: [PATCH 110/182] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=87=E3=83=B3?= =?UTF-8?q?=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5729233f..1e504a9e 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ limitations under the License. ### クライアント SDK - [Sora JavaScript SDK](https://github.com/shiguredo/sora-javascript-sdk) - - [WebRTC SFU Sora JavaScript SDK サンプル集](https://github.com/shiguredo/sora-js-sdk-samples) + - [Sora JavaScript SDK サンプル集](https://github.com/shiguredo/sora-js-sdk-samples) - [Sora JavaScript SDK ドキュメント](https://sora-js-sdk.shiguredo.jp/) - [Sora iOS SDK](https://github.com/shiguredo/sora-ios-sdk) - [Sora iOS SDK クイックスタート](https://github.com/shiguredo/sora-ios-sdk-quickstart) @@ -148,4 +148,4 @@ limitations under the License. - [Sora Archive Uploader](https://github.com/shiguredo/sora-archive-uploader) - Sora 専用録画ファイル S3 互換オブジェクトストレージアップロードツール - [Prometheus exporter for WebRTC SFU Sora metrics](https://github.com/shiguredo/sora_exporter) - - Sora 専用 OpenMetrics 形式エクスポーター \ No newline at end of file + - Sora 専用 OpenMetrics 形式エクスポーター From 390caff4b237bdd736145d0f040e6b4be2b8c4a9 Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 4 Oct 2023 15:09:11 +0900 Subject: [PATCH 111/182] pnpm up --latest --- package.json | 4 +-- pnpm-lock.yaml | 86 +++++++++++++++++++++++++------------------------- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index c379a867..e3f60987 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.7.3", - "@typescript-eslint/parser": "6.7.3", + "@typescript-eslint/eslint-plugin": "6.7.4", + "@typescript-eslint/parser": "6.7.4", "eslint": "8.50.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 951e8503..b011a08f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.7.3 - version: 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + specifier: 6.7.4 + version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.7.3 - version: 6.7.3(eslint@8.50.0)(typescript@5.2.2) + specifier: 6.7.4 + version: 6.7.4(eslint@8.50.0)(typescript@5.2.2) eslint: specifier: 8.50.0 version: 8.50.0 @@ -312,8 +312,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.9.0: - resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==} + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -541,8 +541,8 @@ packages: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true - /@typescript-eslint/eslint-plugin@6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==} + /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -552,12 +552,12 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.9.0 - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.3 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/type-utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.4 debug: 4.3.4 eslint: 8.50.0 graphemer: 1.4.0 @@ -570,8 +570,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} + /@typescript-eslint/parser@6.7.4(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -580,10 +580,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.4 debug: 4.3.4 eslint: 8.50.0 typescript: 5.2.2 @@ -591,16 +591,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.3: - resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} + /@typescript-eslint/scope-manager@6.7.4: + resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 dev: true - /@typescript-eslint/type-utils@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==} + /@typescript-eslint/type-utils@6.7.4(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -609,8 +609,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.50.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -619,13 +619,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.7.3: - resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} + /@typescript-eslint/types@6.7.4: + resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2): - resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} + /@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2): + resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -633,8 +633,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/visitor-keys': 6.7.4 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -645,8 +645,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==} + /@typescript-eslint/utils@6.7.4(eslint@8.50.0)(typescript@5.2.2): + resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -654,9 +654,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.4 + '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) eslint: 8.50.0 semver: 7.5.4 transitivePeerDependencies: @@ -664,11 +664,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.3: - resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} + /@typescript-eslint/visitor-keys@6.7.4: + resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/types': 6.7.4 eslint-visitor-keys: 3.4.3 dev: true @@ -1277,7 +1277,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.9.0 + '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.50.0 '@humanwhocodes/config-array': 0.11.11 From ae31cec365ad095655cefafdc7fc5de2a7f1766b Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 4 Oct 2023 15:10:30 +0900 Subject: [PATCH 112/182] 2023.2.0-canary.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e3f60987..a5aef2c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.2", + "version": "2023.2.0-canary.3", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From ede9711e8f2afed25d6b9d3cefbe855b136d178b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 15:53:31 +0000 Subject: [PATCH 113/182] Update dependency typedoc to v0.25.2 --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a5aef2c4..f2989e3a 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.3", "serve": "14.2.1", - "typedoc": "0.25.1", + "typedoc": "0.25.2", "typescript": "5.2.2" }, "resolutions": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b011a08f..c378e457 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: 14.2.1 version: 14.2.1 typedoc: - specifier: 0.25.1 - version: 0.25.1(typescript@5.2.2) + specifier: 0.25.2 + version: 0.25.2(typescript@5.2.2) typescript: specifier: 5.2.2 version: 5.2.2 @@ -2608,8 +2608,8 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.25.1(typescript@5.2.2): - resolution: {integrity: sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==} + /typedoc@0.25.2(typescript@5.2.2): + resolution: {integrity: sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==} engines: {node: '>= 16'} hasBin: true peerDependencies: From b041acfcc763a65617ae54f0d6f8855a7316e035 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 19:32:30 +0000 Subject: [PATCH 114/182] Update dependency eslint to v8.51.0 --- package.json | 2 +- pnpm-lock.yaml | 64 +++++++++++++++++++++++++------------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/package.json b/package.json index f2989e3a..d3dc63a0 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "6.7.4", "@typescript-eslint/parser": "6.7.4", - "eslint": "8.50.0", + "eslint": "8.51.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.0", "prettier": "3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c378e457..4d360eaa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,19 +13,19 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: 6.7.4 - version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2) + version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': specifier: 6.7.4 - version: 6.7.4(eslint@8.50.0)(typescript@5.2.2) + version: 6.7.4(eslint@8.51.0)(typescript@5.2.2) eslint: - specifier: 8.50.0 - version: 8.50.0 + specifier: 8.51.0 + version: 8.51.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.50.0) + version: 9.0.0(eslint@8.51.0) eslint-plugin-prettier: specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3) + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) prettier: specifier: 3.0.3 version: 3.0.3 @@ -302,13 +302,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.50.0 + eslint: 8.51.0 eslint-visitor-keys: 3.4.3 dev: true @@ -334,8 +334,8 @@ packages: - supports-color dev: true - /@eslint/js@8.50.0: - resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -541,7 +541,7 @@ packages: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true - /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -553,13 +553,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.4(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 6.7.4 - '@typescript-eslint/type-utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.7.4(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.7.4 debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -570,7 +570,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.4(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/parser@6.7.4(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -585,7 +585,7 @@ packages: '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.7.4 debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -599,7 +599,7 @@ packages: '@typescript-eslint/visitor-keys': 6.7.4 dev: true - /@typescript-eslint/type-utils@6.7.4(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@6.7.4(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -610,9 +610,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.4(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.4(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -645,19 +645,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.4(eslint@8.50.0)(typescript@5.2.2): + /@typescript-eslint/utils@6.7.4(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 6.7.4 '@typescript-eslint/types': 6.7.4 '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) - eslint: 8.50.0 + eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1228,16 +1228,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.50.0): + /eslint-config-prettier@9.0.0(eslint@8.51.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.50.0 + eslint: 8.51.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.50.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1251,8 +1251,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.50.0 - eslint-config-prettier: 9.0.0(eslint@8.50.0) + eslint: 8.51.0 + eslint-config-prettier: 9.0.0(eslint@8.51.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1271,15 +1271,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.50.0: - resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.50.0 + '@eslint/js': 8.51.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 From 16a3d720eb8f2f2aca0680305eb683d515245b7d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 8 Oct 2023 21:23:27 +0000 Subject: [PATCH 115/182] Update rollup --- packages/e2ee/package.json | 6 ++--- packages/sdk/package.json | 8 +++--- pnpm-lock.yaml | 52 +++++++++++++++++++------------------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 34a03b74..6d2016d7 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -16,9 +16,9 @@ "test": "echo \"no test\"" }, "devDependencies": { - "@rollup/plugin-node-resolve": "15.2.1", - "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.4", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-replace": "5.0.3", + "@rollup/plugin-typescript": "11.1.5", "rollup": "3.29.4" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 626b9284..5250e7b0 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -8,10 +8,10 @@ "test": "vitest run" }, "devDependencies": { - "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.2.1", - "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-typescript": "11.1.4", + "@rollup/plugin-commonjs": "25.0.5", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-replace": "5.0.3", + "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", "rollup": "3.29.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4d360eaa..53ea5de6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,14 +46,14 @@ importers: version: link:../go-wasm devDependencies: '@rollup/plugin-node-resolve': - specifier: 15.2.1 - version: 15.2.1(rollup@3.29.4) + specifier: 15.2.3 + version: 15.2.3(rollup@3.29.4) '@rollup/plugin-replace': - specifier: 5.0.2 - version: 5.0.2(rollup@3.29.4) + specifier: 5.0.3 + version: 5.0.3(rollup@3.29.4) '@rollup/plugin-typescript': - specifier: 11.1.4 - version: 11.1.4(rollup@3.29.4)(typescript@5.2.2) + specifier: 11.1.5 + version: 11.1.5(rollup@3.29.4)(typescript@5.2.2) rollup: specifier: 3.29.4 version: 3.29.4 @@ -70,17 +70,17 @@ importers: version: 0.8.1 devDependencies: '@rollup/plugin-commonjs': - specifier: 25.0.4 - version: 25.0.4(rollup@3.29.4) + specifier: 25.0.5 + version: 25.0.5(rollup@3.29.4) '@rollup/plugin-node-resolve': - specifier: 15.2.1 - version: 15.2.1(rollup@3.29.4) + specifier: 15.2.3 + version: 15.2.3(rollup@3.29.4) '@rollup/plugin-replace': - specifier: 5.0.2 - version: 5.0.2(rollup@3.29.4) + specifier: 5.0.3 + version: 5.0.3(rollup@3.29.4) '@rollup/plugin-typescript': - specifier: 11.1.4 - version: 11.1.4(rollup@3.29.4)(typescript@5.2.2) + specifier: 11.1.5 + version: 11.1.5(rollup@3.29.4)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -403,11 +403,11 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.4(rollup@3.29.4): - resolution: {integrity: sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==} + /@rollup/plugin-commonjs@25.0.5(rollup@3.29.4): + resolution: {integrity: sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.68.0||^3.0.0 + rollup: ^2.68.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -421,11 +421,11 @@ packages: rollup: 3.29.4 dev: true - /@rollup/plugin-node-resolve@15.2.1(rollup@3.29.4): - resolution: {integrity: sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==} + /@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4): + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.78.0||^3.0.0 + rollup: ^2.78.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -439,11 +439,11 @@ packages: rollup: 3.29.4 dev: true - /@rollup/plugin-replace@5.0.2(rollup@3.29.4): - resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==} + /@rollup/plugin-replace@5.0.3(rollup@3.29.4): + resolution: {integrity: sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -453,11 +453,11 @@ packages: rollup: 3.29.4 dev: true - /@rollup/plugin-typescript@11.1.4(rollup@3.29.4)(typescript@5.2.2): - resolution: {integrity: sha512-WZRh5LBVLQXdKFICUId5J3eIpmjGURaBqntfg3GSZACgeOAFS+lOSMGTwfzDkELTaZVp/lWdMVNU3UkwCUBg/Q==} + /@rollup/plugin-typescript@11.1.5(rollup@3.29.4)(typescript@5.2.2): + resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^2.14.0||^3.0.0 + rollup: ^2.14.0||^3.0.0||^4.0.0 tslib: '*' typescript: '>=3.7.0' peerDependenciesMeta: From 47a3870a97ae98c7f9891d1d02f5029a222385b2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 01:24:05 +0000 Subject: [PATCH 116/182] Update dependency rollup to v4 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 166 +++++++++++++++++++++++++++++++------ 3 files changed, 143 insertions(+), 27 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 6d2016d7..26a5f3fa 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.3", "@rollup/plugin-typescript": "11.1.5", - "rollup": "3.29.4" + "rollup": "4.0.2" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 5250e7b0..e811e2eb 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "3.29.4", + "rollup": "4.0.2", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53ea5de6..23cc9097 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@3.29.4) + version: 15.2.3(rollup@4.0.2) '@rollup/plugin-replace': specifier: 5.0.3 - version: 5.0.3(rollup@3.29.4) + version: 5.0.3(rollup@4.0.2) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@3.29.4)(typescript@5.2.2) + version: 11.1.5(rollup@4.0.2)(typescript@5.2.2) rollup: - specifier: 3.29.4 - version: 3.29.4 + specifier: 4.0.2 + version: 4.0.2 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.5 - version: 25.0.5(rollup@3.29.4) + version: 25.0.5(rollup@4.0.2) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@3.29.4) + version: 15.2.3(rollup@4.0.2) '@rollup/plugin-replace': specifier: 5.0.3 - version: 5.0.3(rollup@3.29.4) + version: 5.0.3(rollup@4.0.2) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@3.29.4)(typescript@5.2.2) + version: 11.1.5(rollup@4.0.2)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 3.29.4 - version: 3.29.4 + specifier: 4.0.2 + version: 4.0.2 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.5(rollup@3.29.4): + /@rollup/plugin-commonjs@25.0.5(rollup@4.0.2): resolution: {integrity: sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@4.0.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 3.29.4 + rollup: 4.0.2 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.0.2): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@4.0.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.6 - rollup: 3.29.4 + rollup: 4.0.2 dev: true - /@rollup/plugin-replace@5.0.3(rollup@3.29.4): + /@rollup/plugin-replace@5.0.3(rollup@4.0.2): resolution: {integrity: sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@4.0.2) magic-string: 0.27.0 - rollup: 3.29.4 + rollup: 4.0.2 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@3.29.4)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.0.2)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@3.29.4) + '@rollup/pluginutils': 5.0.4(rollup@4.0.2) resolve: 1.22.6 - rollup: 3.29.4 + rollup: 4.0.2 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@3.29.4): + /@rollup/pluginutils@5.0.4(rollup@4.0.2): resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,8 +484,104 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 3.29.4 + rollup: 4.0.2 + dev: true + + /@rollup/rollup-android-arm-eabi@4.0.2: + resolution: {integrity: sha512-xDvk1pT4vaPU2BOLy0MqHMdYZyntqpaBf8RhBiezlqG9OjY8F50TyctHo8znigYKd+QCFhCmlmXHOL/LoaOl3w==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.0.2: + resolution: {integrity: sha512-lqCglytY3E6raze27DD9VQJWohbwCxzqs9aSHcj5X/8hJpzZfNdbsr4Ja9Hqp6iPyF53+5PtPx0pKRlkSvlHZg==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.0.2: + resolution: {integrity: sha512-nkBKItS6E6CCzvRwgiKad+j+1ibmL7SIInj7oqMWmdkCjiSX6VeVZw2mLlRKIUL+JjsBgpATTfo7BiAXc1v0jA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.0.2: + resolution: {integrity: sha512-vX2C8xvWPIbpEgQht95+dY6BReKAvtDgPDGi0XN0kWJKkm4WdNmq5dnwscv/zxvi+n6jUTBhs6GtpkkWT4q8Gg==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.0.2: + resolution: {integrity: sha512-DVFIfcHOjgmeHOAqji4xNz2wczt1Bmzy9MwBZKBa83SjBVO/i38VHDR+9ixo8QpBOiEagmNw12DucG+v55tCrg==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.0.2: + resolution: {integrity: sha512-GCK/a9ItUxPI0V5hQEJjH4JtOJO90GF2Hja7TO+EZ8rmkGvEi8/ZDMhXmcuDpQT7/PWrTT9RvnG8snMd5SrhBQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.0.2: + resolution: {integrity: sha512-cLuBp7rOjIB1R2j/VazjCmHC7liWUur2e9mFflLJBAWCkrZ+X0+QwHLvOQakIwDymungzAKv6W9kHZnTp/Mqrg==} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.0.2: + resolution: {integrity: sha512-Zqw4iVnJr2naoyQus0yLy7sLtisCQcpdMKUCeXPBjkJtpiflRime/TMojbnl8O3oxUAj92mxr+t7im/RbgA20w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.0.2: + resolution: {integrity: sha512-jJRU9TyUD/iMqjf8aLAp7XiN3pIj5v6Qcu+cdzBfVTKDD0Fvua4oUoK8eVJ9ZuKBEQKt3WdlcwJXFkpmMLk6kg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.0.2: + resolution: {integrity: sha512-ZkS2NixCxHKC4zbOnw64ztEGGDVIYP6nKkGBfOAxEPW71Sji9v8z3yaHNuae/JHPwXA+14oDefnOuVfxl59SmQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.0.2: + resolution: {integrity: sha512-3SKjj+tvnZ0oZq2BKB+fI+DqYI83VrRzk7eed8tJkxeZ4zxJZcLSE8YDQLYGq1tZAnAX+H076RHHB4gTZXsQzw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.0.2: + resolution: {integrity: sha512-MBdJIOxRauKkry7t2q+rTHa3aWjVez2eioWg+etRVS3dE4tChhmt5oqZYr48R6bPmcwEhxQr96gVRfeQrLbqng==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true /@shiguredo/lyra-wasm@2023.1.0: resolution: {integrity: sha512-RVOyPYrZMCHYb5QM6S8BTAOnGHiqYpoBOG8+9uct4gg1ut9IK8LsVgwv5Q+/t+hWZeRhuyYNXt1PhBUm1cJZzg==} @@ -2320,6 +2416,26 @@ packages: fsevents: 2.3.3 dev: true + /rollup@4.0.2: + resolution: {integrity: sha512-MCScu4usMPCeVFaiLcgMDaBQeYi1z6vpWxz0r0hq0Hv77Y2YuOTZldkuNJ54BdYBH3e+nkrk6j0Rre/NLDBYzg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.0.2 + '@rollup/rollup-android-arm64': 4.0.2 + '@rollup/rollup-darwin-arm64': 4.0.2 + '@rollup/rollup-darwin-x64': 4.0.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.0.2 + '@rollup/rollup-linux-arm64-gnu': 4.0.2 + '@rollup/rollup-linux-arm64-musl': 4.0.2 + '@rollup/rollup-linux-x64-gnu': 4.0.2 + '@rollup/rollup-linux-x64-musl': 4.0.2 + '@rollup/rollup-win32-arm64-msvc': 4.0.2 + '@rollup/rollup-win32-ia32-msvc': 4.0.2 + '@rollup/rollup-win32-x64-msvc': 4.0.2 + fsevents: 2.3.3 + dev: true + /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true From b776360f901e8c533f22ed3da5d1ce14f4226a02 Mon Sep 17 00:00:00 2001 From: voluntas Date: Sun, 15 Oct 2023 13:04:48 +0900 Subject: [PATCH 117/182] pnpm up -L --- package.json | 6 +-- pnpm-lock.yaml | 112 ++++++++++++++++++++++++------------------------- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/package.json b/package.json index d3dc63a0..f04efe1c 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,11 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.7.4", - "@typescript-eslint/parser": "6.7.4", + "@typescript-eslint/eslint-plugin": "6.7.5", + "@typescript-eslint/parser": "6.7.5", "eslint": "8.51.0", "eslint-config-prettier": "9.0.0", - "eslint-plugin-prettier": "5.0.0", + "eslint-plugin-prettier": "5.0.1", "prettier": "3.0.3", "serve": "14.2.1", "typedoc": "0.25.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23cc9097..fdc0bd2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.7.4 - version: 6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.51.0)(typescript@5.2.2) + specifier: 6.7.5 + version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.7.4 - version: 6.7.4(eslint@8.51.0)(typescript@5.2.2) + specifier: 6.7.5 + version: 6.7.5(eslint@8.51.0)(typescript@5.2.2) eslint: specifier: 8.51.0 version: 8.51.0 @@ -24,8 +24,8 @@ importers: specifier: 9.0.0 version: 9.0.0(eslint@8.51.0) eslint-plugin-prettier: - specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + specifier: 5.0.1 + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) prettier: specifier: 3.0.3 version: 3.0.3 @@ -324,7 +324,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.22.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -637,8 +637,8 @@ packages: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true - /@typescript-eslint/eslint-plugin@6.7.4(@typescript-eslint/parser@6.7.4)(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-DAbgDXwtX+pDkAHwiGhqP3zWUGpW49B7eqmgpPtg+BKJXwdct79ut9+ifqOFPJGClGKSHXn2PTBatCnldJRUoA==} + /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -649,11 +649,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.7.4(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.4 - '@typescript-eslint/type-utils': 6.7.4(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.4(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.4 + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4 eslint: 8.51.0 graphemer: 1.4.0 @@ -666,8 +666,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.4(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-I5zVZFY+cw4IMZUeNCU7Sh2PO5O57F7Lr0uyhgCJmhN/BuTlnc55KxPonR4+EM3GBdfiCyGZye6DgMjtubQkmA==} + /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -676,10 +676,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.4 - '@typescript-eslint/types': 6.7.4 - '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.4 + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4 eslint: 8.51.0 typescript: 5.2.2 @@ -687,16 +687,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.4: - resolution: {integrity: sha512-SdGqSLUPTXAXi7c3Ob7peAGVnmMoGzZ361VswK2Mqf8UOYcODiYvs8rs5ILqEdfvX1lE7wEZbLyELCW+Yrql1A==} + /@typescript-eslint/scope-manager@6.7.5: + resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.4 - '@typescript-eslint/visitor-keys': 6.7.4 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 dev: true - /@typescript-eslint/type-utils@6.7.4(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-n+g3zi1QzpcAdHFP9KQF+rEFxMb2KxtnJGID3teA/nxKHOVi3ylKovaqEzGBbVY2pBttU6z85gp0D00ufLzViQ==} + /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -705,8 +705,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.4(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.51.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -715,13 +715,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.7.4: - resolution: {integrity: sha512-o9XWK2FLW6eSS/0r/tgjAGsYasLAnOWg7hvZ/dGYSSNjCh+49k5ocPN8OmG5aZcSJ8pclSOyVKP2x03Sj+RrCA==} + /@typescript-eslint/types@6.7.5: + resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.4(typescript@5.2.2): - resolution: {integrity: sha512-ty8b5qHKatlNYd9vmpHooQz3Vki3gG+3PchmtsA4TgrZBKWHNjWfkQid7K7xQogBqqc7/BhGazxMD5vr6Ha+iQ==} + /@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2): + resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -729,8 +729,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.4 - '@typescript-eslint/visitor-keys': 6.7.4 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -741,8 +741,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.4(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-PRQAs+HUn85Qdk+khAxsVV+oULy3VkbH3hQ8hxLRJXWBEd7iI+GbQxH5SEUSH7kbEoTp6oT1bOwyga24ELALTA==} + /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -750,9 +750,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.7.4 - '@typescript-eslint/types': 6.7.4 - '@typescript-eslint/typescript-estree': 6.7.4(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.5 + '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: @@ -760,11 +760,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.4: - resolution: {integrity: sha512-pOW37DUhlTZbvph50x5zZCkFn3xzwkGtNoJHzIM3svpiSkJzwOYr/kVBaXmf+RAQiUDs1AHEZVNPg6UJCJpwRA==} + /@typescript-eslint/visitor-keys@6.7.5: + resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.4 + '@typescript-eslint/types': 6.7.5 eslint-visitor-keys: 3.4.3 dev: true @@ -1333,8 +1333,8 @@ packages: eslint: 8.51.0 dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1394,7 +1394,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.22.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -1527,7 +1527,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 dev: true /fill-range@7.0.1: @@ -1545,12 +1545,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.9 - keyv: 4.5.3 + keyv: 4.5.4 rimraf: 3.0.2 dev: true @@ -1628,8 +1628,8 @@ packages: once: 1.4.0 dev: true - /globals@13.22.0: - resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -1934,8 +1934,8 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 dev: true @@ -2525,8 +2525,8 @@ packages: engines: {node: '>=8'} dev: true - /shiki@0.14.4: - resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} + /shiki@0.14.5: + resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -2734,7 +2734,7 @@ packages: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 - shiki: 0.14.4 + shiki: 0.14.5 typescript: 5.2.2 dev: true From 728383ebe29a7f012c8bebd74220afa92301503a Mon Sep 17 00:00:00 2001 From: voluntas Date: Sun, 15 Oct 2023 13:05:20 +0900 Subject: [PATCH 118/182] pnpm up -L -r --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 208 ++++++++++++++++++------------------- 3 files changed, 106 insertions(+), 106 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 26a5f3fa..f1725dca 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.3", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.0.2" + "rollup": "4.1.0" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e811e2eb..c0d8c3a8 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.0.2", + "rollup": "4.1.0", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdc0bd2b..715a1d26 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.0.2) + version: 15.2.3(rollup@4.1.0) '@rollup/plugin-replace': specifier: 5.0.3 - version: 5.0.3(rollup@4.0.2) + version: 5.0.3(rollup@4.1.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.0.2)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.0)(typescript@5.2.2) rollup: - specifier: 4.0.2 - version: 4.0.2 + specifier: 4.1.0 + version: 4.1.0 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.5 - version: 25.0.5(rollup@4.0.2) + version: 25.0.5(rollup@4.1.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.0.2) + version: 15.2.3(rollup@4.1.0) '@rollup/plugin-replace': specifier: 5.0.3 - version: 5.0.3(rollup@4.0.2) + version: 5.0.3(rollup@4.1.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.0.2)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.0)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.0.2 - version: 4.0.2 + specifier: 4.1.0 + version: 4.1.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.5(rollup@4.0.2): + /@rollup/plugin-commonjs@25.0.5(rollup@4.1.0): resolution: {integrity: sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@4.0.2) + '@rollup/pluginutils': 5.0.5(rollup@4.1.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.27.0 - rollup: 4.0.2 + rollup: 4.1.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.0.2): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@4.0.2) + '@rollup/pluginutils': 5.0.5(rollup@4.1.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.6 - rollup: 4.0.2 + resolve: 1.22.8 + rollup: 4.1.0 dev: true - /@rollup/plugin-replace@5.0.3(rollup@4.0.2): + /@rollup/plugin-replace@5.0.3(rollup@4.1.0): resolution: {integrity: sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@4.0.2) + '@rollup/pluginutils': 5.0.5(rollup@4.1.0) magic-string: 0.27.0 - rollup: 4.0.2 + rollup: 4.1.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.0.2)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.1.0)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,17 +466,17 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.4(rollup@4.0.2) - resolve: 1.22.6 - rollup: 4.0.2 + '@rollup/pluginutils': 5.0.5(rollup@4.1.0) + resolve: 1.22.8 + rollup: 4.1.0 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.4(rollup@4.0.2): - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + /@rollup/pluginutils@5.0.5(rollup@4.1.0): + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.0.2 + rollup: 4.1.0 dev: true - /@rollup/rollup-android-arm-eabi@4.0.2: - resolution: {integrity: sha512-xDvk1pT4vaPU2BOLy0MqHMdYZyntqpaBf8RhBiezlqG9OjY8F50TyctHo8znigYKd+QCFhCmlmXHOL/LoaOl3w==} + /@rollup/rollup-android-arm-eabi@4.1.0: + resolution: {integrity: sha512-ALx3P+gRnVSzWPsPq7F3pNCay4zN1NJVRTjpSSUNrZj1+DqBuwwt830JLyEATmGaN1VJ15UkqudSx8Mu3BF3BA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.0.2: - resolution: {integrity: sha512-lqCglytY3E6raze27DD9VQJWohbwCxzqs9aSHcj5X/8hJpzZfNdbsr4Ja9Hqp6iPyF53+5PtPx0pKRlkSvlHZg==} + /@rollup/rollup-android-arm64@4.1.0: + resolution: {integrity: sha512-pIi4Awf/YFwdc3H0VNYZMTS7FA0J00rS8AKoSfyB61GDVo+r7eOjSofoUPhDFXU7pfuTBiZ/4VAGa/qXGm5wcA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.0.2: - resolution: {integrity: sha512-nkBKItS6E6CCzvRwgiKad+j+1ibmL7SIInj7oqMWmdkCjiSX6VeVZw2mLlRKIUL+JjsBgpATTfo7BiAXc1v0jA==} + /@rollup/rollup-darwin-arm64@4.1.0: + resolution: {integrity: sha512-xpZp/bE29sSYoopkOepdDRui/KnlXjSyf/H0qVOOzjTYE8WxqMfDMfwcgb+ORuaq12RdZfA/nLKZ27PL1AuazA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.0.2: - resolution: {integrity: sha512-vX2C8xvWPIbpEgQht95+dY6BReKAvtDgPDGi0XN0kWJKkm4WdNmq5dnwscv/zxvi+n6jUTBhs6GtpkkWT4q8Gg==} + /@rollup/rollup-darwin-x64@4.1.0: + resolution: {integrity: sha512-bq3nagc+N+IquV8p49eDZE3jFaXt0Fjr7nxBeMkg2lKuzEjUfwN3iTRQIBC+jQT27qa5SegHaawfOf0pfyUWCQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.0.2: - resolution: {integrity: sha512-DVFIfcHOjgmeHOAqji4xNz2wczt1Bmzy9MwBZKBa83SjBVO/i38VHDR+9ixo8QpBOiEagmNw12DucG+v55tCrg==} + /@rollup/rollup-linux-arm-gnueabihf@4.1.0: + resolution: {integrity: sha512-H5LILHYvZHTeaqIuNg4pw5lx4jj/mTz7tUXqZ1aFWBmnq9h34nHfA/SxyCZ5JCIyV/enLnXqposjx0i0Wrgg5g==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.0.2: - resolution: {integrity: sha512-GCK/a9ItUxPI0V5hQEJjH4JtOJO90GF2Hja7TO+EZ8rmkGvEi8/ZDMhXmcuDpQT7/PWrTT9RvnG8snMd5SrhBQ==} + /@rollup/rollup-linux-arm64-gnu@4.1.0: + resolution: {integrity: sha512-snLIi8gp2VUntI/vXoiY0DnsmdP0dc/g4D3bHiiytPv9t8oWj5lCFtnHoZLvvreT2IsaZ1H8P+9D9lFBKr82xA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.0.2: - resolution: {integrity: sha512-cLuBp7rOjIB1R2j/VazjCmHC7liWUur2e9mFflLJBAWCkrZ+X0+QwHLvOQakIwDymungzAKv6W9kHZnTp/Mqrg==} + /@rollup/rollup-linux-arm64-musl@4.1.0: + resolution: {integrity: sha512-OXqp0PUZ3x/fxoT/WooO+kxO6Bxznr0lRA2qj0FjGvMEywfMTKKBcfSd3QorVcxmAKDEA5IDwD0aUPqyYDx2qw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.0.2: - resolution: {integrity: sha512-Zqw4iVnJr2naoyQus0yLy7sLtisCQcpdMKUCeXPBjkJtpiflRime/TMojbnl8O3oxUAj92mxr+t7im/RbgA20w==} + /@rollup/rollup-linux-x64-gnu@4.1.0: + resolution: {integrity: sha512-8wsvV6xnkLal4WHiSORLeE84FZr/dOalahEK9o1xldj42gafOHnZsGop4Ai2FuryckskHSaufJmxBF6Ps/9+Ww==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.0.2: - resolution: {integrity: sha512-jJRU9TyUD/iMqjf8aLAp7XiN3pIj5v6Qcu+cdzBfVTKDD0Fvua4oUoK8eVJ9ZuKBEQKt3WdlcwJXFkpmMLk6kg==} + /@rollup/rollup-linux-x64-musl@4.1.0: + resolution: {integrity: sha512-Z0ZiucXLZSHJnRKfQ6xgz0SjL0TlXr76kCwpr2ULQRxbvvfEm4Z0HM+DEgE1R6OthSqPxnxNqT2IACkQ6yvGSw==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.0.2: - resolution: {integrity: sha512-ZkS2NixCxHKC4zbOnw64ztEGGDVIYP6nKkGBfOAxEPW71Sji9v8z3yaHNuae/JHPwXA+14oDefnOuVfxl59SmQ==} + /@rollup/rollup-win32-arm64-msvc@4.1.0: + resolution: {integrity: sha512-7lqRlilcPpA88eCtFxl7zaeRH4nZlPy/qECsrRe9JQzqANa3wPYmjgwLQbduN8PuZ9dQ6HD09BFm7v+Pc0dNTQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.0.2: - resolution: {integrity: sha512-3SKjj+tvnZ0oZq2BKB+fI+DqYI83VrRzk7eed8tJkxeZ4zxJZcLSE8YDQLYGq1tZAnAX+H076RHHB4gTZXsQzw==} + /@rollup/rollup-win32-ia32-msvc@4.1.0: + resolution: {integrity: sha512-SQKgw9m7bCvrNu/Gy5bRBRqosM0T7AWMEL3f1ikBqmwsCjsXQBGvJrCYkvZ3Lp5UAkwU7EgSdP6KtnM3Z8PajA==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.0.2: - resolution: {integrity: sha512-MBdJIOxRauKkry7t2q+rTHa3aWjVez2eioWg+etRVS3dE4tChhmt5oqZYr48R6bPmcwEhxQr96gVRfeQrLbqng==} + /@rollup/rollup-win32-x64-msvc@4.1.0: + resolution: {integrity: sha512-ZKUpObly8HGI1QXM1AOxEiYolMByH2ekxaeROqRqZnEIWrBJJ/HjNFIY+Q+ujJymSkjj+ArDRTryHX3M7KZGnQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -599,11 +599,11 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.6 + '@types/chai': 4.3.8 dev: true - /@types/chai@4.3.6: - resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} + /@types/chai@4.3.8: + resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} dev: true /@types/estree@1.0.2: @@ -614,7 +614,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.8.0 + '@types/node': 20.8.6 dev: true /@types/json-schema@7.0.13: @@ -625,8 +625,10 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.8.0: - resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} + /@types/node@20.8.6: + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + dependencies: + undici-types: 5.25.3 dev: true /@types/resolve@1.20.2: @@ -787,7 +789,7 @@ packages: /@vitest/snapshot@0.34.6: resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true @@ -795,14 +797,14 @@ packages: /@vitest/spy@0.34.6: resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: - tinyspy: 2.1.1 + tinyspy: 2.2.0 dev: true /@vitest/utils@0.34.6: resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: diff-sequences: 29.6.3 - loupe: 2.3.6 + loupe: 2.3.7 pretty-format: 29.7.0 dev: true @@ -1028,7 +1030,7 @@ packages: check-error: 1.0.3 deep-eql: 4.1.3 get-func-name: 2.0.2 - loupe: 2.3.6 + loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -1579,10 +1581,6 @@ packages: dev: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -1674,11 +1672,9 @@ packages: engines: {node: '>=8'} dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 dev: true /html-encoding-sniffer@3.0.0: @@ -1774,7 +1770,7 @@ packages: /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /is-docker@2.2.1: @@ -1964,8 +1960,8 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 dev: true @@ -1988,8 +1984,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.4: - resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -2380,8 +2376,8 @@ packages: engines: {node: '>=4'} dev: true - /resolve@1.22.6: - resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -2416,23 +2412,23 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.0.2: - resolution: {integrity: sha512-MCScu4usMPCeVFaiLcgMDaBQeYi1z6vpWxz0r0hq0Hv77Y2YuOTZldkuNJ54BdYBH3e+nkrk6j0Rre/NLDBYzg==} + /rollup@4.1.0: + resolution: {integrity: sha512-qNSWRV1EkGCIjR5z4Z0AodbPKsLlwtvs/iP9F75ZuqlQfVTZvDqBMOxuKzxGq1OY4+l2hey8fUWbiekCdZEIFg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.0.2 - '@rollup/rollup-android-arm64': 4.0.2 - '@rollup/rollup-darwin-arm64': 4.0.2 - '@rollup/rollup-darwin-x64': 4.0.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.0.2 - '@rollup/rollup-linux-arm64-gnu': 4.0.2 - '@rollup/rollup-linux-arm64-musl': 4.0.2 - '@rollup/rollup-linux-x64-gnu': 4.0.2 - '@rollup/rollup-linux-x64-musl': 4.0.2 - '@rollup/rollup-win32-arm64-msvc': 4.0.2 - '@rollup/rollup-win32-ia32-msvc': 4.0.2 - '@rollup/rollup-win32-x64-msvc': 4.0.2 + '@rollup/rollup-android-arm-eabi': 4.1.0 + '@rollup/rollup-android-arm64': 4.1.0 + '@rollup/rollup-darwin-arm64': 4.1.0 + '@rollup/rollup-darwin-x64': 4.1.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.1.0 + '@rollup/rollup-linux-arm64-gnu': 4.1.0 + '@rollup/rollup-linux-arm64-musl': 4.1.0 + '@rollup/rollup-linux-x64-gnu': 4.1.0 + '@rollup/rollup-linux-x64-musl': 4.1.0 + '@rollup/rollup-win32-arm64-msvc': 4.1.0 + '@rollup/rollup-win32-ia32-msvc': 4.1.0 + '@rollup/rollup-win32-x64-msvc': 4.1.0 fsevents: 2.3.3 dev: true @@ -2655,8 +2651,8 @@ packages: engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.1.1: - resolution: {integrity: sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==} + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} dev: true @@ -2748,6 +2744,10 @@ packages: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true + /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -2783,7 +2783,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.8.0): + /vite-node@0.34.6(@types/node@20.8.6): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2793,7 +2793,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.8.0) + vite: 4.4.11(@types/node@20.8.6) transitivePeerDependencies: - '@types/node' - less @@ -2805,8 +2805,8 @@ packages: - terser dev: true - /vite@4.4.9(@types/node@20.8.0): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + /vite@4.4.11(@types/node@20.8.6): + resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2833,7 +2833,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.0 + '@types/node': 20.8.6 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 @@ -2872,9 +2872,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.6 + '@types/chai': 4.3.8 '@types/chai-subset': 1.3.3 - '@types/node': 20.8.0 + '@types/node': 20.8.6 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2887,15 +2887,15 @@ packages: debug: 4.3.4 jsdom: 22.1.0 local-pkg: 0.4.3 - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.8.0) - vite-node: 0.34.6(@types/node@20.8.0) + vite: 4.4.11(@types/node@20.8.6) + vite-node: 0.34.6(@types/node@20.8.6) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From bb9dbdc68a54bd30cd78c6beede3dd12bca774c0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Oct 2023 17:18:01 +0000 Subject: [PATCH 119/182] Update pnpm to v8.9.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f04efe1c..93834cd1 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.8.0", + "packageManager": "pnpm@8.9.1", "engines": { "node": ">=18.17.1" } From 7cd662818ba825affb14a8cdda379f863c664f35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:06:47 +0000 Subject: [PATCH 120/182] Update rollup --- packages/e2ee/package.json | 4 +- packages/sdk/package.json | 6 +- pnpm-lock.yaml | 147 ++++++++++++++++++------------------- 3 files changed, 75 insertions(+), 82 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index f1725dca..761873c6 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -17,9 +17,9 @@ }, "devDependencies": { "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.3", + "@rollup/plugin-replace": "5.0.4", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.1.0" + "rollup": "4.1.3" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index c0d8c3a8..e0701388 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -8,13 +8,13 @@ "test": "vitest run" }, "devDependencies": { - "@rollup/plugin-commonjs": "25.0.5", + "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.3", + "@rollup/plugin-replace": "5.0.4", "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.1.0", + "rollup": "4.1.3", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 715a1d26..6bb5befc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.0) + version: 15.2.3(rollup@4.1.3) '@rollup/plugin-replace': - specifier: 5.0.3 - version: 5.0.3(rollup@4.1.0) + specifier: 5.0.4 + version: 5.0.4(rollup@4.1.3) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.0)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.3)(typescript@5.2.2) rollup: - specifier: 4.1.0 - version: 4.1.0 + specifier: 4.1.3 + version: 4.1.3 packages/go-wasm: {} @@ -70,17 +70,17 @@ importers: version: 0.8.1 devDependencies: '@rollup/plugin-commonjs': - specifier: 25.0.5 - version: 25.0.5(rollup@4.1.0) + specifier: 25.0.7 + version: 25.0.7(rollup@4.1.3) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.0) + version: 15.2.3(rollup@4.1.3) '@rollup/plugin-replace': - specifier: 5.0.3 - version: 5.0.3(rollup@4.1.0) + specifier: 5.0.4 + version: 5.0.4(rollup@4.1.3) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.0)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.3)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.1.0 - version: 4.1.0 + specifier: 4.1.3 + version: 4.1.3 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,8 +403,8 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.5(rollup@4.1.0): - resolution: {integrity: sha512-xY8r/A9oisSeSuLCTfhssyDjo9Vp/eDiRLXkg1MXCcEEgEjPmLU+ZyDB20OOD0NlyDa/8SGbK5uIggF5XTx77w==} + /@rollup/plugin-commonjs@25.0.7(rollup@4.1.3): + resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.68.0||^3.0.0||^4.0.0 @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.0) + '@rollup/pluginutils': 5.0.5(rollup@4.1.3) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.27.0 - rollup: 4.1.0 + magic-string: 0.30.5 + rollup: 4.1.3 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.3): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,17 +430,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.0) + '@rollup/pluginutils': 5.0.5(rollup@4.1.3) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.1.0 + rollup: 4.1.3 dev: true - /@rollup/plugin-replace@5.0.3(rollup@4.1.0): - resolution: {integrity: sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q==} + /@rollup/plugin-replace@5.0.4(rollup@4.1.3): + resolution: {integrity: sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.0) - magic-string: 0.27.0 - rollup: 4.1.0 + '@rollup/pluginutils': 5.0.5(rollup@4.1.3) + magic-string: 0.30.5 + rollup: 4.1.3 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.1.0)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.1.3)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.0) + '@rollup/pluginutils': 5.0.5(rollup@4.1.3) resolve: 1.22.8 - rollup: 4.1.0 + rollup: 4.1.3 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.1.0): + /@rollup/pluginutils@5.0.5(rollup@4.1.3): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.1.0 + rollup: 4.1.3 dev: true - /@rollup/rollup-android-arm-eabi@4.1.0: - resolution: {integrity: sha512-ALx3P+gRnVSzWPsPq7F3pNCay4zN1NJVRTjpSSUNrZj1+DqBuwwt830JLyEATmGaN1VJ15UkqudSx8Mu3BF3BA==} + /@rollup/rollup-android-arm-eabi@4.1.3: + resolution: {integrity: sha512-pugxxuAygWTDj3WcyXGspor433gR35riZz66L0EdToX+shXGfh9qKgEFdTPoW9KwIrrJnxDGv9ncfl+a9bFg1w==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.1.0: - resolution: {integrity: sha512-pIi4Awf/YFwdc3H0VNYZMTS7FA0J00rS8AKoSfyB61GDVo+r7eOjSofoUPhDFXU7pfuTBiZ/4VAGa/qXGm5wcA==} + /@rollup/rollup-android-arm64@4.1.3: + resolution: {integrity: sha512-gO5j0qqT6ETdSf10gxTBeBmsKPC6yK80StTxHr4pvTYpPDfI7/mzSHy/3ez3OQyjxcBXs3i8tSF8aknwCkzv6Q==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.1.0: - resolution: {integrity: sha512-xpZp/bE29sSYoopkOepdDRui/KnlXjSyf/H0qVOOzjTYE8WxqMfDMfwcgb+ORuaq12RdZfA/nLKZ27PL1AuazA==} + /@rollup/rollup-darwin-arm64@4.1.3: + resolution: {integrity: sha512-ibOYcmg3VTXxQOb9HnrmGCshO/5hWucl/Yw8KSt6DE12oif4ssX9pxBBEodu65fprS6qKy80rSs1VvpzVFRRXA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.1.0: - resolution: {integrity: sha512-bq3nagc+N+IquV8p49eDZE3jFaXt0Fjr7nxBeMkg2lKuzEjUfwN3iTRQIBC+jQT27qa5SegHaawfOf0pfyUWCQ==} + /@rollup/rollup-darwin-x64@4.1.3: + resolution: {integrity: sha512-wgWtqQZjtOVuWnDr3BoNqO9mRpgb/XoqSyzqHxA4xSUgj+3cksJzTe7XCTzBoRc2IPB0mWr9/W+QDUu7OWleEQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.1.0: - resolution: {integrity: sha512-H5LILHYvZHTeaqIuNg4pw5lx4jj/mTz7tUXqZ1aFWBmnq9h34nHfA/SxyCZ5JCIyV/enLnXqposjx0i0Wrgg5g==} + /@rollup/rollup-linux-arm-gnueabihf@4.1.3: + resolution: {integrity: sha512-73mb6Fk3WnygqCbYHPk7EWAUvmfKZr2teKD+Qb3i6nLQ3wEihEJixg8psUi0pmge77qmuONjOIiJnT8+hTWqEQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.1.0: - resolution: {integrity: sha512-snLIi8gp2VUntI/vXoiY0DnsmdP0dc/g4D3bHiiytPv9t8oWj5lCFtnHoZLvvreT2IsaZ1H8P+9D9lFBKr82xA==} + /@rollup/rollup-linux-arm64-gnu@4.1.3: + resolution: {integrity: sha512-XI7zAp5ADEph8iHXjk4silYARe/QO7zDGM71R7A6jnny4vlXCYBPB6V6rZm2kZ4VfckeZQukdGOlnvvW5fWLzA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.1.0: - resolution: {integrity: sha512-OXqp0PUZ3x/fxoT/WooO+kxO6Bxznr0lRA2qj0FjGvMEywfMTKKBcfSd3QorVcxmAKDEA5IDwD0aUPqyYDx2qw==} + /@rollup/rollup-linux-arm64-musl@4.1.3: + resolution: {integrity: sha512-6yFpmrH6xx00b9qEoabkyeHzamKSv8c43+SgaItTcHzgaaX3HGRSK+ZZt9GokB3Cc7z4HXllK7Ts5fF5W8FddQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.1.0: - resolution: {integrity: sha512-8wsvV6xnkLal4WHiSORLeE84FZr/dOalahEK9o1xldj42gafOHnZsGop4Ai2FuryckskHSaufJmxBF6Ps/9+Ww==} + /@rollup/rollup-linux-x64-gnu@4.1.3: + resolution: {integrity: sha512-Zbb2CWJfbu2aZqd7hl9otRffh0MgYVhVsOz/sV6LSJcJ2LldBuvn2K9wVTo1gKh2xtTnJo93vusSppk1WtB4NA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.1.0: - resolution: {integrity: sha512-Z0ZiucXLZSHJnRKfQ6xgz0SjL0TlXr76kCwpr2ULQRxbvvfEm4Z0HM+DEgE1R6OthSqPxnxNqT2IACkQ6yvGSw==} + /@rollup/rollup-linux-x64-musl@4.1.3: + resolution: {integrity: sha512-GNATGqh1xMSIwFt3A7co3zyw8hMlUs8E+cBe9Hank0L32hpDYavoPqu7Uat74es+eDqrGn0szfm08ZjYf/ApCQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.1.0: - resolution: {integrity: sha512-7lqRlilcPpA88eCtFxl7zaeRH4nZlPy/qECsrRe9JQzqANa3wPYmjgwLQbduN8PuZ9dQ6HD09BFm7v+Pc0dNTQ==} + /@rollup/rollup-win32-arm64-msvc@4.1.3: + resolution: {integrity: sha512-rTxOCH2ZLWkbZJh621qNmS4zDjvIOnvwXdd0Zvkm8twvVoyWATbn6q/bI3bXjQeV7mEASXU1atUWzdeovTcrrw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.1.0: - resolution: {integrity: sha512-SQKgw9m7bCvrNu/Gy5bRBRqosM0T7AWMEL3f1ikBqmwsCjsXQBGvJrCYkvZ3Lp5UAkwU7EgSdP6KtnM3Z8PajA==} + /@rollup/rollup-win32-ia32-msvc@4.1.3: + resolution: {integrity: sha512-JcnmTz5d2kcxKTjcPPt0p86IzhViYOj8f8qFWwyzgDpCHFLXAKv9C4uxnwTornHvWq31km7zZ8IBZui8LjX52w==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.1.0: - resolution: {integrity: sha512-ZKUpObly8HGI1QXM1AOxEiYolMByH2ekxaeROqRqZnEIWrBJJ/HjNFIY+Q+ujJymSkjj+ArDRTryHX3M7KZGnQ==} + /@rollup/rollup-win32-x64-msvc@4.1.3: + resolution: {integrity: sha512-B9oi0JSMvSOsjB0Rve1WLFFEv+8uRvok+N3XWtxzSi/jjiVeM6wbfFgnHzZ2LA7FG9tJs0V7aHLD+73Q8VUIvg==} cpu: [x64] os: [win32] requiresBuild: true @@ -1977,13 +1977,6 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.5: resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} @@ -2412,23 +2405,23 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.1.0: - resolution: {integrity: sha512-qNSWRV1EkGCIjR5z4Z0AodbPKsLlwtvs/iP9F75ZuqlQfVTZvDqBMOxuKzxGq1OY4+l2hey8fUWbiekCdZEIFg==} + /rollup@4.1.3: + resolution: {integrity: sha512-ytWlDll2r0Q7iQGX+aZ8ptfZIE55vLApNuMnMYlaMO40wk3o/nN6sjuEvwQjhnAcqQ+NSX4vPgXE/eIO609HMA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.1.0 - '@rollup/rollup-android-arm64': 4.1.0 - '@rollup/rollup-darwin-arm64': 4.1.0 - '@rollup/rollup-darwin-x64': 4.1.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.1.0 - '@rollup/rollup-linux-arm64-gnu': 4.1.0 - '@rollup/rollup-linux-arm64-musl': 4.1.0 - '@rollup/rollup-linux-x64-gnu': 4.1.0 - '@rollup/rollup-linux-x64-musl': 4.1.0 - '@rollup/rollup-win32-arm64-msvc': 4.1.0 - '@rollup/rollup-win32-ia32-msvc': 4.1.0 - '@rollup/rollup-win32-x64-msvc': 4.1.0 + '@rollup/rollup-android-arm-eabi': 4.1.3 + '@rollup/rollup-android-arm64': 4.1.3 + '@rollup/rollup-darwin-arm64': 4.1.3 + '@rollup/rollup-darwin-x64': 4.1.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.1.3 + '@rollup/rollup-linux-arm64-gnu': 4.1.3 + '@rollup/rollup-linux-arm64-musl': 4.1.3 + '@rollup/rollup-linux-x64-gnu': 4.1.3 + '@rollup/rollup-linux-x64-musl': 4.1.3 + '@rollup/rollup-win32-arm64-msvc': 4.1.3 + '@rollup/rollup-win32-ia32-msvc': 4.1.3 + '@rollup/rollup-win32-x64-msvc': 4.1.3 fsevents: 2.3.3 dev: true From fd7df8b6bb2080679cf8e7bbf0477d1a5e703f58 Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Fri, 20 Oct 2023 11:02:50 +0900 Subject: [PATCH 121/182] =?UTF-8?q?stopAudioTrack=20=E3=81=A7=20VideoTrack?= =?UTF-8?q?=20=E3=82=92=E6=AD=A2=E3=82=81=E3=81=A6=E3=81=84=E3=81=9F?= =?UTF-8?q?=E7=AE=87=E6=89=80=E3=82=92=20Audio=20=E3=81=AB=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 8d00f93a..6ed7652d 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -351,7 +351,7 @@ export default class ConnectionBase { return new Promise((resolve, reject) => { // すぐに stop すると視聴側に静止画像が残ってしまうので enabled false にした 100ms 後に stop する setTimeout(() => { - const promises = stream.getVideoTracks().map(async (track) => { + const promises = stream.getAudioTracks().map(async (track) => { track.stop() stream.removeTrack(track) if (this.pc !== null) { From 19be4c817caf0c638ee044d9da82af6b0d073e9c Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 20 Oct 2023 17:47:25 +0900 Subject: [PATCH 122/182] pnpm up -L --- package.json | 4 +- pnpm-lock.yaml | 102 ++++++++++++++++++++++++------------------------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 93834cd1..91b71fa3 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.7.5", - "@typescript-eslint/parser": "6.7.5", + "@typescript-eslint/eslint-plugin": "6.8.0", + "@typescript-eslint/parser": "6.8.0", "eslint": "8.51.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6bb5befc..108297b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.7.5 - version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2) + specifier: 6.8.0 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.7.5 - version: 6.7.5(eslint@8.51.0)(typescript@5.2.2) + specifier: 6.8.0 + version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) eslint: specifier: 8.51.0 version: 8.51.0 @@ -339,11 +339,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + /@humanwhocodes/config-array@0.11.12: + resolution: {integrity: sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 1.2.1 + '@humanwhocodes/object-schema': 2.0.0 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -355,8 +355,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@humanwhocodes/object-schema@2.0.0: + resolution: {integrity: sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==} dev: true /@jest/schemas@29.6.3: @@ -617,8 +617,8 @@ packages: '@types/node': 20.8.6 dev: true - /@types/json-schema@7.0.13: - resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true /@types/minimatch@5.1.2: @@ -635,12 +635,12 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.3: - resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + /@types/semver@7.5.4: + resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -651,11 +651,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 eslint: 8.51.0 graphemer: 1.4.0 @@ -668,8 +668,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} + /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -678,10 +678,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 eslint: 8.51.0 typescript: 5.2.2 @@ -689,16 +689,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.5: - resolution: {integrity: sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==} + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 dev: true - /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} + /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -707,8 +707,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.51.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -717,13 +717,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.7.5: - resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} + /@typescript-eslint/types@6.8.0: + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.5(typescript@5.2.2): - resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -731,8 +731,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/visitor-keys': 6.7.5 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -743,18 +743,18 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} + /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@types/json-schema': 7.0.13 - '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.2.2) + '@types/json-schema': 7.0.14 + '@types/semver': 7.5.4 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: @@ -762,11 +762,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.5: - resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} + /@typescript-eslint/visitor-keys@6.8.0: + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.5 + '@typescript-eslint/types': 6.8.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1378,7 +1378,7 @@ packages: '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 '@eslint/js': 8.51.0 - '@humanwhocodes/config-array': 0.11.11 + '@humanwhocodes/config-array': 0.11.12 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 From 694a4ea67bba2db215d06f03eff4f8b20d13e512 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 20 Oct 2023 17:48:06 +0900 Subject: [PATCH 123/182] 2023.2.0-canary.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 91b71fa3..ed454002 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.3", + "version": "2023.2.0-canary.4", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From 923c0d471cbbcdddbc5640648cbe6100624d5810 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Oct 2023 15:51:45 +0000 Subject: [PATCH 124/182] Update dependency rollup to v4.1.4 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 126 ++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 761873c6..97bbb84c 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.4", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.1.3" + "rollup": "4.1.4" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e0701388..1fca9995 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.1.3", + "rollup": "4.1.4", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 108297b7..1e1e1d6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.3) + version: 15.2.3(rollup@4.1.4) '@rollup/plugin-replace': specifier: 5.0.4 - version: 5.0.4(rollup@4.1.3) + version: 5.0.4(rollup@4.1.4) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.3)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.4)(typescript@5.2.2) rollup: - specifier: 4.1.3 - version: 4.1.3 + specifier: 4.1.4 + version: 4.1.4 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.1.3) + version: 25.0.7(rollup@4.1.4) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.3) + version: 15.2.3(rollup@4.1.4) '@rollup/plugin-replace': specifier: 5.0.4 - version: 5.0.4(rollup@4.1.3) + version: 5.0.4(rollup@4.1.4) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.3)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.4)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.1.3 - version: 4.1.3 + specifier: 4.1.4 + version: 4.1.4 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.1.3): + /@rollup/plugin-commonjs@25.0.7(rollup@4.1.4): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.3) + '@rollup/pluginutils': 5.0.5(rollup@4.1.4) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.1.3 + rollup: 4.1.4 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.3): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.4): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.3) + '@rollup/pluginutils': 5.0.5(rollup@4.1.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.1.3 + rollup: 4.1.4 dev: true - /@rollup/plugin-replace@5.0.4(rollup@4.1.3): + /@rollup/plugin-replace@5.0.4(rollup@4.1.4): resolution: {integrity: sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.3) + '@rollup/pluginutils': 5.0.5(rollup@4.1.4) magic-string: 0.30.5 - rollup: 4.1.3 + rollup: 4.1.4 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.1.3)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.1.4)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.3) + '@rollup/pluginutils': 5.0.5(rollup@4.1.4) resolve: 1.22.8 - rollup: 4.1.3 + rollup: 4.1.4 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.1.3): + /@rollup/pluginutils@5.0.5(rollup@4.1.4): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.1.3 + rollup: 4.1.4 dev: true - /@rollup/rollup-android-arm-eabi@4.1.3: - resolution: {integrity: sha512-pugxxuAygWTDj3WcyXGspor433gR35riZz66L0EdToX+shXGfh9qKgEFdTPoW9KwIrrJnxDGv9ncfl+a9bFg1w==} + /@rollup/rollup-android-arm-eabi@4.1.4: + resolution: {integrity: sha512-WlzkuFvpKl6CLFdc3V6ESPt7gq5Vrimd2Yv9IzKXdOpgbH4cdDSS1JLiACX8toygihtH5OlxyQzhXOph7Ovlpw==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.1.3: - resolution: {integrity: sha512-gO5j0qqT6ETdSf10gxTBeBmsKPC6yK80StTxHr4pvTYpPDfI7/mzSHy/3ez3OQyjxcBXs3i8tSF8aknwCkzv6Q==} + /@rollup/rollup-android-arm64@4.1.4: + resolution: {integrity: sha512-D1e+ABe56T9Pq2fD+R3ybe1ylCDzu3tY4Qm2Mj24R9wXNCq35+JbFbOpc2yrroO2/tGhTobmEl2Bm5xfE/n8RA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.1.3: - resolution: {integrity: sha512-ibOYcmg3VTXxQOb9HnrmGCshO/5hWucl/Yw8KSt6DE12oif4ssX9pxBBEodu65fprS6qKy80rSs1VvpzVFRRXA==} + /@rollup/rollup-darwin-arm64@4.1.4: + resolution: {integrity: sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.1.3: - resolution: {integrity: sha512-wgWtqQZjtOVuWnDr3BoNqO9mRpgb/XoqSyzqHxA4xSUgj+3cksJzTe7XCTzBoRc2IPB0mWr9/W+QDUu7OWleEQ==} + /@rollup/rollup-darwin-x64@4.1.4: + resolution: {integrity: sha512-eGJVZScKSLZkYjhTAESCtbyTBq9SXeW9+TX36ki5gVhDqJtnQ5k0f9F44jNK5RhAMgIj0Ht9+n6HAgH0gUUyWQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.1.3: - resolution: {integrity: sha512-73mb6Fk3WnygqCbYHPk7EWAUvmfKZr2teKD+Qb3i6nLQ3wEihEJixg8psUi0pmge77qmuONjOIiJnT8+hTWqEQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.1.4: + resolution: {integrity: sha512-HnigYSEg2hOdX1meROecbk++z1nVJDpEofw9V2oWKqOWzTJlJf1UXVbDE6Hg30CapJxZu5ga4fdAQc/gODDkKg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.1.3: - resolution: {integrity: sha512-XI7zAp5ADEph8iHXjk4silYARe/QO7zDGM71R7A6jnny4vlXCYBPB6V6rZm2kZ4VfckeZQukdGOlnvvW5fWLzA==} + /@rollup/rollup-linux-arm64-gnu@4.1.4: + resolution: {integrity: sha512-TzJ+N2EoTLWkaClV2CUhBlj6ljXofaYzF/R9HXqQ3JCMnCHQZmQnbnZllw7yTDp0OG5whP4gIPozR4QiX+00MQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.1.3: - resolution: {integrity: sha512-6yFpmrH6xx00b9qEoabkyeHzamKSv8c43+SgaItTcHzgaaX3HGRSK+ZZt9GokB3Cc7z4HXllK7Ts5fF5W8FddQ==} + /@rollup/rollup-linux-arm64-musl@4.1.4: + resolution: {integrity: sha512-aVPmNMdp6Dlo2tWkAduAD/5TL/NT5uor290YvjvFvCv0Q3L7tVdlD8MOGDL+oRSw5XKXKAsDzHhUOPUNPRHVTQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.1.3: - resolution: {integrity: sha512-Zbb2CWJfbu2aZqd7hl9otRffh0MgYVhVsOz/sV6LSJcJ2LldBuvn2K9wVTo1gKh2xtTnJo93vusSppk1WtB4NA==} + /@rollup/rollup-linux-x64-gnu@4.1.4: + resolution: {integrity: sha512-77Fb79ayiDad0grvVsz4/OB55wJRyw9Ao+GdOBA9XywtHpuq5iRbVyHToGxWquYWlEf6WHFQQnFEttsAzboyKg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.1.3: - resolution: {integrity: sha512-GNATGqh1xMSIwFt3A7co3zyw8hMlUs8E+cBe9Hank0L32hpDYavoPqu7Uat74es+eDqrGn0szfm08ZjYf/ApCQ==} + /@rollup/rollup-linux-x64-musl@4.1.4: + resolution: {integrity: sha512-/t6C6niEQTqmQTVTD9TDwUzxG91Mlk69/v0qodIPUnjjB3wR4UA3klg+orR2SU3Ux2Cgf2pWPL9utK80/1ek8g==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.1.3: - resolution: {integrity: sha512-rTxOCH2ZLWkbZJh621qNmS4zDjvIOnvwXdd0Zvkm8twvVoyWATbn6q/bI3bXjQeV7mEASXU1atUWzdeovTcrrw==} + /@rollup/rollup-win32-arm64-msvc@4.1.4: + resolution: {integrity: sha512-ZY5BHHrOPkMbCuGWFNpJH0t18D2LU6GMYKGaqaWTQ3CQOL57Fem4zE941/Ek5pIsVt70HyDXssVEFQXlITI5Gg==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.1.3: - resolution: {integrity: sha512-JcnmTz5d2kcxKTjcPPt0p86IzhViYOj8f8qFWwyzgDpCHFLXAKv9C4uxnwTornHvWq31km7zZ8IBZui8LjX52w==} + /@rollup/rollup-win32-ia32-msvc@4.1.4: + resolution: {integrity: sha512-XG2mcRfFrJvYyYaQmvCIvgfkaGinfXrpkBuIbJrTl9SaIQ8HumheWTIwkNz2mktCKwZfXHQNpO7RgXLIGQ7HXA==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.1.3: - resolution: {integrity: sha512-B9oi0JSMvSOsjB0Rve1WLFFEv+8uRvok+N3XWtxzSi/jjiVeM6wbfFgnHzZ2LA7FG9tJs0V7aHLD+73Q8VUIvg==} + /@rollup/rollup-win32-x64-msvc@4.1.4: + resolution: {integrity: sha512-ANFqWYPwkhIqPmXw8vm0GpBEHiPpqcm99jiiAp71DbCSqLDhrtr019C5vhD0Bw4My+LmMvciZq6IsWHqQpl2ZQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -2405,23 +2405,23 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.1.3: - resolution: {integrity: sha512-ytWlDll2r0Q7iQGX+aZ8ptfZIE55vLApNuMnMYlaMO40wk3o/nN6sjuEvwQjhnAcqQ+NSX4vPgXE/eIO609HMA==} + /rollup@4.1.4: + resolution: {integrity: sha512-U8Yk1lQRKqCkDBip/pMYT+IKaN7b7UesK3fLSTuHBoBJacCE+oBqo/dfG/gkUdQNNB2OBmRP98cn2C2bkYZkyw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.1.3 - '@rollup/rollup-android-arm64': 4.1.3 - '@rollup/rollup-darwin-arm64': 4.1.3 - '@rollup/rollup-darwin-x64': 4.1.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.1.3 - '@rollup/rollup-linux-arm64-gnu': 4.1.3 - '@rollup/rollup-linux-arm64-musl': 4.1.3 - '@rollup/rollup-linux-x64-gnu': 4.1.3 - '@rollup/rollup-linux-x64-musl': 4.1.3 - '@rollup/rollup-win32-arm64-msvc': 4.1.3 - '@rollup/rollup-win32-ia32-msvc': 4.1.3 - '@rollup/rollup-win32-x64-msvc': 4.1.3 + '@rollup/rollup-android-arm-eabi': 4.1.4 + '@rollup/rollup-android-arm64': 4.1.4 + '@rollup/rollup-darwin-arm64': 4.1.4 + '@rollup/rollup-darwin-x64': 4.1.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.1.4 + '@rollup/rollup-linux-arm64-gnu': 4.1.4 + '@rollup/rollup-linux-arm64-musl': 4.1.4 + '@rollup/rollup-linux-x64-gnu': 4.1.4 + '@rollup/rollup-linux-x64-musl': 4.1.4 + '@rollup/rollup-win32-arm64-msvc': 4.1.4 + '@rollup/rollup-win32-ia32-msvc': 4.1.4 + '@rollup/rollup-win32-x64-msvc': 4.1.4 fsevents: 2.3.3 dev: true From 49c42b09b7f901ff20109dabffbef9a4787e7f5a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Oct 2023 18:07:15 +0000 Subject: [PATCH 125/182] Update pnpm to v8.9.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ed454002..55b6bb93 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.9.1", + "packageManager": "pnpm@8.9.2", "engines": { "node": ">=18.17.1" } From aa00ea57b23a85b40fffc12c1a5c91535d6e1a21 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Oct 2023 23:07:59 +0000 Subject: [PATCH 126/182] Update dependency eslint to v8.52.0 --- package.json | 2 +- pnpm-lock.yaml | 81 +++++++++++++++++++++++++++----------------------- 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 55b6bb93..12920c3b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "6.8.0", "@typescript-eslint/parser": "6.8.0", - "eslint": "8.51.0", + "eslint": "8.52.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.1", "prettier": "3.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e1e1d6a..05cadc0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,19 +13,19 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: 6.8.0 - version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2) '@typescript-eslint/parser': specifier: 6.8.0 - version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) + version: 6.8.0(eslint@8.52.0)(typescript@5.2.2) eslint: - specifier: 8.51.0 - version: 8.51.0 + specifier: 8.52.0 + version: 8.52.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.51.0) + version: 9.0.0(eslint@8.52.0) eslint-plugin-prettier: specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3) + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.52.0)(prettier@3.0.3) prettier: specifier: 3.0.3 version: 3.0.3 @@ -302,13 +302,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.51.0 + eslint: 8.52.0 eslint-visitor-keys: 3.4.3 dev: true @@ -334,16 +334,16 @@ packages: - supports-color dev: true - /@eslint/js@8.51.0: - resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + /@eslint/js@8.52.0: + resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.12: - resolution: {integrity: sha512-NlGesA1usRNn6ctHCZ21M4/dKPgW9Nn1FypRdIKKgZOKzkVV4T1FlK5mBiLhHBCDmEbdQG0idrcXlbZfksJ+RA==} + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.0 + '@humanwhocodes/object-schema': 2.0.1 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -355,8 +355,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.0: - resolution: {integrity: sha512-9S9QrXY2K0L4AGDcSgTi9vgiCcG8VcBv4Mp7/1hDPYoswIy6Z6KO5blYto82BT8M0MZNRWmCFLpCs3HlpYGGdw==} + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true /@jest/schemas@29.6.3: @@ -639,7 +639,7 @@ packages: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -651,13 +651,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 - eslint: 8.51.0 + eslint: 8.52.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -668,7 +668,7 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/parser@6.8.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -683,7 +683,7 @@ packages: '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 - eslint: 8.51.0 + eslint: 8.52.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color @@ -697,7 +697,7 @@ packages: '@typescript-eslint/visitor-keys': 6.8.0 dev: true - /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/type-utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -708,9 +708,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.51.0 + eslint: 8.52.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: @@ -743,19 +743,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + /@typescript-eslint/utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.4 '@typescript-eslint/scope-manager': 6.8.0 '@typescript-eslint/types': 6.8.0 '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - eslint: 8.51.0 + eslint: 8.52.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -770,6 +770,10 @@ packages: eslint-visitor-keys: 3.4.3 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@vitest/expect@0.34.6: resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: @@ -1326,16 +1330,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.51.0): + /eslint-config-prettier@9.0.0(eslint@8.52.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.51.0 + eslint: 8.52.0 dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.51.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.52.0)(prettier@3.0.3): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1349,8 +1353,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.51.0 - eslint-config-prettier: 9.0.0(eslint@8.51.0) + eslint: 8.52.0 + eslint-config-prettier: 9.0.0(eslint@8.52.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1369,18 +1373,19 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.51.0: - resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + /eslint@8.52.0: + resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.51.0 - '@humanwhocodes/config-array': 0.11.12 + '@eslint/js': 8.52.0 + '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 From bf5573ed87166d3034e8ab0b5b309a3116c90d79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 29 Oct 2023 16:45:52 +0000 Subject: [PATCH 127/182] Update actions/setup-node action to v4 --- .github/workflows/ci.yaml | 2 +- .github/workflows/deploy-pages.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1dfc8c28..344be196 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -15,7 +15,7 @@ jobs: node: ["18", "20"] steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - uses: pnpm/action-setup@v2 diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 4d82f056..55151cf6 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + - uses: actions/setup-node@v4 with: node-version: "20" - uses: pnpm/action-setup@v2 From c17818676e455a6347bdf272d674f284b6a8faa0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 29 Oct 2023 16:45:48 +0000 Subject: [PATCH 128/182] Update pnpm to v8.10.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 12920c3b..118880eb 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.9.2", + "packageManager": "pnpm@8.10.0", "engines": { "node": ">=18.17.1" } From befbd8b6b3bd34b3d969005ead2fc069dc777d1a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 29 Oct 2023 19:39:49 +0000 Subject: [PATCH 129/182] Update rollup --- packages/e2ee/package.json | 4 +- packages/sdk/package.json | 4 +- pnpm-lock.yaml | 132 ++++++++++++++++++------------------- 3 files changed, 70 insertions(+), 70 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 97bbb84c..f186c785 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -17,9 +17,9 @@ }, "devDependencies": { "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.4", + "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.1.4" + "rollup": "4.1.5" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 1fca9995..9cfdadc8 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -10,11 +10,11 @@ "devDependencies": { "@rollup/plugin-commonjs": "25.0.7", "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-replace": "5.0.4", + "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.1.4", + "rollup": "4.1.5", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05cadc0a..836d2ec3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.4) + version: 15.2.3(rollup@4.1.5) '@rollup/plugin-replace': - specifier: 5.0.4 - version: 5.0.4(rollup@4.1.4) + specifier: 5.0.5 + version: 5.0.5(rollup@4.1.5) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.4)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.5)(typescript@5.2.2) rollup: - specifier: 4.1.4 - version: 4.1.4 + specifier: 4.1.5 + version: 4.1.5 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.1.4) + version: 25.0.7(rollup@4.1.5) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.4) + version: 15.2.3(rollup@4.1.5) '@rollup/plugin-replace': - specifier: 5.0.4 - version: 5.0.4(rollup@4.1.4) + specifier: 5.0.5 + version: 5.0.5(rollup@4.1.5) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.4)(typescript@5.2.2) + version: 11.1.5(rollup@4.1.5)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.1.4 - version: 4.1.4 + specifier: 4.1.5 + version: 4.1.5 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.1.4): + /@rollup/plugin-commonjs@25.0.7(rollup@4.1.5): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.4) + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.1.4 + rollup: 4.1.5 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.4): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.5): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,17 +430,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.4) + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.1.4 + rollup: 4.1.5 dev: true - /@rollup/plugin-replace@5.0.4(rollup@4.1.4): - resolution: {integrity: sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ==} + /@rollup/plugin-replace@5.0.5(rollup@4.1.5): + resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.4) + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) magic-string: 0.30.5 - rollup: 4.1.4 + rollup: 4.1.5 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.1.4)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.1.5)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.4) + '@rollup/pluginutils': 5.0.5(rollup@4.1.5) resolve: 1.22.8 - rollup: 4.1.4 + rollup: 4.1.5 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.1.4): + /@rollup/pluginutils@5.0.5(rollup@4.1.5): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.1.4 + rollup: 4.1.5 dev: true - /@rollup/rollup-android-arm-eabi@4.1.4: - resolution: {integrity: sha512-WlzkuFvpKl6CLFdc3V6ESPt7gq5Vrimd2Yv9IzKXdOpgbH4cdDSS1JLiACX8toygihtH5OlxyQzhXOph7Ovlpw==} + /@rollup/rollup-android-arm-eabi@4.1.5: + resolution: {integrity: sha512-/fwx6GS8cIbM2rTNyLMxjSCOegHywOdXO+kN9yFy018iCULcKZCyA3xvzw4bxyKbYfdSxQgdhbsl0egNcxerQw==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.1.4: - resolution: {integrity: sha512-D1e+ABe56T9Pq2fD+R3ybe1ylCDzu3tY4Qm2Mj24R9wXNCq35+JbFbOpc2yrroO2/tGhTobmEl2Bm5xfE/n8RA==} + /@rollup/rollup-android-arm64@4.1.5: + resolution: {integrity: sha512-tmXh7dyEt+JEz/NgDJlB1UeL/1gFV0v8qYzUAU42WZH4lmUJ5rp6/HkR2qUNC5jCgYEwd8/EfbHKtGIEfS4CUg==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.1.4: - resolution: {integrity: sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg==} + /@rollup/rollup-darwin-arm64@4.1.5: + resolution: {integrity: sha512-lTDmLxdEVhzI3KCesZUrNbl3icBvPrDv/85JasY5gh4P2eAuDFmM4uj9HC5DdH0anLC0fwJ+1Uzasr4qOXcjRQ==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.1.4: - resolution: {integrity: sha512-eGJVZScKSLZkYjhTAESCtbyTBq9SXeW9+TX36ki5gVhDqJtnQ5k0f9F44jNK5RhAMgIj0Ht9+n6HAgH0gUUyWQ==} + /@rollup/rollup-darwin-x64@4.1.5: + resolution: {integrity: sha512-v6qEHZyjWnIgcc4oiy8AIeFsUJAx+Kg0sLj+RE7ICwv3u7YC/+bSClxAiBASRjMzqsq0Z+I/pfxj+OD8mjBYxg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.1.4: - resolution: {integrity: sha512-HnigYSEg2hOdX1meROecbk++z1nVJDpEofw9V2oWKqOWzTJlJf1UXVbDE6Hg30CapJxZu5ga4fdAQc/gODDkKg==} + /@rollup/rollup-linux-arm-gnueabihf@4.1.5: + resolution: {integrity: sha512-WngCfwPEDUNbZR1FNO2TCROYUwJvRlbvPi3AS85bDUkkoRDBcjUIz42cuB1j4PKilmnZascL5xTMF/yU8YFayA==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.1.4: - resolution: {integrity: sha512-TzJ+N2EoTLWkaClV2CUhBlj6ljXofaYzF/R9HXqQ3JCMnCHQZmQnbnZllw7yTDp0OG5whP4gIPozR4QiX+00MQ==} + /@rollup/rollup-linux-arm64-gnu@4.1.5: + resolution: {integrity: sha512-Q2A/PEP/UTPTOBwgar3mmCaApahoezai/8e/7f4GCLV6XWCpnU4YwkQQtla7d7nUnc792Ps7g1G0WMovzIknrA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.1.4: - resolution: {integrity: sha512-aVPmNMdp6Dlo2tWkAduAD/5TL/NT5uor290YvjvFvCv0Q3L7tVdlD8MOGDL+oRSw5XKXKAsDzHhUOPUNPRHVTQ==} + /@rollup/rollup-linux-arm64-musl@4.1.5: + resolution: {integrity: sha512-84aBKNAVzTU/eG3tb2+kR4NGRAtm2YVW/KHwkGGDR4z1k4hyrDbuImsfs/6J74t6y0YLOe9HOSu7ejRjzUBGVQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.1.4: - resolution: {integrity: sha512-77Fb79ayiDad0grvVsz4/OB55wJRyw9Ao+GdOBA9XywtHpuq5iRbVyHToGxWquYWlEf6WHFQQnFEttsAzboyKg==} + /@rollup/rollup-linux-x64-gnu@4.1.5: + resolution: {integrity: sha512-mldtP9UEBurIq2+GYMdNeiqCLW1fdgf4KdkMR/QegAeXk4jFHkKQl7p0NITrKFVyVqzISGXH5gR6GSTBH4wszw==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.1.4: - resolution: {integrity: sha512-/t6C6niEQTqmQTVTD9TDwUzxG91Mlk69/v0qodIPUnjjB3wR4UA3klg+orR2SU3Ux2Cgf2pWPL9utK80/1ek8g==} + /@rollup/rollup-linux-x64-musl@4.1.5: + resolution: {integrity: sha512-36p+nMcSxjAEzfU47+by102HolUtf/EfgBAidocTKAofJMTqG5QD50qzaFLk4QO+z7Qvg4qd0wr99jGAwnKOig==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.1.4: - resolution: {integrity: sha512-ZY5BHHrOPkMbCuGWFNpJH0t18D2LU6GMYKGaqaWTQ3CQOL57Fem4zE941/Ek5pIsVt70HyDXssVEFQXlITI5Gg==} + /@rollup/rollup-win32-arm64-msvc@4.1.5: + resolution: {integrity: sha512-5oxhubo0A3J8aF/tG+6jHBg785HF8/88kl1YnfbDKmnqMxz/EFiAQDH9cq6lbnxofjn8tlq5KiTf0crJGOGThg==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.1.4: - resolution: {integrity: sha512-XG2mcRfFrJvYyYaQmvCIvgfkaGinfXrpkBuIbJrTl9SaIQ8HumheWTIwkNz2mktCKwZfXHQNpO7RgXLIGQ7HXA==} + /@rollup/rollup-win32-ia32-msvc@4.1.5: + resolution: {integrity: sha512-uVQyBREKX9ErofL8KAZ4iVlqzSZOXSIG+BOLYuz5FD+Cg6jh1eLIeUa3Q4SgX0QaTRFeeAgSNqCC+8kZrZBpSw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.1.4: - resolution: {integrity: sha512-ANFqWYPwkhIqPmXw8vm0GpBEHiPpqcm99jiiAp71DbCSqLDhrtr019C5vhD0Bw4My+LmMvciZq6IsWHqQpl2ZQ==} + /@rollup/rollup-win32-x64-msvc@4.1.5: + resolution: {integrity: sha512-FQ5qYqRJ2vUBSom3Fos8o/6UvAMOvlus4+HGCAifH1TagbbwVnVVe0o01J1V52EWnQ8kmfpJDJ0FMrfM5yzcSA==} cpu: [x64] os: [win32] requiresBuild: true @@ -2410,23 +2410,23 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.1.4: - resolution: {integrity: sha512-U8Yk1lQRKqCkDBip/pMYT+IKaN7b7UesK3fLSTuHBoBJacCE+oBqo/dfG/gkUdQNNB2OBmRP98cn2C2bkYZkyw==} + /rollup@4.1.5: + resolution: {integrity: sha512-AEw14/q4NHYQkQlngoSae2yi7hDBeT9w84aEzdgCr39+2RL+iTG84lGTkgC1Wp5igtquN64cNzuzZKVz+U6jOg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.1.4 - '@rollup/rollup-android-arm64': 4.1.4 - '@rollup/rollup-darwin-arm64': 4.1.4 - '@rollup/rollup-darwin-x64': 4.1.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.1.4 - '@rollup/rollup-linux-arm64-gnu': 4.1.4 - '@rollup/rollup-linux-arm64-musl': 4.1.4 - '@rollup/rollup-linux-x64-gnu': 4.1.4 - '@rollup/rollup-linux-x64-musl': 4.1.4 - '@rollup/rollup-win32-arm64-msvc': 4.1.4 - '@rollup/rollup-win32-ia32-msvc': 4.1.4 - '@rollup/rollup-win32-x64-msvc': 4.1.4 + '@rollup/rollup-android-arm-eabi': 4.1.5 + '@rollup/rollup-android-arm64': 4.1.5 + '@rollup/rollup-darwin-arm64': 4.1.5 + '@rollup/rollup-darwin-x64': 4.1.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.1.5 + '@rollup/rollup-linux-arm64-gnu': 4.1.5 + '@rollup/rollup-linux-arm64-musl': 4.1.5 + '@rollup/rollup-linux-x64-gnu': 4.1.5 + '@rollup/rollup-linux-x64-musl': 4.1.5 + '@rollup/rollup-win32-arm64-msvc': 4.1.5 + '@rollup/rollup-win32-ia32-msvc': 4.1.5 + '@rollup/rollup-win32-x64-msvc': 4.1.5 fsevents: 2.3.3 dev: true From 8a9bfd8a307bd68bb77bca6dadc0b29d14c32c3c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Nov 2023 15:55:30 +0000 Subject: [PATCH 130/182] Update all non-major dependencies --- package.json | 4 ++-- pnpm-lock.yaml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 118880eb..9c719cfa 100644 --- a/package.json +++ b/package.json @@ -35,13 +35,13 @@ "eslint-plugin-prettier": "5.0.1", "prettier": "3.0.3", "serve": "14.2.1", - "typedoc": "0.25.2", + "typedoc": "0.25.3", "typescript": "5.2.2" }, "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.10.0", + "packageManager": "pnpm@8.10.2", "engines": { "node": ">=18.17.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 836d2ec3..a237c84a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,8 +33,8 @@ importers: specifier: 14.2.1 version: 14.2.1 typedoc: - specifier: 0.25.2 - version: 0.25.2(typescript@5.2.2) + specifier: 0.25.3 + version: 0.25.3(typescript@5.2.2) typescript: specifier: 5.2.2 version: 5.2.2 @@ -2718,8 +2718,8 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.25.2(typescript@5.2.2): - resolution: {integrity: sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==} + /typedoc@0.25.3(typescript@5.2.2): + resolution: {integrity: sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==} engines: {node: '>= 16'} hasBin: true peerDependencies: From f6a74f44fe8fc0ee73b4e934a2b7af828246935e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 Nov 2023 19:26:54 +0000 Subject: [PATCH 131/182] Update dependency rollup to v4.3.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 126 ++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index f186c785..1e369ddd 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.1.5" + "rollup": "4.3.0" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 9cfdadc8..6c60f964 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.1.5", + "rollup": "4.3.0", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a237c84a..65eb2f31 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.5) + version: 15.2.3(rollup@4.3.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.1.5) + version: 5.0.5(rollup@4.3.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.5)(typescript@5.2.2) + version: 11.1.5(rollup@4.3.0)(typescript@5.2.2) rollup: - specifier: 4.1.5 - version: 4.1.5 + specifier: 4.3.0 + version: 4.3.0 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.1.5) + version: 25.0.7(rollup@4.3.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.1.5) + version: 15.2.3(rollup@4.3.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.1.5) + version: 5.0.5(rollup@4.3.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.1.5)(typescript@5.2.2) + version: 11.1.5(rollup@4.3.0)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.1.5 - version: 4.1.5 + specifier: 4.3.0 + version: 4.3.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.1.5): + /@rollup/plugin-commonjs@25.0.7(rollup@4.3.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.5) + '@rollup/pluginutils': 5.0.5(rollup@4.3.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.1.5 + rollup: 4.3.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.1.5): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.3.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.5) + '@rollup/pluginutils': 5.0.5(rollup@4.3.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.1.5 + rollup: 4.3.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.1.5): + /@rollup/plugin-replace@5.0.5(rollup@4.3.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.5) + '@rollup/pluginutils': 5.0.5(rollup@4.3.0) magic-string: 0.30.5 - rollup: 4.1.5 + rollup: 4.3.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.1.5)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.3.0)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.1.5) + '@rollup/pluginutils': 5.0.5(rollup@4.3.0) resolve: 1.22.8 - rollup: 4.1.5 + rollup: 4.3.0 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.1.5): + /@rollup/pluginutils@5.0.5(rollup@4.3.0): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.1.5 + rollup: 4.3.0 dev: true - /@rollup/rollup-android-arm-eabi@4.1.5: - resolution: {integrity: sha512-/fwx6GS8cIbM2rTNyLMxjSCOegHywOdXO+kN9yFy018iCULcKZCyA3xvzw4bxyKbYfdSxQgdhbsl0egNcxerQw==} + /@rollup/rollup-android-arm-eabi@4.3.0: + resolution: {integrity: sha512-/4pns6BYi8MXdwnXM44yoGAcFYVHL/BYlB2q1HXZ6AzH++LaiEVWFpBWQ/glXhbMbv3E3o09igrHFbP/snhAvA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.1.5: - resolution: {integrity: sha512-tmXh7dyEt+JEz/NgDJlB1UeL/1gFV0v8qYzUAU42WZH4lmUJ5rp6/HkR2qUNC5jCgYEwd8/EfbHKtGIEfS4CUg==} + /@rollup/rollup-android-arm64@4.3.0: + resolution: {integrity: sha512-nLO/JsL9idr416vzi3lHm3Xm+QZh4qHij8k3Er13kZr5YhL7/+kBAx84kDmPc7HMexLmwisjDCeDIKNFp8mDlQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.1.5: - resolution: {integrity: sha512-lTDmLxdEVhzI3KCesZUrNbl3icBvPrDv/85JasY5gh4P2eAuDFmM4uj9HC5DdH0anLC0fwJ+1Uzasr4qOXcjRQ==} + /@rollup/rollup-darwin-arm64@4.3.0: + resolution: {integrity: sha512-dGhVBlllt4iHwTGy21IEoMOTN5wZoid19zEIxsdY29xcEiOEHqzDa7Sqrkh5OE7LKCowL61eFJXxYe/+pYa7ZQ==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.1.5: - resolution: {integrity: sha512-v6qEHZyjWnIgcc4oiy8AIeFsUJAx+Kg0sLj+RE7ICwv3u7YC/+bSClxAiBASRjMzqsq0Z+I/pfxj+OD8mjBYxg==} + /@rollup/rollup-darwin-x64@4.3.0: + resolution: {integrity: sha512-h8wRfHeLEbU3NzaP1Oku7BYXCJQiTRr+8U0lklyOQXxXiEpHLL8tk1hFl+tezoRKLcPJD7joKaK74ASsqt3Ekg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.1.5: - resolution: {integrity: sha512-WngCfwPEDUNbZR1FNO2TCROYUwJvRlbvPi3AS85bDUkkoRDBcjUIz42cuB1j4PKilmnZascL5xTMF/yU8YFayA==} + /@rollup/rollup-linux-arm-gnueabihf@4.3.0: + resolution: {integrity: sha512-wP4VgR/gfV18sylTuym3sxRTkAgUR2vh6YLeX/GEznk5jCYcYSlx585XlcUcl0c8UffIZlRJ09raWSX3JDb4GA==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.1.5: - resolution: {integrity: sha512-Q2A/PEP/UTPTOBwgar3mmCaApahoezai/8e/7f4GCLV6XWCpnU4YwkQQtla7d7nUnc792Ps7g1G0WMovzIknrA==} + /@rollup/rollup-linux-arm64-gnu@4.3.0: + resolution: {integrity: sha512-v/14JCYVkqRSJeQbxFx4oUkwVQQw6lFMN7bd4vuARBc3X2lmomkxBsc+BFiIDL/BK+CTx5AOh/k9XmqDnKWRVg==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.1.5: - resolution: {integrity: sha512-84aBKNAVzTU/eG3tb2+kR4NGRAtm2YVW/KHwkGGDR4z1k4hyrDbuImsfs/6J74t6y0YLOe9HOSu7ejRjzUBGVQ==} + /@rollup/rollup-linux-arm64-musl@4.3.0: + resolution: {integrity: sha512-tNhfYqFH5OxtRzfkTOKdgFYlPSZnlDLNW4+leNEvQZhwTJxoTwsZAAhR97l3qVry/kkLyJPBK+Q8EAJLPinDIg==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.1.5: - resolution: {integrity: sha512-mldtP9UEBurIq2+GYMdNeiqCLW1fdgf4KdkMR/QegAeXk4jFHkKQl7p0NITrKFVyVqzISGXH5gR6GSTBH4wszw==} + /@rollup/rollup-linux-x64-gnu@4.3.0: + resolution: {integrity: sha512-pw77m8QywdsoFdFOgmc8roF1inBI0rciqzO8ffRUgLoq7+ee9o5eFqtEcS6hHOOplgifAUUisP8cAnwl9nUYPw==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.1.5: - resolution: {integrity: sha512-36p+nMcSxjAEzfU47+by102HolUtf/EfgBAidocTKAofJMTqG5QD50qzaFLk4QO+z7Qvg4qd0wr99jGAwnKOig==} + /@rollup/rollup-linux-x64-musl@4.3.0: + resolution: {integrity: sha512-tJs7v2MnV2F8w6X1UpPHl/43OfxjUy9SuJ2ZPoxn79v9vYteChVYO/ueLHCpRMmyTUIVML3N9z4azl9ENH8Xxg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.1.5: - resolution: {integrity: sha512-5oxhubo0A3J8aF/tG+6jHBg785HF8/88kl1YnfbDKmnqMxz/EFiAQDH9cq6lbnxofjn8tlq5KiTf0crJGOGThg==} + /@rollup/rollup-win32-arm64-msvc@4.3.0: + resolution: {integrity: sha512-OKGxp6kATQdTyI2DF+e9s+hB3/QZB45b6e+dzcfW1SUqiF6CviWyevhmT4USsMEdP3mlpC9zxLz3Oh+WaTMOSw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.1.5: - resolution: {integrity: sha512-uVQyBREKX9ErofL8KAZ4iVlqzSZOXSIG+BOLYuz5FD+Cg6jh1eLIeUa3Q4SgX0QaTRFeeAgSNqCC+8kZrZBpSw==} + /@rollup/rollup-win32-ia32-msvc@4.3.0: + resolution: {integrity: sha512-DDZ5AH68JJ2ClQFEA1aNnfA7Ybqyeh0644rGbrLOdNehTmzfICHiWSn0OprzYi9HAshTPQvlwrM+bi2kuaIOjQ==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.1.5: - resolution: {integrity: sha512-FQ5qYqRJ2vUBSom3Fos8o/6UvAMOvlus4+HGCAifH1TagbbwVnVVe0o01J1V52EWnQ8kmfpJDJ0FMrfM5yzcSA==} + /@rollup/rollup-win32-x64-msvc@4.3.0: + resolution: {integrity: sha512-dMvGV8p92GQ8jhNlGIKpyhVZPzJlT258pPrM5q2F8lKcc9Iv9BbfdnhX1OfinYWnb9ms5zLw6MlaMnqLfUkKnQ==} cpu: [x64] os: [win32] requiresBuild: true @@ -2410,23 +2410,23 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.1.5: - resolution: {integrity: sha512-AEw14/q4NHYQkQlngoSae2yi7hDBeT9w84aEzdgCr39+2RL+iTG84lGTkgC1Wp5igtquN64cNzuzZKVz+U6jOg==} + /rollup@4.3.0: + resolution: {integrity: sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.1.5 - '@rollup/rollup-android-arm64': 4.1.5 - '@rollup/rollup-darwin-arm64': 4.1.5 - '@rollup/rollup-darwin-x64': 4.1.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.1.5 - '@rollup/rollup-linux-arm64-gnu': 4.1.5 - '@rollup/rollup-linux-arm64-musl': 4.1.5 - '@rollup/rollup-linux-x64-gnu': 4.1.5 - '@rollup/rollup-linux-x64-musl': 4.1.5 - '@rollup/rollup-win32-arm64-msvc': 4.1.5 - '@rollup/rollup-win32-ia32-msvc': 4.1.5 - '@rollup/rollup-win32-x64-msvc': 4.1.5 + '@rollup/rollup-android-arm-eabi': 4.3.0 + '@rollup/rollup-android-arm64': 4.3.0 + '@rollup/rollup-darwin-arm64': 4.3.0 + '@rollup/rollup-darwin-x64': 4.3.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.3.0 + '@rollup/rollup-linux-arm64-gnu': 4.3.0 + '@rollup/rollup-linux-arm64-musl': 4.3.0 + '@rollup/rollup-linux-x64-gnu': 4.3.0 + '@rollup/rollup-linux-x64-musl': 4.3.0 + '@rollup/rollup-win32-arm64-msvc': 4.3.0 + '@rollup/rollup-win32-ia32-msvc': 4.3.0 + '@rollup/rollup-win32-x64-msvc': 4.3.0 fsevents: 2.3.3 dev: true From 3631612f5d59f8eb1092c671721c204c2c631d7d Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 7 Nov 2023 12:28:05 +0900 Subject: [PATCH 132/182] =?UTF-8?q?import=20=E3=81=AE=20eslit=20=E3=82=92?= =?UTF-8?q?=E8=A8=AD=E5=AE=9A=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 6 +- packages/e2ee/.eslintrc.json | 22 +-- packages/sdk/.eslintrc.json | 22 +-- pnpm-lock.yaml | 256 ++++++++++++++++++----------------- 4 files changed, 160 insertions(+), 146 deletions(-) diff --git a/package.json b/package.json index 9c719cfa..858fece7 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.8.0", - "@typescript-eslint/parser": "6.8.0", - "eslint": "8.52.0", + "@typescript-eslint/eslint-plugin": "6.10.0", + "@typescript-eslint/parser": "6.10.0", + "eslint": "8.53.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.1", "prettier": "3.0.3", diff --git a/packages/e2ee/.eslintrc.json b/packages/e2ee/.eslintrc.json index 56086b89..f6789385 100644 --- a/packages/e2ee/.eslintrc.json +++ b/packages/e2ee/.eslintrc.json @@ -16,23 +16,27 @@ "parserOptions": { "sourceType": "module" }, - "plugins": [ - "@typescript-eslint", - "prettier" - ], + "plugins": ["@typescript-eslint", "prettier"], "globals": { "SORA_JS_SDK_VERSION": true }, "rules": { "@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-unused-vars": ["error", { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" - }], + "@typescript-eslint/no-unused-vars": [ + "error", + { + "vars": "all", + "args": "all", + "argsIgnorePattern": "^_" + } + ], "@typescript-eslint/naming-convention": [ "error", + { + "selector": "import", + "format": ["camelCase", "UPPER_CASE", "PascalCase"] + }, { "selector": "default", "format": ["camelCase"] diff --git a/packages/sdk/.eslintrc.json b/packages/sdk/.eslintrc.json index 916c7905..385329fb 100644 --- a/packages/sdk/.eslintrc.json +++ b/packages/sdk/.eslintrc.json @@ -18,23 +18,27 @@ "sourceType": "module", "project": ["./tsconfig.json"] }, - "plugins": [ - "@typescript-eslint", - "prettier" - ], + "plugins": ["@typescript-eslint", "prettier"], "globals": { "SORA_JS_SDK_VERSION": true }, "rules": { "@typescript-eslint/ban-ts-comment": "off", "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-unused-vars": ["error", { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" - }], + "@typescript-eslint/no-unused-vars": [ + "error", + { + "vars": "all", + "args": "all", + "argsIgnorePattern": "^_" + } + ], "@typescript-eslint/naming-convention": [ "error", + { + "selector": "import", + "format": ["camelCase", "UPPER_CASE", "PascalCase"] + }, { "selector": "default", "format": ["camelCase"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 65eb2f31..e9b89b5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.8.0 - version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.10.0 + version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.8.0 - version: 6.8.0(eslint@8.52.0)(typescript@5.2.2) + specifier: 6.10.0 + version: 6.10.0(eslint@8.53.0)(typescript@5.2.2) eslint: - specifier: 8.52.0 - version: 8.52.0 + specifier: 8.53.0 + version: 8.53.0 eslint-config-prettier: specifier: 9.0.0 - version: 9.0.0(eslint@8.52.0) + version: 9.0.0(eslint@8.53.0) eslint-plugin-prettier: specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.52.0)(prettier@3.0.3) + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.0.3) prettier: specifier: 3.0.3 version: 3.0.3 @@ -302,23 +302,23 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.52.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.52.0 + eslint: 8.53.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.9.1: - resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 @@ -334,8 +334,8 @@ packages: - supports-color dev: true - /@eslint/js@8.52.0: - resolution: {integrity: sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==} + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -396,7 +396,7 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 @@ -481,7 +481,7 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 rollup: 4.3.0 @@ -596,25 +596,25 @@ packages: engines: {node: '>= 10'} dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + /@types/chai-subset@1.3.5: + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: - '@types/chai': 4.3.8 + '@types/chai': 4.3.9 dev: true - /@types/chai@4.3.8: - resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} + /@types/chai@4.3.9: + resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} dev: true - /@types/estree@1.0.2: - resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.8.6 + '@types/node': 20.8.10 dev: true /@types/json-schema@7.0.14: @@ -625,10 +625,10 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.8.6: - resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + /@types/node@20.8.10: + resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} dependencies: - undici-types: 5.25.3 + undici-types: 5.26.5 dev: true /@types/resolve@1.20.2: @@ -639,8 +639,8 @@ packages: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} + /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -650,14 +650,14 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.8.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/type-utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.8.0 + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/type-utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.53.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -668,8 +668,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.8.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} + /@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -678,27 +678,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.53.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.8.0: - resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} + /@typescript-eslint/scope-manager@6.10.0: + resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 dev: true - /@typescript-eslint/type-utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} + /@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -707,23 +707,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.8.0(eslint@8.52.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.52.0 + eslint: 8.53.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.8.0: - resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} + /@typescript-eslint/types@6.10.0: + resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): - resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} + /@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): + resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -731,8 +731,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/visitor-keys': 6.8.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -743,30 +743,30 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.8.0(eslint@8.52.0)(typescript@5.2.2): - resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} + /@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.8.0 - '@typescript-eslint/types': 6.8.0 - '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) - eslint: 8.52.0 + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + eslint: 8.53.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.8.0: - resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} + /@typescript-eslint/visitor-keys@6.10.0: + resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/types': 6.10.0 eslint-visitor-keys: 3.4.3 dev: true @@ -828,21 +828,21 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): + /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.10.0 + acorn: 8.11.2 dev: true - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + /acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} engines: {node: '>=0.4.0'} dev: true - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1330,16 +1330,16 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-prettier@9.0.0(eslint@8.52.0): + /eslint-config-prettier@9.0.0(eslint@8.53.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.52.0 + eslint: 8.53.0 dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.52.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.0.3): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1353,8 +1353,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.52.0 - eslint-config-prettier: 9.0.0(eslint@8.52.0) + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 @@ -1373,15 +1373,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.52.0: - resolution: {integrity: sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==} + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.52.0) - '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.52.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1424,8 +1424,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) eslint-visitor-keys: 3.4.3 dev: true @@ -1495,8 +1495,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1586,6 +1586,10 @@ packages: dev: true optional: true + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -1645,7 +1649,7 @@ packages: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob: 7.2.3 ignore: 5.2.4 merge2: 1.4.1 @@ -1658,7 +1662,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -1677,9 +1681,11 @@ packages: engines: {node: '>=8'} dev: true - /has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 dev: true /html-encoding-sniffer@3.0.0: @@ -1772,10 +1778,10 @@ packages: builtin-modules: 3.3.0 dev: true - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - has: 1.0.4 + hasown: 2.0.0 dev: true /is-docker@2.2.1: @@ -1846,7 +1852,7 @@ packages: /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.5 dev: true /is-stream@2.0.1: @@ -2073,7 +2079,7 @@ packages: /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: - acorn: 8.10.0 + acorn: 8.11.2 pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.1 @@ -2087,8 +2093,8 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true @@ -2274,7 +2280,7 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.6 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true @@ -2314,8 +2320,8 @@ packages: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true @@ -2378,7 +2384,7 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.0 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -2609,7 +2615,7 @@ packages: /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: - acorn: 8.10.0 + acorn: 8.11.2 dev: true /supports-color@7.2.0: @@ -2671,7 +2677,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -2680,7 +2686,7 @@ packages: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /ts-api-utils@1.0.3(typescript@5.2.2): @@ -2742,8 +2748,8 @@ packages: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} dev: true - /undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true /universalify@0.2.0: @@ -2766,7 +2772,7 @@ packages: /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /url-parse@1.5.10: @@ -2781,7 +2787,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.8.6): + /vite-node@0.34.6(@types/node@20.8.10): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2791,7 +2797,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.11(@types/node@20.8.6) + vite: 4.5.0(@types/node@20.8.10) transitivePeerDependencies: - '@types/node' - less @@ -2803,8 +2809,8 @@ packages: - terser dev: true - /vite@4.4.11(@types/node@20.8.6): - resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} + /vite@4.5.0(@types/node@20.8.10): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2831,7 +2837,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.6 + '@types/node': 20.8.10 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 @@ -2870,16 +2876,16 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.8 - '@types/chai-subset': 1.3.3 - '@types/node': 20.8.6 + '@types/chai': 4.3.9 + '@types/chai-subset': 1.3.5 + '@types/node': 20.8.10 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 '@vitest/spy': 0.34.6 '@vitest/utils': 0.34.6 - acorn: 8.10.0 - acorn-walk: 8.2.0 + acorn: 8.11.2 + acorn-walk: 8.3.0 cac: 6.7.14 chai: 4.3.10 debug: 4.3.4 @@ -2892,8 +2898,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.11(@types/node@20.8.6) - vite-node: 0.34.6(@types/node@20.8.6) + vite: 4.5.0(@types/node@20.8.10) + vite-node: 0.34.6(@types/node@20.8.10) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From a47dd45e992966a2b8f7947c47b0f3d77cc2ec06 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Nov 2023 16:53:15 +0000 Subject: [PATCH 133/182] Update pnpm to v8.10.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 858fece7..b19a6b28 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.10.2", + "packageManager": "pnpm@8.10.3", "engines": { "node": ">=18.17.1" } From aaa3d34c01a6b03a9f983ed5564ddbd8382bbbd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 12 Nov 2023 19:27:32 +0000 Subject: [PATCH 134/182] Update dependency rollup to v4.4.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 126 ++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 1e369ddd..de7e477a 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.3.0" + "rollup": "4.4.0" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 6c60f964..0ded3c68 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.3.0", + "rollup": "4.4.0", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e9b89b5c..cb505531 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.3.0) + version: 15.2.3(rollup@4.4.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.3.0) + version: 5.0.5(rollup@4.4.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.3.0)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.0)(typescript@5.2.2) rollup: - specifier: 4.3.0 - version: 4.3.0 + specifier: 4.4.0 + version: 4.4.0 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.3.0) + version: 25.0.7(rollup@4.4.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.3.0) + version: 15.2.3(rollup@4.4.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.3.0) + version: 5.0.5(rollup@4.4.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.3.0)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.0)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.3.0 - version: 4.3.0 + specifier: 4.4.0 + version: 4.4.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.3.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.4.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.3.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.3.0 + rollup: 4.4.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.3.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.4.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.3.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.3.0 + rollup: 4.4.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.3.0): + /@rollup/plugin-replace@5.0.5(rollup@4.4.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.3.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.0) magic-string: 0.30.5 - rollup: 4.3.0 + rollup: 4.4.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.3.0)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.4.0)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.3.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.0) resolve: 1.22.8 - rollup: 4.3.0 + rollup: 4.4.0 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.3.0): + /@rollup/pluginutils@5.0.5(rollup@4.4.0): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.3.0 + rollup: 4.4.0 dev: true - /@rollup/rollup-android-arm-eabi@4.3.0: - resolution: {integrity: sha512-/4pns6BYi8MXdwnXM44yoGAcFYVHL/BYlB2q1HXZ6AzH++LaiEVWFpBWQ/glXhbMbv3E3o09igrHFbP/snhAvA==} + /@rollup/rollup-android-arm-eabi@4.4.0: + resolution: {integrity: sha512-AD30wtT58hZZsXIeiksytR6Gm2gofUxn5KqrDBdyzekgxXB9bXN9dqWIEcPfYo9lA9MVRm0lC42LuYGsscRxiA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.3.0: - resolution: {integrity: sha512-nLO/JsL9idr416vzi3lHm3Xm+QZh4qHij8k3Er13kZr5YhL7/+kBAx84kDmPc7HMexLmwisjDCeDIKNFp8mDlQ==} + /@rollup/rollup-android-arm64@4.4.0: + resolution: {integrity: sha512-PlqvhzFxy5FRTB3wLSsGgPhiakv9jrgfu8tjSojLJFP0CdhfZSRDOFvQ2emWLUEBOSCnjpL63XSuFVMwg59ZtA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.3.0: - resolution: {integrity: sha512-dGhVBlllt4iHwTGy21IEoMOTN5wZoid19zEIxsdY29xcEiOEHqzDa7Sqrkh5OE7LKCowL61eFJXxYe/+pYa7ZQ==} + /@rollup/rollup-darwin-arm64@4.4.0: + resolution: {integrity: sha512-BYmhn1Hebmkmdyn5mBFy7HptowyjtMALyTpywNSNZYigWwyv4L8WQVr0XvOQE7eE6WoKrupSVxtIcGZW8MgZUA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.3.0: - resolution: {integrity: sha512-h8wRfHeLEbU3NzaP1Oku7BYXCJQiTRr+8U0lklyOQXxXiEpHLL8tk1hFl+tezoRKLcPJD7joKaK74ASsqt3Ekg==} + /@rollup/rollup-darwin-x64@4.4.0: + resolution: {integrity: sha512-7GXsMiX/giTDBMs/gL3rePLBRC6gV7DT7JQ0lNqoNDe5hm+Gm4NEWky9fwEmer64fIUbOsTiLUsyQ5fDXUbXPA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.3.0: - resolution: {integrity: sha512-wP4VgR/gfV18sylTuym3sxRTkAgUR2vh6YLeX/GEznk5jCYcYSlx585XlcUcl0c8UffIZlRJ09raWSX3JDb4GA==} + /@rollup/rollup-linux-arm-gnueabihf@4.4.0: + resolution: {integrity: sha512-kavnkaV50Gu6vESlOAwUad92wYY9mUrcaPmhzOQZKlNFnzWAUYyD/uhHmWvY7Z2chtwhWlng0LvCRBF5QiPO7w==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.3.0: - resolution: {integrity: sha512-v/14JCYVkqRSJeQbxFx4oUkwVQQw6lFMN7bd4vuARBc3X2lmomkxBsc+BFiIDL/BK+CTx5AOh/k9XmqDnKWRVg==} + /@rollup/rollup-linux-arm64-gnu@4.4.0: + resolution: {integrity: sha512-2hBHEtCjnBTeuLvDAlHRCqsuFQSyAhTQs9vbZEVBTV8ap35pDI1ukPbIVFFCWNvL/KE7xRor5YZFvfyGCfvLnA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.3.0: - resolution: {integrity: sha512-tNhfYqFH5OxtRzfkTOKdgFYlPSZnlDLNW4+leNEvQZhwTJxoTwsZAAhR97l3qVry/kkLyJPBK+Q8EAJLPinDIg==} + /@rollup/rollup-linux-arm64-musl@4.4.0: + resolution: {integrity: sha512-u7zy0Ygzl7O5Gvr9TSNSQj+DBzvMJC7rXfyQNgZ13KwkhgJ8z0z+gt2AO4RPd01rZioMQ2/TA24XGGg4xqhd0Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.3.0: - resolution: {integrity: sha512-pw77m8QywdsoFdFOgmc8roF1inBI0rciqzO8ffRUgLoq7+ee9o5eFqtEcS6hHOOplgifAUUisP8cAnwl9nUYPw==} + /@rollup/rollup-linux-x64-gnu@4.4.0: + resolution: {integrity: sha512-VvpAdh5SgewmWo8sa5QPYG8aSKH9hU2Kr5+3of0GzBI/8n8PBqhLyvF0DbO+zDW8j5IM8NDebv82MpHrZaD0Cw==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.3.0: - resolution: {integrity: sha512-tJs7v2MnV2F8w6X1UpPHl/43OfxjUy9SuJ2ZPoxn79v9vYteChVYO/ueLHCpRMmyTUIVML3N9z4azl9ENH8Xxg==} + /@rollup/rollup-linux-x64-musl@4.4.0: + resolution: {integrity: sha512-3g6jaXxXVFaDnFoMn2+E3ludGcXFfEr6lDn+S1lh9Qe0JcL9sPt1wGh0g2cKIlb6OakNOFopZqJ5Yub9F7gQlA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.3.0: - resolution: {integrity: sha512-OKGxp6kATQdTyI2DF+e9s+hB3/QZB45b6e+dzcfW1SUqiF6CviWyevhmT4USsMEdP3mlpC9zxLz3Oh+WaTMOSw==} + /@rollup/rollup-win32-arm64-msvc@4.4.0: + resolution: {integrity: sha512-jnoDRkg5Ve6Y1qx2m1+ehouOLQ4ddc15/iQSfFjcDUL6bqLdJJ5c4CKfUy/C6W1oCU4la+hMkveE9GG7ECN7dg==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.3.0: - resolution: {integrity: sha512-DDZ5AH68JJ2ClQFEA1aNnfA7Ybqyeh0644rGbrLOdNehTmzfICHiWSn0OprzYi9HAshTPQvlwrM+bi2kuaIOjQ==} + /@rollup/rollup-win32-ia32-msvc@4.4.0: + resolution: {integrity: sha512-SoLQmJanozFow8o50ul2a3R+J7nk4pEhrp83PzTSXs5OzOmIZbPSp5kihtQ3f6ypo4MCbmh0V8Ev0bJIEp4Azw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.3.0: - resolution: {integrity: sha512-dMvGV8p92GQ8jhNlGIKpyhVZPzJlT258pPrM5q2F8lKcc9Iv9BbfdnhX1OfinYWnb9ms5zLw6MlaMnqLfUkKnQ==} + /@rollup/rollup-win32-x64-msvc@4.4.0: + resolution: {integrity: sha512-Zaz6itfQ5sQF5Cia49YDW1ZTr+YfIKzTSb9npLyvQn346n7ulRDOv2J7GnL0zcOJ3cqW7HzG/ZisyO6fH43J9g==} cpu: [x64] os: [win32] requiresBuild: true @@ -2416,23 +2416,23 @@ packages: fsevents: 2.3.3 dev: true - /rollup@4.3.0: - resolution: {integrity: sha512-scIi1NrKLDIYSPK66jjECtII7vIgdAMFmFo8h6qm++I6nN9qDSV35Ku6erzGVqYjx+lj+j5wkusRMr++8SyDZg==} + /rollup@4.4.0: + resolution: {integrity: sha512-3L67ubCc1Qm49wUodsQ72FM6JmJ9M37d63rGPjxbcKrzNJrwFipl+lDNHeWd6BId09S6Tb9KiBgYKbWhIuqVyg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.3.0 - '@rollup/rollup-android-arm64': 4.3.0 - '@rollup/rollup-darwin-arm64': 4.3.0 - '@rollup/rollup-darwin-x64': 4.3.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.3.0 - '@rollup/rollup-linux-arm64-gnu': 4.3.0 - '@rollup/rollup-linux-arm64-musl': 4.3.0 - '@rollup/rollup-linux-x64-gnu': 4.3.0 - '@rollup/rollup-linux-x64-musl': 4.3.0 - '@rollup/rollup-win32-arm64-msvc': 4.3.0 - '@rollup/rollup-win32-ia32-msvc': 4.3.0 - '@rollup/rollup-win32-x64-msvc': 4.3.0 + '@rollup/rollup-android-arm-eabi': 4.4.0 + '@rollup/rollup-android-arm64': 4.4.0 + '@rollup/rollup-darwin-arm64': 4.4.0 + '@rollup/rollup-darwin-x64': 4.4.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.4.0 + '@rollup/rollup-linux-arm64-gnu': 4.4.0 + '@rollup/rollup-linux-arm64-musl': 4.4.0 + '@rollup/rollup-linux-x64-gnu': 4.4.0 + '@rollup/rollup-linux-x64-musl': 4.4.0 + '@rollup/rollup-win32-arm64-msvc': 4.4.0 + '@rollup/rollup-win32-ia32-msvc': 4.4.0 + '@rollup/rollup-win32-x64-msvc': 4.4.0 fsevents: 2.3.3 dev: true From a7d1f5d03e038625602286af1798f545364a16cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 22:26:49 +0000 Subject: [PATCH 135/182] Update eslint to v6.11.0 --- package.json | 4 +-- pnpm-lock.yaml | 78 +++++++++++++++++++++++++------------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/package.json b/package.json index b19a6b28..a11ebc87 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,8 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.10.0", - "@typescript-eslint/parser": "6.10.0", + "@typescript-eslint/eslint-plugin": "6.11.0", + "@typescript-eslint/parser": "6.11.0", "eslint": "8.53.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb505531..b167c2ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,11 +12,11 @@ importers: .: devDependencies: '@typescript-eslint/eslint-plugin': - specifier: 6.10.0 - version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: 6.10.0 - version: 6.10.0(eslint@8.53.0)(typescript@5.2.2) + specifier: 6.11.0 + version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) eslint: specifier: 8.53.0 version: 8.53.0 @@ -639,8 +639,8 @@ packages: resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} dev: true - /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==} + /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -651,11 +651,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.10.0 - '@typescript-eslint/type-utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.10.0 + '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4 eslint: 8.53.0 graphemer: 1.4.0 @@ -668,8 +668,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} + /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -678,10 +678,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.10.0 - '@typescript-eslint/types': 6.10.0 - '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.10.0 + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4 eslint: 8.53.0 typescript: 5.2.2 @@ -689,16 +689,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@6.10.0: - resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} + /@typescript-eslint/scope-manager@6.11.0: + resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.10.0 - '@typescript-eslint/visitor-keys': 6.10.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 dev: true - /@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} + /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -707,8 +707,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) debug: 4.3.4 eslint: 8.53.0 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -717,13 +717,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@6.10.0: - resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} + /@typescript-eslint/types@6.11.0: + resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): - resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} + /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): + resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -731,8 +731,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.10.0 - '@typescript-eslint/visitor-keys': 6.10.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/visitor-keys': 6.11.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -743,8 +743,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} + /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -752,9 +752,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) '@types/json-schema': 7.0.14 '@types/semver': 7.5.4 - '@typescript-eslint/scope-manager': 6.10.0 - '@typescript-eslint/types': 6.10.0 - '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.11.0 + '@typescript-eslint/types': 6.11.0 + '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) eslint: 8.53.0 semver: 7.5.4 transitivePeerDependencies: @@ -762,11 +762,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@6.10.0: - resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} + /@typescript-eslint/visitor-keys@6.11.0: + resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/types': 6.11.0 eslint-visitor-keys: 3.4.3 dev: true From 77b1d50d726099e7801cc1ee13b268cf11913426 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 16 Nov 2023 20:47:42 +0900 Subject: [PATCH 136/182] pnpm up -L -r --- package.json | 2 +- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 368 ++++++++++++++++++------------------- 4 files changed, 183 insertions(+), 191 deletions(-) diff --git a/package.json b/package.json index a11ebc87..5874fee8 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "eslint": "8.53.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-prettier": "5.0.1", - "prettier": "3.0.3", + "prettier": "3.1.0", "serve": "14.2.1", "typedoc": "0.25.3", "typescript": "5.2.2" diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index de7e477a..c14f60a4 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.4.0" + "rollup": "4.4.1" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 0ded3c68..adb6ccf1 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.4.0", + "rollup": "4.4.1", "rollup-plugin-delete": "2.0.0", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b167c2ac..a47125b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,10 +25,10 @@ importers: version: 9.0.0(eslint@8.53.0) eslint-plugin-prettier: specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.0.3) + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) prettier: - specifier: 3.0.3 - version: 3.0.3 + specifier: 3.1.0 + version: 3.1.0 serve: specifier: 14.2.1 version: 14.2.1 @@ -47,16 +47,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.4.0) + version: 15.2.3(rollup@4.4.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.4.0) + version: 5.0.5(rollup@4.4.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.0)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.1)(typescript@5.2.2) rollup: - specifier: 4.4.0 - version: 4.4.0 + specifier: 4.4.1 + version: 4.4.1 packages/go-wasm: {} @@ -71,16 +71,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.4.0) + version: 25.0.7(rollup@4.4.1) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.4.0) + version: 15.2.3(rollup@4.4.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.4.0) + version: 5.0.5(rollup@4.4.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.0)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.1)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -88,8 +88,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.4.0 - version: 4.4.0 + specifier: 4.4.1 + version: 4.4.1 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -104,8 +104,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + /@esbuild/android-arm64@0.19.5: + resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -113,8 +113,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + /@esbuild/android-arm@0.19.5: + resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -122,8 +122,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + /@esbuild/android-x64@0.19.5: + resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -131,8 +131,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + /@esbuild/darwin-arm64@0.19.5: + resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -140,8 +140,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + /@esbuild/darwin-x64@0.19.5: + resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -149,8 +149,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + /@esbuild/freebsd-arm64@0.19.5: + resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -158,8 +158,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + /@esbuild/freebsd-x64@0.19.5: + resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -167,8 +167,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + /@esbuild/linux-arm64@0.19.5: + resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -176,8 +176,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + /@esbuild/linux-arm@0.19.5: + resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -185,8 +185,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + /@esbuild/linux-ia32@0.19.5: + resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -194,8 +194,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + /@esbuild/linux-loong64@0.19.5: + resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -203,8 +203,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + /@esbuild/linux-mips64el@0.19.5: + resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -212,8 +212,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + /@esbuild/linux-ppc64@0.19.5: + resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -221,8 +221,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + /@esbuild/linux-riscv64@0.19.5: + resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -230,8 +230,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + /@esbuild/linux-s390x@0.19.5: + resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -239,8 +239,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + /@esbuild/linux-x64@0.19.5: + resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -248,8 +248,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + /@esbuild/netbsd-x64@0.19.5: + resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -257,8 +257,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + /@esbuild/openbsd-x64@0.19.5: + resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -266,8 +266,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + /@esbuild/sunos-x64@0.19.5: + resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -275,8 +275,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + /@esbuild/win32-arm64@0.19.5: + resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -284,8 +284,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + /@esbuild/win32-ia32@0.19.5: + resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -293,8 +293,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + /@esbuild/win32-x64@0.19.5: + resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -325,7 +325,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.23.0 - ignore: 5.2.4 + ignore: 5.3.0 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -403,7 +403,7 @@ packages: tslib: 2.6.2 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.4.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.4.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.4.0 + rollup: 4.4.1 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.4.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.4.1): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,16 +430,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.4.0 + rollup: 4.4.1 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.4.0): + /@rollup/plugin-replace@5.0.5(rollup@4.4.1): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,12 +448,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) magic-string: 0.30.5 - rollup: 4.4.0 + rollup: 4.4.1 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.4.0)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.4.1)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -466,13 +466,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.0) + '@rollup/pluginutils': 5.0.5(rollup@4.4.1) resolve: 1.22.8 - rollup: 4.4.0 + rollup: 4.4.1 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.4.0): + /@rollup/pluginutils@5.0.5(rollup@4.4.1): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -484,99 +484,99 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.4.0 + rollup: 4.4.1 dev: true - /@rollup/rollup-android-arm-eabi@4.4.0: - resolution: {integrity: sha512-AD30wtT58hZZsXIeiksytR6Gm2gofUxn5KqrDBdyzekgxXB9bXN9dqWIEcPfYo9lA9MVRm0lC42LuYGsscRxiA==} + /@rollup/rollup-android-arm-eabi@4.4.1: + resolution: {integrity: sha512-Ss4suS/sd+6xLRu+MLCkED2mUrAyqHmmvZB+zpzZ9Znn9S8wCkTQCJaQ8P8aHofnvG5L16u9MVnJjCqioPErwQ==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.4.0: - resolution: {integrity: sha512-PlqvhzFxy5FRTB3wLSsGgPhiakv9jrgfu8tjSojLJFP0CdhfZSRDOFvQ2emWLUEBOSCnjpL63XSuFVMwg59ZtA==} + /@rollup/rollup-android-arm64@4.4.1: + resolution: {integrity: sha512-sRSkGTvGsARwWd7TzC8LKRf8FiPn7257vd/edzmvG4RIr9x68KBN0/Ek48CkuUJ5Pj/Dp9vKWv6PEupjKWjTYA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.4.0: - resolution: {integrity: sha512-BYmhn1Hebmkmdyn5mBFy7HptowyjtMALyTpywNSNZYigWwyv4L8WQVr0XvOQE7eE6WoKrupSVxtIcGZW8MgZUA==} + /@rollup/rollup-darwin-arm64@4.4.1: + resolution: {integrity: sha512-nz0AiGrrXyaWpsmBXUGOBiRDU0wyfSXbFuF98pPvIO8O6auQsPG6riWsfQqmCCC5FNd8zKQ4JhgugRNAkBJ8mQ==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.4.0: - resolution: {integrity: sha512-7GXsMiX/giTDBMs/gL3rePLBRC6gV7DT7JQ0lNqoNDe5hm+Gm4NEWky9fwEmer64fIUbOsTiLUsyQ5fDXUbXPA==} + /@rollup/rollup-darwin-x64@4.4.1: + resolution: {integrity: sha512-Ogqvf4/Ve/faMaiPRvzsJEqajbqs00LO+8vtrPBVvLgdw4wBg6ZDXdkDAZO+4MLnrc8mhGV6VJAzYScZdPLtJg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.4.0: - resolution: {integrity: sha512-kavnkaV50Gu6vESlOAwUad92wYY9mUrcaPmhzOQZKlNFnzWAUYyD/uhHmWvY7Z2chtwhWlng0LvCRBF5QiPO7w==} + /@rollup/rollup-linux-arm-gnueabihf@4.4.1: + resolution: {integrity: sha512-9zc2tqlr6HfO+hx9+wktUlWTRdje7Ub15iJqKcqg5uJZ+iKqmd2CMxlgPpXi7+bU7bjfDIuvCvnGk7wewFEhCg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.4.0: - resolution: {integrity: sha512-2hBHEtCjnBTeuLvDAlHRCqsuFQSyAhTQs9vbZEVBTV8ap35pDI1ukPbIVFFCWNvL/KE7xRor5YZFvfyGCfvLnA==} + /@rollup/rollup-linux-arm64-gnu@4.4.1: + resolution: {integrity: sha512-phLb1fN3rq2o1j1v+nKxXUTSJnAhzhU0hLrl7Qzb0fLpwkGMHDem+o6d+ZI8+/BlTXfMU4kVWGvy6g9k/B8L6Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.4.0: - resolution: {integrity: sha512-u7zy0Ygzl7O5Gvr9TSNSQj+DBzvMJC7rXfyQNgZ13KwkhgJ8z0z+gt2AO4RPd01rZioMQ2/TA24XGGg4xqhd0Q==} + /@rollup/rollup-linux-arm64-musl@4.4.1: + resolution: {integrity: sha512-M2sDtw4tf57VPSjbTAN/lz1doWUqO2CbQuX3L9K6GWIR5uw9j+ROKCvvUNBY8WUbMxwaoc8mH9HmmBKsLht7+w==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.4.0: - resolution: {integrity: sha512-VvpAdh5SgewmWo8sa5QPYG8aSKH9hU2Kr5+3of0GzBI/8n8PBqhLyvF0DbO+zDW8j5IM8NDebv82MpHrZaD0Cw==} + /@rollup/rollup-linux-x64-gnu@4.4.1: + resolution: {integrity: sha512-mHIlRLX+hx+30cD6c4BaBOsSqdnCE4ok7/KDvjHYAHoSuveoMMxIisZFvcLhUnyZcPBXDGZTuBoalcuh43UfQQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.4.0: - resolution: {integrity: sha512-3g6jaXxXVFaDnFoMn2+E3ludGcXFfEr6lDn+S1lh9Qe0JcL9sPt1wGh0g2cKIlb6OakNOFopZqJ5Yub9F7gQlA==} + /@rollup/rollup-linux-x64-musl@4.4.1: + resolution: {integrity: sha512-tB+RZuDi3zxFx7vDrjTNGVLu2KNyzYv+UY8jz7e4TMEoAj7iEt8Qk6xVu6mo3pgjnsHj6jnq3uuRsHp97DLwOA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.4.0: - resolution: {integrity: sha512-jnoDRkg5Ve6Y1qx2m1+ehouOLQ4ddc15/iQSfFjcDUL6bqLdJJ5c4CKfUy/C6W1oCU4la+hMkveE9GG7ECN7dg==} + /@rollup/rollup-win32-arm64-msvc@4.4.1: + resolution: {integrity: sha512-Hdn39PzOQowK/HZzYpCuZdJC91PE6EaGbTe2VCA9oq2u18evkisQfws0Smh9QQGNNRa/T7MOuGNQoLeXhhE3PQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.4.0: - resolution: {integrity: sha512-SoLQmJanozFow8o50ul2a3R+J7nk4pEhrp83PzTSXs5OzOmIZbPSp5kihtQ3f6ypo4MCbmh0V8Ev0bJIEp4Azw==} + /@rollup/rollup-win32-ia32-msvc@4.4.1: + resolution: {integrity: sha512-tLpKb1Elm9fM8c5w3nl4N1eLTP4bCqTYw9tqUBxX8/hsxqHO3dxc2qPbZ9PNkdK4tg4iLEYn0pOUnVByRd2CbA==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.4.0: - resolution: {integrity: sha512-Zaz6itfQ5sQF5Cia49YDW1ZTr+YfIKzTSb9npLyvQn346n7ulRDOv2J7GnL0zcOJ3cqW7HzG/ZisyO6fH43J9g==} + /@rollup/rollup-win32-x64-msvc@4.4.1: + resolution: {integrity: sha512-eAhItDX9yQtZVM3yvXS/VR3qPqcnXvnLyx1pLXl4JzyNMBNO3KC986t/iAg2zcMzpAp9JSvxB5VZGnBiNoA98w==} cpu: [x64] os: [win32] requiresBuild: true @@ -599,11 +599,11 @@ packages: /@types/chai-subset@1.3.5: resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: - '@types/chai': 4.3.9 + '@types/chai': 4.3.10 dev: true - /@types/chai@4.3.9: - resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} + /@types/chai@4.3.10: + resolution: {integrity: sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg==} dev: true /@types/estree@1.0.5: @@ -614,19 +614,19 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.8.10 + '@types/node': 20.9.0 dev: true - /@types/json-schema@7.0.14: - resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.8.10: - resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} dependencies: undici-types: 5.26.5 dev: true @@ -635,8 +635,8 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.4: - resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} dev: true /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): @@ -659,7 +659,7 @@ packages: debug: 4.3.4 eslint: 8.53.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.2.2) @@ -750,8 +750,8 @@ packages: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@types/json-schema': 7.0.14 - '@types/semver': 7.5.4 + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.5 '@typescript-eslint/scope-manager': 6.11.0 '@typescript-eslint/types': 6.11.0 '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) @@ -1295,34 +1295,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + /esbuild@0.19.5: + resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 + '@esbuild/android-arm': 0.19.5 + '@esbuild/android-arm64': 0.19.5 + '@esbuild/android-x64': 0.19.5 + '@esbuild/darwin-arm64': 0.19.5 + '@esbuild/darwin-x64': 0.19.5 + '@esbuild/freebsd-arm64': 0.19.5 + '@esbuild/freebsd-x64': 0.19.5 + '@esbuild/linux-arm': 0.19.5 + '@esbuild/linux-arm64': 0.19.5 + '@esbuild/linux-ia32': 0.19.5 + '@esbuild/linux-loong64': 0.19.5 + '@esbuild/linux-mips64el': 0.19.5 + '@esbuild/linux-ppc64': 0.19.5 + '@esbuild/linux-riscv64': 0.19.5 + '@esbuild/linux-s390x': 0.19.5 + '@esbuild/linux-x64': 0.19.5 + '@esbuild/netbsd-x64': 0.19.5 + '@esbuild/openbsd-x64': 0.19.5 + '@esbuild/sunos-x64': 0.19.5 + '@esbuild/win32-arm64': 0.19.5 + '@esbuild/win32-ia32': 0.19.5 + '@esbuild/win32-x64': 0.19.5 dev: true /escape-string-regexp@4.0.0: @@ -1339,7 +1339,7 @@ packages: eslint: 8.53.0 dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.0.3): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -1355,7 +1355,7 @@ packages: dependencies: eslint: 8.53.0 eslint-config-prettier: 9.0.0(eslint@8.53.0) - prettier: 3.0.3 + prettier: 3.1.0 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true @@ -1403,7 +1403,7 @@ packages: glob-parent: 6.0.2 globals: 13.23.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -1534,7 +1534,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.1 + flat-cache: 3.2.0 dev: true /fill-range@7.0.1: @@ -1552,9 +1552,9 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.1.1: - resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} - engines: {node: '>=12.0.0'} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.9 keyv: 4.5.4 @@ -1651,7 +1651,7 @@ packages: dir-glob: 3.0.1 fast-glob: 3.3.2 glob: 7.2.3 - ignore: 5.2.4 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -1663,7 +1663,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.2.4 + ignore: 5.3.0 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -1733,8 +1733,8 @@ packages: safer-buffer: 2.1.2 dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} engines: {node: '>= 4'} dev: true @@ -2082,7 +2082,7 @@ packages: acorn: 8.11.2 pathe: 1.1.1 pkg-types: 1.0.3 - ufo: 1.3.1 + ufo: 1.3.2 dev: true /ms@2.0.0: @@ -2297,8 +2297,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} engines: {node: '>=14'} hasBin: true dev: true @@ -2408,31 +2408,23 @@ packages: del: 5.1.0 dev: true - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /rollup@4.4.0: - resolution: {integrity: sha512-3L67ubCc1Qm49wUodsQ72FM6JmJ9M37d63rGPjxbcKrzNJrwFipl+lDNHeWd6BId09S6Tb9KiBgYKbWhIuqVyg==} + /rollup@4.4.1: + resolution: {integrity: sha512-idZzrUpWSblPJX66i+GzrpjKE3vbYrlWirUHteoAbjKReZwa0cohAErOYA5efoMmNCdvG9yrJS+w9Kl6csaH4w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.4.0 - '@rollup/rollup-android-arm64': 4.4.0 - '@rollup/rollup-darwin-arm64': 4.4.0 - '@rollup/rollup-darwin-x64': 4.4.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.4.0 - '@rollup/rollup-linux-arm64-gnu': 4.4.0 - '@rollup/rollup-linux-arm64-musl': 4.4.0 - '@rollup/rollup-linux-x64-gnu': 4.4.0 - '@rollup/rollup-linux-x64-musl': 4.4.0 - '@rollup/rollup-win32-arm64-msvc': 4.4.0 - '@rollup/rollup-win32-ia32-msvc': 4.4.0 - '@rollup/rollup-win32-x64-msvc': 4.4.0 + '@rollup/rollup-android-arm-eabi': 4.4.1 + '@rollup/rollup-android-arm64': 4.4.1 + '@rollup/rollup-darwin-arm64': 4.4.1 + '@rollup/rollup-darwin-x64': 4.4.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.4.1 + '@rollup/rollup-linux-arm64-gnu': 4.4.1 + '@rollup/rollup-linux-arm64-musl': 4.4.1 + '@rollup/rollup-linux-x64-gnu': 4.4.1 + '@rollup/rollup-linux-x64-musl': 4.4.1 + '@rollup/rollup-win32-arm64-msvc': 4.4.1 + '@rollup/rollup-win32-ia32-msvc': 4.4.1 + '@rollup/rollup-win32-x64-msvc': 4.4.1 fsevents: 2.3.3 dev: true @@ -2556,8 +2548,8 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.4.3: - resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + /std-env@3.5.0: + resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} dev: true /string-width@4.2.3: @@ -2744,8 +2736,8 @@ packages: hasBin: true dev: true - /ufo@1.3.1: - resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} dev: true /undici-types@5.26.5: @@ -2787,7 +2779,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.8.10): + /vite-node@0.34.6(@types/node@20.9.0): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2797,7 +2789,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.0(@types/node@20.8.10) + vite: 5.0.0(@types/node@20.9.0) transitivePeerDependencies: - '@types/node' - less @@ -2809,12 +2801,12 @@ packages: - terser dev: true - /vite@4.5.0(@types/node@20.8.10): - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} - engines: {node: ^14.18.0 || >=16.0.0} + /vite@5.0.0(@types/node@20.9.0): + resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@types/node': '>= 14' + '@types/node': ^18.0.0 || >=20.0.0 less: '*' lightningcss: ^1.21.0 sass: '*' @@ -2837,10 +2829,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.10 - esbuild: 0.18.20 + '@types/node': 20.9.0 + esbuild: 0.19.5 postcss: 8.4.31 - rollup: 3.29.4 + rollup: 4.4.1 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2876,9 +2868,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.9 + '@types/chai': 4.3.10 '@types/chai-subset': 1.3.5 - '@types/node': 20.8.10 + '@types/node': 20.9.0 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2894,12 +2886,12 @@ packages: magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 - std-env: 3.4.3 + std-env: 3.5.0 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.5.0(@types/node@20.8.10) - vite-node: 0.34.6(@types/node@20.8.10) + vite: 5.0.0(@types/node@20.9.0) + vite-node: 0.34.6(@types/node@20.9.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 981cc2ac5ac9d7cde61f7efb27fbb4e6203b0383 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 16 Nov 2023 20:53:03 +0900 Subject: [PATCH 137/182] 2023.2.0-canary.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5874fee8..ae21d0b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.4", + "version": "2023.2.0-canary.5", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From 159044fa3e2a21c8725c8e54bf3245d7558bea61 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 16 Nov 2023 21:09:36 +0900 Subject: [PATCH 138/182] =?UTF-8?q?vitest=20=E3=81=AF=20root=20=E3=81=AB?= =?UTF-8?q?=E7=BD=AE=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 5 +++-- packages/sdk/package.json | 3 +-- pnpm-lock.yaml | 9 ++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index ae21d0b4..748c45da 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "prettier": "3.1.0", "serve": "14.2.1", "typedoc": "0.25.3", - "typescript": "5.2.2" + "typescript": "5.2.2", + "vitest": "0.34.6" }, "resolutions": { "get-pkg-repo": "5.0.0" @@ -45,4 +46,4 @@ "engines": { "node": ">=18.17.1" } -} +} \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index adb6ccf1..e5ba4f54 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -15,8 +15,7 @@ "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", "rollup": "4.4.1", - "rollup-plugin-delete": "2.0.0", - "vitest": "0.34.6" + "rollup-plugin-delete": "2.0.0" }, "dependencies": { "@sora/e2ee": "workspace:^", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a47125b7..0e5fd554 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,9 @@ importers: typescript: specifier: 5.2.2 version: 5.2.2 + vitest: + specifier: 0.34.6 + version: 0.34.6 packages/e2ee: dependencies: @@ -93,9 +96,6 @@ importers: rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 - vitest: - specifier: 0.34.6 - version: 0.34.6(jsdom@22.1.0) packages: @@ -2837,7 +2837,7 @@ packages: fsevents: 2.3.3 dev: true - /vitest@0.34.6(jsdom@22.1.0): + /vitest@0.34.6: resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2881,7 +2881,6 @@ packages: cac: 6.7.14 chai: 4.3.10 debug: 4.3.4 - jsdom: 22.1.0 local-pkg: 0.4.3 magic-string: 0.30.5 pathe: 1.1.1 From cc0dea5caa64e96296d7ebbed045ed1263f14e66 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 17 Nov 2023 10:44:26 +0900 Subject: [PATCH 139/182] 2023.2.0-canary.6 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 748c45da..17662e28 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.5", + "version": "2023.2.0-canary.6", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -46,4 +46,4 @@ "engines": { "node": ">=18.17.1" } -} \ No newline at end of file +} From 274b97d0fd48430a89711a998cccc641ea867bb9 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 17 Nov 2023 14:04:08 +0900 Subject: [PATCH 140/182] Feature/biome (#456) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * biome 追加 * biome 化 * eslint サヨナラ * lint 対応していく * 直せる範囲をなおす * pnpm run lint は通るようになった * pnpm up -L -r * tslib を入れてみる * 変更履歴を更新する --- .vscode/extensions.json | 3 + .vscode/settings.json | 20 + CHANGES.md | 2 + biome.json | 45 ++ package.json | 11 +- packages/e2ee/.eslintrc.json | 76 --- packages/e2ee/.prettierrc.json | 7 - packages/e2ee/package.json | 7 +- packages/e2ee/src/sora_e2ee.ts | 2 +- packages/e2ee/src/worker/e2ee.ts | 24 +- packages/e2ee/src/worker/sframe.ts | 2 +- packages/sdk/.eslintrc.json | 82 --- packages/sdk/.prettierrc.json | 7 - packages/sdk/package.json | 4 +- packages/sdk/src/base.ts | 90 +-- packages/sdk/src/lyra.ts | 14 +- packages/sdk/src/lyra_worker.ts | 9 +- packages/sdk/src/publisher.ts | 4 +- packages/sdk/src/subscriber.ts | 1 + packages/sdk/src/types.ts | 4 +- packages/sdk/src/utils.ts | 42 +- pnpm-lock.yaml | 888 +++-------------------------- 22 files changed, 266 insertions(+), 1078 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 biome.json delete mode 100644 packages/e2ee/.eslintrc.json delete mode 100644 packages/e2ee/.prettierrc.json delete mode 100644 packages/sdk/.eslintrc.json delete mode 100644 packages/sdk/.prettierrc.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..699ed733 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["biomejs.biome"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..2c24faf6 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,20 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "editor.codeActionsOnSave": { + "quickfix.biome": true, + "source.organizeImports.biome": true + } +} diff --git a/CHANGES.md b/CHANGES.md index 8db12da7..ba49d48e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,8 @@ ## develop +- [CHANGE] fmt / lint を biome へ移行する + - @voluntas - [CHANGE] Node.js 16 系を落とす - @voluntas - [FIX] stopVideoTrack で例外を握りつぶしていたのを修正する diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..5442c712 --- /dev/null +++ b/biome.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.3.3/schema.json", + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "ignore": [], + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + }, + "json": { + "parser": { + "allowComments": true + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100 + } + }, + "javascript": { + "formatter": { + "enabled": true, + "quoteStyle": "single", + "jsxQuoteStyle": "double", + "trailingComma": "all", + "semicolons": "asNeeded", + "arrowParentheses": "always", + "indentStyle": "space", + "indentWidth": 2, + "lineWidth": 100, + "quoteProperties": "asNeeded" + } + } +} diff --git a/package.json b/package.json index 17662e28..16b1caac 100644 --- a/package.json +++ b/package.json @@ -28,12 +28,7 @@ "dist" ], "devDependencies": { - "@typescript-eslint/eslint-plugin": "6.11.0", - "@typescript-eslint/parser": "6.11.0", - "eslint": "8.53.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-prettier": "5.0.1", - "prettier": "3.1.0", + "@biomejs/biome": "1.3.3", "serve": "14.2.1", "typedoc": "0.25.3", "typescript": "5.2.2", @@ -42,8 +37,8 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.10.3", + "packageManager": "pnpm@8.10.5", "engines": { "node": ">=18.17.1" } -} +} \ No newline at end of file diff --git a/packages/e2ee/.eslintrc.json b/packages/e2ee/.eslintrc.json deleted file mode 100644 index f6789385..00000000 --- a/packages/e2ee/.eslintrc.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/eslintrc.json", - "env": { - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:prettier/recommended", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module" - }, - "plugins": ["@typescript-eslint", "prettier"], - "globals": { - "SORA_JS_SDK_VERSION": true - }, - "rules": { - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/naming-convention": [ - "error", - { - "selector": "import", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "default", - "format": ["camelCase"] - }, - { - "selector": "class", - "format": ["PascalCase"] - }, - { - "selector": "interface", - "format": ["PascalCase"] - }, - { - "selector": "typeAlias", - "format": ["PascalCase"] - }, - { - "selector": "objectLiteralProperty", - "format": ["camelCase", "snake_case"] - }, - { - "selector": "typeProperty", - "format": null - }, - { - "selector": "variable", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "parameter", - "format": ["camelCase"], - "leadingUnderscore": "allow" - } - ], - "curly": "error" - } -} diff --git a/packages/e2ee/.prettierrc.json b/packages/e2ee/.prettierrc.json deleted file mode 100644 index 08a60eef..00000000 --- a/packages/e2ee/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "singleQuote": true, - "semi": false, - "trailingComma": "all", - "tabWidth": 2, - "printWidth": 100 -} \ No newline at end of file diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index c14f60a4..6b0b4b45 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -11,15 +11,16 @@ "build": "pnpm run build:worker && pnpm run build:development", "build:development": "NODE_ENV=development rollup -c rollup.config.mjs --bundleConfigAsCjs", "build:worker": "tsc --project tsconfig.worker.json", - "fmt": "prettier --write src", - "lint": "eslint --ext .ts ./src", + "lint": "biome lint ./src", + "fmt": "biome format --write ./src", "test": "echo \"no test\"" }, "devDependencies": { "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.4.1" + "rollup": "4.4.1", + "tslib": "2.6.2" }, "dependencies": { "@sora/go-wasm": "workspace:^" diff --git a/packages/e2ee/src/sora_e2ee.ts b/packages/e2ee/src/sora_e2ee.ts index c612abfb..818cf9ea 100644 --- a/packages/e2ee/src/sora_e2ee.ts +++ b/packages/e2ee/src/sora_e2ee.ts @@ -75,7 +75,7 @@ const WORKER_SCRIPT = '__WORKER_SCRIPT__' class SoraE2EE { worker: Worker | null - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: onWorkerDisconnect: (() => any) | null constructor() { diff --git a/packages/e2ee/src/worker/e2ee.ts b/packages/e2ee/src/worker/e2ee.ts index 16d53136..1fe4115e 100644 --- a/packages/e2ee/src/worker/e2ee.ts +++ b/packages/e2ee/src/worker/e2ee.ts @@ -82,9 +82,11 @@ function setLatestRemoteKeyId(connectionId: string, keyId: number): void { } function removeOldRemoteDeriveKeys(): void { + // biome-ignore lint/complexity/noForEach: Array ではなく Map latestRemoteKeyIdMap.forEach((latestKeyId, connectionId) => { const deriveKeyMap = remoteDeriveKeyMap.get(connectionId) if (deriveKeyMap) { + // biome-ignore lint/complexity/noForEach: Array ではなく Map deriveKeyMap.forEach((_, keyId) => { if (latestKeyId !== keyId) { deriveKeyMap.delete(keyId) @@ -99,7 +101,11 @@ function removeDeriveKey(connectionId: string): void { remoteDeriveKeyMap.delete(connectionId) } -function getLatestSelfDeriveKey(): { connectionId: string; keyId: number; deriveKey: CryptoKey } { +function getLatestSelfDeriveKey(): { + connectionId: string + keyId: number + deriveKey: CryptoKey +} { const deriveKey = selfDeriveKeyMap.get('latest') if (!deriveKey) { throw new Error('LATEST-SELF-DERIVEKEY-NOT_FOUND') @@ -110,7 +116,7 @@ function getLatestSelfDeriveKey(): { connectionId: string; keyId: number; derive function setSelfDeriveKey(connectionId: string, keyId: number, deriveKey: CryptoKey): void { const currentSelfDeriveKey = selfDeriveKeyMap.get('latest') if (currentSelfDeriveKey) { - if (currentSelfDeriveKey['keyId'] < keyId) { + if (currentSelfDeriveKey.keyId < keyId) { const nextSelfDeriveKey = { connectionId, keyId, deriveKey } selfDeriveKeyMap.set('latest', nextSelfDeriveKey) } @@ -136,14 +142,12 @@ function silenceFrame(encodedFrame: Chunk): Chunk { const newData = new ArrayBuffer(60) const newUint8 = new Uint8Array(newData) - // prettier-ignore - newUint8.set([0xb0, 0x05, 0x00, 0x9d, 0x01, 0x2a, 0xa0, 0x00, 0x5a, 0x00, - 0x39, 0x03, 0x00, 0x00, 0x1c, 0x22, 0x16, 0x16, 0x22, 0x66, - 0x12, 0x20, 0x04, 0x90, 0x40, 0x00, 0xc5, 0x01, 0xe0, 0x7c, - 0x4d, 0x2f, 0xfa, 0xdd, 0x4d, 0xa5, 0x7f, 0x89, 0xa5, 0xff, - 0x5b, 0xa9, 0xb4, 0xaf, 0xf1, 0x34, 0xbf, 0xeb, 0x75, 0x36, - 0x95, 0xfe, 0x26, 0x96, 0x60, 0xfe, 0xff, 0xba, 0xff, 0x40, - ]); + newUint8.set([ + 0xb0, 0x05, 0x00, 0x9d, 0x01, 0x2a, 0xa0, 0x00, 0x5a, 0x00, 0x39, 0x03, 0x00, 0x00, 0x1c, + 0x22, 0x16, 0x16, 0x22, 0x66, 0x12, 0x20, 0x04, 0x90, 0x40, 0x00, 0xc5, 0x01, 0xe0, 0x7c, + 0x4d, 0x2f, 0xfa, 0xdd, 0x4d, 0xa5, 0x7f, 0x89, 0xa5, 0xff, 0x5b, 0xa9, 0xb4, 0xaf, 0xf1, + 0x34, 0xbf, 0xeb, 0x75, 0x36, 0x95, 0xfe, 0x26, 0x96, 0x60, 0xfe, 0xff, 0xba, 0xff, 0x40, + ]) encodedFrame.data = newData } return encodedFrame diff --git a/packages/e2ee/src/worker/sframe.ts b/packages/e2ee/src/worker/sframe.ts index bd085f0b..f9ef669d 100644 --- a/packages/e2ee/src/worker/sframe.ts +++ b/packages/e2ee/src/worker/sframe.ts @@ -2,7 +2,7 @@ const connectionIdLength = 26 function byteCount(n: number): number { - if (n == 0) { + if (n === 0) { return 1 } // log256(x) = log(x) / log(256) diff --git a/packages/sdk/.eslintrc.json b/packages/sdk/.eslintrc.json deleted file mode 100644 index 385329fb..00000000 --- a/packages/sdk/.eslintrc.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/eslintrc.json", - "env": { - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:prettier/recommended", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "sourceType": "module", - "project": ["./tsconfig.json"] - }, - "plugins": ["@typescript-eslint", "prettier"], - "globals": { - "SORA_JS_SDK_VERSION": true - }, - "rules": { - "@typescript-eslint/ban-ts-comment": "off", - "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "vars": "all", - "args": "all", - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/naming-convention": [ - "error", - { - "selector": "import", - "format": ["camelCase", "UPPER_CASE", "PascalCase"] - }, - { - "selector": "default", - "format": ["camelCase"] - }, - { - "selector": "class", - "format": ["PascalCase"] - }, - { - "selector": "interface", - "format": ["PascalCase"] - }, - { - "selector": "typeAlias", - "format": ["PascalCase"] - }, - { - "selector": "objectLiteralProperty", - "format": ["camelCase", "snake_case"] - }, - { - "selector": "typeProperty", - "format": null - }, - { - "selector": "parameter", - "format": ["camelCase"], - "leadingUnderscore": "allow" - }, - { - "selector": "typeParameter", - "format": ["PascalCase"] - }, - { - "selector": "variable", - "format": ["camelCase", "UPPER_CASE"] - } - ], - "curly": "error" - } -} diff --git a/packages/sdk/.prettierrc.json b/packages/sdk/.prettierrc.json deleted file mode 100644 index 08a60eef..00000000 --- a/packages/sdk/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "singleQuote": true, - "semi": false, - "trailingComma": "all", - "tabWidth": 2, - "printWidth": 100 -} \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e5ba4f54..457dc9e5 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -3,8 +3,8 @@ "scripts": { "build": "rollup -c rollup.config.mjs --bundleConfigAsCjs", "watch": "rollup -c -w", - "lint": "eslint --ext .ts ./src", - "fmt": "prettier --write src", + "lint": "biome lint ./src", + "fmt": "biome format --write ./src", "test": "vitest run" }, "devDependencies": { diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 6ed7652d..52373ce2 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -1,34 +1,19 @@ import { unzlibSync, zlibSync } from 'fflate' +import SoraE2EE from '@sora/e2ee' import { + LyraState, createLyraWorker, isLyraInitialized, - LyraState, - transformPcmToLyra, transformLyraToPcm, + transformPcmToLyra, } from './lyra' -import { - ConnectError, - createDataChannelData, - createDataChannelEvent, - createDataChannelMessageEvent, - createSignalingEvent, - createSignalingMessage, - createTimelineEvent, - getPreKeyBundle, - getSignalingNotifyAuthnMetadata, - getSignalingNotifyData, - isFirefox, - isSafari, - parseDataChannelEventData, - trace, -} from './utils' import { AudioCodecType, Callbacks, ConnectionOptions, - JSONType, DataChannelConfiguration, + JSONType, RTCEncodedAudioFrame, SignalingConnectMessage, SignalingMessage, @@ -48,7 +33,22 @@ import { SoraCloseEventType, TransportType, } from './types' -import SoraE2EE from '@sora/e2ee' +import { + ConnectError, + createDataChannelData, + createDataChannelEvent, + createDataChannelMessageEvent, + createSignalingEvent, + createSignalingMessage, + createTimelineEvent, + getPreKeyBundle, + getSignalingNotifyAuthnMetadata, + getSignalingNotifyData, + isFirefox, + isSafari, + parseDataChannelEventData, + trace, +} from './utils' declare global { interface Algorithm { @@ -90,7 +90,7 @@ export default class ConnectionBase { /** * PeerConnection に渡す configuration */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: constraints: any /** * デバッグフラグ @@ -181,6 +181,7 @@ export default class ConnectionBase { * シグナリング type offer に含まれる DataChannel レコード */ private signalingOfferMessageDataChannels: { + // biome-ignore lint/suspicious/noRedeclare: 後で対応する [key in string]?: SignalingOfferMessageDataChannel } /** @@ -987,7 +988,7 @@ export default class ConnectionBase { if (this.options.e2ee === true && this.e2ee) { if (!this.connectionId) { const error = new Error() - error.message = `E2EE failed. Self connectionId is null` + error.message = 'E2EE failed. Self connectionId is null' throw error } this.e2ee.clearWorker() @@ -1059,7 +1060,7 @@ export default class ConnectionBase { this.writeWebSocketSignalingLog('signaling-url-candidate', { type: 'close', url: ws.url, - message: `WebSocket closed`, + message: 'WebSocket closed', code: event.code, reason: event.reason, }) @@ -1073,7 +1074,7 @@ export default class ConnectionBase { this.writeWebSocketSignalingLog('signaling-url-candidate', { type: 'error', url: ws.url, - message: `Failed to connect WebSocket`, + message: 'Failed to connect WebSocket', }) if (ws) { ws.onclose = null @@ -1165,32 +1166,32 @@ export default class ConnectionBase { throw new Error('Received invalid signaling data') } const message = JSON.parse(event.data) as SignalingMessage - if (message.type == 'offer') { + if (message.type === 'offer') { this.writeWebSocketSignalingLog('onmessage-offer', message) this.signalingOnMessageTypeOffer(message) this.connectedSignalingUrl = ws.url resolve(message) - } else if (message.type == 'update') { + } else if (message.type === 'update') { this.writeWebSocketSignalingLog('onmessage-update', message) await this.signalingOnMessageTypeUpdate(message) - } else if (message.type == 're-offer') { + } else if (message.type === 're-offer') { this.writeWebSocketSignalingLog('onmessage-re-offer', message) await this.signalingOnMessageTypeReOffer(message) - } else if (message.type == 'ping') { + } else if (message.type === 'ping') { await this.signalingOnMessageTypePing(message) - } else if (message.type == 'push') { + } else if (message.type === 'push') { this.callbacks.push(message, 'websocket') - } else if (message.type == 'notify') { + } else if (message.type === 'notify') { if (message.event_type === 'connection.created') { this.writeWebSocketTimelineLog('notify-connection.created', message) } else if (message.event_type === 'connection.destroyed') { this.writeWebSocketTimelineLog('notify-connection.destroyed', message) } this.signalingOnMessageTypeNotify(message, 'websocket') - } else if (message.type == 'switched') { + } else if (message.type === 'switched') { this.writeWebSocketSignalingLog('onmessage-switched', message) this.signalingOnMessageTypeSwitched(message) - } else if (message.type == 'redirect') { + } else if (message.type === 'redirect') { this.writeWebSocketSignalingLog('onmessage-redirect', message) try { const redirectMessage = await this.signalingOnMessageTypeRedirect(message) @@ -1219,7 +1220,7 @@ export default class ConnectionBase { if (signalingMessage.e2ee && this.e2ee) { const initResult = await this.e2ee.init() // @ts-ignore signalingMessage の e2ee が true の場合は signalingNotifyMetadata が必ず object になる - signalingMessage['signaling_notify_metadata']['pre_key_bundle'] = initResult + signalingMessage.signaling_notify_metadata.pre_key_bundle = initResult } this.trace('SIGNALING CONNECT MESSAGE', signalingMessage) if (ws) { @@ -1383,7 +1384,9 @@ export default class ConnectionBase { * @param sdp offer SDP * @returns 処理後の SDP */ - private processOfferSdp(sdp: string): string { + private processOfferSdp(offerSdp: string): string { + // lint 対応で引数を変更したりしないようにしてる + let sdp = offerSdp if (isFirefox()) { // 同じ mid が採用される際にはもう使用されない transceiver を解放するために // port に 0 が指定された SDP が送られてくる。 @@ -1670,7 +1673,7 @@ export default class ConnectionBase { reject(error) } this.ws.onerror = (_) => { - const error = new ConnectError(`Signaling failed. WebSocket onerror was called`) + const error = new ConnectError('Signaling failed. WebSocket onerror was called') this.writeWebSocketSignalingLog('onerror', error) this.signalingTerminate() reject(error) @@ -1917,7 +1920,7 @@ export default class ConnectionBase { const message = new Uint8Array(data) const result = this.e2ee.receiveMessage(message) this.e2ee.postRemoteSecretKeyMaterials(result) - result.messages.forEach((message) => { + result.messages.filter((message) => { this.sendE2EEMessage(message.buffer) }) } @@ -1966,7 +1969,7 @@ export default class ConnectionBase { * シグナリングサーバーに type re-answer を投げるメソッド */ private sendReAnswer(): void { - if (this.pc && this.pc.localDescription) { + if (this.pc?.localDescription) { this.trace('RE ANSWER SDP', this.pc.localDescription.sdp) this.sendSignalingMessage({ type: 're-answer', sdp: this.pc.localDescription.sdp }) } @@ -2031,7 +2034,7 @@ export default class ConnectionBase { if (preKeyBundle && this.e2ee && connectionId) { const result = this.e2ee.startSession(connectionId, preKeyBundle) this.e2ee.postRemoteSecretKeyMaterials(result) - result.messages.forEach((message) => { + result.messages.filter((message) => { this.sendE2EEMessage(message.buffer) }) // messages を送信し終えてから、selfSecretKeyMaterial を更新する @@ -2043,7 +2046,7 @@ export default class ConnectionBase { } } const data = getSignalingNotifyData(message) - data.forEach((metadata) => { + data.filter((metadata) => { const authnMetadata = getSignalingNotifyAuthnMetadata(metadata) const preKeyBundle = getPreKeyBundle(authnMetadata) const connectionId = metadata.connection_id @@ -2063,7 +2066,7 @@ export default class ConnectionBase { result.selfSecretKeyMaterial, 5000, ) - result.messages.forEach((message) => { + result.messages.filter((message) => { this.sendE2EEMessage(message.buffer) }) this.e2ee.postRemoveRemoteDeriveKey(connectionId) @@ -2082,7 +2085,7 @@ export default class ConnectionBase { if (!this.ws) { return } - if (message['ignore_disconnect_websocket']) { + if (message.ignore_disconnect_websocket) { if (this.ws) { this.ws.onclose = null this.ws.close() @@ -2142,6 +2145,7 @@ export default class ConnectionBase { return stats } const reports = await this.pc.getStats() + // biome-ignore lint/complexity/noForEach: RTCStatsReport であって Array ではない reports.forEach((s) => { stats.push(s as RTCStatsReport) }) @@ -2469,7 +2473,7 @@ export default class ConnectionBase { if (this.options.e2ee && this.e2ee) { return this.e2ee.selfFingerprint() } - return + return undefined } /** @@ -2479,7 +2483,7 @@ export default class ConnectionBase { if (this.options.e2ee && this.e2ee) { return this.e2ee.remoteFingerprints() } - return + return undefined } /** diff --git a/packages/sdk/src/lyra.ts b/packages/sdk/src/lyra.ts index efdb6433..4798f2a8 100644 --- a/packages/sdk/src/lyra.ts +++ b/packages/sdk/src/lyra.ts @@ -2,11 +2,11 @@ import { type RTCEncodedAudioFrame } from './types' import { LYRA_VERSION, - LyraEncoder, LyraDecoder, - LyraModule, - LyraEncoderOptions, LyraDecoderOptions, + LyraEncoder, + LyraEncoderOptions, + LyraModule, } from '@shiguredo/lyra-wasm' /** @@ -269,7 +269,7 @@ export class LyraParams { throw new Error(`Lyra parameter 'usedtx' is not found in media description: ${media}`) } - return new LyraParams(version[1], Number(bitrate[1]), usedtx[1] == '1') + return new LyraParams(version[1], Number(bitrate[1]), usedtx[1] === '1') } /** @@ -336,7 +336,7 @@ export class LyraState { .replace(/109 lyra[/]16000[/]1/, '110 opus/48000/2') .replace(/a=fmtp:109 .*/, 'a=rtpmap:109 L16/16000\r\na=ptime:20') } - replacedSdp += 'm=' + media + replacedSdp += `m=${media}` } return replacedSdp } @@ -366,7 +366,7 @@ export class LyraState { .replace(/a=rtpmap:110 opus[/]48000[/]2/, 'a=rtpmap:109 L16/16000') .replace(/a=fmtp:110 .*/, 'a=ptime:20') } - replacedSdp += 'm=' + media + replacedSdp += `m=${media}` } return replacedSdp } @@ -402,7 +402,7 @@ export class LyraState { .replace(/a=rtpmap:109 L16[/]16000/, 'a=rtpmap:109 lyra/16000/1') .replace(/a=ptime:20/, params.toFmtpString()) } - replacedSdp += 'm=' + media + replacedSdp += `m=${media}` } return replacedSdp diff --git a/packages/sdk/src/lyra_worker.ts b/packages/sdk/src/lyra_worker.ts index 62302db3..55f2389c 100644 --- a/packages/sdk/src/lyra_worker.ts +++ b/packages/sdk/src/lyra_worker.ts @@ -1,7 +1,7 @@ -import { transformPcmToLyra, transformLyraToPcm } from './lyra' +import { transformLyraToPcm, transformPcmToLyra } from './lyra' import { type RTCEncodedAudioFrame } from './types' -import { LyraEncoder, LyraEncoderState, LyraDecoder, LyraDecoderState } from '@shiguredo/lyra-wasm' +import { LyraDecoder, LyraDecoderState, LyraEncoder, LyraEncoderState } from '@shiguredo/lyra-wasm' function createSenderTransform(encoderState: LyraEncoderState) { const encoder = LyraEncoder.fromState(encoderState) @@ -44,17 +44,18 @@ type OnTransformMessage = { } declare global { + // biome-ignore lint/style/useConst: 判断が現時点で難しいため let onrtctransform: (msg: OnTransformMessage) => void } onrtctransform = (msg: OnTransformMessage) => { - if (msg.transformer.options.name == 'senderTransform') { + if (msg.transformer.options.name === 'senderTransform') { const transform = createSenderTransform(msg.transformer.options.lyraEncoder) msg.transformer.readable .pipeThrough(transform) .pipeTo(msg.transformer.writable) .catch((e) => console.warn(e)) - } else if (msg.transformer.options.name == 'receiverTransform') { + } else if (msg.transformer.options.name === 'receiverTransform') { const transform = createReceiverTransform(msg.transformer.options.lyraDecoder) msg.transformer.readable .pipeThrough(transform) diff --git a/packages/sdk/src/publisher.ts b/packages/sdk/src/publisher.ts index 603cdbbf..a00881f9 100644 --- a/packages/sdk/src/publisher.ts +++ b/packages/sdk/src/publisher.ts @@ -56,7 +56,7 @@ export default class ConnectionPublisher extends ConnectionBase { this.startE2EE() await this.connectPeerConnection(signalingMessage) await this.setRemoteDescription(signalingMessage) - stream.getTracks().forEach((track) => { + stream.getTracks().filter((track) => { if (this.pc) { this.pc.addTrack(track, stream) } @@ -135,7 +135,7 @@ export default class ConnectionPublisher extends ConnectionBase { } } await this.setRemoteDescription(signalingMessage) - stream.getTracks().forEach((track) => { + stream.getTracks().filter((track) => { if (this.pc) { this.pc.addTrack(track, stream) } diff --git a/packages/sdk/src/subscriber.ts b/packages/sdk/src/subscriber.ts index e0f9ed99..ad006d89 100644 --- a/packages/sdk/src/subscriber.ts +++ b/packages/sdk/src/subscriber.ts @@ -15,6 +15,7 @@ export default class ConnectionSubscriber extends ConnectionBase { * * @public */ + // biome-ignore lint/suspicious/noConfusingVoidType: stream が なのでどうしようもない async connect(): Promise { if (this.options.multistream) { await Promise.race([ diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 71e3be09..b8b28662 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -352,7 +352,7 @@ export type TimelineEventLogType = 'websocket' | 'datachannel' | 'peerconnection export interface SignalingEvent extends Event { transportType: TransportType - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: data?: any } @@ -367,7 +367,7 @@ export interface DataChannelEvent extends Event { export interface TimelineEvent extends Event { logType: TimelineEventLogType - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // biome-ignore lint/suspicious/noExplicitAny: data?: any dataChannelId?: number | null dataChannelLabel?: string diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index bf84937c..910f9ac7 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -1,19 +1,19 @@ import { unzlibSync } from 'fflate' import { - ConnectionOptions, Browser, - JSONType, + ConnectionOptions, DataChannelConfiguration, DataChannelEvent, DataChannelMessageEvent, + JSONType, PreKeyBundle, - SignalingConnectMessage, SignalingConnectDataChannel, + SignalingConnectMessage, SignalingEvent, - SignalingNotifyMetadata, SignalingNotifyConnectionCreated, SignalingNotifyConnectionDestroyed, + SignalingNotifyMetadata, TimelineEvent, TimelineEventLogType, TransportType, @@ -223,7 +223,7 @@ export function createSignalingMessage( 'videoAV1Params', ] const copyOptions = Object.assign({}, options) - ;(Object.keys(copyOptions) as (keyof ConnectionOptions)[]).forEach((key) => { + ;(Object.keys(copyOptions) as (keyof ConnectionOptions)[]).filter((key) => { if (key === 'audio' && typeof copyOptions[key] === 'boolean') { return } @@ -254,17 +254,17 @@ export function createSignalingMessage( if (message.audio && hasAudioProperty) { message.audio = {} if ('audioCodecType' in copyOptions) { - message.audio['codec_type'] = copyOptions.audioCodecType + message.audio.codec_type = copyOptions.audioCodecType } if ('audioBitRate' in copyOptions) { - message.audio['bit_rate'] = copyOptions.audioBitRate + message.audio.bit_rate = copyOptions.audioBitRate } } const hasAudioOpusParamsProperty = Object.keys(copyOptions).some((key) => { return 0 <= audioOpusParamsPropertyKeys.indexOf(key) }) if (message.audio && hasAudioOpusParamsProperty) { - if (typeof message.audio != 'object') { + if (typeof message.audio !== 'object') { message.audio = {} } message.audio.opus_params = {} @@ -294,8 +294,8 @@ export function createSignalingMessage( } } - if (message.audio && options.audioCodecType == 'LYRA') { - if (typeof message.audio != 'object') { + if (message.audio && options.audioCodecType === 'LYRA') { + if (typeof message.audio !== 'object') { message.audio = {} } @@ -317,19 +317,19 @@ export function createSignalingMessage( if (message.video && hasVideoProperty) { message.video = {} if ('videoCodecType' in copyOptions) { - message.video['codec_type'] = copyOptions.videoCodecType + message.video.codec_type = copyOptions.videoCodecType } if ('videoBitRate' in copyOptions) { - message.video['bit_rate'] = copyOptions.videoBitRate + message.video.bit_rate = copyOptions.videoBitRate } if ('videoVP9Params' in copyOptions) { - message.video['vp9_params'] = copyOptions.videoVP9Params + message.video.vp9_params = copyOptions.videoVP9Params } if ('videoH264Params' in copyOptions) { - message.video['h264_params'] = copyOptions.videoH264Params + message.video.h264_params = copyOptions.videoH264Params } if ('videoAV1Params' in copyOptions) { - message.video['av1_params'] = copyOptions.videoAV1Params + message.video.av1_params = copyOptions.videoAV1Params } } @@ -353,7 +353,7 @@ export function createSignalingMessage( message.video = {} } if (message.video) { - message.video['codec_type'] = 'VP8' + message.video.codec_type = 'VP8' } } @@ -411,7 +411,7 @@ export function trace(clientId: string | null, title: string, value: unknown): v // 何もしない } if (keys && Array.isArray(keys)) { - keys.forEach((key) => { + keys.filter((key) => { console.group(key) dump((record as Record)[key]) console.groupEnd() @@ -425,18 +425,18 @@ export function trace(clientId: string | null, title: string, value: unknown): v } let prefix = '' if (window.performance) { - prefix = '[' + (window.performance.now() / 1000).toFixed(3) + ']' + prefix = `[${(window.performance.now() / 1000).toFixed(3)}]` } if (clientId) { - prefix = prefix + '[' + clientId + ']' + prefix = `${prefix}[${clientId}]` } if (console.info !== undefined && console.group !== undefined) { - console.group(prefix + ' ' + title) + console.group(`${prefix} ${title}`) dump(value) console.groupEnd() } else { - console.log(prefix + ' ' + title + '\n', value) + console.log(`${prefix} ${title}\n`, value) } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e5fd554..cb169c97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,24 +11,9 @@ importers: .: devDependencies: - '@typescript-eslint/eslint-plugin': - specifier: 6.11.0 - version: 6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/parser': - specifier: 6.11.0 - version: 6.11.0(eslint@8.53.0)(typescript@5.2.2) - eslint: - specifier: 8.53.0 - version: 8.53.0 - eslint-config-prettier: - specifier: 9.0.0 - version: 9.0.0(eslint@8.53.0) - eslint-plugin-prettier: - specifier: 5.0.1 - version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) - prettier: - specifier: 3.1.0 - version: 3.1.0 + '@biomejs/biome': + specifier: 1.3.3 + version: 1.3.3 serve: specifier: 14.2.1 version: 14.2.1 @@ -56,10 +41,13 @@ importers: version: 5.0.5(rollup@4.4.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.1)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2) rollup: specifier: 4.4.1 version: 4.4.1 + tslib: + specifier: 2.6.2 + version: 2.6.2 packages/go-wasm: {} @@ -83,7 +71,7 @@ importers: version: 5.0.5(rollup@4.4.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.1)(typescript@5.2.2) + version: 11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -99,10 +87,73 @@ importers: packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} + /@biomejs/biome@1.3.3: + resolution: {integrity: sha512-vTJn7RBzLWIabUuUIoEopO860YyBrbPEu4Pztfd28jRU5QD074hKZ9IQs24pFO6A2R296gaeYmN62f4u7pUruQ==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.3.3 + '@biomejs/cli-darwin-x64': 1.3.3 + '@biomejs/cli-linux-arm64': 1.3.3 + '@biomejs/cli-linux-x64': 1.3.3 + '@biomejs/cli-win32-arm64': 1.3.3 + '@biomejs/cli-win32-x64': 1.3.3 + dev: true + + /@biomejs/cli-darwin-arm64@1.3.3: + resolution: {integrity: sha512-2X87ZfbmWwe4NGukrUvnoYdI//muSgjNUCAHJ2DO+kS1sB7kDy1s6PN/IYyTJuqRcJtDuOnSpaUDE7KxR1YhtA==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true + + /@biomejs/cli-darwin-x64@1.3.3: + resolution: {integrity: sha512-t+7DWTCbSgHOBcPsGKuwS1qh1z9zbXFK8i8ktE18yW7iF/W0zI62k44fYqYeFJKlb0Q08aqUvez3L+AQJFsn+w==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@1.3.3: + resolution: {integrity: sha512-D8CvXaB8lkXXBQ6B3n0MXSSZFiE60+aNHorBLimVTtKiMod8QvAP425oQFZFul5wMXZqPLGTKFjXbAi/rvnc1A==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@1.3.3: + resolution: {integrity: sha512-bqB05fwJnRZwRlcm/BS/s4qPickqiXZkiU/nOYvHApfsPeqgSHgv5HWoBYuSUjgqBbX3XZJArsC5dCcVW7vAJw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-arm64@1.3.3: + resolution: {integrity: sha512-muFOjAv1ONMfaJDlo4Ds+Qb9lkdSLM2XaxOe3AJPejSq3Vi0aRr51ZnE02BofMnL2sVsOA9cO54wibsuTcopbw==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64@1.3.3: + resolution: {integrity: sha512-PMkMhS4smmmTMflxuZUx3REFSazEL9xsGscvZO1dKWI4ET23la+KxEM4TlSpjOyO66UerqSkuUlZecn0QhD63A==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true /@esbuild/android-arm64@0.19.5: resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} @@ -302,63 +353,6 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.53.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - - /@eslint/eslintrc@2.1.3: - resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.23.0 - ignore: 5.3.0 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js@8.53.0: - resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} - dev: true - /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -391,18 +385,6 @@ packages: fastq: 1.15.0 dev: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 - dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.4.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} @@ -453,7 +435,7 @@ packages: rollup: 4.4.1 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.4.1)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -469,6 +451,7 @@ packages: '@rollup/pluginutils': 5.0.5(rollup@4.4.1) resolve: 1.22.8 rollup: 4.4.1 + tslib: 2.6.2 typescript: 5.2.2 dev: true @@ -614,19 +597,15 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.9.0 - dev: true - - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node': 20.9.1 dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.9.0: - resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + /@types/node@20.9.1: + resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} dependencies: undici-types: 5.26.5 dev: true @@ -635,145 +614,6 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.5: - resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} - dev: true - - /@typescript-eslint/eslint-plugin@6.11.0(@typescript-eslint/parser@6.11.0)(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-uXnpZDc4VRjY4iuypDBKzW1rz9T5YBBK0snMn8MaTSNd2kMlj50LnLBABELjJiOL5YHk7ZD8hbSpI9ubzqYI0w==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.11.0 - '@typescript-eslint/type-utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.4 - eslint: 8.53.0 - graphemer: 1.4.0 - ignore: 5.3.0 - natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@6.11.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-+whEdjk+d5do5nxfxx73oanLL9ghKO3EwM9kBCkUtWMRwWuPaFv9ScuqlYfQ6pAD6ZiJhky7TZ2ZYhrMsfMxVQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.11.0 - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.4 - eslint: 8.53.0 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@6.11.0: - resolution: {integrity: sha512-0A8KoVvIURG4uhxAdjSaxy8RdRE//HztaZdG8KiHLP8WOXSk0vlF7Pvogv+vlJA5Rnjj/wDcFENvDaHb+gKd1A==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/visitor-keys': 6.11.0 - dev: true - - /@typescript-eslint/type-utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-nA4IOXwZtqBjIoYrJcYxLRO+F9ri+leVGoJcMW1uqr4r1Hq7vW5cyWrA43lFbpRvQ9XgNrnfLpIkO3i1emDBIA==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.11.0(eslint@8.53.0)(typescript@5.2.2) - debug: 4.3.4 - eslint: 8.53.0 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/types@6.11.0: - resolution: {integrity: sha512-ZbEzuD4DwEJxwPqhv3QULlRj8KYTAnNsXxmfuUXFCxZmO6CF2gM/y+ugBSAQhrqaJL3M+oe4owdWunaHM6beqA==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true - - /@typescript-eslint/typescript-estree@6.11.0(typescript@5.2.2): - resolution: {integrity: sha512-Aezzv1o2tWJwvZhedzvD5Yv7+Lpu1by/U1LZ5gLc4tCx8jUmuSCMioPFRjliN/6SJIvY6HpTtJIWubKuYYYesQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/visitor-keys': 6.11.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.2.2) - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@6.11.0(eslint@8.53.0)(typescript@5.2.2): - resolution: {integrity: sha512-p23ibf68fxoZy605dc0dQAEoUsoiNoP3MD9WQGiHLDuTSOuqoTsa4oAy+h3KDkTcxbbfOtUjb9h3Ta0gT4ug2g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.5 - '@typescript-eslint/scope-manager': 6.11.0 - '@typescript-eslint/types': 6.11.0 - '@typescript-eslint/typescript-estree': 6.11.0(typescript@5.2.2) - eslint: 8.53.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/visitor-keys@6.11.0: - resolution: {integrity: sha512-+SUN/W7WjBr05uRxPggJPSzyB8zUpaYo2hByKasWbqr3PM8AXfZt8UHdNpBS1v9SA62qnSSMF3380SwDqqprgQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dependencies: - '@typescript-eslint/types': 6.11.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /@vitest/expect@0.34.6: resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: @@ -828,14 +668,6 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx@5.3.2(acorn@8.11.2): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.11.2 - dev: true - /acorn-walk@8.3.0: resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} engines: {node: '>=0.4.0'} @@ -864,15 +696,6 @@ packages: indent-string: 4.0.0 dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - /ajv@8.11.0: resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: @@ -927,10 +750,6 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -948,11 +767,6 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true - /boxen@7.0.0: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} @@ -967,13 +781,6 @@ packages: wrap-ansi: 8.1.0 dev: true - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.51 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -999,13 +806,6 @@ packages: engines: {node: '>=6'} dev: true - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 - dev: true - /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -1016,11 +816,6 @@ packages: engines: {node: '>=8'} dev: true - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true - /camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} @@ -1201,38 +996,11 @@ packages: engines: {node: '>=4.0.0'} dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - dev: true - - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - dev: true - - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - dev: true - /del@5.1.0: resolution: {integrity: sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==} engines: {node: '>=8'} @@ -1264,13 +1032,6 @@ packages: path-type: 4.0.0 dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true - /domexception@4.0.0: resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} @@ -1325,138 +1086,10 @@ packages: '@esbuild/win32-x64': 0.19.5 dev: true - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-prettier@9.0.0(eslint@8.53.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.53.0 - dev: true - - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): - resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.53.0 - eslint-config-prettier: 9.0.0(eslint@8.53.0) - prettier: 3.1.0 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.5 - dev: true - - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint@8.53.0: - resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) - '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.3 - '@eslint/js': 8.53.0 - '@humanwhocodes/config-array': 0.11.13 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.23.0 - graphemer: 1.4.0 - ignore: 5.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) - eslint-visitor-keys: 3.4.3 - dev: true - - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -1472,29 +1105,10 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true - /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -1506,14 +1120,6 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true - /fast-url-parser@1.1.3: resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} dependencies: @@ -1530,13 +1136,6 @@ packages: resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} dev: false - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: true - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -1544,27 +1143,6 @@ packages: to-regex-range: 5.0.1 dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.2.9 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true - - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -1606,13 +1184,6 @@ packages: is-glob: 4.0.3 dev: true - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - dependencies: - is-glob: 4.0.3 - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -1635,13 +1206,6 @@ packages: once: 1.4.0 dev: true - /globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globby@10.0.2: resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} engines: {node: '>=8'} @@ -1656,26 +1220,10 @@ packages: slash: 3.0.0 dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.0 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1721,11 +1269,6 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true - /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -1738,19 +1281,6 @@ packages: engines: {node: '>= 4'} dev: true - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true - /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -1790,12 +1320,6 @@ packages: hasBin: true dev: true - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1813,14 +1337,6 @@ packages: is-extglob: 2.1.1 dev: true - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: true - /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -1860,11 +1376,6 @@ packages: engines: {node: '>=8'} dev: true - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -1876,13 +1387,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - /jsdom@22.1.0: resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} engines: {node: '>=16'} @@ -1921,69 +1425,25 @@ packages: - utf-8-validate dev: true - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - dependencies: - json-buffer: 3.0.1 - dev: true - - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 dev: true - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true @@ -2047,11 +1507,6 @@ packages: engines: {node: '>=6'} dev: true - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -2099,10 +1554,6 @@ packages: hasBin: true dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -2115,13 +1566,6 @@ packages: path-key: 3.1.1 dev: true - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -2144,42 +1588,6 @@ packages: mimic-fn: 2.1.0 dev: true - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true - - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2187,13 +1595,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true - /p-map@3.0.0: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} @@ -2201,24 +1602,12 @@ packages: aggregate-error: 3.1.0 dev: true - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - /parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 dev: true - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -2233,11 +1622,6 @@ packages: engines: {node: '>=8'} dev: true - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -2285,24 +1669,6 @@ packages: source-map-js: 1.0.2 dev: true - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true - - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - dependencies: - fast-diff: 1.3.0 - dev: true - - /prettier@3.1.0: - resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} - engines: {node: '>=14'} - hasBin: true - dev: true - /pretty-format@29.7.0: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2375,11 +1741,6 @@ packages: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -2432,13 +1793,6 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -2464,14 +1818,6 @@ packages: xmlchars: 2.2.0 dev: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /serve-handler@6.1.5: resolution: {integrity: sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==} dependencies: @@ -2589,21 +1935,11 @@ packages: engines: {node: '>=6'} dev: true - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} dev: true - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} dependencies: @@ -2626,18 +1962,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.4.2 - tslib: 2.6.2 - dev: true - - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - /tinybench@2.5.1: resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true @@ -2652,11 +1976,6 @@ packages: engines: {node: '>=14.0.0'} dev: true - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2681,36 +2000,15 @@ packages: punycode: 2.3.1 dev: true - /ts-api-utils@1.0.3(typescript@5.2.2): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' - dependencies: - typescript: 5.2.2 - dev: true - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} @@ -2749,11 +2047,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true - /update-check@1.5.4: resolution: {integrity: sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==} dependencies: @@ -2779,7 +2072,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.9.0): + /vite-node@0.34.6(@types/node@20.9.1): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2789,7 +2082,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.0(@types/node@20.9.0) + vite: 5.0.0(@types/node@20.9.1) transitivePeerDependencies: - '@types/node' - less @@ -2801,7 +2094,7 @@ packages: - terser dev: true - /vite@5.0.0(@types/node@20.9.0): + /vite@5.0.0(@types/node@20.9.1): resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -2829,7 +2122,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.9.0 + '@types/node': 20.9.1 esbuild: 0.19.5 postcss: 8.4.31 rollup: 4.4.1 @@ -2870,7 +2163,7 @@ packages: dependencies: '@types/chai': 4.3.10 '@types/chai-subset': 1.3.5 - '@types/node': 20.9.0 + '@types/node': 20.9.1 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2889,8 +2182,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.0(@types/node@20.9.0) - vite-node: 0.34.6(@types/node@20.9.0) + vite: 5.0.0(@types/node@20.9.1) + vite-node: 0.34.6(@types/node@20.9.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -3001,15 +2294,6 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} From 376ba3374e9926fae1fe6cb17b9fea86bb1b079d Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 17 Nov 2023 14:05:29 +0900 Subject: [PATCH 141/182] 2023.2.0-canary.7 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 16b1caac..badf5288 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.6", + "version": "2023.2.0-canary.7", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -41,4 +41,4 @@ "engines": { "node": ">=18.17.1" } -} \ No newline at end of file +} From f005bbb9887036bcc44387f38fb6adce389b95b6 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 17 Nov 2023 15:20:36 +0900 Subject: [PATCH 142/182] =?UTF-8?q?eslint=20=E7=B3=BB=E3=81=AE=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/renovate.json | 14 -------------- packages/e2ee/src/worker/e2ee.ts | 1 - packages/e2ee/src/worker/index.ts | 1 - packages/e2ee/src/worker/sframe.ts | 1 - packages/sdk/src/base.ts | 3 --- packages/sdk/src/publisher.ts | 1 - packages/sdk/src/subscriber.ts | 2 -- packages/sdk/src/utils.ts | 1 - 8 files changed, 24 deletions(-) diff --git a/.github/renovate.json b/.github/renovate.json index 6a47a97f..68061766 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -22,20 +22,6 @@ "platformAutomerge": true, "automerge": true }, - { - "matchUpdateTypes": [ - "minor", - "patch", - "pin", - "digest" - ], - "matchPackagePatterns": [ - "eslint" - ], - "groupName": "eslint", - "platformAutomerge": true, - "automerge": true - }, { "matchUpdateTypes": [ "minor", diff --git a/packages/e2ee/src/worker/e2ee.ts b/packages/e2ee/src/worker/e2ee.ts index 1fe4115e..ffd77507 100644 --- a/packages/e2ee/src/worker/e2ee.ts +++ b/packages/e2ee/src/worker/e2ee.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/triple-slash-reference, @typescript-eslint/no-unused-vars */ /// type UnencryptedBytes = { diff --git a/packages/e2ee/src/worker/index.ts b/packages/e2ee/src/worker/index.ts index c7bae6a8..6be9f24f 100644 --- a/packages/e2ee/src/worker/index.ts +++ b/packages/e2ee/src/worker/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/triple-slash-reference */ /// type RemoteSecretKeyMaterial = { diff --git a/packages/e2ee/src/worker/sframe.ts b/packages/e2ee/src/worker/sframe.ts index f9ef669d..150c5955 100644 --- a/packages/e2ee/src/worker/sframe.ts +++ b/packages/e2ee/src/worker/sframe.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ const connectionIdLength = 26 function byteCount(n: number): number { diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 52373ce2..3f31e811 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -1201,7 +1201,6 @@ export default class ConnectionBase { } } } - // eslint-disable-next-line @typescript-eslint/no-floating-promises ;(async () => { let signalingMessage: SignalingConnectMessage try { @@ -1488,7 +1487,6 @@ export default class ConnectionBase { // 古い API (i.e., createEncodedStreams) を使っているブラウザ // @ts-ignore - // eslint-disable-next-line const senderStreams = sender.createEncodedStreams() as TransformStream let readable = senderStreams.readable if (isLyraCodec && this.lyra !== undefined) { @@ -1547,7 +1545,6 @@ export default class ConnectionBase { // 古い API (i.e., createEncodedStreams) を使っているブラウザ // @ts-ignore - // eslint-disable-next-line const receiverStreams = receiver.createEncodedStreams() as TransformStream let writable = receiverStreams.writable if (codecType === 'LYRA' && this.lyra !== undefined) { diff --git a/packages/sdk/src/publisher.ts b/packages/sdk/src/publisher.ts index a00881f9..a81a204b 100644 --- a/packages/sdk/src/publisher.ts +++ b/packages/sdk/src/publisher.ts @@ -95,7 +95,6 @@ export default class ConnectionPublisher extends ConnectionBase { return } const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention 'stream.id': stream.id, id: event.track.id, label: event.track.label, diff --git a/packages/sdk/src/subscriber.ts b/packages/sdk/src/subscriber.ts index ad006d89..a4e9d3a6 100644 --- a/packages/sdk/src/subscriber.ts +++ b/packages/sdk/src/subscriber.ts @@ -64,7 +64,6 @@ export default class ConnectionSubscriber extends ConnectionBase { return } const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention 'stream.id': streamId, id: event.track.id, label: event.track.label, @@ -128,7 +127,6 @@ export default class ConnectionSubscriber extends ConnectionBase { return } const data = { - // eslint-disable-next-line @typescript-eslint/naming-convention 'stream.id': stream.id, id: event.track.id, label: event.track.label, diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index 910f9ac7..db023750 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -405,7 +405,6 @@ export function trace(clientId: string | null, title: string, value: unknown): v if (record && typeof record === 'object') { let keys = null try { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument keys = Object.keys(JSON.parse(JSON.stringify(record))) } catch (_) { // 何もしない From b8ddc175bb419bd4aa02f5925016cf36c7e2d0d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:16:57 +0000 Subject: [PATCH 143/182] Update dependency rollup to v4.5.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 128 ++++++++++++++++++------------------- 3 files changed, 66 insertions(+), 66 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 6b0b4b45..ffe9a205 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.4.1", + "rollup": "4.5.0", "tslib": "2.6.2" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 457dc9e5..42d9419a 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.4.1", + "rollup": "4.5.0", "rollup-plugin-delete": "2.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb169c97..6f672b05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,16 +35,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.4.1) + version: 15.2.3(rollup@4.5.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.4.1) + version: 5.0.5(rollup@4.5.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2) + version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.2.2) rollup: - specifier: 4.4.1 - version: 4.4.1 + specifier: 4.5.0 + version: 4.5.0 tslib: specifier: 2.6.2 version: 2.6.2 @@ -62,16 +62,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.4.1) + version: 25.0.7(rollup@4.5.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.4.1) + version: 15.2.3(rollup@4.5.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.4.1) + version: 5.0.5(rollup@4.5.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2) + version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.2.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -79,8 +79,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.4.1 - version: 4.4.1 + specifier: 4.5.0 + version: 4.5.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -385,7 +385,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.4.1): + /@rollup/plugin-commonjs@25.0.7(rollup@4.5.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -394,16 +394,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.4.1 + rollup: 4.5.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.4.1): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.5.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.4.1 + rollup: 4.5.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.4.1): + /@rollup/plugin-replace@5.0.5(rollup@4.5.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) magic-string: 0.30.5 - rollup: 4.4.1 + rollup: 4.5.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.4.1)(tslib@2.6.2)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.2.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,14 +448,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.4.1) + '@rollup/pluginutils': 5.0.5(rollup@4.5.0) resolve: 1.22.8 - rollup: 4.4.1 + rollup: 4.5.0 tslib: 2.6.2 typescript: 5.2.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.4.1): + /@rollup/pluginutils@5.0.5(rollup@4.5.0): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -467,99 +467,99 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.4.1 + rollup: 4.5.0 dev: true - /@rollup/rollup-android-arm-eabi@4.4.1: - resolution: {integrity: sha512-Ss4suS/sd+6xLRu+MLCkED2mUrAyqHmmvZB+zpzZ9Znn9S8wCkTQCJaQ8P8aHofnvG5L16u9MVnJjCqioPErwQ==} + /@rollup/rollup-android-arm-eabi@4.5.0: + resolution: {integrity: sha512-OINaBGY+Wc++U0rdr7BLuFClxcoWaVW3vQYqmQq6B3bqQ/2olkaoz+K8+af/Mmka/C2yN5j+L9scBkv4BtKsDA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.4.1: - resolution: {integrity: sha512-sRSkGTvGsARwWd7TzC8LKRf8FiPn7257vd/edzmvG4RIr9x68KBN0/Ek48CkuUJ5Pj/Dp9vKWv6PEupjKWjTYA==} + /@rollup/rollup-android-arm64@4.5.0: + resolution: {integrity: sha512-UdMf1pOQc4ZmUA/NTmKhgJTBimbSKnhPS2zJqucqFyBRFPnPDtwA8MzrGNTjDeQbIAWfpJVAlxejw+/lQyBK/w==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.4.1: - resolution: {integrity: sha512-nz0AiGrrXyaWpsmBXUGOBiRDU0wyfSXbFuF98pPvIO8O6auQsPG6riWsfQqmCCC5FNd8zKQ4JhgugRNAkBJ8mQ==} + /@rollup/rollup-darwin-arm64@4.5.0: + resolution: {integrity: sha512-L0/CA5p/idVKI+c9PcAPGorH6CwXn6+J0Ys7Gg1axCbTPgI8MeMlhA6fLM9fK+ssFhqogMHFC8HDvZuetOii7w==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.4.1: - resolution: {integrity: sha512-Ogqvf4/Ve/faMaiPRvzsJEqajbqs00LO+8vtrPBVvLgdw4wBg6ZDXdkDAZO+4MLnrc8mhGV6VJAzYScZdPLtJg==} + /@rollup/rollup-darwin-x64@4.5.0: + resolution: {integrity: sha512-QZCbVqU26mNlLn8zi/XDDquNmvcr4ON5FYAHQQsyhrHx8q+sQi/6xduoznYXwk/KmKIXG5dLfR0CvY+NAWpFYQ==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.4.1: - resolution: {integrity: sha512-9zc2tqlr6HfO+hx9+wktUlWTRdje7Ub15iJqKcqg5uJZ+iKqmd2CMxlgPpXi7+bU7bjfDIuvCvnGk7wewFEhCg==} + /@rollup/rollup-linux-arm-gnueabihf@4.5.0: + resolution: {integrity: sha512-VpSQ+xm93AeV33QbYslgf44wc5eJGYfYitlQzAi3OObu9iwrGXEnmu5S3ilkqE3Pr/FkgOiJKV/2p0ewf4Hrtg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.4.1: - resolution: {integrity: sha512-phLb1fN3rq2o1j1v+nKxXUTSJnAhzhU0hLrl7Qzb0fLpwkGMHDem+o6d+ZI8+/BlTXfMU4kVWGvy6g9k/B8L6Q==} + /@rollup/rollup-linux-arm64-gnu@4.5.0: + resolution: {integrity: sha512-OrEyIfpxSsMal44JpEVx9AEcGpdBQG1ZuWISAanaQTSMeStBW+oHWwOkoqR54bw3x8heP8gBOyoJiGg+fLY8qQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.4.1: - resolution: {integrity: sha512-M2sDtw4tf57VPSjbTAN/lz1doWUqO2CbQuX3L9K6GWIR5uw9j+ROKCvvUNBY8WUbMxwaoc8mH9HmmBKsLht7+w==} + /@rollup/rollup-linux-arm64-musl@4.5.0: + resolution: {integrity: sha512-1H7wBbQuE6igQdxMSTjtFfD+DGAudcYWhp106z/9zBA8OQhsJRnemO4XGavdzHpGhRtRxbgmUGdO3YQgrWf2RA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.4.1: - resolution: {integrity: sha512-mHIlRLX+hx+30cD6c4BaBOsSqdnCE4ok7/KDvjHYAHoSuveoMMxIisZFvcLhUnyZcPBXDGZTuBoalcuh43UfQQ==} + /@rollup/rollup-linux-x64-gnu@4.5.0: + resolution: {integrity: sha512-FVyFI13tXw5aE65sZdBpNjPVIi4Q5mARnL/39UIkxvSgRAIqCo5sCpCELk0JtXHGee2owZz5aNLbWNfBHzr71Q==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.4.1: - resolution: {integrity: sha512-tB+RZuDi3zxFx7vDrjTNGVLu2KNyzYv+UY8jz7e4TMEoAj7iEt8Qk6xVu6mo3pgjnsHj6jnq3uuRsHp97DLwOA==} + /@rollup/rollup-linux-x64-musl@4.5.0: + resolution: {integrity: sha512-eBPYl2sLpH/o8qbSz6vPwWlDyThnQjJfcDOGFbNjmjb44XKC1F5dQfakOsADRVrXCNzM6ZsSIPDG5dc6HHLNFg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.4.1: - resolution: {integrity: sha512-Hdn39PzOQowK/HZzYpCuZdJC91PE6EaGbTe2VCA9oq2u18evkisQfws0Smh9QQGNNRa/T7MOuGNQoLeXhhE3PQ==} + /@rollup/rollup-win32-arm64-msvc@4.5.0: + resolution: {integrity: sha512-xaOHIfLOZypoQ5U2I6rEaugS4IYtTgP030xzvrBf5js7p9WI9wik07iHmsKaej8Z83ZDxN5GyypfoyKV5O5TJA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.4.1: - resolution: {integrity: sha512-tLpKb1Elm9fM8c5w3nl4N1eLTP4bCqTYw9tqUBxX8/hsxqHO3dxc2qPbZ9PNkdK4tg4iLEYn0pOUnVByRd2CbA==} + /@rollup/rollup-win32-ia32-msvc@4.5.0: + resolution: {integrity: sha512-Al6quztQUrHwcOoU2TuFblUQ5L+/AmPBXFR6dUvyo4nRj2yQRK0WIUaGMF/uwKulvRcXkpHe3k9A8Vf93VDktA==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.4.1: - resolution: {integrity: sha512-eAhItDX9yQtZVM3yvXS/VR3qPqcnXvnLyx1pLXl4JzyNMBNO3KC986t/iAg2zcMzpAp9JSvxB5VZGnBiNoA98w==} + /@rollup/rollup-win32-x64-msvc@4.5.0: + resolution: {integrity: sha512-8kdW+brNhI/NzJ4fxDufuJUjepzINqJKLGHuxyAtpPG9bMbn8P5mtaCcbOm0EzLJ+atg+kF9dwg8jpclkVqx5w==} cpu: [x64] os: [win32] requiresBuild: true @@ -1769,23 +1769,23 @@ packages: del: 5.1.0 dev: true - /rollup@4.4.1: - resolution: {integrity: sha512-idZzrUpWSblPJX66i+GzrpjKE3vbYrlWirUHteoAbjKReZwa0cohAErOYA5efoMmNCdvG9yrJS+w9Kl6csaH4w==} + /rollup@4.5.0: + resolution: {integrity: sha512-41xsWhzxqjMDASCxH5ibw1mXk+3c4TNI2UjKbLxe6iEzrSQnqOzmmK8/3mufCPbzHNJ2e04Fc1ddI35hHy+8zg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.4.1 - '@rollup/rollup-android-arm64': 4.4.1 - '@rollup/rollup-darwin-arm64': 4.4.1 - '@rollup/rollup-darwin-x64': 4.4.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.4.1 - '@rollup/rollup-linux-arm64-gnu': 4.4.1 - '@rollup/rollup-linux-arm64-musl': 4.4.1 - '@rollup/rollup-linux-x64-gnu': 4.4.1 - '@rollup/rollup-linux-x64-musl': 4.4.1 - '@rollup/rollup-win32-arm64-msvc': 4.4.1 - '@rollup/rollup-win32-ia32-msvc': 4.4.1 - '@rollup/rollup-win32-x64-msvc': 4.4.1 + '@rollup/rollup-android-arm-eabi': 4.5.0 + '@rollup/rollup-android-arm64': 4.5.0 + '@rollup/rollup-darwin-arm64': 4.5.0 + '@rollup/rollup-darwin-x64': 4.5.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.5.0 + '@rollup/rollup-linux-arm64-gnu': 4.5.0 + '@rollup/rollup-linux-arm64-musl': 4.5.0 + '@rollup/rollup-linux-x64-gnu': 4.5.0 + '@rollup/rollup-linux-x64-musl': 4.5.0 + '@rollup/rollup-win32-arm64-msvc': 4.5.0 + '@rollup/rollup-win32-ia32-msvc': 4.5.0 + '@rollup/rollup-win32-x64-msvc': 4.5.0 fsevents: 2.3.3 dev: true @@ -2125,7 +2125,7 @@ packages: '@types/node': 20.9.1 esbuild: 0.19.5 postcss: 8.4.31 - rollup: 4.4.1 + rollup: 4.5.0 optionalDependencies: fsevents: 2.3.3 dev: true From 579d332b4a0fefd0b37fb57f96cf75dd510f0508 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 20 Nov 2023 15:42:03 +0900 Subject: [PATCH 144/182] =?UTF-8?q?=E3=82=B3=E3=82=B9=E3=83=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/sendrecv.html | 219 +++++++++++++++++++++--------------------- 1 file changed, 112 insertions(+), 107 deletions(-) diff --git a/example/sendrecv.html b/example/sendrecv.html index 53ad3834..ca1b972f 100644 --- a/example/sendrecv.html +++ b/example/sendrecv.html @@ -1,114 +1,119 @@ - - - Sendrecv test - - -
-

Sendrecv test

-
-
-

sendrecv1

- -
- -
-
-
-

sendrecv2

- -
- -
-
-
-
- - + - - + document.querySelector('#start-sendrecv2').addEventListener('click', async () => { + // sendrecv2 + const mediaStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true }); + await sendrecv2.connect(mediaStream); + document.querySelector('#sendrecv2-local-video').srcObject = mediaStream; + }); + + document.querySelector('#stop-sendrecv1').addEventListener('click', async () => { + await sendrecv1.disconnect(); + document.querySelector('#sendrecv1-local-video').srcObject = null; + document.querySelector('#sendrecv1-remote-videos').innerHTML = null; + }); + + document.querySelector('#stop-sendrecv2').addEventListener('click', async () => { + await sendrecv2.disconnect(); + document.querySelector('#sendrecv2-local-video').srcObject = null; + document.querySelector('#sendrecv2-remote-videos').innerHTML = null; + }); + + + + \ No newline at end of file From 4330ea2243a758f18438893d86244c6110148827 Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 22 Nov 2023 17:27:27 +0900 Subject: [PATCH 145/182] type: module --- package.json | 5 +- .../{vitest.config.ts => vitest.config.mts} | 0 pnpm-lock.yaml | 308 ++++++++++++------ vitest.workspace.ts => vitest.workspace.mts | 0 4 files changed, 218 insertions(+), 95 deletions(-) rename packages/sdk/{vitest.config.ts => vitest.config.mts} (100%) rename vitest.workspace.ts => vitest.workspace.mts (100%) diff --git a/package.json b/package.json index badf5288..232a0d3a 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "type": "module", "name": "sora-js-sdk", "version": "2023.2.0-canary.7", "description": "WebRTC SFU Sora JavaScript SDK", @@ -31,7 +32,7 @@ "@biomejs/biome": "1.3.3", "serve": "14.2.1", "typedoc": "0.25.3", - "typescript": "5.2.2", + "typescript": "5.3.2", "vitest": "0.34.6" }, "resolutions": { @@ -41,4 +42,4 @@ "engines": { "node": ">=18.17.1" } -} +} \ No newline at end of file diff --git a/packages/sdk/vitest.config.ts b/packages/sdk/vitest.config.mts similarity index 100% rename from packages/sdk/vitest.config.ts rename to packages/sdk/vitest.config.mts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f672b05..0e8b6231 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: version: 14.2.1 typedoc: specifier: 0.25.3 - version: 0.25.3(typescript@5.2.2) + version: 0.25.3(typescript@5.3.2) typescript: - specifier: 5.2.2 - version: 5.2.2 + specifier: 5.3.2 + version: 5.3.2 vitest: specifier: 0.34.6 version: 0.34.6 @@ -41,7 +41,7 @@ importers: version: 5.0.5(rollup@4.5.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.2.2) + version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.3.2) rollup: specifier: 4.5.0 version: 4.5.0 @@ -71,7 +71,7 @@ importers: version: 5.0.5(rollup@4.5.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.2.2) + version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.3.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -155,8 +155,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.5: - resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} + /@esbuild/android-arm64@0.19.7: + resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -164,8 +164,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.5: - resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} + /@esbuild/android-arm@0.19.7: + resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -173,8 +173,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.5: - resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} + /@esbuild/android-x64@0.19.7: + resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -182,8 +182,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.5: - resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} + /@esbuild/darwin-arm64@0.19.7: + resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -191,8 +191,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.5: - resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} + /@esbuild/darwin-x64@0.19.7: + resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -200,8 +200,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.5: - resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} + /@esbuild/freebsd-arm64@0.19.7: + resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -209,8 +209,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.5: - resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} + /@esbuild/freebsd-x64@0.19.7: + resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -218,8 +218,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.5: - resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} + /@esbuild/linux-arm64@0.19.7: + resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -227,8 +227,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.5: - resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} + /@esbuild/linux-arm@0.19.7: + resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -236,8 +236,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.5: - resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} + /@esbuild/linux-ia32@0.19.7: + resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -245,8 +245,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.5: - resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} + /@esbuild/linux-loong64@0.19.7: + resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -254,8 +254,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.5: - resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} + /@esbuild/linux-mips64el@0.19.7: + resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -263,8 +263,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.5: - resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} + /@esbuild/linux-ppc64@0.19.7: + resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -272,8 +272,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.5: - resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} + /@esbuild/linux-riscv64@0.19.7: + resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -281,8 +281,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.5: - resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} + /@esbuild/linux-s390x@0.19.7: + resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -290,8 +290,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.5: - resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} + /@esbuild/linux-x64@0.19.7: + resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -299,8 +299,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.5: - resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} + /@esbuild/netbsd-x64@0.19.7: + resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -308,8 +308,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.5: - resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} + /@esbuild/openbsd-x64@0.19.7: + resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -317,8 +317,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.5: - resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} + /@esbuild/sunos-x64@0.19.7: + resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -326,8 +326,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.5: - resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} + /@esbuild/win32-arm64@0.19.7: + resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -335,8 +335,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.5: - resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} + /@esbuild/win32-ia32@0.19.7: + resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -344,8 +344,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.5: - resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} + /@esbuild/win32-x64@0.19.7: + resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -435,7 +435,7 @@ packages: rollup: 4.5.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.2.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.3.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -452,7 +452,7 @@ packages: resolve: 1.22.8 rollup: 4.5.0 tslib: 2.6.2 - typescript: 5.2.2 + typescript: 5.3.2 dev: true /@rollup/pluginutils@5.0.5(rollup@4.5.0): @@ -478,6 +478,14 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm-eabi@4.5.1: + resolution: {integrity: sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-android-arm64@4.5.0: resolution: {integrity: sha512-UdMf1pOQc4ZmUA/NTmKhgJTBimbSKnhPS2zJqucqFyBRFPnPDtwA8MzrGNTjDeQbIAWfpJVAlxejw+/lQyBK/w==} cpu: [arm64] @@ -486,6 +494,14 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm64@4.5.1: + resolution: {integrity: sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-darwin-arm64@4.5.0: resolution: {integrity: sha512-L0/CA5p/idVKI+c9PcAPGorH6CwXn6+J0Ys7Gg1axCbTPgI8MeMlhA6fLM9fK+ssFhqogMHFC8HDvZuetOii7w==} cpu: [arm64] @@ -494,6 +510,14 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-arm64@4.5.1: + resolution: {integrity: sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-darwin-x64@4.5.0: resolution: {integrity: sha512-QZCbVqU26mNlLn8zi/XDDquNmvcr4ON5FYAHQQsyhrHx8q+sQi/6xduoznYXwk/KmKIXG5dLfR0CvY+NAWpFYQ==} cpu: [x64] @@ -502,6 +526,14 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-x64@4.5.1: + resolution: {integrity: sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.5.0: resolution: {integrity: sha512-VpSQ+xm93AeV33QbYslgf44wc5eJGYfYitlQzAi3OObu9iwrGXEnmu5S3ilkqE3Pr/FkgOiJKV/2p0ewf4Hrtg==} cpu: [arm] @@ -510,6 +542,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.5.1: + resolution: {integrity: sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm64-gnu@4.5.0: resolution: {integrity: sha512-OrEyIfpxSsMal44JpEVx9AEcGpdBQG1ZuWISAanaQTSMeStBW+oHWwOkoqR54bw3x8heP8gBOyoJiGg+fLY8qQ==} cpu: [arm64] @@ -518,6 +558,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-gnu@4.5.1: + resolution: {integrity: sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm64-musl@4.5.0: resolution: {integrity: sha512-1H7wBbQuE6igQdxMSTjtFfD+DGAudcYWhp106z/9zBA8OQhsJRnemO4XGavdzHpGhRtRxbgmUGdO3YQgrWf2RA==} cpu: [arm64] @@ -526,6 +574,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-musl@4.5.1: + resolution: {integrity: sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-x64-gnu@4.5.0: resolution: {integrity: sha512-FVyFI13tXw5aE65sZdBpNjPVIi4Q5mARnL/39UIkxvSgRAIqCo5sCpCELk0JtXHGee2owZz5aNLbWNfBHzr71Q==} cpu: [x64] @@ -534,6 +590,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-gnu@4.5.1: + resolution: {integrity: sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-x64-musl@4.5.0: resolution: {integrity: sha512-eBPYl2sLpH/o8qbSz6vPwWlDyThnQjJfcDOGFbNjmjb44XKC1F5dQfakOsADRVrXCNzM6ZsSIPDG5dc6HHLNFg==} cpu: [x64] @@ -542,6 +606,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-musl@4.5.1: + resolution: {integrity: sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-arm64-msvc@4.5.0: resolution: {integrity: sha512-xaOHIfLOZypoQ5U2I6rEaugS4IYtTgP030xzvrBf5js7p9WI9wik07iHmsKaej8Z83ZDxN5GyypfoyKV5O5TJA==} cpu: [arm64] @@ -550,6 +622,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-arm64-msvc@4.5.1: + resolution: {integrity: sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-ia32-msvc@4.5.0: resolution: {integrity: sha512-Al6quztQUrHwcOoU2TuFblUQ5L+/AmPBXFR6dUvyo4nRj2yQRK0WIUaGMF/uwKulvRcXkpHe3k9A8Vf93VDktA==} cpu: [ia32] @@ -558,6 +638,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-ia32-msvc@4.5.1: + resolution: {integrity: sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-x64-msvc@4.5.0: resolution: {integrity: sha512-8kdW+brNhI/NzJ4fxDufuJUjepzINqJKLGHuxyAtpPG9bMbn8P5mtaCcbOm0EzLJ+atg+kF9dwg8jpclkVqx5w==} cpu: [x64] @@ -566,6 +654,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-x64-msvc@4.5.1: + resolution: {integrity: sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@shiguredo/lyra-wasm@2023.1.0: resolution: {integrity: sha512-RVOyPYrZMCHYb5QM6S8BTAOnGHiqYpoBOG8+9uct4gg1ut9IK8LsVgwv5Q+/t+hWZeRhuyYNXt1PhBUm1cJZzg==} dev: true @@ -582,11 +678,11 @@ packages: /@types/chai-subset@1.3.5: resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: - '@types/chai': 4.3.10 + '@types/chai': 4.3.11 dev: true - /@types/chai@4.3.10: - resolution: {integrity: sha512-of+ICnbqjmFCiixUnqRulbylyXQrPqIGf/B3Jax1wIF3DvSheysQxAWvqHhZiW3IQrycvokcLcFQlveGp+vyNg==} + /@types/chai@4.3.11: + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} dev: true /@types/estree@1.0.5: @@ -610,6 +706,12 @@ packages: undici-types: 5.26.5 dev: true + /@types/node@20.9.4: + resolution: {integrity: sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==} + dependencies: + undici-types: 5.26.5 + dev: true + /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true @@ -1056,34 +1158,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.19.5: - resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} + /esbuild@0.19.7: + resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.5 - '@esbuild/android-arm64': 0.19.5 - '@esbuild/android-x64': 0.19.5 - '@esbuild/darwin-arm64': 0.19.5 - '@esbuild/darwin-x64': 0.19.5 - '@esbuild/freebsd-arm64': 0.19.5 - '@esbuild/freebsd-x64': 0.19.5 - '@esbuild/linux-arm': 0.19.5 - '@esbuild/linux-arm64': 0.19.5 - '@esbuild/linux-ia32': 0.19.5 - '@esbuild/linux-loong64': 0.19.5 - '@esbuild/linux-mips64el': 0.19.5 - '@esbuild/linux-ppc64': 0.19.5 - '@esbuild/linux-riscv64': 0.19.5 - '@esbuild/linux-s390x': 0.19.5 - '@esbuild/linux-x64': 0.19.5 - '@esbuild/netbsd-x64': 0.19.5 - '@esbuild/openbsd-x64': 0.19.5 - '@esbuild/sunos-x64': 0.19.5 - '@esbuild/win32-arm64': 0.19.5 - '@esbuild/win32-ia32': 0.19.5 - '@esbuild/win32-x64': 0.19.5 + '@esbuild/android-arm': 0.19.7 + '@esbuild/android-arm64': 0.19.7 + '@esbuild/android-x64': 0.19.7 + '@esbuild/darwin-arm64': 0.19.7 + '@esbuild/darwin-x64': 0.19.7 + '@esbuild/freebsd-arm64': 0.19.7 + '@esbuild/freebsd-x64': 0.19.7 + '@esbuild/linux-arm': 0.19.7 + '@esbuild/linux-arm64': 0.19.7 + '@esbuild/linux-ia32': 0.19.7 + '@esbuild/linux-loong64': 0.19.7 + '@esbuild/linux-mips64el': 0.19.7 + '@esbuild/linux-ppc64': 0.19.7 + '@esbuild/linux-riscv64': 0.19.7 + '@esbuild/linux-s390x': 0.19.7 + '@esbuild/linux-x64': 0.19.7 + '@esbuild/netbsd-x64': 0.19.7 + '@esbuild/openbsd-x64': 0.19.7 + '@esbuild/sunos-x64': 0.19.7 + '@esbuild/win32-arm64': 0.19.7 + '@esbuild/win32-ia32': 0.19.7 + '@esbuild/win32-x64': 0.19.7 dev: true /estree-walker@2.0.2: @@ -1789,6 +1891,26 @@ packages: fsevents: 2.3.3 dev: true + /rollup@4.5.1: + resolution: {integrity: sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.5.1 + '@rollup/rollup-android-arm64': 4.5.1 + '@rollup/rollup-darwin-arm64': 4.5.1 + '@rollup/rollup-darwin-x64': 4.5.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.5.1 + '@rollup/rollup-linux-arm64-gnu': 4.5.1 + '@rollup/rollup-linux-arm64-musl': 4.5.1 + '@rollup/rollup-linux-x64-gnu': 4.5.1 + '@rollup/rollup-linux-x64-musl': 4.5.1 + '@rollup/rollup-win32-arm64-msvc': 4.5.1 + '@rollup/rollup-win32-ia32-msvc': 4.5.1 + '@rollup/rollup-win32-x64-msvc': 4.5.1 + fsevents: 2.3.3 + dev: true + /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true @@ -2014,7 +2136,7 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.25.3(typescript@5.2.2): + /typedoc@0.25.3(typescript@5.3.2): resolution: {integrity: sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==} engines: {node: '>= 16'} hasBin: true @@ -2025,11 +2147,11 @@ packages: marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.5 - typescript: 5.2.2 + typescript: 5.3.2 dev: true - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + /typescript@5.3.2: + resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -2072,7 +2194,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.9.1): + /vite-node@0.34.6(@types/node@20.9.4): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2082,7 +2204,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.0(@types/node@20.9.1) + vite: 5.0.2(@types/node@20.9.4) transitivePeerDependencies: - '@types/node' - less @@ -2094,8 +2216,8 @@ packages: - terser dev: true - /vite@5.0.0(@types/node@20.9.1): - resolution: {integrity: sha512-ESJVM59mdyGpsiNAeHQOR/0fqNoOyWPYesFto8FFZugfmhdHx8Fzd8sF3Q/xkVhZsyOxHfdM7ieiVAorI9RjFw==} + /vite@5.0.2(@types/node@20.9.4): + resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2122,10 +2244,10 @@ packages: terser: optional: true dependencies: - '@types/node': 20.9.1 - esbuild: 0.19.5 + '@types/node': 20.9.4 + esbuild: 0.19.7 postcss: 8.4.31 - rollup: 4.5.0 + rollup: 4.5.1 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2161,9 +2283,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.10 + '@types/chai': 4.3.11 '@types/chai-subset': 1.3.5 - '@types/node': 20.9.1 + '@types/node': 20.9.4 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2182,8 +2304,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.0(@types/node@20.9.1) - vite-node: 0.34.6(@types/node@20.9.1) + vite: 5.0.2(@types/node@20.9.4) + vite-node: 0.34.6(@types/node@20.9.4) why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/vitest.workspace.ts b/vitest.workspace.mts similarity index 100% rename from vitest.workspace.ts rename to vitest.workspace.mts From b153cb3522330454ab19dd5382cf437bf9983b64 Mon Sep 17 00:00:00 2001 From: voluntas Date: Wed, 22 Nov 2023 17:27:59 +0900 Subject: [PATCH 146/182] node >= 18.17 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 232a0d3a..339d394c 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,6 @@ }, "packageManager": "pnpm@8.10.5", "engines": { - "node": ">=18.17.1" + "node": ">=18.17" } } \ No newline at end of file From dde8620d146db10c295cc61c3300e533be81c4b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Nov 2023 15:15:18 +0000 Subject: [PATCH 147/182] chore(deps): update dependency rollup to v4.6.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 244 ++++++++++--------------------------- 3 files changed, 66 insertions(+), 182 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index ffe9a205..9684c775 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.5.0", + "rollup": "4.6.0", "tslib": "2.6.2" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 42d9419a..d168d0f2 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "22.1.0", - "rollup": "4.5.0", + "rollup": "4.6.0", "rollup-plugin-delete": "2.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e8b6231..d9e3122d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,16 +35,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.5.0) + version: 15.2.3(rollup@4.6.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.5.0) + version: 5.0.5(rollup@4.6.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2) rollup: - specifier: 4.5.0 - version: 4.5.0 + specifier: 4.6.0 + version: 4.6.0 tslib: specifier: 2.6.2 version: 2.6.2 @@ -62,16 +62,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.5.0) + version: 25.0.7(rollup@4.6.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.5.0) + version: 15.2.3(rollup@4.6.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.5.0) + version: 5.0.5(rollup@4.6.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -79,8 +79,8 @@ importers: specifier: 22.1.0 version: 22.1.0 rollup: - specifier: 4.5.0 - version: 4.5.0 + specifier: 4.6.0 + version: 4.6.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -385,7 +385,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.5.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.6.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -394,16 +394,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + '@rollup/pluginutils': 5.0.5(rollup@4.6.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.5.0 + rollup: 4.6.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.5.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + '@rollup/pluginutils': 5.0.5(rollup@4.6.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.5.0 + rollup: 4.6.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.5.0): + /@rollup/plugin-replace@5.0.5(rollup@4.6.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + '@rollup/pluginutils': 5.0.5(rollup@4.6.0) magic-string: 0.30.5 - rollup: 4.5.0 + rollup: 4.6.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.5.0)(tslib@2.6.2)(typescript@5.3.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,14 +448,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.5.0) + '@rollup/pluginutils': 5.0.5(rollup@4.6.0) resolve: 1.22.8 - rollup: 4.5.0 + rollup: 4.6.0 tslib: 2.6.2 typescript: 5.3.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.5.0): + /@rollup/pluginutils@5.0.5(rollup@4.6.0): resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: @@ -467,195 +467,99 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.5.0 + rollup: 4.6.0 dev: true - /@rollup/rollup-android-arm-eabi@4.5.0: - resolution: {integrity: sha512-OINaBGY+Wc++U0rdr7BLuFClxcoWaVW3vQYqmQq6B3bqQ/2olkaoz+K8+af/Mmka/C2yN5j+L9scBkv4BtKsDA==} + /@rollup/rollup-android-arm-eabi@4.6.0: + resolution: {integrity: sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm-eabi@4.5.1: - resolution: {integrity: sha512-YaN43wTyEBaMqLDYeze+gQ4ZrW5RbTEGtT5o1GVDkhpdNcsLTnLRcLccvwy3E9wiDKWg9RIhuoy3JQKDRBfaZA==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.5.0: - resolution: {integrity: sha512-UdMf1pOQc4ZmUA/NTmKhgJTBimbSKnhPS2zJqucqFyBRFPnPDtwA8MzrGNTjDeQbIAWfpJVAlxejw+/lQyBK/w==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.5.1: - resolution: {integrity: sha512-n1bX+LCGlQVuPlCofO0zOKe1b2XkFozAVRoczT+yxWZPGnkEAKTTYVOGZz8N4sKuBnKMxDbfhUsB1uwYdup/sw==} + /@rollup/rollup-android-arm64@4.6.0: + resolution: {integrity: sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.5.0: - resolution: {integrity: sha512-L0/CA5p/idVKI+c9PcAPGorH6CwXn6+J0Ys7Gg1axCbTPgI8MeMlhA6fLM9fK+ssFhqogMHFC8HDvZuetOii7w==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.5.1: - resolution: {integrity: sha512-QqJBumdvfBqBBmyGHlKxje+iowZwrHna7pokj/Go3dV1PJekSKfmjKrjKQ/e6ESTGhkfPNLq3VXdYLAc+UtAQw==} + /@rollup/rollup-darwin-arm64@4.6.0: + resolution: {integrity: sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.5.0: - resolution: {integrity: sha512-QZCbVqU26mNlLn8zi/XDDquNmvcr4ON5FYAHQQsyhrHx8q+sQi/6xduoznYXwk/KmKIXG5dLfR0CvY+NAWpFYQ==} + /@rollup/rollup-darwin-x64@4.6.0: + resolution: {integrity: sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.5.1: - resolution: {integrity: sha512-RrkDNkR/P5AEQSPkxQPmd2ri8WTjSl0RYmuFOiEABkEY/FSg0a4riihWQGKDJ4LnV9gigWZlTMx2DtFGzUrYQw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.5.0: - resolution: {integrity: sha512-VpSQ+xm93AeV33QbYslgf44wc5eJGYfYitlQzAi3OObu9iwrGXEnmu5S3ilkqE3Pr/FkgOiJKV/2p0ewf4Hrtg==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.5.1: - resolution: {integrity: sha512-ZFPxvUZmE+fkB/8D9y/SWl/XaDzNSaxd1TJUSE27XAKlRpQ2VNce/86bGd9mEUgL3qrvjJ9XTGwoX0BrJkYK/A==} + /@rollup/rollup-linux-arm-gnueabihf@4.6.0: + resolution: {integrity: sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.5.0: - resolution: {integrity: sha512-OrEyIfpxSsMal44JpEVx9AEcGpdBQG1ZuWISAanaQTSMeStBW+oHWwOkoqR54bw3x8heP8gBOyoJiGg+fLY8qQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.5.1: - resolution: {integrity: sha512-FEuAjzVIld5WVhu+M2OewLmjmbXWd3q7Zcx+Rwy4QObQCqfblriDMMS7p7+pwgjZoo9BLkP3wa9uglQXzsB9ww==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.5.0: - resolution: {integrity: sha512-1H7wBbQuE6igQdxMSTjtFfD+DGAudcYWhp106z/9zBA8OQhsJRnemO4XGavdzHpGhRtRxbgmUGdO3YQgrWf2RA==} + /@rollup/rollup-linux-arm64-gnu@4.6.0: + resolution: {integrity: sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.5.1: - resolution: {integrity: sha512-f5Gs8WQixqGRtI0Iq/cMqvFYmgFzMinuJO24KRfnv7Ohi/HQclwrBCYkzQu1XfLEEt3DZyvveq9HWo4bLJf1Lw==} + /@rollup/rollup-linux-arm64-musl@4.6.0: + resolution: {integrity: sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.5.0: - resolution: {integrity: sha512-FVyFI13tXw5aE65sZdBpNjPVIi4Q5mARnL/39UIkxvSgRAIqCo5sCpCELk0JtXHGee2owZz5aNLbWNfBHzr71Q==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-gnu@4.5.1: - resolution: {integrity: sha512-CWPkPGrFfN2vj3mw+S7A/4ZaU3rTV7AkXUr08W9lNP+UzOvKLVf34tWCqrKrfwQ0NTk5GFqUr2XGpeR2p6R4gw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-musl@4.5.0: - resolution: {integrity: sha512-eBPYl2sLpH/o8qbSz6vPwWlDyThnQjJfcDOGFbNjmjb44XKC1F5dQfakOsADRVrXCNzM6ZsSIPDG5dc6HHLNFg==} + /@rollup/rollup-linux-x64-gnu@4.6.0: + resolution: {integrity: sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.5.1: - resolution: {integrity: sha512-ZRETMFA0uVukUC9u31Ed1nx++29073goCxZtmZARwk5aF/ltuENaeTtRVsSQzFlzdd4J6L3qUm+EW8cbGt0CKQ==} + /@rollup/rollup-linux-x64-musl@4.6.0: + resolution: {integrity: sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.5.0: - resolution: {integrity: sha512-xaOHIfLOZypoQ5U2I6rEaugS4IYtTgP030xzvrBf5js7p9WI9wik07iHmsKaej8Z83ZDxN5GyypfoyKV5O5TJA==} + /@rollup/rollup-win32-arm64-msvc@4.6.0: + resolution: {integrity: sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.5.1: - resolution: {integrity: sha512-ihqfNJNb2XtoZMSCPeoo0cYMgU04ksyFIoOw5S0JUVbOhafLot+KD82vpKXOurE2+9o/awrqIxku9MRR9hozHQ==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.5.0: - resolution: {integrity: sha512-Al6quztQUrHwcOoU2TuFblUQ5L+/AmPBXFR6dUvyo4nRj2yQRK0WIUaGMF/uwKulvRcXkpHe3k9A8Vf93VDktA==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.5.1: - resolution: {integrity: sha512-zK9MRpC8946lQ9ypFn4gLpdwr5a01aQ/odiIJeL9EbgZDMgbZjjT/XzTqJvDfTmnE1kHdbG20sAeNlpc91/wbg==} + /@rollup/rollup-win32-ia32-msvc@4.6.0: + resolution: {integrity: sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.5.0: - resolution: {integrity: sha512-8kdW+brNhI/NzJ4fxDufuJUjepzINqJKLGHuxyAtpPG9bMbn8P5mtaCcbOm0EzLJ+atg+kF9dwg8jpclkVqx5w==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.5.1: - resolution: {integrity: sha512-5I3Nz4Sb9TYOtkRwlH0ow+BhMH2vnh38tZ4J4mggE48M/YyJyp/0sPSxhw1UeS1+oBgQ8q7maFtSeKpeRJu41Q==} + /@rollup/rollup-win32-x64-msvc@4.6.0: + resolution: {integrity: sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==} cpu: [x64] os: [win32] requiresBuild: true @@ -1871,43 +1775,23 @@ packages: del: 5.1.0 dev: true - /rollup@4.5.0: - resolution: {integrity: sha512-41xsWhzxqjMDASCxH5ibw1mXk+3c4TNI2UjKbLxe6iEzrSQnqOzmmK8/3mufCPbzHNJ2e04Fc1ddI35hHy+8zg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.5.0 - '@rollup/rollup-android-arm64': 4.5.0 - '@rollup/rollup-darwin-arm64': 4.5.0 - '@rollup/rollup-darwin-x64': 4.5.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.5.0 - '@rollup/rollup-linux-arm64-gnu': 4.5.0 - '@rollup/rollup-linux-arm64-musl': 4.5.0 - '@rollup/rollup-linux-x64-gnu': 4.5.0 - '@rollup/rollup-linux-x64-musl': 4.5.0 - '@rollup/rollup-win32-arm64-msvc': 4.5.0 - '@rollup/rollup-win32-ia32-msvc': 4.5.0 - '@rollup/rollup-win32-x64-msvc': 4.5.0 - fsevents: 2.3.3 - dev: true - - /rollup@4.5.1: - resolution: {integrity: sha512-0EQribZoPKpb5z1NW/QYm3XSR//Xr8BeEXU49Lc/mQmpmVVG5jPUVrpc2iptup/0WMrY9mzas0fxH+TjYvG2CA==} + /rollup@4.6.0: + resolution: {integrity: sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.5.1 - '@rollup/rollup-android-arm64': 4.5.1 - '@rollup/rollup-darwin-arm64': 4.5.1 - '@rollup/rollup-darwin-x64': 4.5.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.5.1 - '@rollup/rollup-linux-arm64-gnu': 4.5.1 - '@rollup/rollup-linux-arm64-musl': 4.5.1 - '@rollup/rollup-linux-x64-gnu': 4.5.1 - '@rollup/rollup-linux-x64-musl': 4.5.1 - '@rollup/rollup-win32-arm64-msvc': 4.5.1 - '@rollup/rollup-win32-ia32-msvc': 4.5.1 - '@rollup/rollup-win32-x64-msvc': 4.5.1 + '@rollup/rollup-android-arm-eabi': 4.6.0 + '@rollup/rollup-android-arm64': 4.6.0 + '@rollup/rollup-darwin-arm64': 4.6.0 + '@rollup/rollup-darwin-x64': 4.6.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.6.0 + '@rollup/rollup-linux-arm64-gnu': 4.6.0 + '@rollup/rollup-linux-arm64-musl': 4.6.0 + '@rollup/rollup-linux-x64-gnu': 4.6.0 + '@rollup/rollup-linux-x64-musl': 4.6.0 + '@rollup/rollup-win32-arm64-msvc': 4.6.0 + '@rollup/rollup-win32-ia32-msvc': 4.6.0 + '@rollup/rollup-win32-x64-msvc': 4.6.0 fsevents: 2.3.3 dev: true @@ -2247,7 +2131,7 @@ packages: '@types/node': 20.9.4 esbuild: 0.19.7 postcss: 8.4.31 - rollup: 4.5.1 + rollup: 4.6.0 optionalDependencies: fsevents: 2.3.3 dev: true From d4a7f63990f4c64c0444c5297c7ed4fde23a528e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:19:05 +0000 Subject: [PATCH 148/182] chore(deps): update pnpm to v8.11.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 339d394c..5136471b 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.10.5", + "packageManager": "pnpm@8.11.0", "engines": { "node": ">=18.17" } From 23e390336eef3e9d233ada5f929e2823f0532b35 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 27 Nov 2023 11:38:13 +0900 Subject: [PATCH 149/182] pnpm up -L --- package.json | 2 +- pnpm-lock.yaml | 170 ++++++++++++++++++++++++------------------------- 2 files changed, 86 insertions(+), 86 deletions(-) diff --git a/package.json b/package.json index 5136471b..1340fb11 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "devDependencies": { "@biomejs/biome": "1.3.3", "serve": "14.2.1", - "typedoc": "0.25.3", + "typedoc": "0.25.4", "typescript": "5.3.2", "vitest": "0.34.6" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9e3122d..63824e42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: 14.2.1 version: 14.2.1 typedoc: - specifier: 0.25.3 - version: 0.25.3(typescript@5.3.2) + specifier: 0.25.4 + version: 0.25.4(typescript@5.3.2) typescript: specifier: 5.3.2 version: 5.3.2 @@ -155,8 +155,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.7: - resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==} + /@esbuild/android-arm64@0.19.8: + resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -164,8 +164,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.7: - resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==} + /@esbuild/android-arm@0.19.8: + resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -173,8 +173,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.7: - resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==} + /@esbuild/android-x64@0.19.8: + resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -182,8 +182,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.7: - resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==} + /@esbuild/darwin-arm64@0.19.8: + resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -191,8 +191,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.7: - resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==} + /@esbuild/darwin-x64@0.19.8: + resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -200,8 +200,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.7: - resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==} + /@esbuild/freebsd-arm64@0.19.8: + resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -209,8 +209,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.7: - resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==} + /@esbuild/freebsd-x64@0.19.8: + resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -218,8 +218,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.7: - resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==} + /@esbuild/linux-arm64@0.19.8: + resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -227,8 +227,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.7: - resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==} + /@esbuild/linux-arm@0.19.8: + resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -236,8 +236,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.7: - resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==} + /@esbuild/linux-ia32@0.19.8: + resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -245,8 +245,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.7: - resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==} + /@esbuild/linux-loong64@0.19.8: + resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -254,8 +254,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.7: - resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==} + /@esbuild/linux-mips64el@0.19.8: + resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -263,8 +263,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.7: - resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==} + /@esbuild/linux-ppc64@0.19.8: + resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -272,8 +272,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.7: - resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==} + /@esbuild/linux-riscv64@0.19.8: + resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -281,8 +281,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.7: - resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==} + /@esbuild/linux-s390x@0.19.8: + resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -290,8 +290,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.7: - resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==} + /@esbuild/linux-x64@0.19.8: + resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -299,8 +299,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.7: - resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==} + /@esbuild/netbsd-x64@0.19.8: + resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -308,8 +308,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.7: - resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==} + /@esbuild/openbsd-x64@0.19.8: + resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -317,8 +317,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.7: - resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==} + /@esbuild/sunos-x64@0.19.8: + resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -326,8 +326,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.7: - resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==} + /@esbuild/win32-arm64@0.19.8: + resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -335,8 +335,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.7: - resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==} + /@esbuild/win32-ia32@0.19.8: + resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -344,8 +344,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.7: - resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==} + /@esbuild/win32-x64@0.19.8: + resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -604,14 +604,14 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.9.1: - resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} + /@types/node@20.10.0: + resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} dependencies: undici-types: 5.26.5 dev: true - /@types/node@20.9.4: - resolution: {integrity: sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==} + /@types/node@20.9.1: + resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} dependencies: undici-types: 5.26.5 dev: true @@ -1062,34 +1062,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.19.7: - resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==} + /esbuild@0.19.8: + resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.7 - '@esbuild/android-arm64': 0.19.7 - '@esbuild/android-x64': 0.19.7 - '@esbuild/darwin-arm64': 0.19.7 - '@esbuild/darwin-x64': 0.19.7 - '@esbuild/freebsd-arm64': 0.19.7 - '@esbuild/freebsd-x64': 0.19.7 - '@esbuild/linux-arm': 0.19.7 - '@esbuild/linux-arm64': 0.19.7 - '@esbuild/linux-ia32': 0.19.7 - '@esbuild/linux-loong64': 0.19.7 - '@esbuild/linux-mips64el': 0.19.7 - '@esbuild/linux-ppc64': 0.19.7 - '@esbuild/linux-riscv64': 0.19.7 - '@esbuild/linux-s390x': 0.19.7 - '@esbuild/linux-x64': 0.19.7 - '@esbuild/netbsd-x64': 0.19.7 - '@esbuild/openbsd-x64': 0.19.7 - '@esbuild/sunos-x64': 0.19.7 - '@esbuild/win32-arm64': 0.19.7 - '@esbuild/win32-ia32': 0.19.7 - '@esbuild/win32-x64': 0.19.7 + '@esbuild/android-arm': 0.19.8 + '@esbuild/android-arm64': 0.19.8 + '@esbuild/android-x64': 0.19.8 + '@esbuild/darwin-arm64': 0.19.8 + '@esbuild/darwin-x64': 0.19.8 + '@esbuild/freebsd-arm64': 0.19.8 + '@esbuild/freebsd-x64': 0.19.8 + '@esbuild/linux-arm': 0.19.8 + '@esbuild/linux-arm64': 0.19.8 + '@esbuild/linux-ia32': 0.19.8 + '@esbuild/linux-loong64': 0.19.8 + '@esbuild/linux-mips64el': 0.19.8 + '@esbuild/linux-ppc64': 0.19.8 + '@esbuild/linux-riscv64': 0.19.8 + '@esbuild/linux-s390x': 0.19.8 + '@esbuild/linux-x64': 0.19.8 + '@esbuild/netbsd-x64': 0.19.8 + '@esbuild/openbsd-x64': 0.19.8 + '@esbuild/sunos-x64': 0.19.8 + '@esbuild/win32-arm64': 0.19.8 + '@esbuild/win32-ia32': 0.19.8 + '@esbuild/win32-x64': 0.19.8 dev: true /estree-walker@2.0.2: @@ -2020,12 +2020,12 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.25.3(typescript@5.3.2): - resolution: {integrity: sha512-Ow8Bo7uY1Lwy7GTmphRIMEo6IOZ+yYUyrc8n5KXIZg1svpqhZSWgni2ZrDhe+wLosFS8yswowUzljTAV/3jmWw==} + /typedoc@0.25.4(typescript@5.3.2): + resolution: {integrity: sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==} engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x dependencies: lunr: 2.3.9 marked: 4.3.0 @@ -2078,7 +2078,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.9.4): + /vite-node@0.34.6(@types/node@20.10.0): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2088,7 +2088,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.2(@types/node@20.9.4) + vite: 5.0.2(@types/node@20.10.0) transitivePeerDependencies: - '@types/node' - less @@ -2100,7 +2100,7 @@ packages: - terser dev: true - /vite@5.0.2(@types/node@20.9.4): + /vite@5.0.2(@types/node@20.10.0): resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -2128,8 +2128,8 @@ packages: terser: optional: true dependencies: - '@types/node': 20.9.4 - esbuild: 0.19.7 + '@types/node': 20.10.0 + esbuild: 0.19.8 postcss: 8.4.31 rollup: 4.6.0 optionalDependencies: @@ -2169,7 +2169,7 @@ packages: dependencies: '@types/chai': 4.3.11 '@types/chai-subset': 1.3.5 - '@types/node': 20.9.4 + '@types/node': 20.10.0 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2188,8 +2188,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.2(@types/node@20.9.4) - vite-node: 0.34.6(@types/node@20.9.4) + vite: 5.0.2(@types/node@20.10.0) + vite-node: 0.34.6(@types/node@20.10.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 1c17aa7c31fe337185f9a915dd9409b121894c72 Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 28 Nov 2023 10:28:47 +0900 Subject: [PATCH 150/182] =?UTF-8?q?biome=201.4.0=20=E3=81=AB=E4=B8=8A?= =?UTF-8?q?=E3=81=92=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biome.json | 4 +-- package.json | 2 +- packages/e2ee/src/worker/index.ts | 32 +++++++++++++--------- pnpm-lock.yaml | 44 +++++++++++++++---------------- 4 files changed, 44 insertions(+), 38 deletions(-) diff --git a/biome.json b/biome.json index 5442c712..d882ece5 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.3.3/schema.json", + "$schema": "https://biomejs.dev/schemas/1.4.0/schema.json", "organizeImports": { "enabled": true }, @@ -42,4 +42,4 @@ "quoteProperties": "asNeeded" } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index 1340fb11..60dd2640 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dist" ], "devDependencies": { - "@biomejs/biome": "1.3.3", + "@biomejs/biome": "1.4.0", "serve": "14.2.1", "typedoc": "0.25.4", "typescript": "5.3.2", diff --git a/packages/e2ee/src/worker/index.ts b/packages/e2ee/src/worker/index.ts index 6be9f24f..537b0ba9 100644 --- a/packages/e2ee/src/worker/index.ts +++ b/packages/e2ee/src/worker/index.ts @@ -58,21 +58,27 @@ onmessage = (event): void => { const { type } = event.data if (type === 'selfSecretKeyMaterial') { const { selfSecretKeyMaterial, selfConnectionId, selfKeyId, waitingTime } = event.data - const timeoutId = setTimeout(() => { - crypto.subtle - .importKey('raw', selfSecretKeyMaterial.buffer, 'HKDF', false, ['deriveBits', 'deriveKey']) - .then((material) => { - generateDeriveKey(material).then((deriveKey) => { - setSelfDeriveKey(selfConnectionId, selfKeyId, deriveKey) - }) + const timeoutId = setTimeout( + () => { + crypto.subtle + .importKey('raw', selfSecretKeyMaterial.buffer, 'HKDF', false, [ + 'deriveBits', + 'deriveKey', + ]) + .then((material) => { + generateDeriveKey(material).then((deriveKey) => { + setSelfDeriveKey(selfConnectionId, selfKeyId, deriveKey) + }) - generateWriteIV(material).then((writeIV) => { - setWriteIV(selfConnectionId, selfKeyId, writeIV) - }) + generateWriteIV(material).then((writeIV) => { + setWriteIV(selfConnectionId, selfKeyId, writeIV) + }) - clearTimeout(timeoutId) - }) - }, waitingTime || 0) + clearTimeout(timeoutId) + }) + }, + waitingTime || 0, + ) // TODO: +1000 で鍵生成後に実行されるようにしているが短い場合は伸ばす const removalWaitingTime = (waitingTime || 0) + 1000 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63824e42..94ad909c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: 1.3.3 - version: 1.3.3 + specifier: 1.4.0 + version: 1.4.0 serve: specifier: 14.2.1 version: 14.2.1 @@ -87,22 +87,22 @@ importers: packages: - /@biomejs/biome@1.3.3: - resolution: {integrity: sha512-vTJn7RBzLWIabUuUIoEopO860YyBrbPEu4Pztfd28jRU5QD074hKZ9IQs24pFO6A2R296gaeYmN62f4u7pUruQ==} + /@biomejs/biome@1.4.0: + resolution: {integrity: sha512-/rDlao6ra38nhxo4IYCqWCzfTJcpMk4YHjSVBI9yN/ifdhnzSwirL25xDVH7G9hZdNhpF9g78FaPJhFa9DX0Cw==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.3.3 - '@biomejs/cli-darwin-x64': 1.3.3 - '@biomejs/cli-linux-arm64': 1.3.3 - '@biomejs/cli-linux-x64': 1.3.3 - '@biomejs/cli-win32-arm64': 1.3.3 - '@biomejs/cli-win32-x64': 1.3.3 + '@biomejs/cli-darwin-arm64': 1.4.0 + '@biomejs/cli-darwin-x64': 1.4.0 + '@biomejs/cli-linux-arm64': 1.4.0 + '@biomejs/cli-linux-x64': 1.4.0 + '@biomejs/cli-win32-arm64': 1.4.0 + '@biomejs/cli-win32-x64': 1.4.0 dev: true - /@biomejs/cli-darwin-arm64@1.3.3: - resolution: {integrity: sha512-2X87ZfbmWwe4NGukrUvnoYdI//muSgjNUCAHJ2DO+kS1sB7kDy1s6PN/IYyTJuqRcJtDuOnSpaUDE7KxR1YhtA==} + /@biomejs/cli-darwin-arm64@1.4.0: + resolution: {integrity: sha512-nBrtVRwr4IlTtxLOHwBwLv1sWvggf9/DnT5/ALIANJZOpoING6u8jHWipods69wK8kGa8Ld7iwHm3W5BrJJFFQ==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] @@ -110,8 +110,8 @@ packages: dev: true optional: true - /@biomejs/cli-darwin-x64@1.3.3: - resolution: {integrity: sha512-t+7DWTCbSgHOBcPsGKuwS1qh1z9zbXFK8i8ktE18yW7iF/W0zI62k44fYqYeFJKlb0Q08aqUvez3L+AQJFsn+w==} + /@biomejs/cli-darwin-x64@1.4.0: + resolution: {integrity: sha512-nny0VgOj3ksUGzU5GblgtQEvrAZFgFe1IJBoYOP978OQdDrg7BpS+GX5udfof87Dl4ZlHPRBU951ceHOxF7BTg==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] @@ -119,8 +119,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64@1.3.3: - resolution: {integrity: sha512-D8CvXaB8lkXXBQ6B3n0MXSSZFiE60+aNHorBLimVTtKiMod8QvAP425oQFZFul5wMXZqPLGTKFjXbAi/rvnc1A==} + /@biomejs/cli-linux-arm64@1.4.0: + resolution: {integrity: sha512-gyLkT/Yh9xfW1T9yjQs/2txkCeG0e+LRs0adLugMwN0ptcNTRyusBvUoiHnpB+9rS6hWu9ZCedGMNmKQ8v2GSw==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] @@ -128,8 +128,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-x64@1.3.3: - resolution: {integrity: sha512-bqB05fwJnRZwRlcm/BS/s4qPickqiXZkiU/nOYvHApfsPeqgSHgv5HWoBYuSUjgqBbX3XZJArsC5dCcVW7vAJw==} + /@biomejs/cli-linux-x64@1.4.0: + resolution: {integrity: sha512-LIxTuU2zSbIHM9XDYjQphJ5UU8h2eS7yR8uIvGYSba7Qt9AKqfbenyVJTsVnoj1CXxxgKNVSc/wVmlOlGz5DBQ==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] @@ -137,8 +137,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-arm64@1.3.3: - resolution: {integrity: sha512-muFOjAv1ONMfaJDlo4Ds+Qb9lkdSLM2XaxOe3AJPejSq3Vi0aRr51ZnE02BofMnL2sVsOA9cO54wibsuTcopbw==} + /@biomejs/cli-win32-arm64@1.4.0: + resolution: {integrity: sha512-U2jT1/0wZLJIRqnU8qHAfi/A/+yUwlL3sYJgqs+wO0BbR22WGQZlj03u5FdpEoyLXdsLv1pbeIcjNp+V0NYXWA==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -146,8 +146,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.3.3: - resolution: {integrity: sha512-PMkMhS4smmmTMflxuZUx3REFSazEL9xsGscvZO1dKWI4ET23la+KxEM4TlSpjOyO66UerqSkuUlZecn0QhD63A==} + /@biomejs/cli-win32-x64@1.4.0: + resolution: {integrity: sha512-gN6DgyyBxIwoCovAUFJHFWVallb0cLosayDRtNyxU3MDv/atZxSXOWQezfVKBIbgmFPxYWJObd+awvbPYXwwww==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] From a7ff8dc2e9261ca6b761022ceda7876ea29b80b9 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 11:07:33 +0900 Subject: [PATCH 151/182] pnpm up -L --- pnpm-lock.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94ad909c..ffe59af8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -604,8 +604,8 @@ packages: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.10.0: - resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} + /@types/node@20.10.1: + resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} dependencies: undici-types: 5.26.5 dev: true @@ -2078,7 +2078,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.10.0): + /vite-node@0.34.6(@types/node@20.10.1): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2088,7 +2088,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.2(@types/node@20.10.0) + vite: 5.0.4(@types/node@20.10.1) transitivePeerDependencies: - '@types/node' - less @@ -2100,8 +2100,8 @@ packages: - terser dev: true - /vite@5.0.2(@types/node@20.10.0): - resolution: {integrity: sha512-6CCq1CAJCNM1ya2ZZA7+jS2KgnhbzvxakmlIjN24cF/PXhRMzpM/z8QgsVJA/Dm5fWUWnVEsmtBoMhmerPxT0g==} + /vite@5.0.4(@types/node@20.10.1): + resolution: {integrity: sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2128,7 +2128,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.0 + '@types/node': 20.10.1 esbuild: 0.19.8 postcss: 8.4.31 rollup: 4.6.0 @@ -2169,7 +2169,7 @@ packages: dependencies: '@types/chai': 4.3.11 '@types/chai-subset': 1.3.5 - '@types/node': 20.10.0 + '@types/node': 20.10.1 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2188,8 +2188,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.2(@types/node@20.10.0) - vite-node: 0.34.6(@types/node@20.10.0) + vite: 5.0.4(@types/node@20.10.1) + vite-node: 0.34.6(@types/node@20.10.1) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From 76e92e62c15c001ac79dc4ad12e565de0d8338e5 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 11:09:39 +0900 Subject: [PATCH 152/182] =?UTF-8?q?node=20=E3=81=AE=E3=83=9E=E3=82=A4?= =?UTF-8?q?=E3=83=8A=E3=83=BC=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7=E3=83=B3?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yaml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 344be196..d37107c1 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: ["18", "20"] + node: ["18", "20", "21"] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 diff --git a/package.json b/package.json index 60dd2640..686e325a 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,6 @@ }, "packageManager": "pnpm@8.11.0", "engines": { - "node": ">=18.17" + "node": ">=18" } } \ No newline at end of file From c6f818c0098d71baee6e92b80d3a3364347bed5f Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 11:16:00 +0900 Subject: [PATCH 153/182] =?UTF-8?q?Biome=201.4.0=20=E3=81=AE=20lint=20?= =?UTF-8?q?=E3=82=92=E9=80=9A=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 3 ++- packages/sdk/src/sora.ts | 15 ++++++--------- packages/sdk/src/subscriber.ts | 23 +++++++++++------------ packages/sdk/src/utils.ts | 18 ++++++++++++------ 4 files changed, 31 insertions(+), 28 deletions(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 3f31e811..d3910c28 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -1035,7 +1035,8 @@ export default class ConnectionBase { resolve(ws) } }) - } else if (Array.isArray(signalingUrlCandidates)) { + } + if (Array.isArray(signalingUrlCandidates)) { // signaling url の候補が Array の場合 // すでに候補の WebSocket が発見されているかどうかのフラグ let resolved = false diff --git a/packages/sdk/src/sora.ts b/packages/sdk/src/sora.ts index bfb46e13..a05ea99d 100644 --- a/packages/sdk/src/sora.ts +++ b/packages/sdk/src/sora.ts @@ -1,10 +1,10 @@ import SoraE2EE from '@sora/e2ee' import ConnectionBase from './base' -import { initLyra, LyraConfig } from './lyra' +import { applyMediaStreamConstraints } from './helpers' +import { LyraConfig, initLyra } from './lyra' import ConnectionPublisher from './publisher' import ConnectionSubscriber from './subscriber' -import { applyMediaStreamConstraints } from './helpers' import type { AudioCodecType, Callbacks, @@ -183,7 +183,7 @@ export default { * * @public */ - initE2EE: async function (wasmUrl: string): Promise { + initE2EE: async (wasmUrl: string): Promise => { await SoraE2EE.loadWasm(wasmUrl) }, /** @@ -206,17 +206,14 @@ export default { * @public * */ - connection: function (signalingUrlCandidates: string | string[], debug = false): SoraConnection { - return new SoraConnection(signalingUrlCandidates, debug) - }, + connection: (signalingUrlCandidates: string | string[], debug = false): SoraConnection => + new SoraConnection(signalingUrlCandidates, debug), /** * SDK のバージョンを返すメソッド * * @public */ - version: function (): string { - return '__SORA_JS_SDK_VERSION__' - }, + version: (): string => '__SORA_JS_SDK_VERSION__', /** * WebRTC のユーティリティ関数群 * diff --git a/packages/sdk/src/subscriber.ts b/packages/sdk/src/subscriber.ts index a4e9d3a6..f1dfaf7e 100644 --- a/packages/sdk/src/subscriber.ts +++ b/packages/sdk/src/subscriber.ts @@ -29,19 +29,18 @@ export default class ConnectionSubscriber extends ConnectionBase { this.monitorWebSocketEvent() this.monitorPeerConnectionState() return - } else { - const stream = await Promise.race([ - this.singleStream().finally(() => { - this.clearConnectionTimeout() - this.clearMonitorSignalingWebSocketEvent() - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]) - this.monitorWebSocketEvent() - this.monitorPeerConnectionState() - return stream } + const stream = await Promise.race([ + this.singleStream().finally(() => { + this.clearConnectionTimeout() + this.clearMonitorSignalingWebSocketEvent() + }), + this.setConnectionTimeout(), + this.monitorSignalingWebSocketEvent(), + ]) + this.monitorWebSocketEvent() + this.monitorPeerConnectionState() + return stream } /** diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index db023750..bdddb10f 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -25,13 +25,17 @@ function browser(): Browser { const ua = window.navigator.userAgent.toLocaleLowerCase() if (ua.indexOf('edge') !== -1) { return 'edge' - } else if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { + } + if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { return 'chrome' - } else if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { + } + if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { return 'safari' - } else if (ua.indexOf('opera') !== -1) { + } + if (ua.indexOf('opera') !== -1) { return 'opera' - } else if (ua.indexOf('firefox') !== -1) { + } + if (ua.indexOf('firefox') !== -1) { return 'firefox' } return null @@ -376,7 +380,8 @@ export function getSignalingNotifyAuthnMetadata( ): JSONType { if (message.authn_metadata !== undefined) { return message.authn_metadata - } else if (message.metadata !== undefined) { + } + if (message.metadata !== undefined) { return message.metadata } return null @@ -387,7 +392,8 @@ export function getSignalingNotifyData( ): SignalingNotifyMetadata[] { if (message.data && Array.isArray(message.data)) { return message.data - } else if (message.metadata_list && Array.isArray(message.metadata_list)) { + } + if (message.metadata_list && Array.isArray(message.metadata_list)) { return message.metadata_list } return [] From 32db90cdd5d269af81306fbf4ea9f2f398d0a3c5 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 11:19:20 +0900 Subject: [PATCH 154/182] 2023.2.0-canary.8 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 686e325a..275f2e21 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "sora-js-sdk", - "version": "2023.2.0-canary.7", + "version": "2023.2.0-canary.8", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -42,4 +42,4 @@ "engines": { "node": ">=18" } -} \ No newline at end of file +} From e12ece52395f9ed02ddbed046c722dac3aa3e34a Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 11:46:27 +0900 Subject: [PATCH 155/182] =?UTF-8?q?return=20=E3=82=92=E4=BB=98=E3=81=91?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/sora.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/sdk/src/sora.ts b/packages/sdk/src/sora.ts index a05ea99d..68b902b4 100644 --- a/packages/sdk/src/sora.ts +++ b/packages/sdk/src/sora.ts @@ -206,14 +206,17 @@ export default { * @public * */ - connection: (signalingUrlCandidates: string | string[], debug = false): SoraConnection => - new SoraConnection(signalingUrlCandidates, debug), + connection: (signalingUrlCandidates: string | string[], debug = false): SoraConnection => { + return new SoraConnection(signalingUrlCandidates, debug) + }, /** * SDK のバージョンを返すメソッド * * @public */ - version: (): string => '__SORA_JS_SDK_VERSION__', + version: (): string => { + return '__SORA_JS_SDK_VERSION__' + }, /** * WebRTC のユーティリティ関数群 * From ca19ae41437005be432513213dc272a4cf01052d Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 11:46:57 +0900 Subject: [PATCH 156/182] 2023.2.0-canary.9 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 275f2e21..2afb83f3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "sora-js-sdk", - "version": "2023.2.0-canary.8", + "version": "2023.2.0-canary.9", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From c8298e907c6e627441df9cac52a2e560f8c8a4d3 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 12:11:27 +0900 Subject: [PATCH 157/182] =?UTF-8?q?Revert=20"Biome=201.4.0=20=E3=81=AE=20l?= =?UTF-8?q?int=20=E3=82=92=E9=80=9A=E3=81=99"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c6f818c0098d71baee6e92b80d3a3364347bed5f. --- biome.json | 8 +++++++- packages/sdk/src/base.ts | 3 +-- packages/sdk/src/sora.ts | 10 +++++----- packages/sdk/src/subscriber.ts | 23 ++++++++++++----------- packages/sdk/src/utils.ts | 18 ++++++------------ 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/biome.json b/biome.json index d882ece5..8e6738b7 100644 --- a/biome.json +++ b/biome.json @@ -6,7 +6,13 @@ "linter": { "enabled": true, "rules": { - "recommended": true + "recommended": true, + "style": { + "noUselessElse": "off" + }, + "complexity": { + "useArrowFunction": "off" + } } }, "formatter": { diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index d3910c28..3f31e811 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -1035,8 +1035,7 @@ export default class ConnectionBase { resolve(ws) } }) - } - if (Array.isArray(signalingUrlCandidates)) { + } else if (Array.isArray(signalingUrlCandidates)) { // signaling url の候補が Array の場合 // すでに候補の WebSocket が発見されているかどうかのフラグ let resolved = false diff --git a/packages/sdk/src/sora.ts b/packages/sdk/src/sora.ts index 68b902b4..bfb46e13 100644 --- a/packages/sdk/src/sora.ts +++ b/packages/sdk/src/sora.ts @@ -1,10 +1,10 @@ import SoraE2EE from '@sora/e2ee' import ConnectionBase from './base' -import { applyMediaStreamConstraints } from './helpers' -import { LyraConfig, initLyra } from './lyra' +import { initLyra, LyraConfig } from './lyra' import ConnectionPublisher from './publisher' import ConnectionSubscriber from './subscriber' +import { applyMediaStreamConstraints } from './helpers' import type { AudioCodecType, Callbacks, @@ -183,7 +183,7 @@ export default { * * @public */ - initE2EE: async (wasmUrl: string): Promise => { + initE2EE: async function (wasmUrl: string): Promise { await SoraE2EE.loadWasm(wasmUrl) }, /** @@ -206,7 +206,7 @@ export default { * @public * */ - connection: (signalingUrlCandidates: string | string[], debug = false): SoraConnection => { + connection: function (signalingUrlCandidates: string | string[], debug = false): SoraConnection { return new SoraConnection(signalingUrlCandidates, debug) }, /** @@ -214,7 +214,7 @@ export default { * * @public */ - version: (): string => { + version: function (): string { return '__SORA_JS_SDK_VERSION__' }, /** diff --git a/packages/sdk/src/subscriber.ts b/packages/sdk/src/subscriber.ts index f1dfaf7e..a4e9d3a6 100644 --- a/packages/sdk/src/subscriber.ts +++ b/packages/sdk/src/subscriber.ts @@ -29,18 +29,19 @@ export default class ConnectionSubscriber extends ConnectionBase { this.monitorWebSocketEvent() this.monitorPeerConnectionState() return + } else { + const stream = await Promise.race([ + this.singleStream().finally(() => { + this.clearConnectionTimeout() + this.clearMonitorSignalingWebSocketEvent() + }), + this.setConnectionTimeout(), + this.monitorSignalingWebSocketEvent(), + ]) + this.monitorWebSocketEvent() + this.monitorPeerConnectionState() + return stream } - const stream = await Promise.race([ - this.singleStream().finally(() => { - this.clearConnectionTimeout() - this.clearMonitorSignalingWebSocketEvent() - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]) - this.monitorWebSocketEvent() - this.monitorPeerConnectionState() - return stream } /** diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index bdddb10f..db023750 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -25,17 +25,13 @@ function browser(): Browser { const ua = window.navigator.userAgent.toLocaleLowerCase() if (ua.indexOf('edge') !== -1) { return 'edge' - } - if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { + } else if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { return 'chrome' - } - if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { + } else if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { return 'safari' - } - if (ua.indexOf('opera') !== -1) { + } else if (ua.indexOf('opera') !== -1) { return 'opera' - } - if (ua.indexOf('firefox') !== -1) { + } else if (ua.indexOf('firefox') !== -1) { return 'firefox' } return null @@ -380,8 +376,7 @@ export function getSignalingNotifyAuthnMetadata( ): JSONType { if (message.authn_metadata !== undefined) { return message.authn_metadata - } - if (message.metadata !== undefined) { + } else if (message.metadata !== undefined) { return message.metadata } return null @@ -392,8 +387,7 @@ export function getSignalingNotifyData( ): SignalingNotifyMetadata[] { if (message.data && Array.isArray(message.data)) { return message.data - } - if (message.metadata_list && Array.isArray(message.metadata_list)) { + } else if (message.metadata_list && Array.isArray(message.metadata_list)) { return message.metadata_list } return [] From 0e015bc2c9837302f4e2972d6bfabbf5375ef72e Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 12:12:04 +0900 Subject: [PATCH 158/182] 2023.2.0-canary.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2afb83f3..2e54fc09 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "sora-js-sdk", - "version": "2023.2.0-canary.9", + "version": "2023.2.0-canary.10", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From 2e6c2a3a9dfe1be60ef94bceda4e4d0323f89a06 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 12:16:06 +0900 Subject: [PATCH 159/182] =?UTF-8?q?type:=20module=20=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 2e54fc09..2b927849 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,4 @@ { - "type": "module", "name": "sora-js-sdk", "version": "2023.2.0-canary.10", "description": "WebRTC SFU Sora JavaScript SDK", @@ -42,4 +41,4 @@ "engines": { "node": ">=18" } -} +} \ No newline at end of file From 2e9e3f188ea3241d8f5db68f53e309d9faef1699 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 12:16:58 +0900 Subject: [PATCH 160/182] 2023.2.0-canary.11 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2b927849..723530a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.10", + "version": "2023.2.0-canary.11", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", @@ -41,4 +41,4 @@ "engines": { "node": ">=18" } -} \ No newline at end of file +} From 8b16ce599007e4a776e04943e6da1427282d814f Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 12:18:45 +0900 Subject: [PATCH 161/182] =?UTF-8?q?Revert=20"Revert=20"Biome=201.4.0=20?= =?UTF-8?q?=E3=81=AE=20lint=20=E3=82=92=E9=80=9A=E3=81=99""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c8298e907c6e627441df9cac52a2e560f8c8a4d3. --- biome.json | 8 +------- packages/sdk/src/base.ts | 3 ++- packages/sdk/src/sora.ts | 10 +++++----- packages/sdk/src/subscriber.ts | 23 +++++++++++------------ packages/sdk/src/utils.ts | 18 ++++++++++++------ 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/biome.json b/biome.json index 8e6738b7..d882ece5 100644 --- a/biome.json +++ b/biome.json @@ -6,13 +6,7 @@ "linter": { "enabled": true, "rules": { - "recommended": true, - "style": { - "noUselessElse": "off" - }, - "complexity": { - "useArrowFunction": "off" - } + "recommended": true } }, "formatter": { diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 3f31e811..d3910c28 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -1035,7 +1035,8 @@ export default class ConnectionBase { resolve(ws) } }) - } else if (Array.isArray(signalingUrlCandidates)) { + } + if (Array.isArray(signalingUrlCandidates)) { // signaling url の候補が Array の場合 // すでに候補の WebSocket が発見されているかどうかのフラグ let resolved = false diff --git a/packages/sdk/src/sora.ts b/packages/sdk/src/sora.ts index bfb46e13..68b902b4 100644 --- a/packages/sdk/src/sora.ts +++ b/packages/sdk/src/sora.ts @@ -1,10 +1,10 @@ import SoraE2EE from '@sora/e2ee' import ConnectionBase from './base' -import { initLyra, LyraConfig } from './lyra' +import { applyMediaStreamConstraints } from './helpers' +import { LyraConfig, initLyra } from './lyra' import ConnectionPublisher from './publisher' import ConnectionSubscriber from './subscriber' -import { applyMediaStreamConstraints } from './helpers' import type { AudioCodecType, Callbacks, @@ -183,7 +183,7 @@ export default { * * @public */ - initE2EE: async function (wasmUrl: string): Promise { + initE2EE: async (wasmUrl: string): Promise => { await SoraE2EE.loadWasm(wasmUrl) }, /** @@ -206,7 +206,7 @@ export default { * @public * */ - connection: function (signalingUrlCandidates: string | string[], debug = false): SoraConnection { + connection: (signalingUrlCandidates: string | string[], debug = false): SoraConnection => { return new SoraConnection(signalingUrlCandidates, debug) }, /** @@ -214,7 +214,7 @@ export default { * * @public */ - version: function (): string { + version: (): string => { return '__SORA_JS_SDK_VERSION__' }, /** diff --git a/packages/sdk/src/subscriber.ts b/packages/sdk/src/subscriber.ts index a4e9d3a6..f1dfaf7e 100644 --- a/packages/sdk/src/subscriber.ts +++ b/packages/sdk/src/subscriber.ts @@ -29,19 +29,18 @@ export default class ConnectionSubscriber extends ConnectionBase { this.monitorWebSocketEvent() this.monitorPeerConnectionState() return - } else { - const stream = await Promise.race([ - this.singleStream().finally(() => { - this.clearConnectionTimeout() - this.clearMonitorSignalingWebSocketEvent() - }), - this.setConnectionTimeout(), - this.monitorSignalingWebSocketEvent(), - ]) - this.monitorWebSocketEvent() - this.monitorPeerConnectionState() - return stream } + const stream = await Promise.race([ + this.singleStream().finally(() => { + this.clearConnectionTimeout() + this.clearMonitorSignalingWebSocketEvent() + }), + this.setConnectionTimeout(), + this.monitorSignalingWebSocketEvent(), + ]) + this.monitorWebSocketEvent() + this.monitorPeerConnectionState() + return stream } /** diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index db023750..bdddb10f 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -25,13 +25,17 @@ function browser(): Browser { const ua = window.navigator.userAgent.toLocaleLowerCase() if (ua.indexOf('edge') !== -1) { return 'edge' - } else if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { + } + if (ua.indexOf('chrome') !== -1 && ua.indexOf('edge') === -1) { return 'chrome' - } else if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { + } + if (ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1) { return 'safari' - } else if (ua.indexOf('opera') !== -1) { + } + if (ua.indexOf('opera') !== -1) { return 'opera' - } else if (ua.indexOf('firefox') !== -1) { + } + if (ua.indexOf('firefox') !== -1) { return 'firefox' } return null @@ -376,7 +380,8 @@ export function getSignalingNotifyAuthnMetadata( ): JSONType { if (message.authn_metadata !== undefined) { return message.authn_metadata - } else if (message.metadata !== undefined) { + } + if (message.metadata !== undefined) { return message.metadata } return null @@ -387,7 +392,8 @@ export function getSignalingNotifyData( ): SignalingNotifyMetadata[] { if (message.data && Array.isArray(message.data)) { return message.data - } else if (message.metadata_list && Array.isArray(message.metadata_list)) { + } + if (message.metadata_list && Array.isArray(message.metadata_list)) { return message.metadata_list } return [] From 926e532d5507a377477bc998e0cde06b9e2dc536 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 12:23:41 +0900 Subject: [PATCH 162/182] 2023.2.0-canary.12 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 723530a8..13f0bf5b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.11", + "version": "2023.2.0-canary.12", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From a3f42f5e276288b32895ec4160bf7e3b06dea177 Mon Sep 17 00:00:00 2001 From: voluntas Date: Thu, 30 Nov 2023 22:10:56 +0900 Subject: [PATCH 163/182] pnpm up -L -r --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 4 +- pnpm-lock.yaml | 268 +++++++++++++++++-------------------- 3 files changed, 124 insertions(+), 150 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 9684c775..32657fe6 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.6.0", + "rollup": "4.6.1", "tslib": "2.6.2" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index d168d0f2..0103a2f4 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -13,8 +13,8 @@ "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", - "jsdom": "22.1.0", - "rollup": "4.6.0", + "jsdom": "23.0.1", + "rollup": "4.6.1", "rollup-plugin-delete": "2.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ffe59af8..11293031 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,16 +35,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.0) + version: 15.2.3(rollup@4.6.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.6.0) + version: 5.0.5(rollup@4.6.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2) rollup: - specifier: 4.6.0 - version: 4.6.0 + specifier: 4.6.1 + version: 4.6.1 tslib: specifier: 2.6.2 version: 2.6.2 @@ -62,25 +62,25 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.6.0) + version: 25.0.7(rollup@4.6.1) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.0) + version: 15.2.3(rollup@4.6.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.6.0) + version: 5.0.5(rollup@4.6.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 jsdom: - specifier: 22.1.0 - version: 22.1.0 + specifier: 23.0.1 + version: 23.0.1 rollup: - specifier: 4.6.0 - version: 4.6.0 + specifier: 4.6.1 + version: 4.6.1 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -385,7 +385,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.6.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.6.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -394,16 +394,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.1): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.6.0): + /@rollup/plugin-replace@5.0.5(rollup@4.6.1): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) magic-string: 0.30.5 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,15 +448,15 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) resolve: 1.22.8 - rollup: 4.6.0 + rollup: 4.6.1 tslib: 2.6.2 typescript: 5.3.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.6.0): - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + /@rollup/pluginutils@5.1.0(rollup@4.6.1): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -467,99 +467,99 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/rollup-android-arm-eabi@4.6.0: - resolution: {integrity: sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==} + /@rollup/rollup-android-arm-eabi@4.6.1: + resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.6.0: - resolution: {integrity: sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==} + /@rollup/rollup-android-arm64@4.6.1: + resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.6.0: - resolution: {integrity: sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==} + /@rollup/rollup-darwin-arm64@4.6.1: + resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.6.0: - resolution: {integrity: sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==} + /@rollup/rollup-darwin-x64@4.6.1: + resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.0: - resolution: {integrity: sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.6.1: + resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.0: - resolution: {integrity: sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==} + /@rollup/rollup-linux-arm64-gnu@4.6.1: + resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.6.0: - resolution: {integrity: sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==} + /@rollup/rollup-linux-arm64-musl@4.6.1: + resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.6.0: - resolution: {integrity: sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==} + /@rollup/rollup-linux-x64-gnu@4.6.1: + resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.6.0: - resolution: {integrity: sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==} + /@rollup/rollup-linux-x64-musl@4.6.1: + resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.0: - resolution: {integrity: sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==} + /@rollup/rollup-win32-arm64-msvc@4.6.1: + resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.0: - resolution: {integrity: sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==} + /@rollup/rollup-win32-ia32-msvc@4.6.1: + resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.6.0: - resolution: {integrity: sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==} + /@rollup/rollup-win32-x64-msvc@4.6.1: + resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} cpu: [x64] os: [win32] requiresBuild: true @@ -574,11 +574,6 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: true - /@types/chai-subset@1.3.5: resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: @@ -597,7 +592,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.9.1 + '@types/node': 20.10.1 dev: true /@types/minimatch@5.1.2: @@ -610,12 +605,6 @@ packages: undici-types: 5.26.5 dev: true - /@types/node@20.9.1: - resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} - dependencies: - undici-types: 5.26.5 - dev: true - /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true @@ -662,10 +651,6 @@ packages: resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} dev: true - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true - /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -685,9 +670,9 @@ packages: hasBin: true dev: true - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4 transitivePeerDependencies: @@ -954,13 +939,12 @@ packages: rrweb-cssom: 0.6.0 dev: true - /data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 dev: true /debug@2.6.9: @@ -1038,13 +1022,6 @@ packages: path-type: 4.0.0 dev: true - /domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - dependencies: - webidl-conversions: 7.0.0 - dev: true - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true @@ -1242,29 +1219,28 @@ packages: function-bind: 1.1.2 dev: true - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} dependencies: - whatwg-encoding: 2.0.0 + whatwg-encoding: 3.1.1 dev: true - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} dependencies: - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -1393,24 +1369,22 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} + /jsdom@23.0.1: + resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==} + engines: {node: '>=18'} peerDependencies: - canvas: ^2.5.0 + canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true dependencies: - abab: 2.0.6 cssstyle: 3.0.0 - data-urls: 4.0.0 + data-urls: 5.0.0 decimal.js: 10.4.3 - domexception: 4.0.0 form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.7 parse5: 7.1.2 @@ -1418,13 +1392,13 @@ packages: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 + w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 ws: 8.14.2 - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color @@ -1775,23 +1749,23 @@ packages: del: 5.1.0 dev: true - /rollup@4.6.0: - resolution: {integrity: sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==} + /rollup@4.6.1: + resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.0 - '@rollup/rollup-android-arm64': 4.6.0 - '@rollup/rollup-darwin-arm64': 4.6.0 - '@rollup/rollup-darwin-x64': 4.6.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.0 - '@rollup/rollup-linux-arm64-gnu': 4.6.0 - '@rollup/rollup-linux-arm64-musl': 4.6.0 - '@rollup/rollup-linux-x64-gnu': 4.6.0 - '@rollup/rollup-linux-x64-musl': 4.6.0 - '@rollup/rollup-win32-arm64-msvc': 4.6.0 - '@rollup/rollup-win32-ia32-msvc': 4.6.0 - '@rollup/rollup-win32-x64-msvc': 4.6.0 + '@rollup/rollup-android-arm-eabi': 4.6.1 + '@rollup/rollup-android-arm64': 4.6.1 + '@rollup/rollup-darwin-arm64': 4.6.1 + '@rollup/rollup-darwin-x64': 4.6.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 + '@rollup/rollup-linux-arm64-gnu': 4.6.1 + '@rollup/rollup-linux-arm64-musl': 4.6.1 + '@rollup/rollup-linux-x64-gnu': 4.6.1 + '@rollup/rollup-linux-x64-musl': 4.6.1 + '@rollup/rollup-win32-arm64-msvc': 4.6.1 + '@rollup/rollup-win32-ia32-msvc': 4.6.1 + '@rollup/rollup-win32-x64-msvc': 4.6.1 fsevents: 2.3.3 dev: true @@ -1999,9 +1973,9 @@ packages: url-parse: 1.5.10 dev: true - /tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} dependencies: punycode: 2.3.1 dev: true @@ -2131,7 +2105,7 @@ packages: '@types/node': 20.10.1 esbuild: 0.19.8 postcss: 8.4.31 - rollup: 4.6.0 + rollup: 4.6.1 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2209,11 +2183,11 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} dependencies: - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 dev: true /webidl-conversions@7.0.0: @@ -2221,23 +2195,23 @@ packages: engines: {node: '>=12'} dev: true - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} dev: true - /whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} dependencies: - tr46: 4.1.1 + tr46: 5.0.0 webidl-conversions: 7.0.0 dev: true @@ -2291,9 +2265,9 @@ packages: optional: true dev: true - /xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} dev: true /xmlchars@2.2.0: From f3701b62bc6a2d5472838804fa36cc1753372daf Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 1 Dec 2023 13:35:12 +0900 Subject: [PATCH 164/182] biome 1.4.1 --- package.json | 2 +- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 4 +- pnpm-lock.yaml | 312 +++++++++++++++++-------------------- 4 files changed, 147 insertions(+), 173 deletions(-) diff --git a/package.json b/package.json index 13f0bf5b..953e14e2 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dist" ], "devDependencies": { - "@biomejs/biome": "1.4.0", + "@biomejs/biome": "1.4.1", "serve": "14.2.1", "typedoc": "0.25.4", "typescript": "5.3.2", diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 9684c775..32657fe6 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.6.0", + "rollup": "4.6.1", "tslib": "2.6.2" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index d168d0f2..0103a2f4 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -13,8 +13,8 @@ "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", - "jsdom": "22.1.0", - "rollup": "4.6.0", + "jsdom": "23.0.1", + "rollup": "4.6.1", "rollup-plugin-delete": "2.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ffe59af8..fff27e3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: .: devDependencies: '@biomejs/biome': - specifier: 1.4.0 - version: 1.4.0 + specifier: 1.4.1 + version: 1.4.1 serve: specifier: 14.2.1 version: 14.2.1 @@ -35,16 +35,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.0) + version: 15.2.3(rollup@4.6.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.6.0) + version: 5.0.5(rollup@4.6.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2) rollup: - specifier: 4.6.0 - version: 4.6.0 + specifier: 4.6.1 + version: 4.6.1 tslib: specifier: 2.6.2 version: 2.6.2 @@ -62,47 +62,47 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.6.0) + version: 25.0.7(rollup@4.6.1) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.0) + version: 15.2.3(rollup@4.6.1) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.6.0) + version: 5.0.5(rollup@4.6.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 jsdom: - specifier: 22.1.0 - version: 22.1.0 + specifier: 23.0.1 + version: 23.0.1 rollup: - specifier: 4.6.0 - version: 4.6.0 + specifier: 4.6.1 + version: 4.6.1 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 packages: - /@biomejs/biome@1.4.0: - resolution: {integrity: sha512-/rDlao6ra38nhxo4IYCqWCzfTJcpMk4YHjSVBI9yN/ifdhnzSwirL25xDVH7G9hZdNhpF9g78FaPJhFa9DX0Cw==} + /@biomejs/biome@1.4.1: + resolution: {integrity: sha512-JccVAwPbhi37pdxbAGmaOBjUTKEwEjWAhl7rKkVVuXHo4MLASXJ5HR8BTgrImi4/7rTBsGz1tgVD1Kwv1CHGRg==} engines: {node: '>=14.*'} hasBin: true requiresBuild: true optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.4.0 - '@biomejs/cli-darwin-x64': 1.4.0 - '@biomejs/cli-linux-arm64': 1.4.0 - '@biomejs/cli-linux-x64': 1.4.0 - '@biomejs/cli-win32-arm64': 1.4.0 - '@biomejs/cli-win32-x64': 1.4.0 + '@biomejs/cli-darwin-arm64': 1.4.1 + '@biomejs/cli-darwin-x64': 1.4.1 + '@biomejs/cli-linux-arm64': 1.4.1 + '@biomejs/cli-linux-x64': 1.4.1 + '@biomejs/cli-win32-arm64': 1.4.1 + '@biomejs/cli-win32-x64': 1.4.1 dev: true - /@biomejs/cli-darwin-arm64@1.4.0: - resolution: {integrity: sha512-nBrtVRwr4IlTtxLOHwBwLv1sWvggf9/DnT5/ALIANJZOpoING6u8jHWipods69wK8kGa8Ld7iwHm3W5BrJJFFQ==} + /@biomejs/cli-darwin-arm64@1.4.1: + resolution: {integrity: sha512-PZWy2Idndqux38p6AXSDQM2ldRAWi32bvb7bMbTN0ALzpWYMYnxd71ornatumSSJYoNhKmxzDLq+jct7nZJ79w==} engines: {node: '>=14.*'} cpu: [arm64] os: [darwin] @@ -110,8 +110,8 @@ packages: dev: true optional: true - /@biomejs/cli-darwin-x64@1.4.0: - resolution: {integrity: sha512-nny0VgOj3ksUGzU5GblgtQEvrAZFgFe1IJBoYOP978OQdDrg7BpS+GX5udfof87Dl4ZlHPRBU951ceHOxF7BTg==} + /@biomejs/cli-darwin-x64@1.4.1: + resolution: {integrity: sha512-soj3BWhnsM1M2JlzR09cibUzG1owJqetwj/Oo7yg0foijo9lNH9XWXZfJBYDKgW/6Fomn+CC2EcUS+hisQzt9g==} engines: {node: '>=14.*'} cpu: [x64] os: [darwin] @@ -119,8 +119,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-arm64@1.4.0: - resolution: {integrity: sha512-gyLkT/Yh9xfW1T9yjQs/2txkCeG0e+LRs0adLugMwN0ptcNTRyusBvUoiHnpB+9rS6hWu9ZCedGMNmKQ8v2GSw==} + /@biomejs/cli-linux-arm64@1.4.1: + resolution: {integrity: sha512-YIZqfJUg4F+fPsBTXxgD7EU2E5OAYbmYSl/snf4PevwfQCWE/omOFZv+NnIQmjYj9I7ParDgcJvanoA3/kO0JQ==} engines: {node: '>=14.*'} cpu: [arm64] os: [linux] @@ -128,8 +128,8 @@ packages: dev: true optional: true - /@biomejs/cli-linux-x64@1.4.0: - resolution: {integrity: sha512-LIxTuU2zSbIHM9XDYjQphJ5UU8h2eS7yR8uIvGYSba7Qt9AKqfbenyVJTsVnoj1CXxxgKNVSc/wVmlOlGz5DBQ==} + /@biomejs/cli-linux-x64@1.4.1: + resolution: {integrity: sha512-9YOZw3qBd/KUj63A6Hn2zZgzGb2nbESM0qNmeMXgmqinVKM//uc4OgY5TuKITuGjMSvcVxxd4dX1IzYjV9qvNQ==} engines: {node: '>=14.*'} cpu: [x64] os: [linux] @@ -137,8 +137,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-arm64@1.4.0: - resolution: {integrity: sha512-U2jT1/0wZLJIRqnU8qHAfi/A/+yUwlL3sYJgqs+wO0BbR22WGQZlj03u5FdpEoyLXdsLv1pbeIcjNp+V0NYXWA==} + /@biomejs/cli-win32-arm64@1.4.1: + resolution: {integrity: sha512-nWQbvkNKxYn/kCQ0yVF8kCaS3VzaGvtFSmItXiMknU4521LDjJ7tNWH12Gol+pIslrCbd4E1LhJa0a3ThRsBVg==} engines: {node: '>=14.*'} cpu: [arm64] os: [win32] @@ -146,8 +146,8 @@ packages: dev: true optional: true - /@biomejs/cli-win32-x64@1.4.0: - resolution: {integrity: sha512-gN6DgyyBxIwoCovAUFJHFWVallb0cLosayDRtNyxU3MDv/atZxSXOWQezfVKBIbgmFPxYWJObd+awvbPYXwwww==} + /@biomejs/cli-win32-x64@1.4.1: + resolution: {integrity: sha512-88fR2CQxQ4YLs2BUDuywWYQpUKgU3A3sTezANFc/4LGKQFFLV2yX+F7QAdZVkMHfA+RD9Xg178HomM/6mnTNPA==} engines: {node: '>=14.*'} cpu: [x64] os: [win32] @@ -385,7 +385,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.6.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.6.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -394,16 +394,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.1): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.6.0): + /@rollup/plugin-replace@5.0.5(rollup@4.6.1): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) magic-string: 0.30.5 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.6.0)(tslib@2.6.2)(typescript@5.3.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,15 +448,15 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.0.5(rollup@4.6.0) + '@rollup/pluginutils': 5.1.0(rollup@4.6.1) resolve: 1.22.8 - rollup: 4.6.0 + rollup: 4.6.1 tslib: 2.6.2 typescript: 5.3.2 dev: true - /@rollup/pluginutils@5.0.5(rollup@4.6.0): - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + /@rollup/pluginutils@5.1.0(rollup@4.6.1): + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -467,99 +467,99 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.6.0 + rollup: 4.6.1 dev: true - /@rollup/rollup-android-arm-eabi@4.6.0: - resolution: {integrity: sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==} + /@rollup/rollup-android-arm-eabi@4.6.1: + resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.6.0: - resolution: {integrity: sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==} + /@rollup/rollup-android-arm64@4.6.1: + resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.6.0: - resolution: {integrity: sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==} + /@rollup/rollup-darwin-arm64@4.6.1: + resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.6.0: - resolution: {integrity: sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==} + /@rollup/rollup-darwin-x64@4.6.1: + resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.0: - resolution: {integrity: sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.6.1: + resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.0: - resolution: {integrity: sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==} + /@rollup/rollup-linux-arm64-gnu@4.6.1: + resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.6.0: - resolution: {integrity: sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==} + /@rollup/rollup-linux-arm64-musl@4.6.1: + resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.6.0: - resolution: {integrity: sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==} + /@rollup/rollup-linux-x64-gnu@4.6.1: + resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.6.0: - resolution: {integrity: sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==} + /@rollup/rollup-linux-x64-musl@4.6.1: + resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.0: - resolution: {integrity: sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==} + /@rollup/rollup-win32-arm64-msvc@4.6.1: + resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.0: - resolution: {integrity: sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==} + /@rollup/rollup-win32-ia32-msvc@4.6.1: + resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.6.0: - resolution: {integrity: sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==} + /@rollup/rollup-win32-x64-msvc@4.6.1: + resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} cpu: [x64] os: [win32] requiresBuild: true @@ -574,11 +574,6 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: true - /@types/chai-subset@1.3.5: resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: @@ -597,7 +592,7 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.9.1 + '@types/node': 20.10.1 dev: true /@types/minimatch@5.1.2: @@ -610,12 +605,6 @@ packages: undici-types: 5.26.5 dev: true - /@types/node@20.9.1: - resolution: {integrity: sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA==} - dependencies: - undici-types: 5.26.5 - dev: true - /@types/resolve@1.20.2: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true @@ -662,10 +651,6 @@ packages: resolution: {integrity: sha512-g5QiLIfbg3pLuYUJPlisNKY+epQJTcMDsOnVNkscrDP1oi7vmJnzOANYJI/1pZcVJ6umUkBv3aFtlg1UvUHGzA==} dev: true - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true - /accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -685,9 +670,9 @@ packages: hasBin: true dev: true - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4 transitivePeerDependencies: @@ -954,13 +939,12 @@ packages: rrweb-cssom: 0.6.0 dev: true - /data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 dev: true /debug@2.6.9: @@ -1038,13 +1022,6 @@ packages: path-type: 4.0.0 dev: true - /domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - dependencies: - webidl-conversions: 7.0.0 - dev: true - /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true @@ -1242,29 +1219,28 @@ packages: function-bind: 1.1.2 dev: true - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} dependencies: - whatwg-encoding: 2.0.0 + whatwg-encoding: 3.1.1 dev: true - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} dependencies: - agent-base: 6.0.2 + agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color @@ -1393,24 +1369,22 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} + /jsdom@23.0.1: + resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==} + engines: {node: '>=18'} peerDependencies: - canvas: ^2.5.0 + canvas: ^2.11.2 peerDependenciesMeta: canvas: optional: true dependencies: - abab: 2.0.6 cssstyle: 3.0.0 - data-urls: 4.0.0 + data-urls: 5.0.0 decimal.js: 10.4.3 - domexception: 4.0.0 form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.7 parse5: 7.1.2 @@ -1418,13 +1392,13 @@ packages: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 + w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 ws: 8.14.2 - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color @@ -1775,23 +1749,23 @@ packages: del: 5.1.0 dev: true - /rollup@4.6.0: - resolution: {integrity: sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==} + /rollup@4.6.1: + resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.0 - '@rollup/rollup-android-arm64': 4.6.0 - '@rollup/rollup-darwin-arm64': 4.6.0 - '@rollup/rollup-darwin-x64': 4.6.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.0 - '@rollup/rollup-linux-arm64-gnu': 4.6.0 - '@rollup/rollup-linux-arm64-musl': 4.6.0 - '@rollup/rollup-linux-x64-gnu': 4.6.0 - '@rollup/rollup-linux-x64-musl': 4.6.0 - '@rollup/rollup-win32-arm64-msvc': 4.6.0 - '@rollup/rollup-win32-ia32-msvc': 4.6.0 - '@rollup/rollup-win32-x64-msvc': 4.6.0 + '@rollup/rollup-android-arm-eabi': 4.6.1 + '@rollup/rollup-android-arm64': 4.6.1 + '@rollup/rollup-darwin-arm64': 4.6.1 + '@rollup/rollup-darwin-x64': 4.6.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 + '@rollup/rollup-linux-arm64-gnu': 4.6.1 + '@rollup/rollup-linux-arm64-musl': 4.6.1 + '@rollup/rollup-linux-x64-gnu': 4.6.1 + '@rollup/rollup-linux-x64-musl': 4.6.1 + '@rollup/rollup-win32-arm64-msvc': 4.6.1 + '@rollup/rollup-win32-ia32-msvc': 4.6.1 + '@rollup/rollup-win32-x64-msvc': 4.6.1 fsevents: 2.3.3 dev: true @@ -1999,9 +1973,9 @@ packages: url-parse: 1.5.10 dev: true - /tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} dependencies: punycode: 2.3.1 dev: true @@ -2131,7 +2105,7 @@ packages: '@types/node': 20.10.1 esbuild: 0.19.8 postcss: 8.4.31 - rollup: 4.6.0 + rollup: 4.6.1 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2209,11 +2183,11 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true - /w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} dependencies: - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 dev: true /webidl-conversions@7.0.0: @@ -2221,23 +2195,23 @@ packages: engines: {node: '>=12'} dev: true - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 dev: true - /whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} dev: true - /whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} dependencies: - tr46: 4.1.1 + tr46: 5.0.0 webidl-conversions: 7.0.0 dev: true @@ -2291,9 +2265,9 @@ packages: optional: true dev: true - /xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + /xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} dev: true /xmlchars@2.2.0: From 29f3c774565be30b34d89bed1563c51b69b81768 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 1 Dec 2023 13:35:29 +0900 Subject: [PATCH 165/182] biome 1.4.1 --- biome.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/biome.json b/biome.json index d882ece5..c37688db 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.4.0/schema.json", + "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json", "organizeImports": { "enabled": true }, @@ -42,4 +42,4 @@ "quoteProperties": "asNeeded" } } -} \ No newline at end of file +} From 6ab8638a443cca26fdc8ad677d58c307d53ea3e1 Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 1 Dec 2023 13:39:37 +0900 Subject: [PATCH 166/182] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index d3910c28..e391913a 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -181,7 +181,6 @@ export default class ConnectionBase { * シグナリング type offer に含まれる DataChannel レコード */ private signalingOfferMessageDataChannels: { - // biome-ignore lint/suspicious/noRedeclare: 後で対応する [key in string]?: SignalingOfferMessageDataChannel } /** From c3afd7d89f5f18f9afb3ac212628dd1177a7f92c Mon Sep 17 00:00:00 2001 From: voluntas Date: Fri, 1 Dec 2023 13:44:30 +0900 Subject: [PATCH 167/182] 2023.2.0-canary.13 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 953e14e2..1e77e584 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.12", + "version": "2023.2.0-canary.13", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From f16276fe1b4f00d7a447e8575484f4aa972f4a4b Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Fri, 1 Dec 2023 19:53:30 +0900 Subject: [PATCH 168/182] =?UTF-8?q?H265=20Params=20=E3=81=AB=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/types.ts | 2 ++ packages/sdk/src/utils.ts | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index b8b28662..1bddb418 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -45,6 +45,7 @@ export type SignalingVideo = bit_rate?: number vp9_params?: JSONType h264_params?: JSONType + h265_params?: JSONType av1_params?: JSONType } @@ -299,6 +300,7 @@ export type ConnectionOptions = { videoBitRate?: number videoVP9Params?: JSONType videoH264Params?: JSONType + videoH265Params?: JSONType videoAV1Params?: JSONType multistream?: boolean spotlight?: boolean diff --git a/packages/sdk/src/utils.ts b/packages/sdk/src/utils.ts index bdddb10f..7809ab03 100644 --- a/packages/sdk/src/utils.ts +++ b/packages/sdk/src/utils.ts @@ -224,6 +224,7 @@ export function createSignalingMessage( 'videoBitRate', 'videoVP9Params', 'videoH264Params', + 'videoH265Params', 'videoAV1Params', ] const copyOptions = Object.assign({}, options) @@ -332,6 +333,9 @@ export function createSignalingMessage( if ('videoH264Params' in copyOptions) { message.video.h264_params = copyOptions.videoH264Params } + if ('videoH265Params' in copyOptions) { + message.video.h265_params = copyOptions.videoH265Params + } if ('videoAV1Params' in copyOptions) { message.video.av1_params = copyOptions.videoAV1Params } From 540ced8d08458066f4c641457899bd83efe4057e Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Fri, 1 Dec 2023 19:56:28 +0900 Subject: [PATCH 169/182] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E8=A8=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index ba49d48e..f9b7aedb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,9 @@ ## develop +- [ADD] 接続オプションとしてビデオコーデック H265 のパラメータの送信を追加 + - `ConnectionOptions` 型に `videoH265Params` フィールドを追加 + - @tnamao - [CHANGE] fmt / lint を biome へ移行する - @voluntas - [CHANGE] Node.js 16 系を落とす From d48bcb58f2b4a767ff9f7c1d3b22b17394482432 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 4 Dec 2023 11:33:29 +0900 Subject: [PATCH 170/182] pnpm up -L -r --- pnpm-lock.yaml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fff27e3b..96db7dfb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -592,15 +592,15 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.10.1 + '@types/node': 20.10.3 dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.10.1: - resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} + /@types/node@20.10.3: + resolution: {integrity: sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==} dependencies: undici-types: 5.26.5 dev: true @@ -1640,8 +1640,8 @@ packages: pathe: 1.1.1 dev: true - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -1874,8 +1874,8 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.5.0: - resolution: {integrity: sha512-JGUEaALvL0Mf6JCfYnJOTcobY+Nc7sG/TemDRBqCA0wEr4DER7zDchaaixTlmOxAjG1uRJmX82EQcxwTQTkqVA==} + /std-env@3.6.0: + resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} dev: true /string-width@4.2.3: @@ -2052,7 +2052,7 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.10.1): + /vite-node@0.34.6(@types/node@20.10.3): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2062,7 +2062,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.4(@types/node@20.10.1) + vite: 5.0.4(@types/node@20.10.3) transitivePeerDependencies: - '@types/node' - less @@ -2074,7 +2074,7 @@ packages: - terser dev: true - /vite@5.0.4(@types/node@20.10.1): + /vite@5.0.4(@types/node@20.10.3): resolution: {integrity: sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -2102,9 +2102,9 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.1 + '@types/node': 20.10.3 esbuild: 0.19.8 - postcss: 8.4.31 + postcss: 8.4.32 rollup: 4.6.1 optionalDependencies: fsevents: 2.3.3 @@ -2143,7 +2143,7 @@ packages: dependencies: '@types/chai': 4.3.11 '@types/chai-subset': 1.3.5 - '@types/node': 20.10.1 + '@types/node': 20.10.3 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2158,12 +2158,12 @@ packages: magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 - std-env: 3.5.0 + std-env: 3.6.0 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.4(@types/node@20.10.1) - vite-node: 0.34.6(@types/node@20.10.1) + vite: 5.0.4(@types/node@20.10.3) + vite-node: 0.34.6(@types/node@20.10.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less From a1647a65459dac84ebde48455e5b75a3a5eb36b4 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 4 Dec 2023 11:33:58 +0900 Subject: [PATCH 171/182] 2023.2.0-canary.14 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1e77e584..591a573c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.13", + "version": "2023.2.0-canary.14", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From 1c2935c4f5e52545f9de5723b68bd42906ae8072 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 23:52:27 +0000 Subject: [PATCH 172/182] Bump vite from 5.0.4 to 5.0.5 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.0.4 to 5.0.5. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.0.5/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: indirect ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 96db7dfb..b63cc0c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2062,7 +2062,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.4(@types/node@20.10.3) + vite: 5.0.5(@types/node@20.10.3) transitivePeerDependencies: - '@types/node' - less @@ -2074,8 +2074,8 @@ packages: - terser dev: true - /vite@5.0.4(@types/node@20.10.3): - resolution: {integrity: sha512-RzAr8LSvM8lmhB4tQ5OPcBhpjOZRZjuxv9zO5UcxeoY2bd3kP3Ticd40Qma9/BqZ8JS96Ll/jeBX9u+LJZrhVg==} + /vite@5.0.5(@types/node@20.10.3): + resolution: {integrity: sha512-OekeWqR9Ls56f3zd4CaxzbbS11gqYkEiBtnWFFgYR2WV8oPJRRKq0mpskYy/XaoCL3L7VINDhqqOMNDiYdGvGg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2162,7 +2162,7 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 5.0.4(@types/node@20.10.3) + vite: 5.0.5(@types/node@20.10.3) vite-node: 0.34.6(@types/node@20.10.3) why-is-node-running: 2.2.2 transitivePeerDependencies: From 9357bf8f311f5dc4dbd6e595c2069544aa778f95 Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Thu, 7 Dec 2023 14:48:30 +0900 Subject: [PATCH 173/182] =?UTF-8?q?type:=20offer=20=E3=81=AE=E3=83=A1?= =?UTF-8?q?=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=81=AB=20session=5Fid=20?= =?UTF-8?q?=E3=81=8C=E5=AD=98=E5=9C=A8=E3=81=97=E3=81=9F=E3=82=89=E4=BF=9D?= =?UTF-8?q?=E6=8C=81=E3=81=99=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 9 +++++++++ packages/sdk/src/types.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index e391913a..9473b29b 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -104,6 +104,10 @@ export default class ConnectionBase { * コネクションID */ connectionId: string | null + /** + * セッションID + */ + sessionId: string | null /** * リモートコネクションIDのリスト */ @@ -249,6 +253,7 @@ export default class ConnectionBase { this.debug = debug this.clientId = null this.connectionId = null + this.sessionId = null this.remoteConnectionIds = [] this.stream = null this.ws = null @@ -680,6 +685,7 @@ export default class ConnectionBase { private initializeConnection(): void { this.clientId = null this.connectionId = null + this.sessionId = null this.remoteConnectionIds = [] this.stream = null this.ws = null @@ -1931,6 +1937,9 @@ export default class ConnectionBase { private signalingOnMessageTypeOffer(message: SignalingOfferMessage): void { this.clientId = message.client_id this.connectionId = message.connection_id + if (message.session_id !== undefined) { + this.sessionId = message.session_id + } if (message.metadata !== undefined) { this.authMetadata = message.metadata } diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 1bddb418..6c6de3e8 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -112,6 +112,7 @@ export type SignalingOfferMessage = { sdp: string client_id: string connection_id: string + session_id?: string bundle_id?: string metadata?: JSONType config?: RTCConfiguration From 5f7db9597934a6545ba7118275000304126f71d1 Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Thu, 7 Dec 2023 15:00:38 +0900 Subject: [PATCH 174/182] =?UTF-8?q?=E4=BF=9D=E6=8C=81=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=BB=E3=83=83=E3=82=B7=E3=83=A7=E3=83=B3=20ID=20=E3=81=AF?= =?UTF-8?q?=20type:=20offer=20=E3=81=AB=E5=90=AB=E3=81=BE=E3=82=8C?= =?UTF-8?q?=E3=81=A6=E3=81=84=E3=81=9F=E3=82=82=E3=81=AE=E3=81=A8=E3=82=B3?= =?UTF-8?q?=E3=83=A1=E3=83=B3=E3=83=88=E3=81=AB=E6=98=8E=E8=A8=98=E3=81=99?= =?UTF-8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/sdk/src/base.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/src/base.ts b/packages/sdk/src/base.ts index 9473b29b..066e60d0 100644 --- a/packages/sdk/src/base.ts +++ b/packages/sdk/src/base.ts @@ -105,7 +105,7 @@ export default class ConnectionBase { */ connectionId: string | null /** - * セッションID + * type offer に含まれるセッションID。Sora 2023.2.0 以降に接続した時に含まれる */ sessionId: string | null /** From cf865a2846da28c25ca276fcdfd5dbc2f63928b2 Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Thu, 7 Dec 2023 15:02:09 +0900 Subject: [PATCH 175/182] =?UTF-8?q?=E5=A4=89=E6=9B=B4=E5=B1=A5=E6=AD=B4?= =?UTF-8?q?=E3=81=AB=E8=BF=BD=E8=A8=98=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index f9b7aedb..f0fc49b3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,8 @@ ## develop +- [ADD] type: offer で受け取ったセッション ID を保持する + - @tnamao - [ADD] 接続オプションとしてビデオコーデック H265 のパラメータの送信を追加 - `ConnectionOptions` 型に `videoH265Params` フィールドを追加 - @tnamao From d087fe11e36317d7ca8feb8e7cd14d06ff060420 Mon Sep 17 00:00:00 2001 From: Takeshi NAMAO Date: Thu, 7 Dec 2023 16:41:34 +0900 Subject: [PATCH 176/182] 2023.2.0-canary.15 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 591a573c..001c06d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.14", + "version": "2023.2.0-canary.15", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From cbeda6ecfa78975043b9055e2179103e07400990 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Dec 2023 15:20:50 +0000 Subject: [PATCH 177/182] chore(deps): update all non-major dependencies --- package.json | 4 ++-- pnpm-lock.yaml | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 001c06d6..95fccce7 100644 --- a/package.json +++ b/package.json @@ -31,13 +31,13 @@ "@biomejs/biome": "1.4.1", "serve": "14.2.1", "typedoc": "0.25.4", - "typescript": "5.3.2", + "typescript": "5.3.3", "vitest": "0.34.6" }, "resolutions": { "get-pkg-repo": "5.0.0" }, - "packageManager": "pnpm@8.11.0", + "packageManager": "pnpm@8.12.0", "engines": { "node": ">=18" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b63cc0c8..7be0ad38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ importers: version: 14.2.1 typedoc: specifier: 0.25.4 - version: 0.25.4(typescript@5.3.2) + version: 0.25.4(typescript@5.3.3) typescript: - specifier: 5.3.2 - version: 5.3.2 + specifier: 5.3.3 + version: 5.3.3 vitest: specifier: 0.34.6 version: 0.34.6 @@ -41,7 +41,7 @@ importers: version: 5.0.5(rollup@4.6.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.3) rollup: specifier: 4.6.1 version: 4.6.1 @@ -71,7 +71,7 @@ importers: version: 5.0.5(rollup@4.6.1) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2) + version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.3) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -435,7 +435,7 @@ packages: rollup: 4.6.1 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.2): + /@rollup/plugin-typescript@11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.3): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -452,7 +452,7 @@ packages: resolve: 1.22.8 rollup: 4.6.1 tslib: 2.6.2 - typescript: 5.3.2 + typescript: 5.3.3 dev: true /@rollup/pluginutils@5.1.0(rollup@4.6.1): @@ -1994,7 +1994,7 @@ packages: engines: {node: '>=12.20'} dev: true - /typedoc@0.25.4(typescript@5.3.2): + /typedoc@0.25.4(typescript@5.3.3): resolution: {integrity: sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==} engines: {node: '>= 16'} hasBin: true @@ -2005,11 +2005,11 @@ packages: marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.5 - typescript: 5.3.2 + typescript: 5.3.3 dev: true - /typescript@5.3.2: - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true dev: true From e9e7e96e8c55cd2a43fe074894c9da0354dd439c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 10 Dec 2023 19:56:14 +0000 Subject: [PATCH 178/182] chore(deps): update dependency rollup to v4.7.0 --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 137 ++++++++++++++++++++----------------- 3 files changed, 75 insertions(+), 66 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 32657fe6..0a554cec 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.6.1", + "rollup": "4.7.0", "tslib": "2.6.2" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 0103a2f4..9571c6b8 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "23.0.1", - "rollup": "4.6.1", + "rollup": "4.7.0", "rollup-plugin-delete": "2.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7be0ad38..b859df89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,16 +35,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.1) + version: 15.2.3(rollup@4.7.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.6.1) + version: 5.0.5(rollup@4.7.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.3) + version: 11.1.5(rollup@4.7.0)(tslib@2.6.2)(typescript@5.3.3) rollup: - specifier: 4.6.1 - version: 4.6.1 + specifier: 4.7.0 + version: 4.7.0 tslib: specifier: 2.6.2 version: 2.6.2 @@ -62,16 +62,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.6.1) + version: 25.0.7(rollup@4.7.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.1) + version: 15.2.3(rollup@4.7.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.6.1) + version: 5.0.5(rollup@4.7.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.3) + version: 11.1.5(rollup@4.7.0)(tslib@2.6.2)(typescript@5.3.3) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -79,8 +79,8 @@ importers: specifier: 23.0.1 version: 23.0.1 rollup: - specifier: 4.6.1 - version: 4.6.1 + specifier: 4.7.0 + version: 4.7.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -385,7 +385,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.6.1): + /@rollup/plugin-commonjs@25.0.7(rollup@4.7.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -394,16 +394,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.7.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.6.1 + rollup: 4.7.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.1): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.7.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.7.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.6.1 + rollup: 4.7.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.6.1): + /@rollup/plugin-replace@5.0.5(rollup@4.7.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.7.0) magic-string: 0.30.5 - rollup: 4.6.1 + rollup: 4.7.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.6.1)(tslib@2.6.2)(typescript@5.3.3): + /@rollup/plugin-typescript@11.1.5(rollup@4.7.0)(tslib@2.6.2)(typescript@5.3.3): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,14 +448,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.7.0) resolve: 1.22.8 - rollup: 4.6.1 + rollup: 4.7.0 tslib: 2.6.2 typescript: 5.3.3 dev: true - /@rollup/pluginutils@5.1.0(rollup@4.6.1): + /@rollup/pluginutils@5.1.0(rollup@4.7.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -467,99 +467,107 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.6.1 + rollup: 4.7.0 dev: true - /@rollup/rollup-android-arm-eabi@4.6.1: - resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} + /@rollup/rollup-android-arm-eabi@4.7.0: + resolution: {integrity: sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.6.1: - resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} + /@rollup/rollup-android-arm64@4.7.0: + resolution: {integrity: sha512-/EBw0cuJ/KVHiU2qyVYUhogXz7W2vXxBzeE9xtVIMC+RyitlY2vvaoysMUqASpkUtoNIHlnKTu/l7mXOPgnKOA==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.6.1: - resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} + /@rollup/rollup-darwin-arm64@4.7.0: + resolution: {integrity: sha512-4VXG1bgvClJdbEYYjQ85RkOtwN8sqI3uCxH0HC5w9fKdqzRzgG39K7GAehATGS8jghA7zNoS5CjSKkDEqWmNZg==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.6.1: - resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} + /@rollup/rollup-darwin-x64@4.7.0: + resolution: {integrity: sha512-/ImhO+T/RWJ96hUbxiCn2yWI0/MeQZV/aeukQQfhxiSXuZJfyqtdHPUPrc84jxCfXTxbJLmg4q+GBETeb61aNw==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.1: - resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.7.0: + resolution: {integrity: sha512-zhye8POvTyUXlKbfPBVqoHy3t43gIgffY+7qBFqFxNqVtltQLtWeHNAbrMnXiLIfYmxcoL/feuLDote2tx+Qbg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.1: - resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} + /@rollup/rollup-linux-arm64-gnu@4.7.0: + resolution: {integrity: sha512-RAdr3OJnUum6Vs83cQmKjxdTg31zJnLLTkjhcFt0auxM6jw00GD6IPFF42uasYPr/wGC6TRm7FsQiJyk0qIEfg==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.6.1: - resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} + /@rollup/rollup-linux-arm64-musl@4.7.0: + resolution: {integrity: sha512-nhWwYsiJwZGq7SyR3afS3EekEOsEAlrNMpPC4ZDKn5ooYSEjDLe9W/xGvoIV8/F/+HNIY6jY8lIdXjjxfxopXw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.6.1: - resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} + /@rollup/rollup-linux-riscv64-gnu@4.7.0: + resolution: {integrity: sha512-rlfy5RnQG1aop1BL/gjdH42M2geMUyVQqd52GJVirqYc787A/XVvl3kQ5NG/43KXgOgE9HXgCaEH05kzQ+hLoA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.7.0: + resolution: {integrity: sha512-cCkoGlGWfBobdDtiiypxf79q6k3/iRVGu1HVLbD92gWV5WZbmuWJCgRM4x2N6i7ljGn1cGytPn9ZAfS8UwF6vg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.6.1: - resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} + /@rollup/rollup-linux-x64-musl@4.7.0: + resolution: {integrity: sha512-R2oBf2p/Arc1m+tWmiWbpHBjEcJnHVnv6bsypu4tcKdrYTpDfl1UT9qTyfkIL1iiii5D4WHxUHCg5X0pzqmxFg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.1: - resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} + /@rollup/rollup-win32-arm64-msvc@4.7.0: + resolution: {integrity: sha512-CPtgaQL1aaPc80m8SCVEoxFGHxKYIt3zQYC3AccL/SqqiWXblo3pgToHuBwR8eCP2Toa+X1WmTR/QKFMykws7g==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.1: - resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} + /@rollup/rollup-win32-ia32-msvc@4.7.0: + resolution: {integrity: sha512-pmioUlttNh9GXF5x2CzNa7Z8kmRTyhEzzAC+2WOOapjewMbl+3tGuAnxbwc5JyG8Jsz2+hf/QD/n5VjimOZ63g==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.6.1: - resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} + /@rollup/rollup-win32-x64-msvc@4.7.0: + resolution: {integrity: sha512-SeZzC2QhhdBQUm3U0c8+c/P6UlRyBcLL2Xp5KX7z46WXZxzR8RJSIWL9wSUeBTgxog5LTPJuPj0WOT9lvrtP7Q==} cpu: [x64] os: [win32] requiresBuild: true @@ -1749,23 +1757,24 @@ packages: del: 5.1.0 dev: true - /rollup@4.6.1: - resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} + /rollup@4.7.0: + resolution: {integrity: sha512-7Kw0dUP4BWH78zaZCqF1rPyQ8D5DSU6URG45v1dqS/faNsx9WXyess00uTOZxKr7oR/4TOjO1CPudT8L1UsEgw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.1 - '@rollup/rollup-android-arm64': 4.6.1 - '@rollup/rollup-darwin-arm64': 4.6.1 - '@rollup/rollup-darwin-x64': 4.6.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 - '@rollup/rollup-linux-arm64-gnu': 4.6.1 - '@rollup/rollup-linux-arm64-musl': 4.6.1 - '@rollup/rollup-linux-x64-gnu': 4.6.1 - '@rollup/rollup-linux-x64-musl': 4.6.1 - '@rollup/rollup-win32-arm64-msvc': 4.6.1 - '@rollup/rollup-win32-ia32-msvc': 4.6.1 - '@rollup/rollup-win32-x64-msvc': 4.6.1 + '@rollup/rollup-android-arm-eabi': 4.7.0 + '@rollup/rollup-android-arm64': 4.7.0 + '@rollup/rollup-darwin-arm64': 4.7.0 + '@rollup/rollup-darwin-x64': 4.7.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.7.0 + '@rollup/rollup-linux-arm64-gnu': 4.7.0 + '@rollup/rollup-linux-arm64-musl': 4.7.0 + '@rollup/rollup-linux-riscv64-gnu': 4.7.0 + '@rollup/rollup-linux-x64-gnu': 4.7.0 + '@rollup/rollup-linux-x64-musl': 4.7.0 + '@rollup/rollup-win32-arm64-msvc': 4.7.0 + '@rollup/rollup-win32-ia32-msvc': 4.7.0 + '@rollup/rollup-win32-x64-msvc': 4.7.0 fsevents: 2.3.3 dev: true @@ -2105,7 +2114,7 @@ packages: '@types/node': 20.10.3 esbuild: 0.19.8 postcss: 8.4.32 - rollup: 4.6.1 + rollup: 4.7.0 optionalDependencies: fsevents: 2.3.3 dev: true From b28316ddcc6d0b44c30700c48084201551f74a30 Mon Sep 17 00:00:00 2001 From: voluntas Date: Mon, 11 Dec 2023 12:05:46 +0900 Subject: [PATCH 179/182] pnpm up -L -r --- package.json | 2 +- pnpm-lock.yaml | 344 ++++++++++++++++++++++++++++--------------------- 2 files changed, 196 insertions(+), 150 deletions(-) diff --git a/package.json b/package.json index 95fccce7..841fe6da 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "serve": "14.2.1", "typedoc": "0.25.4", "typescript": "5.3.3", - "vitest": "0.34.6" + "vitest": "1.0.4" }, "resolutions": { "get-pkg-repo": "5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b859df89..4e202cf5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: 5.3.3 version: 5.3.3 vitest: - specifier: 0.34.6 - version: 0.34.6 + specifier: 1.0.4 + version: 1.0.4 packages/e2ee: dependencies: @@ -155,8 +155,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.8: - resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} + /@esbuild/android-arm64@0.19.9: + resolution: {integrity: sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -164,8 +164,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.8: - resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} + /@esbuild/android-arm@0.19.9: + resolution: {integrity: sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -173,8 +173,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.8: - resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} + /@esbuild/android-x64@0.19.9: + resolution: {integrity: sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -182,8 +182,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.8: - resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} + /@esbuild/darwin-arm64@0.19.9: + resolution: {integrity: sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -191,8 +191,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.8: - resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} + /@esbuild/darwin-x64@0.19.9: + resolution: {integrity: sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -200,8 +200,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.8: - resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} + /@esbuild/freebsd-arm64@0.19.9: + resolution: {integrity: sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -209,8 +209,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.8: - resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} + /@esbuild/freebsd-x64@0.19.9: + resolution: {integrity: sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -218,8 +218,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.8: - resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} + /@esbuild/linux-arm64@0.19.9: + resolution: {integrity: sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -227,8 +227,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.8: - resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} + /@esbuild/linux-arm@0.19.9: + resolution: {integrity: sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -236,8 +236,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.8: - resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} + /@esbuild/linux-ia32@0.19.9: + resolution: {integrity: sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -245,8 +245,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.8: - resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} + /@esbuild/linux-loong64@0.19.9: + resolution: {integrity: sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -254,8 +254,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.8: - resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} + /@esbuild/linux-mips64el@0.19.9: + resolution: {integrity: sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -263,8 +263,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.8: - resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} + /@esbuild/linux-ppc64@0.19.9: + resolution: {integrity: sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -272,8 +272,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.8: - resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} + /@esbuild/linux-riscv64@0.19.9: + resolution: {integrity: sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -281,8 +281,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.8: - resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} + /@esbuild/linux-s390x@0.19.9: + resolution: {integrity: sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -290,8 +290,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.8: - resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} + /@esbuild/linux-x64@0.19.9: + resolution: {integrity: sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -299,8 +299,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.8: - resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} + /@esbuild/netbsd-x64@0.19.9: + resolution: {integrity: sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -308,8 +308,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.8: - resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} + /@esbuild/openbsd-x64@0.19.9: + resolution: {integrity: sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -317,8 +317,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.8: - resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} + /@esbuild/sunos-x64@0.19.9: + resolution: {integrity: sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -326,8 +326,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.8: - resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} + /@esbuild/win32-arm64@0.19.9: + resolution: {integrity: sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -335,8 +335,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.8: - resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} + /@esbuild/win32-ia32@0.19.9: + resolution: {integrity: sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -344,8 +344,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.8: - resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} + /@esbuild/win32-x64@0.19.9: + resolution: {integrity: sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -582,16 +582,6 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@types/chai-subset@1.3.5: - resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} - dependencies: - '@types/chai': 4.3.11 - dev: true - - /@types/chai@4.3.11: - resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} - dev: true - /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -600,15 +590,15 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.10.3 + '@types/node': 20.10.4 dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.10.3: - resolution: {integrity: sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==} + /@types/node@20.10.4: + resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} dependencies: undici-types: 5.26.5 dev: true @@ -617,38 +607,38 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + /@vitest/expect@1.0.4: + resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==} dependencies: - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 + '@vitest/spy': 1.0.4 + '@vitest/utils': 1.0.4 chai: 4.3.10 dev: true - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + /@vitest/runner@1.0.4: + resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==} dependencies: - '@vitest/utils': 0.34.6 - p-limit: 4.0.0 + '@vitest/utils': 1.0.4 + p-limit: 5.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + /@vitest/snapshot@1.0.4: + resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==} dependencies: magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + /@vitest/spy@1.0.4: + resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==} dependencies: tinyspy: 2.2.0 dev: true - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + /@vitest/utils@1.0.4: + resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.7 @@ -667,8 +657,8 @@ packages: negotiator: 0.6.3 dev: true - /acorn-walk@8.3.0: - resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} engines: {node: '>=0.4.0'} dev: true @@ -1047,34 +1037,34 @@ packages: engines: {node: '>=0.12'} dev: true - /esbuild@0.19.8: - resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} + /esbuild@0.19.9: + resolution: {integrity: sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.19.8 - '@esbuild/android-arm64': 0.19.8 - '@esbuild/android-x64': 0.19.8 - '@esbuild/darwin-arm64': 0.19.8 - '@esbuild/darwin-x64': 0.19.8 - '@esbuild/freebsd-arm64': 0.19.8 - '@esbuild/freebsd-x64': 0.19.8 - '@esbuild/linux-arm': 0.19.8 - '@esbuild/linux-arm64': 0.19.8 - '@esbuild/linux-ia32': 0.19.8 - '@esbuild/linux-loong64': 0.19.8 - '@esbuild/linux-mips64el': 0.19.8 - '@esbuild/linux-ppc64': 0.19.8 - '@esbuild/linux-riscv64': 0.19.8 - '@esbuild/linux-s390x': 0.19.8 - '@esbuild/linux-x64': 0.19.8 - '@esbuild/netbsd-x64': 0.19.8 - '@esbuild/openbsd-x64': 0.19.8 - '@esbuild/sunos-x64': 0.19.8 - '@esbuild/win32-arm64': 0.19.8 - '@esbuild/win32-ia32': 0.19.8 - '@esbuild/win32-x64': 0.19.8 + '@esbuild/android-arm': 0.19.9 + '@esbuild/android-arm64': 0.19.9 + '@esbuild/android-x64': 0.19.9 + '@esbuild/darwin-arm64': 0.19.9 + '@esbuild/darwin-x64': 0.19.9 + '@esbuild/freebsd-arm64': 0.19.9 + '@esbuild/freebsd-x64': 0.19.9 + '@esbuild/linux-arm': 0.19.9 + '@esbuild/linux-arm64': 0.19.9 + '@esbuild/linux-ia32': 0.19.9 + '@esbuild/linux-loong64': 0.19.9 + '@esbuild/linux-mips64el': 0.19.9 + '@esbuild/linux-ppc64': 0.19.9 + '@esbuild/linux-riscv64': 0.19.9 + '@esbuild/linux-s390x': 0.19.9 + '@esbuild/linux-x64': 0.19.9 + '@esbuild/netbsd-x64': 0.19.9 + '@esbuild/openbsd-x64': 0.19.9 + '@esbuild/sunos-x64': 0.19.9 + '@esbuild/win32-arm64': 0.19.9 + '@esbuild/win32-ia32': 0.19.9 + '@esbuild/win32-x64': 0.19.9 dev: true /estree-walker@2.0.2: @@ -1096,6 +1086,21 @@ packages: strip-final-newline: 2.0.0 dev: true + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1168,6 +1173,11 @@ packages: engines: {node: '>=10'} dev: true + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1259,6 +1269,11 @@ packages: engines: {node: '>=10.17.0'} dev: true + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -1366,6 +1381,11 @@ packages: engines: {node: '>=8'} dev: true + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -1405,7 +1425,7 @@ packages: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.14.2 + ws: 8.15.0 xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -1421,9 +1441,12 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 dev: true /loupe@2.3.7: @@ -1495,6 +1518,11 @@ packages: engines: {node: '>=6'} dev: true + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -1554,6 +1582,13 @@ packages: path-key: 3.1.1 dev: true + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -1576,9 +1611,16 @@ packages: mimic-fn: 2.1.0 dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: yocto-queue: 1.0.0 dev: true @@ -1610,6 +1652,11 @@ packages: engines: {node: '>=8'} dev: true + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -1852,8 +1899,8 @@ packages: engines: {node: '>=8'} dev: true - /shiki@0.14.5: - resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} + /shiki@0.14.6: + resolution: {integrity: sha512-R4koBBlQP33cC8cpzX0hAoOURBHJILp4Aaduh2eYi+Vj8ZBqtK/5SWNEHBS3qwUMu8dqOtI/ftno3ESfNeVW9g==} dependencies: ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 @@ -1869,6 +1916,11 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -1924,6 +1976,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -1955,8 +2012,8 @@ packages: resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + /tinypool@0.8.1: + resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} engines: {node: '>=14.0.0'} dev: true @@ -2013,7 +2070,7 @@ packages: lunr: 2.3.9 marked: 4.3.0 minimatch: 9.0.3 - shiki: 0.14.5 + shiki: 0.14.6 typescript: 5.3.3 dev: true @@ -2061,17 +2118,16 @@ packages: engines: {node: '>= 0.8'} dev: true - /vite-node@0.34.6(@types/node@20.10.3): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} + /vite-node@1.0.4: + resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.5(@types/node@20.10.3) + vite: 5.0.7 transitivePeerDependencies: - '@types/node' - less @@ -2083,8 +2139,8 @@ packages: - terser dev: true - /vite@5.0.5(@types/node@20.10.3): - resolution: {integrity: sha512-OekeWqR9Ls56f3zd4CaxzbbS11gqYkEiBtnWFFgYR2WV8oPJRRKq0mpskYy/XaoCL3L7VINDhqqOMNDiYdGvGg==} + /vite@5.0.7: + resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -2111,30 +2167,29 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.3 - esbuild: 0.19.8 + esbuild: 0.19.9 postcss: 8.4.32 rollup: 4.7.0 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} + /vitest@1.0.4: + resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': ^1.0.0 + '@vitest/ui': ^1.0.0 happy-dom: '*' jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true + '@types/node': + optional: true '@vitest/browser': optional: true '@vitest/ui': @@ -2143,36 +2198,27 @@ packages: optional: true jsdom: optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true dependencies: - '@types/chai': 4.3.11 - '@types/chai-subset': 1.3.5 - '@types/node': 20.10.3 - '@vitest/expect': 0.34.6 - '@vitest/runner': 0.34.6 - '@vitest/snapshot': 0.34.6 - '@vitest/spy': 0.34.6 - '@vitest/utils': 0.34.6 - acorn: 8.11.2 - acorn-walk: 8.3.0 + '@vitest/expect': 1.0.4 + '@vitest/runner': 1.0.4 + '@vitest/snapshot': 1.0.4 + '@vitest/spy': 1.0.4 + '@vitest/utils': 1.0.4 + acorn-walk: 8.3.1 cac: 6.7.14 chai: 4.3.10 debug: 4.3.4 - local-pkg: 0.4.3 + execa: 8.0.1 + local-pkg: 0.5.0 magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.6.0 strip-literal: 1.3.0 tinybench: 2.5.1 - tinypool: 0.7.0 - vite: 5.0.5(@types/node@20.10.3) - vite-node: 0.34.6(@types/node@20.10.3) + tinypool: 0.8.1 + vite: 5.0.7 + vite-node: 1.0.4 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -2261,8 +2307,8 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} + /ws@8.15.0: + resolution: {integrity: sha512-H/Z3H55mrcrgjFwI+5jKavgXvwQLtfPCUEp6pi35VhoB0pfcHnSoyuTzkBEZpzq49g1193CUEwIvmsjcotenYw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 From fa4b044bb32e9609260d3fad14d25708064c822b Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 12 Dec 2023 16:11:53 +0900 Subject: [PATCH 180/182] pnpm up --- packages/e2ee/package.json | 2 +- packages/sdk/package.json | 2 +- pnpm-lock.yaml | 134 ++++++++++++++++++------------------- 3 files changed, 69 insertions(+), 69 deletions(-) diff --git a/packages/e2ee/package.json b/packages/e2ee/package.json index 0a554cec..b03f5cf4 100644 --- a/packages/e2ee/package.json +++ b/packages/e2ee/package.json @@ -19,7 +19,7 @@ "@rollup/plugin-node-resolve": "15.2.3", "@rollup/plugin-replace": "5.0.5", "@rollup/plugin-typescript": "11.1.5", - "rollup": "4.7.0", + "rollup": "4.8.0", "tslib": "2.6.2" }, "dependencies": { diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 9571c6b8..c03ebffc 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-typescript": "11.1.5", "@shiguredo/lyra-wasm": "2023.1.0", "jsdom": "23.0.1", - "rollup": "4.7.0", + "rollup": "4.8.0", "rollup-plugin-delete": "2.0.0" }, "dependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4e202cf5..52a03667 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,16 +35,16 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.7.0) + version: 15.2.3(rollup@4.8.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.7.0) + version: 5.0.5(rollup@4.8.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.7.0)(tslib@2.6.2)(typescript@5.3.3) + version: 11.1.5(rollup@4.8.0)(tslib@2.6.2)(typescript@5.3.3) rollup: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.8.0 + version: 4.8.0 tslib: specifier: 2.6.2 version: 2.6.2 @@ -62,16 +62,16 @@ importers: devDependencies: '@rollup/plugin-commonjs': specifier: 25.0.7 - version: 25.0.7(rollup@4.7.0) + version: 25.0.7(rollup@4.8.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.7.0) + version: 15.2.3(rollup@4.8.0) '@rollup/plugin-replace': specifier: 5.0.5 - version: 5.0.5(rollup@4.7.0) + version: 5.0.5(rollup@4.8.0) '@rollup/plugin-typescript': specifier: 11.1.5 - version: 11.1.5(rollup@4.7.0)(tslib@2.6.2)(typescript@5.3.3) + version: 11.1.5(rollup@4.8.0)(tslib@2.6.2)(typescript@5.3.3) '@shiguredo/lyra-wasm': specifier: 2023.1.0 version: 2023.1.0 @@ -79,8 +79,8 @@ importers: specifier: 23.0.1 version: 23.0.1 rollup: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.8.0 + version: 4.8.0 rollup-plugin-delete: specifier: 2.0.0 version: 2.0.0 @@ -385,7 +385,7 @@ packages: fastq: 1.15.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.7.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.8.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -394,16 +394,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.7.0) + '@rollup/pluginutils': 5.1.0(rollup@4.8.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.7.0 + rollup: 4.8.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.7.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.8.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -412,16 +412,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.7.0) + '@rollup/pluginutils': 5.1.0(rollup@4.8.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.7.0 + rollup: 4.8.0 dev: true - /@rollup/plugin-replace@5.0.5(rollup@4.7.0): + /@rollup/plugin-replace@5.0.5(rollup@4.8.0): resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -430,12 +430,12 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.7.0) + '@rollup/pluginutils': 5.1.0(rollup@4.8.0) magic-string: 0.30.5 - rollup: 4.7.0 + rollup: 4.8.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.7.0)(tslib@2.6.2)(typescript@5.3.3): + /@rollup/plugin-typescript@11.1.5(rollup@4.8.0)(tslib@2.6.2)(typescript@5.3.3): resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -448,14 +448,14 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.7.0) + '@rollup/pluginutils': 5.1.0(rollup@4.8.0) resolve: 1.22.8 - rollup: 4.7.0 + rollup: 4.8.0 tslib: 2.6.2 typescript: 5.3.3 dev: true - /@rollup/pluginutils@5.1.0(rollup@4.7.0): + /@rollup/pluginutils@5.1.0(rollup@4.8.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -467,107 +467,107 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.7.0 + rollup: 4.8.0 dev: true - /@rollup/rollup-android-arm-eabi@4.7.0: - resolution: {integrity: sha512-rGku10pL1StFlFvXX5pEv88KdGW6DHUghsxyP/aRYb9eH+74jTGJ3U0S/rtlsQ4yYq1Hcc7AMkoJOb1xu29Fxw==} + /@rollup/rollup-android-arm-eabi@4.8.0: + resolution: {integrity: sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.7.0: - resolution: {integrity: sha512-/EBw0cuJ/KVHiU2qyVYUhogXz7W2vXxBzeE9xtVIMC+RyitlY2vvaoysMUqASpkUtoNIHlnKTu/l7mXOPgnKOA==} + /@rollup/rollup-android-arm64@4.8.0: + resolution: {integrity: sha512-aiItwP48BiGpMFS9Znjo/xCNQVwTQVcRKkFKsO81m8exrGjHkCBDvm9PHay2kpa8RPnZzzKcD1iQ9KaLY4fPQQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.7.0: - resolution: {integrity: sha512-4VXG1bgvClJdbEYYjQ85RkOtwN8sqI3uCxH0HC5w9fKdqzRzgG39K7GAehATGS8jghA7zNoS5CjSKkDEqWmNZg==} + /@rollup/rollup-darwin-arm64@4.8.0: + resolution: {integrity: sha512-zhNIS+L4ZYkYQUjIQUR6Zl0RXhbbA0huvNIWjmPc2SL0cB1h5Djkcy+RZ3/Bwszfb6vgwUvcVJYD6e6Zkpsi8g==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.7.0: - resolution: {integrity: sha512-/ImhO+T/RWJ96hUbxiCn2yWI0/MeQZV/aeukQQfhxiSXuZJfyqtdHPUPrc84jxCfXTxbJLmg4q+GBETeb61aNw==} + /@rollup/rollup-darwin-x64@4.8.0: + resolution: {integrity: sha512-A/FAHFRNQYrELrb/JHncRWzTTXB2ticiRFztP4ggIUAfa9Up1qfW8aG2w/mN9jNiZ+HB0t0u0jpJgFXG6BfRTA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.7.0: - resolution: {integrity: sha512-zhye8POvTyUXlKbfPBVqoHy3t43gIgffY+7qBFqFxNqVtltQLtWeHNAbrMnXiLIfYmxcoL/feuLDote2tx+Qbg==} + /@rollup/rollup-linux-arm-gnueabihf@4.8.0: + resolution: {integrity: sha512-JsidBnh3p2IJJA4/2xOF2puAYqbaczB3elZDT0qHxn362EIoIkq7hrR43Xa8RisgI6/WPfvb2umbGsuvf7E37A==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.7.0: - resolution: {integrity: sha512-RAdr3OJnUum6Vs83cQmKjxdTg31zJnLLTkjhcFt0auxM6jw00GD6IPFF42uasYPr/wGC6TRm7FsQiJyk0qIEfg==} + /@rollup/rollup-linux-arm64-gnu@4.8.0: + resolution: {integrity: sha512-hBNCnqw3EVCkaPB0Oqd24bv8SklETptQWcJz06kb9OtiShn9jK1VuTgi7o4zPSt6rNGWQOTDEAccbk0OqJmS+g==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.7.0: - resolution: {integrity: sha512-nhWwYsiJwZGq7SyR3afS3EekEOsEAlrNMpPC4ZDKn5ooYSEjDLe9W/xGvoIV8/F/+HNIY6jY8lIdXjjxfxopXw==} + /@rollup/rollup-linux-arm64-musl@4.8.0: + resolution: {integrity: sha512-Fw9ChYfJPdltvi9ALJ9wzdCdxGw4wtq4t1qY028b2O7GwB5qLNSGtqMsAel1lfWTZvf4b6/+4HKp0GlSYg0ahA==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.7.0: - resolution: {integrity: sha512-rlfy5RnQG1aop1BL/gjdH42M2geMUyVQqd52GJVirqYc787A/XVvl3kQ5NG/43KXgOgE9HXgCaEH05kzQ+hLoA==} + /@rollup/rollup-linux-riscv64-gnu@4.8.0: + resolution: {integrity: sha512-BH5xIh7tOzS9yBi8dFrCTG8Z6iNIGWGltd3IpTSKp6+pNWWO6qy8eKoRxOtwFbMrid5NZaidLYN6rHh9aB8bEw==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.7.0: - resolution: {integrity: sha512-cCkoGlGWfBobdDtiiypxf79q6k3/iRVGu1HVLbD92gWV5WZbmuWJCgRM4x2N6i7ljGn1cGytPn9ZAfS8UwF6vg==} + /@rollup/rollup-linux-x64-gnu@4.8.0: + resolution: {integrity: sha512-PmvAj8k6EuWiyLbkNpd6BLv5XeYFpqWuRvRNRl80xVfpGXK/z6KYXmAgbI4ogz7uFiJxCnYcqyvZVD0dgFog7Q==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.7.0: - resolution: {integrity: sha512-R2oBf2p/Arc1m+tWmiWbpHBjEcJnHVnv6bsypu4tcKdrYTpDfl1UT9qTyfkIL1iiii5D4WHxUHCg5X0pzqmxFg==} + /@rollup/rollup-linux-x64-musl@4.8.0: + resolution: {integrity: sha512-mdxnlW2QUzXwY+95TuxZ+CurrhgrPAMveDWI97EQlA9bfhR8tw3Pt7SUlc/eSlCNxlWktpmT//EAA8UfCHOyXg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.7.0: - resolution: {integrity: sha512-CPtgaQL1aaPc80m8SCVEoxFGHxKYIt3zQYC3AccL/SqqiWXblo3pgToHuBwR8eCP2Toa+X1WmTR/QKFMykws7g==} + /@rollup/rollup-win32-arm64-msvc@4.8.0: + resolution: {integrity: sha512-ge7saUz38aesM4MA7Cad8CHo0Fyd1+qTaqoIo+Jtk+ipBi4ATSrHWov9/S4u5pbEQmLjgUjB7BJt+MiKG2kzmA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.7.0: - resolution: {integrity: sha512-pmioUlttNh9GXF5x2CzNa7Z8kmRTyhEzzAC+2WOOapjewMbl+3tGuAnxbwc5JyG8Jsz2+hf/QD/n5VjimOZ63g==} + /@rollup/rollup-win32-ia32-msvc@4.8.0: + resolution: {integrity: sha512-p9E3PZlzurhlsN5h9g7zIP1DnqKXJe8ZUkFwAazqSvHuWfihlIISPxG9hCHCoA+dOOspL/c7ty1eeEVFTE0UTw==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.7.0: - resolution: {integrity: sha512-SeZzC2QhhdBQUm3U0c8+c/P6UlRyBcLL2Xp5KX7z46WXZxzR8RJSIWL9wSUeBTgxog5LTPJuPj0WOT9lvrtP7Q==} + /@rollup/rollup-win32-x64-msvc@4.8.0: + resolution: {integrity: sha512-kb4/auKXkYKqlUYTE8s40FcJIj5soOyRLHKd4ugR0dCq0G2EfcF54eYcfQiGkHzjidZ40daB4ulsFdtqNKZtBg==} cpu: [x64] os: [win32] requiresBuild: true @@ -1804,24 +1804,24 @@ packages: del: 5.1.0 dev: true - /rollup@4.7.0: - resolution: {integrity: sha512-7Kw0dUP4BWH78zaZCqF1rPyQ8D5DSU6URG45v1dqS/faNsx9WXyess00uTOZxKr7oR/4TOjO1CPudT8L1UsEgw==} + /rollup@4.8.0: + resolution: {integrity: sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.7.0 - '@rollup/rollup-android-arm64': 4.7.0 - '@rollup/rollup-darwin-arm64': 4.7.0 - '@rollup/rollup-darwin-x64': 4.7.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.7.0 - '@rollup/rollup-linux-arm64-gnu': 4.7.0 - '@rollup/rollup-linux-arm64-musl': 4.7.0 - '@rollup/rollup-linux-riscv64-gnu': 4.7.0 - '@rollup/rollup-linux-x64-gnu': 4.7.0 - '@rollup/rollup-linux-x64-musl': 4.7.0 - '@rollup/rollup-win32-arm64-msvc': 4.7.0 - '@rollup/rollup-win32-ia32-msvc': 4.7.0 - '@rollup/rollup-win32-x64-msvc': 4.7.0 + '@rollup/rollup-android-arm-eabi': 4.8.0 + '@rollup/rollup-android-arm64': 4.8.0 + '@rollup/rollup-darwin-arm64': 4.8.0 + '@rollup/rollup-darwin-x64': 4.8.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.8.0 + '@rollup/rollup-linux-arm64-gnu': 4.8.0 + '@rollup/rollup-linux-arm64-musl': 4.8.0 + '@rollup/rollup-linux-riscv64-gnu': 4.8.0 + '@rollup/rollup-linux-x64-gnu': 4.8.0 + '@rollup/rollup-linux-x64-musl': 4.8.0 + '@rollup/rollup-win32-arm64-msvc': 4.8.0 + '@rollup/rollup-win32-ia32-msvc': 4.8.0 + '@rollup/rollup-win32-x64-msvc': 4.8.0 fsevents: 2.3.3 dev: true @@ -2169,7 +2169,7 @@ packages: dependencies: esbuild: 0.19.9 postcss: 8.4.32 - rollup: 4.7.0 + rollup: 4.8.0 optionalDependencies: fsevents: 2.3.3 dev: true From 90b4b408c0908311514dacbd5971e4186fa1c21f Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 12 Dec 2023 16:13:13 +0900 Subject: [PATCH 181/182] =?UTF-8?q?=E3=83=AA=E3=83=AA=E3=83=BC=E3=82=B9?= =?UTF-8?q?=E6=BA=96=E5=82=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGES.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index f0fc49b3..8cdef16c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,10 @@ ## develop +## 2023.2.0 + +**2023-12-08** + - [ADD] type: offer で受け取ったセッション ID を保持する - @tnamao - [ADD] 接続オプションとしてビデオコーデック H265 のパラメータの送信を追加 diff --git a/package.json b/package.json index 841fe6da..44930356 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sora-js-sdk", - "version": "2023.2.0-canary.15", + "version": "2023.2.0", "description": "WebRTC SFU Sora JavaScript SDK", "main": "dist/sora.js", "module": "dist/sora.mjs", From 47f6645dcdb28260faa856fbfc23aa60f8f52a6a Mon Sep 17 00:00:00 2001 From: voluntas Date: Tue, 12 Dec 2023 16:14:15 +0900 Subject: [PATCH 182/182] =?UTF-8?q?.vscode=20=E4=BB=A5=E4=B8=8B=E3=82=92?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 2c24faf6..6ce2adb8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,7 +14,7 @@ "editor.defaultFormatter": "biomejs.biome" }, "editor.codeActionsOnSave": { - "quickfix.biome": true, - "source.organizeImports.biome": true + "quickfix.biome": "explicit", + "source.organizeImports.biome": "explicit" } }