From 04ce0164e3c92d85f05d581b7dbef2b2c35f3126 Mon Sep 17 00:00:00 2001 From: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> Date: Mon, 25 Jan 2021 13:13:37 +0100 Subject: [PATCH 01/76] Add basic files, including confituration files and package.json (#1) * Add basic files, including confituration files and package.json * Delete index.js content --- .gitignore | 1 + dist/index.js | 0 index.html | 20 + jest.config.js | 8 + package-lock.json | 5751 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 33 + src/index.ts | 0 tsconfig.json | 70 + webpack.config.js | 23 + 9 files changed, 5906 insertions(+) create mode 100644 .gitignore create mode 100644 dist/index.js create mode 100644 index.html create mode 100644 jest.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/index.ts create mode 100644 tsconfig.json create mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000..e69de29 diff --git a/index.html b/index.html new file mode 100644 index 0000000..d769ce7 --- /dev/null +++ b/index.html @@ -0,0 +1,20 @@ + + + + + + + + CodersCamp2020 | Pokemon Fight + + + + + + + + + + + + \ No newline at end of file diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..352aaa7 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,8 @@ +module.exports = { + roots: ['/src'], + transform: { + '^.+\\.tsx?$': 'ts-jest', + }, + testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$', + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7597019 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5751 @@ +{ + "name": "coderscamp2020.project.typescript.pokemonfight", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/core": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz", + "integrity": "sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.10", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.11.tgz", + "integrity": "sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.11", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz", + "integrity": "sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.12.10", + "@babel/template": "^7.12.7", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz", + "integrity": "sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz", + "integrity": "sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.12.10", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz", + "integrity": "sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.10" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz", + "integrity": "sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.7", + "@babel/helper-optimise-call-expression": "^7.12.10", + "@babel/traverse": "^7.12.10", + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz", + "integrity": "sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g==", + "dev": true, + "requires": { + "@babel/types": "^7.12.11" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.11.tgz", + "integrity": "sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg==", + "dev": true + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/template": { + "version": "7.12.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz", + "integrity": "sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.12.7", + "@babel/types": "^7.12.7" + } + }, + "@babel/traverse": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.12.tgz", + "integrity": "sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.11", + "@babel/generator": "^7.12.11", + "@babel/helper-function-name": "^7.12.11", + "@babel/helper-split-export-declaration": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/types": "^7.12.12", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.12.tgz", + "integrity": "sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + } + }, + "@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + } + }, + "@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "node-notifier": "^8.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + } + }, + "@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + } + }, + "@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + } + }, + "@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + } + }, + "@sinonjs/commons": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", + "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/babel__core": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", + "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz", + "integrity": "sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/eslint": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.6.tgz", + "integrity": "sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz", + "integrity": "sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true + }, + "@types/istanbul-lib-report": { + "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, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "26.0.20", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.20.tgz", + "integrity": "sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==", + "dev": true, + "requires": { + "jest-diff": "^26.0.0", + "pretty-format": "^26.0.0" + } + }, + "@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "@types/node": { + "version": "14.14.22", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.22.tgz", + "integrity": "sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/prettier": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.6.tgz", + "integrity": "sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA==", + "dev": true + }, + "@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz", + "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.0.tgz", + "integrity": "sha512-Un0SdBoN1h4ACnIO7EiCjWuyhNI0Jl96JC+63q6xi4HDUYRZn8Auluea9D+v9NWKc5J4sICVEltdBaVjLX39xw==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.1.tgz", + "integrity": "sha512-fLnDML5HZ5AEKzHul8xLAksoKN2cibu6MgonkUj8R9V7bbeVRkd1XbGEGWrAUNYHbX1jcqCsDEpBviE5StPMzQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.2.2.tgz", + "integrity": "sha512-03GkWxcgFfm8+WIwcsqJb9agrSDNDDoxaNnexPnCCexP5SCE4IgFd9lNpSy+K2nFqVMpgTFw6SwbmVAVTndVew==", + "dev": true + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "acorn": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.0.4.tgz", + "integrity": "sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ==", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "requires": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", + "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^4.0.0", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserslist": { + "version": "4.16.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", + "integrity": "sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001173", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.634", + "escalade": "^3.1.1", + "node-releases": "^1.1.69" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001179", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz", + "integrity": "sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "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 + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true + }, + "domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "requires": { + "webidl-conversions": "^5.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.3.644", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz", + "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==", + "dev": true + }, + "emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true + }, + "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 + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "envinfo": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", + "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.3.26", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", + "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "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, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "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 + }, + "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, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "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 + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "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, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.1.tgz", + "integrity": "sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "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 + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true, + "optional": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.5" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true, + "optional": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz", + "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", + "dev": true + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "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, + "optional": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", + "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "dependencies": { + "jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "requires": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + } + } + } + }, + "jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + } + } + }, + "jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + } + }, + "jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + } + }, + "jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + } + }, + "jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "requires": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + } + }, + "jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true + }, + "jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + } + }, + "jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + } + }, + "jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "requires": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + } + }, + "jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + } + }, + "jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true + }, + "jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + } + }, + "jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + } + }, + "jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "requires": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + } + }, + "jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "requires": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + } + }, + "jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + } + }, + "jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "dependencies": { + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "requires": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + } + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz", + "integrity": "sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "acorn": "^7.1.1", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.2.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.14.1", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "5.1.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.8", + "saxes": "^5.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.3", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "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 + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "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 + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "dev": true + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "dev": true, + "requires": { + "mime-db": "1.45.0" + } + }, + "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 + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", + "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "1.1.70", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.70.tgz", + "integrity": "sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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 + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@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" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "react-is": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz", + "integrity": "sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "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 + } + } + }, + "rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "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 + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "string-length": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", + "integrity": "sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "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 + } + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", + "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "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 + }, + "tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.5.1.tgz", + "integrity": "sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "dev": true, + "requires": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + } + }, + "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, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "ts-jest": { + "version": "26.4.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz", + "integrity": "sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg==", + "dev": true, + "requires": { + "@types/jest": "26.x", + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^26.1.0", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "mkdirp": "1.x", + "semver": "7.x", + "yargs-parser": "20.x" + }, + "dependencies": { + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + } + } + }, + "ts-loader": { + "version": "8.0.14", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.14.tgz", + "integrity": "sha512-Jt/hHlUnApOZjnSjTmZ+AbD5BGlQFx3f1D0nYuNKwz0JJnuDGHJas6az+FlWKwwRTu+26GXpv249A8UAnYUpqA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz", + "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true + }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "v8-to-istanbul": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz", + "integrity": "sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "requires": { + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watchpack": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.0.tgz", + "integrity": "sha512-UjgD1mqjkG99+3lgG36at4wPnUXNvis2v1utwTgQ43C22c4LD71LsYMExdWXh4HZ+RmW+B0t1Vrg2GpXAkTOQw==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "webpack": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.17.0.tgz", + "integrity": "sha512-R+IdNEaYcYaACpXZOt7reyc8txBK7J06lOPkX1SbgmeoAnUbyBZivJIksrDBnmMA3wlTWvPcX7DubxELyPB8rA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.3.26", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "pkg-dir": "^5.0.0", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + } + }, + "webpack-cli": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.4.0.tgz", + "integrity": "sha512-/Qh07CXfXEkMu5S8wEpjuaw2Zj/CC0hf/qbTDp6N8N7JjdGuaOjZ7kttz+zhuJO/J5m7alQEhNk9lsc4rC6xgQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.0", + "@webpack-cli/info": "^1.2.1", + "@webpack-cli/serve": "^1.2.2", + "colorette": "^1.2.1", + "commander": "^6.2.0", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } + } + }, + "webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "requires": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + } + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", + "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", + "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "y18n": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "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 + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4c1b9dc --- /dev/null +++ b/package.json @@ -0,0 +1,33 @@ +{ + "name": "coderscamp2020.project.typescript.pokemonfight", + "version": "1.0.0", + "description": "**UWAGA! Zaczynając pracę nad projektem — nie róbcie forka.\r Jedna osoba z zespołu (np. Mentor) powinna użyć przycisku `Use this template` i dodać innych członków zespołu jako Collaborators do tego repozytorium.\r Mentorzy mogą dowolnie zmieniać zakres projektu lub zdecydować się na zupełnie inny temat.**", + "main": "index.ts", + "scripts": { + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "build": "webpack", + "start": "webpack --watch" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/lukaszdutka/CodersCamp2020.Project.TypeScript.pokemonfight.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/lukaszdutka/CodersCamp2020.Project.TypeScript.pokemonfight/issues" + }, + "homepage": "https://github.com/lukaszdutka/CodersCamp2020.Project.TypeScript.pokemonfight#readme", + "devDependencies": { + "@types/jest": "^26.0.20", + "jest": "^26.6.3", + "ts-jest": "^26.4.4", + "ts-loader": "^8.0.14", + "typescript": "^4.1.3", + "webpack": "^5.17.0", + "webpack-cli": "^4.4.0" + }, + "dependencies": {} +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..e69de29 diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..4902bf8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,70 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */ + "module": "es2015", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + } +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..5d2e786 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,23 @@ +const path = require('path'); + +module.exports = { + entry: './src/index.ts', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', + publicPath: './dist' + }, + devtool: 'inline-source-map', + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: 'ts-loader' + } + ] + }, + resolve: { + extensions: ['.ts', '.js'] + }, +}; \ No newline at end of file From 42b9376ecdf09110d3550f66126f573bb1b52ea5 Mon Sep 17 00:00:00 2001 From: Daria <44535712+daria305@users.noreply.github.com> Date: Mon, 25 Jan 2021 13:18:21 +0100 Subject: [PATCH 02/76] MNG-73 Add workflow for gh-pages (#2) Should work on master as Ola added package.json in different task. --- .github/workflows/node.js.yml | 49 +++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/node.js.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 0000000..5b69f05 --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,49 @@ +# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Node.js CI + +on: + push: + paths-ignore: + - '**/*.md' + +jobs: + build: + name: "Build Pokemon Fight application" + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: 14.x + - run: npm ci + - run: npm run build --if-present + - run: npm test + - uses: actions/upload-artifact@v1 + name: Upload build as artifact + if: always() + with: + name: pokefight-dist + path: ./dist + deploy-on-github-pages: + name: "Deploy app to GitHub Pages from master branch source code" + if: github.ref == 'refs/heads/master' + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v2 + with: + name: pokefight-dist + path: ./dist + - name: Deploy app as GitHub Pages + uses: peaceiris/actions-gh-pages@v3.7.0-6 + if: ${{ github.event_name != 'pull_request' && always() }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: "./dist" + user_name: 'github-actions[bot]' + user_email: 'github-actions[bot]@users.noreply.github.com' + force_orphan: true + keep_files: false From e18cd6e2ae73cecfe9b58ac441703ca41ae5ba92 Mon Sep 17 00:00:00 2001 From: mariusz-sm <74978639+mariusz-sm@users.noreply.github.com> Date: Tue, 26 Jan 2021 21:03:42 +0100 Subject: [PATCH 03/76] MNG-77_SetupSASSforProject (#3) * Add scss files * Import files to app.scss and add placeholders * Add mixin to responsive-view * Change config import order * Add comments to files * Add mixin to config file --- styles/SASS/_animations.scss | 1 + styles/SASS/_config.scss | 13 +++++++++ styles/SASS/_fight-view.scss | 1 + styles/SASS/_loading-view.scss | 1 + styles/SASS/_pokemon-choose-view.scss | 1 + styles/SASS/_resets.scss | 5 ++++ styles/SASS/_responsive-view.scss | 2 ++ styles/SASS/_start-view.scss | 1 + styles/SASS/app.scss | 38 +++++++++++++++++++++++++++ styles/app.css | 12 +++++++++ 10 files changed, 75 insertions(+) create mode 100644 styles/SASS/_animations.scss create mode 100644 styles/SASS/_config.scss create mode 100644 styles/SASS/_fight-view.scss create mode 100644 styles/SASS/_loading-view.scss create mode 100644 styles/SASS/_pokemon-choose-view.scss create mode 100644 styles/SASS/_resets.scss create mode 100644 styles/SASS/_responsive-view.scss create mode 100644 styles/SASS/_start-view.scss create mode 100644 styles/SASS/app.scss create mode 100644 styles/app.css diff --git a/styles/SASS/_animations.scss b/styles/SASS/_animations.scss new file mode 100644 index 0000000..f5c60ee --- /dev/null +++ b/styles/SASS/_animations.scss @@ -0,0 +1 @@ +// Placeholder for animations (keyframes) \ No newline at end of file diff --git a/styles/SASS/_config.scss b/styles/SASS/_config.scss new file mode 100644 index 0000000..41f2366 --- /dev/null +++ b/styles/SASS/_config.scss @@ -0,0 +1,13 @@ +// Placeholder for variables, colors, mixins etc. + +// Example of variable +$background-color: white; +$text-color: black; +$mobile: 800px; + + +@mixins mobile { + @media (max-width: $mobile) { + @content + } +} \ No newline at end of file diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss new file mode 100644 index 0000000..faf8c07 --- /dev/null +++ b/styles/SASS/_fight-view.scss @@ -0,0 +1 @@ +// Styles for pokemon fighting screen. Common elements should be added to _config.scss in mixins. \ No newline at end of file diff --git a/styles/SASS/_loading-view.scss b/styles/SASS/_loading-view.scss new file mode 100644 index 0000000..c1297a4 --- /dev/null +++ b/styles/SASS/_loading-view.scss @@ -0,0 +1 @@ +// Styles for loading screen. Common elements should be added to _config.scss in mixins. \ No newline at end of file diff --git a/styles/SASS/_pokemon-choose-view.scss b/styles/SASS/_pokemon-choose-view.scss new file mode 100644 index 0000000..988b14f --- /dev/null +++ b/styles/SASS/_pokemon-choose-view.scss @@ -0,0 +1 @@ +// Styles for pokemon choosing screen. Common elements should be added to _config.scss in mixins. \ No newline at end of file diff --git a/styles/SASS/_resets.scss b/styles/SASS/_resets.scss new file mode 100644 index 0000000..b6f0eb2 --- /dev/null +++ b/styles/SASS/_resets.scss @@ -0,0 +1,5 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/styles/SASS/_responsive-view.scss b/styles/SASS/_responsive-view.scss new file mode 100644 index 0000000..5f10aaa --- /dev/null +++ b/styles/SASS/_responsive-view.scss @@ -0,0 +1,2 @@ +// Placeholder for @media-query-breakpoints + diff --git a/styles/SASS/_start-view.scss b/styles/SASS/_start-view.scss new file mode 100644 index 0000000..fb4c1f9 --- /dev/null +++ b/styles/SASS/_start-view.scss @@ -0,0 +1 @@ +// Styles for start page. Common elements should be added to _config.scss in mixins. \ No newline at end of file diff --git a/styles/SASS/app.scss b/styles/SASS/app.scss new file mode 100644 index 0000000..768c8b3 --- /dev/null +++ b/styles/SASS/app.scss @@ -0,0 +1,38 @@ +// File should contains: +// - styles for body, footer, p, h1, ... +// - styles for buttons and scrollbars +// - imports for rest of _.scss files + +@import './resets'; +@import './config'; +@import './loading-view'; +@import './start-view'; +@import './pokemon-choose-view'; +@import './fight-view'; +@import './animations'; +@import './responsive-view'; + +body { + background-color: $background-color; + color: $text-color; +} + +footer { + // ... +} + +p { + // ... +} + +a { + // ... +} + +h1 { + // ... +} + +h2 { + // ... +} \ No newline at end of file diff --git a/styles/app.css b/styles/app.css new file mode 100644 index 0000000..7283d98 --- /dev/null +++ b/styles/app.css @@ -0,0 +1,12 @@ +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + background-color: white; + color: black; +} +/*# sourceMappingURL=app.css.map */ \ No newline at end of file From 6521410943095c6a5543d20ec96d3dabdf9c7c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C5=82gorzata=20Dziewit?= Date: Tue, 26 Jan 2021 21:31:07 +0100 Subject: [PATCH 04/76] MNG-87-add images and fonts to project (#4) * MNG-87-add images and fonts to project * MNG-87 add images rename images, fix one typo from styles > sass config file, deleted bellota Text font - can be add from google fonts with @import --- assets/PokemonSolid.ttf | Bin 0 -> 25548 bytes assets/abra.png | Bin 0 -> 30280 bytes assets/bulbasaur.png | Bin 0 -> 32691 bytes assets/charmander.png | Bin 0 -> 27405 bytes assets/clefairy.png | Bin 0 -> 33567 bytes assets/geodude.png | Bin 0 -> 29806 bytes assets/machop.png | Bin 0 -> 30110 bytes assets/pidgey.png | Bin 0 -> 29544 bytes assets/pikachu.png | Bin 0 -> 30070 bytes assets/pokeball.png | Bin 0 -> 21426 bytes assets/rattata.png | Bin 0 -> 32081 bytes assets/sandshrew.png | Bin 0 -> 32839 bytes assets/snorlax.png | Bin 0 -> 36397 bytes assets/squirtle.png | Bin 0 -> 29116 bytes assets/weedle.png | Bin 0 -> 24480 bytes styles/SASS/_config.scss | 2 +- styles/app.css | 3 +-- styles/app.css.map | 17 +++++++++++++++++ 18 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 assets/PokemonSolid.ttf create mode 100644 assets/abra.png create mode 100644 assets/bulbasaur.png create mode 100644 assets/charmander.png create mode 100644 assets/clefairy.png create mode 100644 assets/geodude.png create mode 100644 assets/machop.png create mode 100644 assets/pidgey.png create mode 100644 assets/pikachu.png create mode 100644 assets/pokeball.png create mode 100644 assets/rattata.png create mode 100644 assets/sandshrew.png create mode 100644 assets/snorlax.png create mode 100644 assets/squirtle.png create mode 100644 assets/weedle.png create mode 100644 styles/app.css.map diff --git a/assets/PokemonSolid.ttf b/assets/PokemonSolid.ttf new file mode 100644 index 0000000000000000000000000000000000000000..918fe22dc64b84451b8bf658b56cb7556099ee47 GIT binary patch literal 25548 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 literal 0 HcmV?d00001 diff --git a/assets/bulbasaur.png b/assets/bulbasaur.png new file mode 100644 index 0000000000000000000000000000000000000000..0618d9fdb900ac691fe385a32fa4f1e60ad38182 GIT binary patch literal 32691 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 R;syW!002ovPDHLkV1nlqG_C*u literal 0 HcmV?d00001 diff --git a/assets/charmander.png b/assets/charmander.png new file mode 100644 index 0000000000000000000000000000000000000000..1468a5d1c382eddef80f2e5b98e95214c88a0788 GIT binary patch literal 27405 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�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 T7T^5*H&-$eisBWb2LAsS_{Mat literal 0 HcmV?d00001 diff --git a/assets/pidgey.png b/assets/pidgey.png new file mode 100644 index 0000000000000000000000000000000000000000..539de2afbb221bf153c1080969ca92eefbd96052 GIT binary patch literal 29544 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 literal 0 HcmV?d00001 diff --git a/assets/pikachu.png b/assets/pikachu.png new file mode 100644 index 0000000000000000000000000000000000000000..b94c676928b24129e8cb11744ff4386411f56556 GIT binary patch literal 30070 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 oCsZ;;ZC(-O5kZLfJqiN2N)eDmOSH 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 Rr@R0F002ovPDHLkV1jrkv4a2r literal 0 HcmV?d00001 diff --git a/assets/rattata.png b/assets/rattata.png new file mode 100644 index 0000000000000000000000000000000000000000..4718f60891d31921143c3b6f37ecb3e8d89edc01 GIT binary patch literal 32081 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ðV+$PE}UfZ6iy^G8)MH82sU^^imV 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 literal 0 HcmV?d00001 diff --git a/assets/sandshrew.png b/assets/sandshrew.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2de3168c050179ea76067c7308a863cfa8dfff GIT binary patch literal 32839 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

kda(AL9b!7|TX9y=5L)b; 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 Y0Dc5RUt$Gg0RR9107*qoM6N<$g6V_Z{r~^~ literal 0 HcmV?d00001 diff --git a/assets/squirtle.png b/assets/squirtle.png new file mode 100644 index 0000000000000000000000000000000000000000..224f6e92356fbe4a030789055cd83c97f2c650c4 GIT binary patch literal 29116 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 Vd;Q~yPtQLCWF!>DKZqLo|6fzXfgAt; literal 0 HcmV?d00001 diff --git a/assets/weedle.png b/assets/weedle.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b84e59a9371b7292dec2111bf40240057eb2bf GIT binary patch literal 24480 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 Date: Thu, 28 Jan 2021 11:38:01 +0100 Subject: [PATCH 05/76] MNG-76 Create Loading Page styled loading page added fonts addes variables - colors and some mixins --- assets/zzz.png | Bin 0 -> 834 bytes index.html | 11 ++++- styles/SASS/_config.scss | 36 +++++++++++++--- styles/SASS/_loading-view.scss | 29 ++++++++++++- styles/SASS/_responsive-view.scss | 2 - styles/SASS/_responsive.scss | 7 +++ styles/SASS/app.scss | 18 ++++++-- styles/app.css | 69 ++++++++++++++++++++++++++++-- styles/app.css.map | 4 +- 9 files changed, 156 insertions(+), 20 deletions(-) create mode 100644 assets/zzz.png delete mode 100644 styles/SASS/_responsive-view.scss create mode 100644 styles/SASS/_responsive.scss diff --git a/assets/zzz.png b/assets/zzz.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9799f36a6c9c4fa0434eb9097ce29951b10db0 GIT binary patch literal 834 zcmV-I1HJr-P)>(0R}T+k^0-Eyg(7I0|Su( zH4xYjF4g{xFLeMO;DwpX&}V;pu3QcIrP~;fh94jTId4s?5vwccYVzZ8a#G(_4h~{M z1Xod=m)MHbB>TPpe*12@O-U6fl&ciOyf+?wc>^)wK5k%BC16c1ddU;fUb_&|?@r3#-1+O3Ms!=da-L_t9_T#GlirqocM<@0z5`3^ zHEz<2gA6uDw-a4-3kXt(I!W9^WH42lIN|G1X55e zz3i}~=GuiVNzacm1uU(5Gukhl`grv96C|WqI=djmb$Q23w#pO`&v_oFgTEjlUa*6l zmmu`y$?+sWbu0bz2JYVeHc%3PjZ)kJffZ(z24+M9LO>Gl`J<`eFk~82F_BV^CFeVP z*oOr8D@;-d$x~qJ0NA!A6Imbr1M><~2Ne){3HTtM2S~PUcG8fY-MrEWGt4-XUfQyi z6uHbC_;bP2W`QCQUGE6*mBB)(`g7AMO2P@Q%bSW8JVU%CKmx3d7QCs*I=|cSO!1Zg zO|c1CXQ2Re#YayOv*T-RyeH}J1zFSO0}lB$7ic3+Z#0|1KmY&$ M07*qoM6N<$f CodersCamp2020 | Pokemon Fight - + +

+

Please wait a bit, we are looking for the Poké Flute to wake up Snorlax to fight.

+ zzz + sleeping snorlax +
+ +
+ TypeScript Mangos project for CodersCamp2020 +
diff --git a/styles/SASS/_config.scss b/styles/SASS/_config.scss index 56b4afd..c953fef 100644 --- a/styles/SASS/_config.scss +++ b/styles/SASS/_config.scss @@ -1,13 +1,35 @@ // Placeholder for variables, colors, mixins etc. // Example of variable -$background-color: white; -$text-color: black; -$mobile: 800px; +$color-red: #9b1d20ff; +$color-black: #020402ff; +$color-white: #e8f1f2ff; +$color-blue: #235789ff; +$color-yellow: #e3b505ff; +$mobile: 768px; -@mixin mobile { - @media (max-width: $mobile) { - @content +@import url('https://fonts.googleapis.com/css2?family=Bellota+Text:wght@400;700&display=swap'); + +@font-face { + font-family: "Pokemon Solid"; + src: url(../assets/PokemonSolid.ttf); +} + +@mixin transition-ease { + transition: all 0.3s ease-in-out; +} + +@mixin boxshadow { + box-shadow: 2px 2px 2px $color-black; +} + +@mixin dropshadow { + filter: drop-shadow(2px 2px 2px $color-black); +} + +@mixin desktop { + @media screen and (min-width: $mobile) { + @content; } -} \ No newline at end of file + } \ No newline at end of file diff --git a/styles/SASS/_loading-view.scss b/styles/SASS/_loading-view.scss index c1297a4..5c126bd 100644 --- a/styles/SASS/_loading-view.scss +++ b/styles/SASS/_loading-view.scss @@ -1 +1,28 @@ -// Styles for loading screen. Common elements should be added to _config.scss in mixins. \ No newline at end of file +// Styles for loading screen. Common elements should be added to _config.scss in mixins. +#loading-view { + width: 100%; + height: 100vh; + margin: auto; + padding: 10vw; + background-color: $color-white; + display: flex; + flex-flow: column nowrap; + justify-content: center; + align-items: center; + + p { + max-width: 400px; + text-align: center; + margin-bottom: 1em; + } + + img { + width: fit-content; + } + + #zzz { + position: relative; + left: 50px; + @include dropshadow; + } +} \ No newline at end of file diff --git a/styles/SASS/_responsive-view.scss b/styles/SASS/_responsive-view.scss deleted file mode 100644 index 5f10aaa..0000000 --- a/styles/SASS/_responsive-view.scss +++ /dev/null @@ -1,2 +0,0 @@ -// Placeholder for @media-query-breakpoints - diff --git a/styles/SASS/_responsive.scss b/styles/SASS/_responsive.scss new file mode 100644 index 0000000..8af7f8f --- /dev/null +++ b/styles/SASS/_responsive.scss @@ -0,0 +1,7 @@ +// Placeholder for @media-query-breakpoints +// Mobile first! So mobile view is default. Here you design other views +@include desktop { + #loading-view { + //no style needed + } +} \ No newline at end of file diff --git a/styles/SASS/app.scss b/styles/SASS/app.scss index 768c8b3..870cfb7 100644 --- a/styles/SASS/app.scss +++ b/styles/SASS/app.scss @@ -10,15 +10,25 @@ @import './pokemon-choose-view'; @import './fight-view'; @import './animations'; -@import './responsive-view'; +@import './responsive'; body { - background-color: $background-color; - color: $text-color; + font-family: 'Bellota Text', cursive; + font-size: 24px; + letter-spacing: .05em; + color: $color-black; } footer { - // ... + font-size: .5em; + font-weight: bold; + text-align: center; + position: fixed; + top: 50%; + margin-left: .5em; + transform: rotate(-90deg) translate(-50%); + transform-origin: top left; + white-space: nowrap; } p { diff --git a/styles/app.css b/styles/app.css index a5ed90a..37710b0 100644 --- a/styles/app.css +++ b/styles/app.css @@ -1,11 +1,74 @@ +@import url("https://fonts.googleapis.com/css2?family=Bellota+Text:wght@400;700&display=swap"); * { - box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; margin: 0; padding: 0; } +@font-face { + font-family: "Pokemon Solid"; + src: url(../assets/PokemonSolid.ttf); +} + +#loading-view { + width: 100%; + height: 100vh; + margin: auto; + padding: 10vw; + background-color: #e8f1f2ff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +#loading-view p { + max-width: 400px; + text-align: center; + margin-bottom: 1em; +} + +#loading-view img { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} + +#loading-view #zzz { + position: relative; + left: 50px; + -webkit-filter: drop-shadow(2px 2px 2px #020402ff); + filter: drop-shadow(2px 2px 2px #020402ff); +} + body { - background-color: white; - color: black; + font-family: 'Bellota Text', cursive; + font-size: 24px; + letter-spacing: .05em; + color: #020402ff; +} + +footer { + font-size: .5em; + font-weight: bold; + text-align: center; + position: fixed; + top: 50%; + margin-left: .5em; + -webkit-transform: rotate(-90deg) translate(-50%); + transform: rotate(-90deg) translate(-50%); + -webkit-transform-origin: top left; + transform-origin: top left; + white-space: nowrap; } /*# sourceMappingURL=app.css.map */ \ No newline at end of file diff --git a/styles/app.css.map b/styles/app.css.map index 03f4ce7..1806ad5 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "ACAA,AAAA,CAAC,CAAC;EACE,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;CACb;;ADUD,AAAA,IAAI,CAAC;EACD,gBAAgB,EEZD,KAAK;EFapB,KAAK,EEZI,KAAK;CFajB", + "mappings": "AEWA,OAAO,CAAC,sFAAI;ADXZ,AAAA,CAAC,CAAC;EACE,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;CACb;;ACSD,UAAU;EACR,WAAW,EAAE,eAAe;EAC5B,GAAG,EAAE,+BAA+B;;;ACdtC,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,gBAAgB,EDDJ,SAAS;ECErB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAiBpB;;AA1BD,AAWE,aAXW,CAWX,CAAC,CAAC;EACA,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,GAAG;CACnB;;AAfH,AAiBE,aAjBW,CAiBX,GAAG,CAAC;EACF,KAAK,EAAE,WAAW;CACnB;;AAnBH,AAqBE,aArBW,CAqBX,IAAI,CAAC;EACH,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,IAAI;EDGZ,MAAM,EAAE,kCAAqC;CCD5C;;AHZH,AAAA,IAAI,CAAC;EACD,WAAW,EAAE,uBAAuB;EACpC,SAAS,EAAE,IAAI;EACf,cAAc,EAAE,KAAK;EACrB,KAAK,EEdK,SAAS;CFetB;;AAED,AAAA,MAAM,CAAC;EACH,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,cAAc,CAAC,eAAe;EACzC,gBAAgB,EAAE,QAAQ;EAC1B,WAAW,EAAE,MAAM;CACtB", "sources": [ "SASS/app.scss", "SASS/_resets.scss", @@ -10,7 +10,7 @@ "SASS/_pokemon-choose-view.scss", "SASS/_fight-view.scss", "SASS/_animations.scss", - "SASS/_responsive-view.scss" + "SASS/_responsive.scss" ], "names": [], "file": "app.css" From 36d9be3119669538ea5e0c24031b36312b3dbe5e Mon Sep 17 00:00:00 2001 From: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> Date: Thu, 28 Jan 2021 18:43:48 +0100 Subject: [PATCH 06/76] MNG-83 Add the Pokemon class (#5) * Add the Pokemon class * Fix getters and setters in Pokemon Class * Change getters into functions, remove isAlive key, add readonly to some keys * Fix Pokemon.subtractHP method * Change pokemonType to PokemonType --- src/pokemonClass.ts | 70 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/pokemonClass.ts diff --git a/src/pokemonClass.ts b/src/pokemonClass.ts new file mode 100644 index 0000000..3dd8e2c --- /dev/null +++ b/src/pokemonClass.ts @@ -0,0 +1,70 @@ +export type PokemonType = + | "grass" + | "poison" + | "fire" + | "water" + | "bug" + | "normal" + | "flying" + | "electric" + | "ground" + | "fairy" + | "psychic" + | "fighting" + | "rock"; + +export abstract class Pokemon { + constructor() {} + abstract readonly _name: string; + abstract readonly _image: string; + abstract readonly _maxHP: number; + abstract _currentHP: number; + abstract readonly _attackPoints: number; + abstract readonly _defensePoints: number; + abstract readonly _types: PokemonType[]; + abstract readonly _moves: { moveName: string; moveType: PokemonType }[]; + + get name() { + return this._name; + } + + get image() { + return this._image; + } + + get currentHP() { + return this._currentHP; + } + + subtractHP(pointsToSubtract: number): void { + const newHP = this._currentHP - pointsToSubtract; + if (newHP < 0) { + this._currentHP = 0; + } + this._currentHP = newHP; + } + + heal(): void { + this._currentHP = this._maxHP; + } + + get attackPoints() { + return this._attackPoints; + } + + get defensePoints() { + return this._defensePoints; + } + + get types() { + return this._types; + } + + get moves() { + return this._moves; + } + + isAlive(): boolean { + return this._currentHP > 0; + } +} From b8b10dfeda96295fc6d95f3b0fbcfacf08fba15f Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Fri, 29 Jan 2021 09:11:08 +0100 Subject: [PATCH 07/76] MNG-76 loading page fixed variable names added transition added template placeholders for diffrent views to html --- index.html | 12 ++++++++++++ styles/SASS/_config.scss | 16 ++++++++-------- styles/SASS/_loading-view.scss | 5 ++++- styles/SASS/_resets.scss | 10 +++++++++- styles/SASS/app.scss | 5 +++-- styles/app.css | 22 +++++++++++++++++++--- styles/app.css.map | 2 +- 7 files changed, 56 insertions(+), 16 deletions(-) diff --git a/index.html b/index.html index 05c5537..bdfdc21 100644 --- a/index.html +++ b/index.html @@ -18,6 +18,18 @@ sleeping snorlax + + + + + +
TypeScript Mangos project for CodersCamp2020
diff --git a/styles/SASS/_config.scss b/styles/SASS/_config.scss index c953fef..d9bc475 100644 --- a/styles/SASS/_config.scss +++ b/styles/SASS/_config.scss @@ -1,11 +1,11 @@ // Placeholder for variables, colors, mixins etc. // Example of variable -$color-red: #9b1d20ff; -$color-black: #020402ff; -$color-white: #e8f1f2ff; -$color-blue: #235789ff; -$color-yellow: #e3b505ff; +$color-primary: #9b1d20ff; +$color-text: #020402ff; +$color-bg: #e8f1f2ff; +$color-optional-one: #235789ff; +$color-optional-two: #e3b505ff; $mobile: 768px; @@ -17,15 +17,15 @@ $mobile: 768px; } @mixin transition-ease { - transition: all 0.3s ease-in-out; + transition: all .5s ease-in-out; } @mixin boxshadow { - box-shadow: 2px 2px 2px $color-black; + box-shadow: 2px 2px 2px $color-text; } @mixin dropshadow { - filter: drop-shadow(2px 2px 2px $color-black); + filter: drop-shadow(2px 2px 2px $color-text); } @mixin desktop { diff --git a/styles/SASS/_loading-view.scss b/styles/SASS/_loading-view.scss index 5c126bd..9656cd0 100644 --- a/styles/SASS/_loading-view.scss +++ b/styles/SASS/_loading-view.scss @@ -4,20 +4,23 @@ height: 100vh; margin: auto; padding: 10vw; - background-color: $color-white; + background-color: $color-bg; display: flex; flex-flow: column nowrap; justify-content: center; align-items: center; + @include transition-ease; p { max-width: 400px; text-align: center; margin-bottom: 1em; + @include transition-ease; } img { width: fit-content; + @include transition-ease; } #zzz { diff --git a/styles/SASS/_resets.scss b/styles/SASS/_resets.scss index b6f0eb2..1b0c003 100644 --- a/styles/SASS/_resets.scss +++ b/styles/SASS/_resets.scss @@ -1,5 +1,13 @@ * { - box-sizing: border-box; margin: 0; padding: 0; +} + +html { + box-sizing: border-box; + font-size: 10px; +} + +*, *:before, *:after { + box-sizing: inherit; } \ No newline at end of file diff --git a/styles/SASS/app.scss b/styles/SASS/app.scss index 870cfb7..00a8678 100644 --- a/styles/SASS/app.scss +++ b/styles/SASS/app.scss @@ -14,9 +14,10 @@ body { font-family: 'Bellota Text', cursive; - font-size: 24px; + font-size: 2.4em; letter-spacing: .05em; - color: $color-black; + background-color: $color-bg; + color: $color-text; } footer { diff --git a/styles/app.css b/styles/app.css index 37710b0..e312748 100644 --- a/styles/app.css +++ b/styles/app.css @@ -1,11 +1,20 @@ @import url("https://fonts.googleapis.com/css2?family=Bellota+Text:wght@400;700&display=swap"); * { - -webkit-box-sizing: border-box; - box-sizing: border-box; margin: 0; padding: 0; } +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; + font-size: 10px; +} + +*, *:before, *:after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + @font-face { font-family: "Pokemon Solid"; src: url(../assets/PokemonSolid.ttf); @@ -30,18 +39,24 @@ -webkit-box-align: center; -ms-flex-align: center; align-items: center; + -webkit-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; } #loading-view p { max-width: 400px; text-align: center; margin-bottom: 1em; + -webkit-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; } #loading-view img { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; + -webkit-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; } #loading-view #zzz { @@ -53,8 +68,9 @@ body { font-family: 'Bellota Text', cursive; - font-size: 24px; + font-size: 2.4em; letter-spacing: .05em; + background-color: #e8f1f2ff; color: #020402ff; } diff --git a/styles/app.css.map b/styles/app.css.map index 1806ad5..46e67f3 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "AEWA,OAAO,CAAC,sFAAI;ADXZ,AAAA,CAAC,CAAC;EACE,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;CACb;;ACSD,UAAU;EACR,WAAW,EAAE,eAAe;EAC5B,GAAG,EAAE,+BAA+B;;;ACdtC,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,gBAAgB,EDDJ,SAAS;ECErB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAiBpB;;AA1BD,AAWE,aAXW,CAWX,CAAC,CAAC;EACA,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,GAAG;CACnB;;AAfH,AAiBE,aAjBW,CAiBX,GAAG,CAAC;EACF,KAAK,EAAE,WAAW;CACnB;;AAnBH,AAqBE,aArBW,CAqBX,IAAI,CAAC;EACH,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,IAAI;EDGZ,MAAM,EAAE,kCAAqC;CCD5C;;AHZH,AAAA,IAAI,CAAC;EACD,WAAW,EAAE,uBAAuB;EACpC,SAAS,EAAE,IAAI;EACf,cAAc,EAAE,KAAK;EACrB,KAAK,EEdK,SAAS;CFetB;;AAED,AAAA,MAAM,CAAC;EACH,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,cAAc,CAAC,eAAe;EACzC,gBAAgB,EAAE,QAAQ;EAC1B,WAAW,EAAE,MAAM;CACtB", + "mappings": "AEWA,OAAO,CAAC,sFAAI;ADXZ,AAAA,CAAC,CAAC;EACE,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;CACb;;AAED,AAAA,IAAI,CAAC;EACD,UAAU,EAAE,UAAU;EACtB,SAAS,EAAE,IAAI;CAClB;;AAED,AAAA,CAAC,EAAE,CAAC,AAAA,OAAO,EAAE,CAAC,AAAA,MAAM,CAAC;EACjB,UAAU,EAAE,OAAO;CACtB;;ACCD,UAAU;EACR,WAAW,EAAE,eAAe;EAC5B,GAAG,EAAE,+BAA+B;;;ACdtC,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,gBAAgB,EDDP,SAAS;ECElB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EDSjB,UAAU,EAAE,mBAAmB;CCWlC;;AA7BD,AAYE,aAZW,CAYX,CAAC,CAAC;EACA,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,GAAG;EDGlB,UAAU,EAAE,mBAAmB;CCDhC;;AAjBH,AAmBE,aAnBW,CAmBX,GAAG,CAAC;EACF,KAAK,EAAE,WAAW;EDFlB,UAAU,EAAE,mBAAmB;CCIhC;;AAtBH,AAwBE,aAxBW,CAwBX,IAAI,CAAC;EACH,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,IAAI;EDAZ,MAAM,EAAE,kCAAoC;CCE3C;;AHfH,AAAA,IAAI,CAAC;EACD,WAAW,EAAE,uBAAuB;EACpC,SAAS,EAAE,KAAK;EAChB,cAAc,EAAE,KAAK;EACrB,gBAAgB,EEbT,SAAS;EFchB,KAAK,EEfI,SAAS;CFgBrB;;AAED,AAAA,MAAM,CAAC;EACH,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,cAAc,CAAC,eAAe;EACzC,gBAAgB,EAAE,QAAQ;EAC1B,WAAW,EAAE,MAAM;CACtB", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From 1c62f918c11ab566110215fc8e8736e3f7a7daf9 Mon Sep 17 00:00:00 2001 From: mariusz-sm <74978639+mariusz-sm@users.noreply.github.com> Date: Mon, 1 Feb 2021 11:14:02 +0100 Subject: [PATCH 08/76] MNG-78-starting-page (#7) * Add template for starting page * Add basic styling to starting page * Pre-position the elements * Change color names * Style info buttons * Style header * Add button hover class * Add hover to start btn * Add template for info modal * Add placeholder attribute to input field * Add styling for responsive view * Adjust index.html * Resolve conflicts * Correct responsive view --- index.html | 41 +++++- styles/SASS/_config.scss | 10 +- styles/SASS/_resets.scss | 6 + styles/SASS/_responsive.scss | 58 ++++++++ styles/SASS/_start-view.scss | 194 ++++++++++++++++++++++++- styles/app.css | 271 +++++++++++++++++++++++++++++++---- styles/app.css.map | 2 +- 7 files changed, 550 insertions(+), 32 deletions(-) diff --git a/index.html b/index.html index bdfdc21..5b532a2 100644 --- a/index.html +++ b/index.html @@ -18,8 +18,45 @@ sleeping snorlax - diff --git a/src/__tests__/gameHandlerClass.spec.ts b/src/__tests__/gameHandlerClass.spec.ts index 05ab052..640b1cb 100644 --- a/src/__tests__/gameHandlerClass.spec.ts +++ b/src/__tests__/gameHandlerClass.spec.ts @@ -5,7 +5,6 @@ import { PokemonType } from "../pokemonClass"; import * as data from "../../assets/poke_data.json"; describe("Test Game Handler class", () => { - const pokeData = data.pokemons; const getPlayerOne = (factory: PokemonFactory) => { return new Player("Wojtek", [ @@ -13,7 +12,7 @@ describe("Test Game Handler class", () => { factory.getPokemonByName("charmander"), factory.getPokemonByName("pikachu"), ]); - } + }; const getPlayerTwo = (factory: PokemonFactory) => { return new Player("Wojtek", [ @@ -21,7 +20,7 @@ describe("Test Game Handler class", () => { factory.getPokemonByName("charmander"), factory.getPokemonByName("pikachu"), ]); - } + }; it("GameHandler.isGameFinished should return false if every player has at least one pokemon", () => { // Given @@ -41,12 +40,11 @@ describe("Test Game Handler class", () => { // Given const factory = new PokemonFactory(pokeData); const playerOne = getPlayerOne(factory); - const playerTwo = getPlayerTwo(factory) + const playerTwo = getPlayerTwo(factory); const gameHandler = new GameHandler(playerOne, playerTwo); // When - playerOne.pokemons.forEach((pokemon) => - pokemon.subtractHP(pokemon.maxHP)); + playerOne.pokemons.forEach((pokemon) => pokemon.subtractHP(pokemon.maxHP)); const isGameFinished = gameHandler.isGameFinished(); // Then @@ -56,11 +54,11 @@ describe("Test Game Handler class", () => { // Given const factory = new PokemonFactory(pokeData); const playerOne = getPlayerOne(factory); - const playerTwo = getPlayerTwo(factory) + const playerTwo = getPlayerTwo(factory); const gameHandler = new GameHandler(playerOne, playerTwo); // When - playerTwo.pokemons[1].subtractHP(playerTwo.pokemons[1].maxHP) + playerTwo.pokemons[1].subtractHP(playerTwo.pokemons[1].maxHP); const isGameFinished = gameHandler.isGameFinished(); // Then @@ -70,12 +68,11 @@ describe("Test Game Handler class", () => { // Given const factory = new PokemonFactory(pokeData); const playerOne = getPlayerOne(factory); - const playerTwo = getPlayerTwo(factory) + const playerTwo = getPlayerTwo(factory); const gameHandler = new GameHandler(playerOne, playerTwo); // When - const winner = () => - gameHandler.getWinner(); + const winner = () => gameHandler.getWinner(); // Then expect(winner).toThrowError( @@ -86,17 +83,14 @@ describe("Test Game Handler class", () => { // Given const factory = new PokemonFactory(pokeData); const playerOne = getPlayerOne(factory); - const playerTwo = getPlayerTwo(factory) + const playerTwo = getPlayerTwo(factory); const gameHandler = new GameHandler(playerOne, playerTwo); - // When - playerTwo.pokemons.forEach((pokemon) => - pokemon.subtractHP(pokemon.maxHP)); + playerTwo.pokemons.forEach((pokemon) => pokemon.subtractHP(pokemon.maxHP)); const winner = gameHandler.getWinner(); // Then expect(winner).toStrictEqual(playerOne); }); }); - diff --git a/src/choosePokemonsPage/addChosenPokemon.ts b/src/choosePokemonsPage/addChosenPokemon.ts new file mode 100644 index 0000000..5cb895a --- /dev/null +++ b/src/choosePokemonsPage/addChosenPokemon.ts @@ -0,0 +1,16 @@ +import { Pokemon } from "../pokemonClass"; +import { PokemonFactory } from "../pokemonFactory"; +import { Player } from "../playerClass"; + +export const addChosenPokemon = ( + event: Event, + factory: PokemonFactory, + activePlayer: Player +) => { + const clickedPokemon = event.target as HTMLImageElement; + const pokemonName = clickedPokemon.id; + const newPokemonObject: Pokemon = factory.getPokemonByName(pokemonName); + activePlayer.addPokemon(newPokemonObject); + clickedPokemon.style.cursor = "default"; + clickedPokemon.style.filter = "grayscale(100%)"; +}; diff --git a/src/choosePokemonsPage/choosePokemonsPage.ts b/src/choosePokemonsPage/choosePokemonsPage.ts new file mode 100644 index 0000000..5f96859 --- /dev/null +++ b/src/choosePokemonsPage/choosePokemonsPage.ts @@ -0,0 +1,11 @@ +import { Player } from "../playerClass"; +import { createActivePlayerName } from "./createActivePlayerName"; +import { createPlayerNames } from "./createPlayerNames"; +import { createPokemons } from "./createPokemons"; + +export const createChoosePage = (playerOne: Player, playerTwo: Player) => { + let activePlayer = playerOne; + createPlayerNames(playerOne, playerTwo); + createActivePlayerName(activePlayer); + createPokemons(playerOne, playerTwo, activePlayer); +}; diff --git a/src/choosePokemonsPage/createActivePlayerName.ts b/src/choosePokemonsPage/createActivePlayerName.ts new file mode 100644 index 0000000..6cbdb29 --- /dev/null +++ b/src/choosePokemonsPage/createActivePlayerName.ts @@ -0,0 +1,8 @@ +import { Player } from "../playerClass"; + +export const createActivePlayerName = (activePlayer: Player) => { + let whoChoosesPokemonText = document.querySelector("#whoChoosesParagraph")!; + activePlayer.pokemons.length === 3 + ? (whoChoosesPokemonText.textContent = "Wait for the game to start...") + : (whoChoosesPokemonText.textContent = `${activePlayer.name} chooses 1 pokemon`); +}; diff --git a/src/choosePokemonsPage/createPlayerNames.ts b/src/choosePokemonsPage/createPlayerNames.ts new file mode 100644 index 0000000..482a8b7 --- /dev/null +++ b/src/choosePokemonsPage/createPlayerNames.ts @@ -0,0 +1,8 @@ +import { Player } from "../playerClass"; + +export const createPlayerNames = (playerOne: Player, playerTwo: Player) => { + let playerOneNameAreaText = document.querySelector("#choosePagePlayer1Name")!; + playerOneNameAreaText.textContent = playerOne.name; + let playerTwoNameAreaText = document.querySelector("#choosePagePlayer2Name")!; + playerTwoNameAreaText.textContent = playerTwo.name; +}; diff --git a/src/choosePokemonsPage/createPokeballs.ts b/src/choosePokemonsPage/createPokeballs.ts new file mode 100644 index 0000000..2640f9d --- /dev/null +++ b/src/choosePokemonsPage/createPokeballs.ts @@ -0,0 +1,16 @@ +import { Player } from "../playerClass"; + +export const createPokeballs = (playerOne: Player, activePlayer: Player) => { + const playerPokeballs: HTMLImageElement[] = + activePlayer === playerOne + ? Array.from(document.querySelectorAll("#choosePagePlayer1 img")) + : Array.from(document.querySelectorAll("#choosePagePlayer2 img")); + const playerLastPokemonName: string = activePlayer.pokemons[ + activePlayer.pokemons.length - 1 + ].name.toLowerCase(); + const numberOfLastPokemon: number = activePlayer.pokemons.length - 1; + playerPokeballs[numberOfLastPokemon].setAttribute( + "src", + `./assets/${playerLastPokemonName}.png` + ); +}; diff --git a/src/choosePokemonsPage/createPokemons.ts b/src/choosePokemonsPage/createPokemons.ts new file mode 100644 index 0000000..bae5916 --- /dev/null +++ b/src/choosePokemonsPage/createPokemons.ts @@ -0,0 +1,36 @@ +import { Player } from "../playerClass"; +import { PokemonFactory } from "../pokemonFactory"; +import * as data from "../../assets/poke_data.json"; +import { startGameIfReady } from "./startGameIfReady"; +import { addChosenPokemon } from "./addChosenPokemon"; +import { createPokeballs } from "./createPokeballs"; +import { createActivePlayerName } from "./createActivePlayerName"; + +export const createPokemons = ( + playerOne: Player, + playerTwo: Player, + activePlayer: Player +) => { + const pokeData = data.pokemons; + const pokemonFactory = new PokemonFactory(pokeData); + const pokemonImages = Array.from( + document.querySelectorAll("#pokemonList img") + ) as [HTMLImageElement]; + + pokemonImages.forEach((pokemonImage) => + pokemonImage.addEventListener( + "click", + (e) => { + if (activePlayer.pokemons.length === 3) return; + addChosenPokemon(e, pokemonFactory, activePlayer); + createPokeballs(playerOne, activePlayer); + // change player + activePlayer = activePlayer === playerOne ? playerTwo : playerOne; + createActivePlayerName(activePlayer); + console.log(playerOne, playerTwo); + startGameIfReady(playerOne, playerTwo); + }, + { once: true } + ) + ); +}; diff --git a/src/choosePokemonsPage/renderFightPage.ts b/src/choosePokemonsPage/renderFightPage.ts new file mode 100644 index 0000000..0822c88 --- /dev/null +++ b/src/choosePokemonsPage/renderFightPage.ts @@ -0,0 +1,6 @@ +export const renderFightPage = (appDiv: HTMLDivElement) => { + const fightPage = document.querySelector( + "#fight-page-template" + ) as HTMLTemplateElement; + appDiv.innerHTML = fightPage.innerHTML; +}; diff --git a/src/choosePokemonsPage/startGameIfReady.ts b/src/choosePokemonsPage/startGameIfReady.ts new file mode 100644 index 0000000..1e3afc2 --- /dev/null +++ b/src/choosePokemonsPage/startGameIfReady.ts @@ -0,0 +1,8 @@ +import { Player } from "../playerClass"; +import { renderFightPage } from "./renderFightPage"; + +export const startGameIfReady = (playerOne: Player, playerTwo: Player) => { + if (playerOne.pokemons.length < 3 || playerTwo.pokemons.length < 3) return; + const app = document.querySelector("#app") as HTMLDivElement; + setTimeout(() => renderFightPage(app), 2000); +}; diff --git a/src/index.ts b/src/index.ts index 18b3081..787e82c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,6 @@ import { showModal, hideModal } from "./modalPopUpFunctions"; +import { createChoosePage } from "./choosePokemonsPage/choosePokemonsPage" +import { Player } from "./playerClass"; import { activateStart } from './activateStart'; const renderStartingPage = (appDiv: HTMLDivElement) => { @@ -35,7 +37,7 @@ const activateStartButton = () => { }) player2NameInput.addEventListener("keyup", () => { activateStart(player1NameInput, player2NameInput, startButton) - }) + }); }; const renderChoosePokemonScreen = (appDiv: HTMLDivElement) => { @@ -43,10 +45,13 @@ const renderChoosePokemonScreen = (appDiv: HTMLDivElement) => { "#start-game-button" ) as HTMLDivElement; playButton?.addEventListener("click", () => { + const player1NameInput = (document.querySelector('#enter-player1-name') as HTMLInputElement).value; + const player2NameInput = (document.querySelector('#enter-player2-name') as HTMLInputElement).value; const choosePokemonScreen = document.querySelector( "#choose-page-template" ) as HTMLTemplateElement; appDiv.innerHTML = choosePokemonScreen.innerHTML; + createChoosePage(new Player(player1NameInput, []), new Player(player2NameInput, [])); }); } @@ -60,3 +65,4 @@ const renderApp = () => { }; setTimeout(renderApp, 2000); + diff --git a/src/playerClass.ts b/src/playerClass.ts index b29e37e..4229a51 100644 --- a/src/playerClass.ts +++ b/src/playerClass.ts @@ -8,7 +8,7 @@ export class Player { if (name.length > 8) { throw new Error("Too long name"); } - if (pokemons.length != 3) { + if (pokemons.length > 3) { throw new Error("Wrong number of pokemons"); } this._name = name; @@ -36,4 +36,8 @@ export class Player { ); return alivePokemonsTab; } + + addPokemon(pokemon: Pokemon): void { + this._pokemons.push(pokemon); + } } From 1a80faea2a43120b8ee01ce040bd53de9939a56e Mon Sep 17 00:00:00 2001 From: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> Date: Wed, 10 Feb 2021 08:04:41 +0100 Subject: [PATCH 23/76] MNG-94 MNG-108 Start a new game, add functions that will render the correct view (#20) --- dist/index.js | 4 +- index.html | 18 +- src/choosePokemonsPage/createPokemons.ts | 1 - src/choosePokemonsPage/renderFightPage.ts | 6 - src/choosePokemonsPage/startGameIfReady.ts | 5 +- src/fightPage/createActivePlayer.ts | 8 + src/fightPage/createActivePokemon.ts | 36 +++ src/fightPage/createFightPagePokeballs.ts | 21 ++ src/fightPage/createHPBars.ts | 27 ++ src/fightPage/renderFightPage.ts | 32 +++ src/fightPage/startBattle.ts | 12 + src/gameHandlerClass.ts | 14 +- styles/SASS/_fight-view.scss | 8 +- styles/app.css | 310 ++++++++++++++++----- styles/app.css.map | 2 +- 15 files changed, 404 insertions(+), 100 deletions(-) delete mode 100644 src/choosePokemonsPage/renderFightPage.ts create mode 100644 src/fightPage/createActivePlayer.ts create mode 100644 src/fightPage/createActivePokemon.ts create mode 100644 src/fightPage/createFightPagePokeballs.ts create mode 100644 src/fightPage/createHPBars.ts create mode 100644 src/fightPage/renderFightPage.ts create mode 100644 src/fightPage/startBattle.ts diff --git a/dist/index.js b/dist/index.js index 2c2ae61..42ce33d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,r,a,o,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=r,this._defensePoints=a,this._types=o,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,r=e;n8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),c=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var t,n,r,u,p,i,s,m,y,l=document.querySelector("#app");t=l,n=document.querySelector("#starting-page-template"),t.innerHTML=n.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(l),r=document.querySelector("#enter-player1-name"),u=document.querySelector("#enter-player2-name"),p=document.querySelector("#start-game-button"),r.addEventListener("keyup",(function(){c(r,u,p)})),u.addEventListener("keyup",(function(){c(r,u,p)})),m=document.querySelector("#how-to-play-button"),y=document.querySelector("#info-modal-screen"),m.addEventListener("click",(function(){y.style.display="flex"})),null==(s=(i=y).querySelector(".exitButton"))||s.addEventListener("click",(function(){i.style.display="none"})),function(t){var n=document.querySelector("#start-game-button");null==n||n.addEventListener("click",(function(){var n,r,c,u=document.querySelector("#enter-player1-name").value,p=document.querySelector("#enter-player2-name").value,i=document.querySelector("#choose-page-template");t.innerHTML=i.innerHTML,n=new o(u,[]),r=new o(p,[]),c=n,function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(n,r),e(c),a(n,r,c)}))}(l)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlbW9ucy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9hZGRDaG9zZW5Qb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2NyZWF0ZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvcGxheWVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9hY3RpdmF0ZVN0YXJ0LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY2hvb3NlUG9rZW1vbnNQYWdlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2NyZWF0ZVBsYXllck5hbWVzLnRzIl0sIm5hbWVzIjpbImNyZWF0ZUFjdGl2ZVBsYXllck5hbWUiLCJhY3RpdmVQbGF5ZXIiLCJ3aG9DaG9vc2VzUG9rZW1vblRleHQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwb2tlbW9ucyIsImxlbmd0aCIsInRleHRDb250ZW50IiwibmFtZSIsImltYWdlIiwibWF4SFAiLCJhdHRhY2tQb2ludHMiLCJkZWZlbnNlUG9pbnRzIiwidHlwZXMiLCJtb3ZlcyIsInRoaXMiLCJfbmFtZSIsIl9pbWFnZSIsIl9tYXhIUCIsIl9jdXJyZW50SFAiLCJfYXR0YWNrUG9pbnRzIiwiX2RlZmVuc2VQb2ludHMiLCJfdHlwZXMiLCJfbW92ZXMiLCJzdWJ0cmFjdEhQIiwicG9pbnRzVG9TdWJ0cmFjdCIsIm5ld0hQIiwiaGVhbCIsImlzQWxpdmUiLCJwb2tlRGF0YSIsIl9wb2tlbW9ucyIsInBva2Vtb24iLCJwb2tlSW1nIiwicG9rZU1vdmVzIiwicmVkdWNlIiwidGFiIiwibW92ZSIsInB1c2giLCJtb3ZlTmFtZSIsIm1vdmVUeXBlIiwidHlwZSIsInBva2VUeXBlcyIsIm1hcCIsInYiLCJwb2tlbW9uT2JqZWN0IiwiUG9rZW1vbiIsIl9jYXBpdGFsaXplIiwic3RhdHMiLCJocCIsImF0dGFjayIsImRlZmVuc2UiLCJnZXRQb2tlbW9uQnlOYW1lIiwiZmluZCIsInRvTG93ZXJDYXNlIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJzdHIiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiY3JlYXRlUG9rZW1vbnMiLCJwbGF5ZXJPbmUiLCJwbGF5ZXJUd28iLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJwb2tlbW9uSW1hZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwiZSIsImV2ZW50IiwiZmFjdG9yeSIsInBva2Vtb25OYW1lIiwidGFyZ2V0IiwiaWQiLCJuZXdQb2tlbW9uT2JqZWN0IiwiYWRkUG9rZW1vbiIsInN0eWxlIiwiY3Vyc29yIiwiZmlsdGVyIiwiYWRkQ2hvc2VuUG9rZW1vbiIsInBsYXllclBva2ViYWxscyIsInBsYXllckxhc3RQb2tlbW9uTmFtZSIsInNldEF0dHJpYnV0ZSIsImNyZWF0ZVBva2ViYWxscyIsImNvbnNvbGUiLCJsb2ciLCJhcHAiLCJzZXRUaW1lb3V0IiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwiaW5uZXJIVE1MIiwic3RhcnRHYW1lSWZSZWFkeSIsIm9uY2UiLCJfaW5kZXhPZkFjdGl2ZVBva2Vtb24iLCJudW1PZkFjdGl2ZVBva2Vtb24iLCJhY3RpdmF0ZVN0YXJ0IiwibmFtZTFJbnB1dCIsIm5hbWUySW5wdXQiLCJzdGFydEJ1dHRvbiIsInZhbHVlIiwiY2xhc3NOYW1lIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJjcmVhdGVQbGF5ZXJOYW1lcyIsInJlbmRlckNob29zZVBva2Vtb25TY3JlZW4iXSwibWFwcGluZ3MiOiJtQkFBTyxJQ0VNQSxFQUF5QixTQUFDQyxHQUNyQyxJQUFJQyxFQUF3QkMsU0FBU0MsY0FBYyx3QkFDbEIsSUFBakNILEVBQWFJLFNBQVNDLE9BQ2pCSixFQUFzQkssWUFBYyxnQ0FDcENMLEVBQXNCSyxZQUFpQk4sRUFBYU8sS0FBSSxzQkNTL0QsYUFXRSxXQUFZQSxFQUFjQyxFQUFlQyxFQUFlQyxFQUN0REMsRUFBdUJDLEVBQXNCQyxHQUU3Q0MsS0FBS0MsTUFBUVIsRUFDYk8sS0FBS0UsT0FBU1IsRUFDZE0sS0FBS0csT0FBU1IsRUFDZEssS0FBS0ksV0FBYVQsRUFDbEJLLEtBQUtLLGNBQWdCVCxFQUNyQkksS0FBS00sZUFBaUJULEVBQ3RCRyxLQUFLTyxPQUFTVCxFQUNkRSxLQUFLUSxPQUFTVCxFQW1EbEIsT0EvQ0Usc0JBQUksbUJBQUksQyxJQUFSLFdBQ0UsT0FBT0MsS0FBS0MsTyxnQ0FHZCxzQkFBSSxvQkFBSyxDLElBQVQsV0FDRSxPQUFPRCxLQUFLRSxRLGdDQUdkLHNCQUFJLHdCQUFTLEMsSUFBYixXQUNFLE9BQU9GLEtBQUtJLFksZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0osS0FBS0csUSxnQ0FHZCxZQUFBTSxXQUFBLFNBQVdDLEdBQ1QsSUFBTUMsRUFBUVgsS0FBS0ksV0FBYU0sRUFDNUJDLEVBQVEsSUFDVlgsS0FBS0ksV0FBYSxHQUVwQkosS0FBS0ksV0FBYU8sR0FHcEIsWUFBQUMsS0FBQSxXQUNFWixLQUFLSSxXQUFhSixLQUFLRyxRQUd6QixzQkFBSSwyQkFBWSxDLElBQWhCLFdBQ0UsT0FBT0gsS0FBS0ssZSxnQ0FHZCxzQkFBSSw0QkFBYSxDLElBQWpCLFdBQ0UsT0FBT0wsS0FBS00sZ0IsZ0NBR2Qsc0JBQUks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a0J2RCxFQUFXQyxHQUM3QjlELEVBQXVCQyxHQUN2QjJELEVBQWVDLEVBQVdDLEVBQVc3RCxNRHNEckNvSCxDQUEwQjVCLEtBR04sTSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzaG93TW9kYWwgPSAoXHJcbiAgc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCxcclxuICBzdGFydGluZ1Bvc2l0aW9uOiBzdHJpbmdcclxuKSA9PiB7XHJcbiAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBzdGFydGluZ1Bvc2l0aW9uO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGhpZGVNb2RhbCA9IChzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgZXhpdEJ1dHRvbiA9IHNjcmVlblRvRGlzcGxheS5xdWVyeVNlbGVjdG9yKFwiLmV4aXRCdXR0b25cIik7XHJcbiAgZXhpdEJ1dHRvbj8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgfSk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgPSAoYWN0aXZlUGxheWVyOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgd2hvQ2hvb3Nlc1Bva2Vtb25UZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiN3aG9DaG9vc2VzUGFyYWdyYXBoXCIpITtcclxuICBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzXHJcbiAgICA/ICh3aG9DaG9vc2VzUG9rZW1vblRleHQudGV4dENvbnRlbnQgPSBcIldhaXQgZm9yIHRoZSBnYW1lIHRvIHN0YXJ0Li4uXCIpXHJcbiAgICA6ICh3aG9DaG9vc2VzUG9rZW1vblRleHQudGV4dENvbnRlbnQgPSBgJHthY3RpdmVQbGF5ZXIubmFtZX0gY2hvb3NlcyAxIHBva2Vtb25gKTtcclxufTtcclxuIiwiZXhwb3J0IHR5cGUgUG9rZW1vblR5cGUgPVxyXG4gIHwgXCJncmFzc1wiXHJcbiAgfCBcInBvaXNvblwiXHJcbiAgfCBcImZpcmVcIlxyXG4gIHwgXCJ3YXRlclwiXHJcbiAgfCBcImJ1Z1wiXHJcbiAgfCBcIm5vcm1hbFwiXHJcbiAgfCBcImZseWluZ1wiXHJcbiAgfCBcImVsZWN0cmljXCJcclxuICB8IFwiZ3JvdW5kXCJcclxuICB8IFwiZmFpcnlcIlxyXG4gIHwgXCJwc3ljaGljXCJcclxuICB8IFwiZmlnaHRpbmdcIlxyXG4gIHwgXCJyb2NrXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbiB7XHJcblxyXG4gIHJlYWRvbmx5IF9uYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgX2ltYWdlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgX21heEhQOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfY3VycmVudEhQOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2F0dGFja1BvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9kZWZlbnNlUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX3R5cGVzOiBQb2tlbW9uVHlwZVtdO1xyXG4gIHJlYWRvbmx5IF9tb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGltYWdlOiBzdHJpbmcsIG1heEhQOiBudW1iZXIsIGF0dGFja1BvaW50czogbnVtYmVyLFxyXG4gICAgZGVmZW5zZVBvaW50czogbnVtYmVyLCB0eXBlczogUG9rZW1vblR5cGVbXSwgbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXSkge1xyXG5cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5faW1hZ2UgPSBpbWFnZTtcclxuICAgIHRoaXMuX21heEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2F0dGFja1BvaW50cyA9IGF0dGFja1BvaW50cztcclxuICAgIHRoaXMuX2RlZmVuc2VQb2ludHMgPSBkZWZlbnNlUG9pbnRzO1xyXG4gICAgdGhpcy5fdHlwZXMgPSB0eXBlcztcclxuICAgIHRoaXMuX21vdmVzID0gbW92ZXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBpbWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbWFnZTtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heEhQO1xyXG4gIH1cclxuXHJcbiAgc3VidHJhY3RIUChwb2ludHNUb1N1YnRyYWN0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld0hQID0gdGhpcy5fY3VycmVudEhQIC0gcG9pbnRzVG9TdWJ0cmFjdDtcclxuICAgIGlmIChuZXdIUCA8IDApIHtcclxuICAgICAgdGhpcy5fY3VycmVudEhQID0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG5ld0hQO1xyXG4gIH1cclxuXHJcbiAgaGVhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IHRoaXMuX21heEhQO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dGFja1BvaW50cygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hdHRhY2tQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmZW5zZVBvaW50cygpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWZlbnNlUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vdmVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vdmVzO1xyXG4gIH1cclxuXHJcbiAgaXNBbGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFAgPiAwO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuaW1wb3J0IHsgUG9rZW1vblR5cGUgfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uRmFjdG9yeSB7XHJcbiAgICByZWFkb25seSBfcG9rZW1vbnM6IFBva2Vtb25bXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwb2tlRGF0YToge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZzsgdHlwZXM6IHN0cmluZ1tdO1xyXG4gICAgICAgIHN0YXRzOiB7IGhwOiBudW1iZXI7IGF0dGFjazogbnVtYmVyOyBkZWZlbnNlOiBudW1iZXI7IH07XHJcbiAgICAgICAgbW92ZXM6IHsgbmFtZTogc3RyaW5nOyBhY2N1cmFjeTogbnVtYmVyOyBwb3dlcjogbnVtYmVyOyB0eXBlOiBzdHJpbmc7IH1bXVxyXG4gICAgfVtdKSB7XHJcbiAgICAgICAgdGhpcy5fcG9rZW1vbnMgPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgcG9rZW1vbiBvZiBwb2tlRGF0YSkge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZUltZyA9IFwiLi4vYXNzZXRzL1wiICsgcG9rZW1vbi5uYW1lICsgXCIucG5nXCJcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VNb3ZlcyA9IHBva2Vtb24ubW92ZXMucmVkdWNlKCAodGFiLCBtb3ZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0YWIucHVzaCh7bW92ZU5hbWU6IG1vdmUubmFtZSwgbW92ZVR5cGU6IG1vdmUudHlwZSBhcyBQb2tlbW9uVHlwZX0pXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFiXHJcbiAgICAgICAgICAgICAgICB9LCBbXSBhcyB7bW92ZU5hbWU6IHN0cmluZywgbW92ZVR5cGU6IFBva2Vtb25UeXBlfVtdKVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZVR5cGVzOiBQb2tlbW9uVHlwZVtdID0gcG9rZW1vbi50eXBlcy5tYXAodiA9PiB2IGFzIFBva2Vtb25UeXBlKVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZW1vbk9iamVjdCA9IG5ldyBQb2tlbW9uKHRoaXMuX2NhcGl0YWxpemUocG9rZW1vbi5uYW1lKSwgcG9rZUltZywgXHJcbiAgICAgICAgICAgICAgICBwb2tlbW9uLnN0YXRzLmhwLCBwb2tlbW9uLnN0YXRzLmF0dGFjaywgcG9rZW1vbi5zdGF0cy5kZWZlbnNlLFxyXG4gICAgICAgICAgICAgICAgcG9rZVR5cGVzLCBwb2tlTW92ZXMpXHJcblxyXG4gICAgICAgICAgICB0aGlzLl9wb2tlbW9ucy5wdXNoKHBva2Vtb25PYmplY3QpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBva2Vtb25CeU5hbWUobmFtZTogc3RyaW5nKTogUG9rZW1vbiB7XHJcbiAgICAgICAgY29uc3QgcG9rZW1vbiA9IHRoaXMuX3Bva2Vtb25zLmZpbmQoIHBva2Vtb24gPT4gcG9rZW1vbi5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgaWYgKHBva2Vtb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBva2Vtb24gJHtuYW1lfSBpcyBub3QgZm91bmQgaW4gdGhlIHBva2Vtb24gZmFjdG9yeWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwb2tlbW9uXHJcbiAgICB9XHJcblxyXG4gICAgX2NhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgIH1cclxufVxyXG5cclxuIiwiZXhwb3J0IGNvbnN0IHJlbmRlckZpZ2h0UGFnZSA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgZmlnaHRQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gZmlnaHRQYWdlLmlubmVySFRNTDtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCAqIGFzIGRhdGEgZnJvbSBcIi4uLy4uL2Fzc2V0cy9wb2tlX2RhdGEuanNvblwiO1xyXG5pbXBvcnQgeyBzdGFydEdhbWVJZlJlYWR5IH0gZnJvbSBcIi4vc3RhcnRHYW1lSWZSZWFkeVwiO1xyXG5pbXBvcnQgeyBhZGRDaG9zZW5Qb2tlbW9uIH0gZnJvbSBcIi4vYWRkQ2hvc2VuUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlYmFsbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlbW9ucyA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBwb2tlRGF0YSA9IGRhdGEucG9rZW1vbnM7XHJcbiAgY29uc3QgcG9rZW1vbkZhY3RvcnkgPSBuZXcgUG9rZW1vbkZhY3RvcnkocG9rZURhdGEpO1xyXG4gIGNvbnN0IHBva2Vtb25JbWFnZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNwb2tlbW9uTGlzdCBpbWdcIilcclxuICApIGFzIFtIVE1MSW1hZ2VFbGVtZW50XTtcclxuXHJcbiAgcG9rZW1vbkltYWdlcy5mb3JFYWNoKChwb2tlbW9uSW1hZ2UpID0+XHJcbiAgICBwb2tlbW9uSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJjbGlja1wiLFxyXG4gICAgICAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzKSByZXR1cm47XHJcbiAgICAgICAgYWRkQ2hvc2VuUG9rZW1vbihlLCBwb2tlbW9uRmFjdG9yeSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBjcmVhdGVQb2tlYmFsbHMocGxheWVyT25lLCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIC8vIGNoYW5nZSBwbGF5ZXJcclxuICAgICAgICBhY3RpdmVQbGF5ZXIgPSBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZSA/IHBsYXllclR3byA6IHBsYXllck9uZTtcclxuICAgICAgICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgY29uc29sZS5sb2cocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICAgIHN0YXJ0R2FtZUlmUmVhZHkocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi4vcG9rZW1vbkNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENob3NlblBva2Vtb24gPSAoXHJcbiAgZXZlbnQ6IEV2ZW50LFxyXG4gIGZhY3Rvcnk6IFBva2Vtb25GYWN0b3J5LFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IHBva2Vtb25OYW1lID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50KS5pZDtcclxuICBjb25zdCBuZXdQb2tlbW9uT2JqZWN0OiBQb2tlbW9uID0gZmFjdG9yeS5nZXRQb2tlbW9uQnlOYW1lKHBva2Vtb25OYW1lKTtcclxuICBhY3RpdmVQbGF5ZXIuYWRkUG9rZW1vbihuZXdQb2tlbW9uT2JqZWN0KTtcclxuICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQpLnN0eWxlLmN1cnNvciA9IFwiZGVmYXVsdFwiO1xyXG4gIChldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudCkuc3R5bGUuZmlsdGVyID0gXCJncmF5c2NhbGUoMTAwJSlcIjtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZWJhbGxzID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdID1cclxuICAgIGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lXHJcbiAgICAgID8gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIxIGltZ1wiKSlcclxuICAgICAgOiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjIgaW1nXCIpKTtcclxuICBjb25zdCBwbGF5ZXJMYXN0UG9rZW1vbk5hbWU6IHN0cmluZyA9IGFjdGl2ZVBsYXllci5wb2tlbW9uc1tcclxuICAgIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxXHJcbiAgXS5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgY29uc3QgbnVtYmVyT2ZMYXN0UG9rZW1vbjogbnVtYmVyID0gYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDE7XHJcbiAgcGxheWVyUG9rZWJhbGxzW251bWJlck9mTGFzdFBva2Vtb25dLnNldEF0dHJpYnV0ZShcclxuICAgIFwic3JjXCIsXHJcbiAgICBgLi9hc3NldHMvJHtwbGF5ZXJMYXN0UG9rZW1vbk5hbWV9LnBuZ2BcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgcmVuZGVyRmlnaHRQYWdlIH0gZnJvbSBcIi4vcmVuZGVyRmlnaHRQYWdlXCI7XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRHYW1lSWZSZWFkeSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBpZiAocGxheWVyT25lLnBva2Vtb25zLmxlbmd0aCA8IDMgfHwgcGxheWVyVHdvLnBva2Vtb25zLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBzZXRUaW1lb3V0KCgpID0+IHJlbmRlckZpZ2h0UGFnZShhcHApLCAzMDAwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBsYXllciB7XHJcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcbiAgcHJpdmF0ZSBfaW5kZXhPZkFjdGl2ZVBva2Vtb246IG51bWJlcjtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHBva2Vtb25zOiBQb2tlbW9uW10pIHtcclxuICAgIGlmIChuYW1lLmxlbmd0aCA+IDgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIGxvbmcgbmFtZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChwb2tlbW9ucy5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIG51bWJlciBvZiBwb2tlbW9uc1wiKTtcclxuICAgIH1cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5fcG9rZW1vbnMgPSBwb2tlbW9ucztcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gMDtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnM7XHJcbiAgfVxyXG5cclxuICBzZXQgaW5kZXhPZkFjdGl2ZVBva2Vtb24obnVtT2ZBY3RpdmVQb2tlbW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gbnVtT2ZBY3RpdmVQb2tlbW9uO1xyXG4gIH1cclxuICBnZXQgZ2V0QWN0aXZlUG9rZW1vbigpOiBQb2tlbW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1t0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbl07XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgY29uc3QgYWxpdmVQb2tlbW9uc1RhYjogUG9rZW1vbltdID0gdGhpcy5wb2tlbW9ucy5maWx0ZXIoKHBva2Vtb24pID0+XHJcbiAgICAgIHBva2Vtb24uaXNBbGl2ZSgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsaXZlUG9rZW1vbnNUYWI7XHJcbiAgfVxyXG5cclxuICBhZGRQb2tlbW9uKHBva2Vtb246IFBva2Vtb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbik7XHJcbiAgfVxyXG59XHJcbiIsImV4cG9ydCBjb25zdCBhY3RpdmF0ZVN0YXJ0ID0gKG5hbWUxSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIG5hbWUySW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIHN0YXJ0QnV0dG9uOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKG5hbWUxSW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMklucHV0LnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZGlzYWJsZWQnXHJcbiAgICB9XHJcbn0iLCJpbXBvcnQgeyBzaG93TW9kYWwsIGhpZGVNb2RhbCB9IGZyb20gXCIuL21vZGFsUG9wVXBGdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQ2hvb3NlUGFnZSB9IGZyb20gXCIuL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2VcIlxyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBhY3RpdmF0ZVN0YXJ0IH0gZnJvbSAnLi9hY3RpdmF0ZVN0YXJ0JztcclxuXHJcbmNvbnN0IHJlbmRlclN0YXJ0aW5nUGFnZSA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3Qgc3RhcnRpbmdQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0aW5nLXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gc3RhcnRpbmdQYWdlLmlubmVySFRNTDtcclxufTtcclxuY29uc3QgcmVuZGVySG93VG9QbGF5TW9kYWwgPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGluZm9Nb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNpbmZvLW1vZGFsLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCArPSBpbmZvTW9kYWwuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCBjcmVhdGVIb3dUb1BsYXlCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgaG93VG9QbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hvdy10by1wbGF5LWJ1dHRvblwiXHJcbiAgKSBhcyBIVE1MVUxpc3RFbGVtZW50O1xyXG4gIGNvbnN0IGluZm9Nb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNpbmZvLW1vZGFsLXNjcmVlblwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBob3dUb1BsYXlCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIHNob3dNb2RhbChpbmZvTW9kYWwsIFwiZmxleFwiKTtcclxuICB9KTtcclxuICBoaWRlTW9kYWwoaW5mb01vZGFsKTtcclxufTtcclxuXHJcbmNvbnN0IGFjdGl2YXRlU3RhcnRCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyMU5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMi1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBjb25zdCBzdGFydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjc3RhcnQtZ2FtZS1idXR0b25cIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgcGxheWVyMU5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKCkgPT4ge1xyXG4gICAgICBhY3RpdmF0ZVN0YXJ0KHBsYXllcjFOYW1lSW5wdXQsIHBsYXllcjJOYW1lSW5wdXQsIHN0YXJ0QnV0dG9uKVxyXG4gIH0pXHJcbiAgcGxheWVyMk5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKCkgPT4ge1xyXG4gICAgICBhY3RpdmF0ZVN0YXJ0KHBsYXllcjFOYW1lSW5wdXQsIHBsYXllcjJOYW1lSW5wdXQsIHN0YXJ0QnV0dG9uKVxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgcmVuZGVyQ2hvb3NlUG9rZW1vblNjcmVlbiA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgcGxheUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzdGFydC1nYW1lLWJ1dHRvblwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgY29uc3QgcGxheWVyMU5hbWVJbnB1dCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMS1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBjb25zdCBwbGF5ZXIyTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IGNob29zZVBva2Vtb25TY3JlZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNjaG9vc2UtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgICBhcHBEaXYuaW5uZXJIVE1MID0gY2hvb3NlUG9rZW1vblNjcmVlbi5pbm5lckhUTUw7XHJcbiAgICBjcmVhdGVDaG9vc2VQYWdlKG5ldyBQbGF5ZXIocGxheWVyMU5hbWVJbnB1dCwgW10pLCBuZXcgUGxheWVyKHBsYXllcjJOYW1lSW5wdXQsIFtdKSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IHJlbmRlckFwcCA9ICgpID0+IHtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICByZW5kZXJTdGFydGluZ1BhZ2UoYXBwKTtcclxuICByZW5kZXJIb3dUb1BsYXlNb2RhbChhcHApO1xyXG4gIGFjdGl2YXRlU3RhcnRCdXR0b24oKTtcclxuICBjcmVhdGVIb3dUb1BsYXlCdXR0b24oKTtcclxuICByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuKGFwcCk7XHJcbn07XHJcblxyXG5zZXRUaW1lb3V0KHJlbmRlckFwcCwgMjAwMCk7XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuaW1wb3J0IHsgY3JlYXRlUGxheWVyTmFtZXMgfSBmcm9tIFwiLi9jcmVhdGVQbGF5ZXJOYW1lc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlbW9ucyB9IGZyb20gXCIuL2NyZWF0ZVBva2Vtb25zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2hvb3NlUGFnZSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgYWN0aXZlUGxheWVyID0gcGxheWVyT25lO1xyXG4gIGNyZWF0ZVBsYXllck5hbWVzKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgY3JlYXRlUG9rZW1vbnMocGxheWVyT25lLCBwbGF5ZXJUd28sIGFjdGl2ZVBsYXllcik7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBsYXllck5hbWVzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBwbGF5ZXJPbmVOYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIxTmFtZVwiKSE7XHJcbiAgcGxheWVyT25lTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyT25lLm5hbWU7XHJcbiAgbGV0IHBsYXllclR3b05hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjJOYW1lXCIpITtcclxuICBwbGF5ZXJUd29OYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJUd28ubmFtZTtcclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,r,o,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=r,this._defensePoints=o,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,r=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),r=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,r)}(t)}(n,r)}),2e3)}(e,t,document.querySelector("#app"))},c=function(t,o){var c=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,o),e(c),function(t,o,c){var i=r.x,u=new n(i);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==c.pokemons.length&&(function(e,t,n){var r=e.target,o=r.id,a=t.getPokemonByName(o);n.addPokemon(a),r.style.cursor="default",r.style.filter="grayscale(100%)"}(n,u,c),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),r=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+r+".png")}(t,c),e(c=c===t?o:t),a(t,o))}),{once:!0})}))}(t,o,c)},i=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),u=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var e,t,n,r,o,a,p,s,y,m=document.querySelector("#app");e=m,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(m),n=document.querySelector("#enter-player1-name"),r=document.querySelector("#enter-player2-name"),o=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){u(n,r,o)})),r.addEventListener("keyup",(function(){u(n,r,o)})),s=document.querySelector("#how-to-play-button"),y=document.querySelector("#info-modal-screen"),s.addEventListener("click",(function(){y.style.display="flex"})),null==(p=(a=y).querySelector(".exitButton"))||p.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,r=document.querySelector("#choose-page-template");e.innerHTML=r.innerHTML,c(new i(t,[]),new i(n,[]))}))}(m)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVIUEJhcnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQbGF5ZXJOYW1lcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlbW9ucy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9hZGRDaG9zZW5Qb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2NyZWF0ZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3BsYXllckNsYXNzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvYWN0aXZhdGVTdGFydC50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbImNyZWF0ZUFjdGl2ZVBsYXllck5hbWUiLCJhY3RpdmVQbGF5ZXIiLCJ3aG9DaG9vc2VzUG9rZW1vblRleHQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwb2tlbW9ucyIsImxlbmd0aCIsInRleHRDb250ZW50IiwibmFtZSIsImltYWdlIiwibWF4SFAiLCJhdHRhY2tQb2ludHMiLCJkZWZlbnNlUG9pbnRzIiwidHlwZXMiLCJtb3ZlcyIsInRoaXMiLCJfbmFtZSIsIl9pbWFnZSIsIl9tYXhIUCIsIl9jdXJyZW50SFAiLCJfYXR0YWNrUG9pbnRzIiwiX2RlZmVuc2VQb2ludHMiLCJfdHlwZXMiLCJfbW92ZXMiLCJzdWJ0cmFjdEhQIiwicG9pbnRzVG9TdWJ0cmFjdCIsIm5ld0hQIiwiaGVhbCIsImlzQWxpdmUiLCJwb2tlRGF0YSIsIl9wb2tlbW9ucyIsInBva2Vtb24iLCJwb2tlSW1nIiwicG9rZU1vdmVzIiwicmVkdWNlIiwidGFiIiwibW92ZSIsInB1c2giLCJtb3ZlTmFtZSIsIm1vdmVUeXBlIiwidHlwZSIsInBva2VUeXBlcyIsIm1hcCIsInYiLCJwb2tlbW9uT2JqZWN0IiwiUG9rZW1vbiIsIl9jYXBpdGFsaXplIiwic3RhdHMiLCJocCIsImF0dGFjayIsImRlZmVuc2UiLCJnZXRQb2tlbW9uQnlOYW1lIiwiZmluZCIsInRvTG93ZXJDYXNlIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJzdHIiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwicGxheWVyIiwiYWxpdmVQb2tlbW9ucyIsImlzR2FtZUZpbmlzaGVkIiwiZ2V0V2lubmVyIiwic3RhcnRHYW1lSWZSZWFkeSIsInBsYXllck9uZSIsInBsYXllclR3byIsImFwcCIsImdhbWUiLCJHYW1lSGFuZGxlciIsInNldFRpbWVvdXQiLCJhcHBEaXYiLCJnYW1lSGFuZGxlciIsImNyZWF0ZUJhciIsInBsYXllck9uZUhQQmFyIiwicGxheWVyVHdvSFBCYXIiLCJmaWdodFBhZ2UiLCJpbm5lckhUTUwiLCJwbGF5ZXJPbmVOYW1lIiwicGxheWVyVHdvTmFtZSIsImNyZWF0ZVBsYXllckZpZ2h0TmFtZXMiLCJjdXJyZW50UGxheWVyIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJjcmVhdGVQb2tlbW9uIiwiaW1hZ2VBcmVhIiwibmFtZUFyZWEiLCJwb2tlbW9uTmFtZSIsImdldEFjdGl2ZVBva2Vtb24iLCJzZXRBdHRyaWJ1dGUiLCJjcmVhdGVBY3RpdmVQb2tlbW9uIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyIsInBsYXllclBva2ViYWxscyIsImkiLCJwbGF5ZXJPbmVQb2tlYmFsbHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicGxheWVyVHdvUG9rZWJhbGxzIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY3JlYXRlRmlnaHRQYWdlIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiZXZlbnQiLCJmYWN0b3J5IiwiY2xpY2tlZFBva2Vtb24iLCJ0YXJnZXQiLCJpZCIsIm5ld1Bva2Vtb25PYmplY3QiLCJhZGRQb2tlbW9uIiwiY3Vyc29yIiwiZmlsdGVyIiwiYWRkQ2hvc2VuUG9rZW1vbiIsInBsYXllckxhc3RQb2tlbW9uTmFtZSIsImNyZWF0ZVBva2ViYWxscyIsIm9uY2UiLCJjcmVhdGVQb2tlbW9ucyIsIl9pbmRleE9mQWN0aXZlUG9rZW1vbiIsIm51bU9mQWN0aXZlUG9rZW1vbiIsImFjdGl2YXRlU3RhcnQiLCJuYW1lMUlucHV0IiwibmFtZTJJbnB1dCIsInN0YXJ0QnV0dG9uIiwidmFsdWUiLCJjbGFzc05hbWUiLCJzdGFydGluZ1BhZ2UiLCJwbGF5ZXIxTmFtZUlucHV0IiwicGxheWVyMk5hbWVJbnB1dCIsInNjcmVlblRvRGlzcGxheSIsImV4aXRCdXR0b24iLCJob3dUb1BsYXlCdXR0b24iLCJpbmZvTW9kYWwiLCJyZW5kZXJIb3dUb1BsYXlNb2RhbCIsImRpc3BsYXkiLCJwbGF5QnV0dG9uIiwiY2hvb3NlUG9rZW1vblNjcmVlbiIsIlBsYXllciIsInJlbmRlckNob29zZVBva2Vtb25TY3JlZW4iXSwibWFwcGluZ3MiOiJtQkFBTyxJQ0VNQSxFQUF5QixTQUFDQyxHQUNyQyxJQUFJQyxFQUF3QkMsU0FBU0MsY0FBYyx3QkFDbEIsSUFBakNILEVBQWFJLFNBQVNDLE9BQ2pCSixFQUFzQkssWUFBYyxnQ0FDcENMLEVBQXNCSyxZQUFpQk4sRUFBYU8sS0FBSSxzQkNTL0QsYUFXRSxXQUFZQSxFQUFjQyxFQUFlQyxFQUFlQyxFQUN0REMsRUFBdUJDLEVBQXNCQyxHQUU3Q0MsS0FBS0MsTUFBUVIsRUFDYk8sS0FBS0UsT0FBU1IsRUFDZE0sS0FBS0csT0FBU1IsRUFDZEssS0FBS0ksV0FBYVQsRUFDbEJLLEtBQUtLLGNBQWdCVCxFQUNyQkksS0FBS00sZUFBaUJULEVBQ3RCRyxLQUFLTyxPQUFTVCxFQUNkRSxLQUFLUSxPQUFTVCxFQW1EbEIsT0EvQ0Us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dUJBQzFDK0ksRUFBY2hKLFNBQVNDLGNBQWMsc0JBQzNDbUosRUFBaUJ6QixpQkFBaUIsU0FBUyxXQUN2Q2tCLEVBQWNPLEVBQWtCQyxFQUFrQkwsTUFFdERLLEVBQWlCMUIsaUJBQWlCLFNBQVMsV0FDdkNrQixFQUFjTyxFQUFrQkMsRUFBa0JMLE1BcEJoRFEsRUFBa0J4SixTQUFTQyxjQUMvQix1QkFFSXdKLEVBQVl6SixTQUFTQyxjQUN6QixzQkFFRnVKLEVBQWdCN0IsaUJBQWlCLFNBQVMsV0FDOUI4QixFbkJyQklyRCxNQUFNdUQsUW1CcUJDLFVuQmhCdkJKLE9BRE1BLEdBRGtCRCxFbUJvQmRHLEduQm5CeUJ4SixjQUFjLGlCQUNqRHNKLEVBQVk1QixpQkFBaUIsU0FBUyxXQUNwQzJCLEVBQWdCbEQsTUFBTXVELFFBQVUsVW1CZ0NGLFNBQUNuRixHQUNqQyxJQUFNb0YsRUFBYTVKLFNBQVNDLGNBQzFCLHNCQUVGMkosV0FBWWpDLGlCQUFpQixTQUFTLFdBQ3BDLElBQU15QixFQUFvQnBKLFNBQVNDLGNBQWMsdUJBQTRDZ0osTUFDdkZJLEVBQW9CckosU0FBU0MsY0FBYyx1QkFBNENnSixNQUN2RlksRUFBc0I3SixTQUFTQyxjQUNuQyx5QkFFRnVFLEVBQU9NLFVBQVkrRSxFQUFvQi9FLFVBQ3ZDdUMsRUFBaUIsSUFBSXlDLEVBQU9WLEVBQWtCLElBQUssSUFBSVUsRUFBT1QsRUFBa0IsUUFVbEZVLENBQTBCM0YsS0FHTixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNob3dNb2RhbCA9IChcclxuICBzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50LFxyXG4gIHN0YXJ0aW5nUG9zaXRpb246IHN0cmluZ1xyXG4pID0+IHtcclxuICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IHN0YXJ0aW5nUG9zaXRpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaGlkZU1vZGFsID0gKHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBleGl0QnV0dG9uID0gc2NyZWVuVG9EaXNwbGF5LnF1ZXJ5U2VsZWN0b3IoXCIuZXhpdEJ1dHRvblwiKTtcclxuICBleGl0QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSA9IChhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGxldCB3aG9DaG9vc2VzUG9rZW1vblRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3dob0Nob29zZXNQYXJhZ3JhcGhcIikhO1xyXG4gIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDNcclxuICAgID8gKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IFwiV2FpdCBmb3IgdGhlIGdhbWUgdG8gc3RhcnQuLi5cIilcclxuICAgIDogKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IGAke2FjdGl2ZVBsYXllci5uYW1lfSBjaG9vc2VzIDEgcG9rZW1vbmApO1xyXG59O1xyXG4iLCJleHBvcnQgdHlwZSBQb2tlbW9uVHlwZSA9XHJcbiAgfCBcImdyYXNzXCJcclxuICB8IFwicG9pc29uXCJcclxuICB8IFwiZmlyZVwiXHJcbiAgfCBcIndhdGVyXCJcclxuICB8IFwiYnVnXCJcclxuICB8IFwibm9ybWFsXCJcclxuICB8IFwiZmx5aW5nXCJcclxuICB8IFwiZWxlY3RyaWNcIlxyXG4gIHwgXCJncm91bmRcIlxyXG4gIHwgXCJmYWlyeVwiXHJcbiAgfCBcInBzeWNoaWNcIlxyXG4gIHwgXCJmaWdodGluZ1wiXHJcbiAgfCBcInJvY2tcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uIHtcclxuXHJcbiAgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcclxuICByZWFkb25seSBfaW1hZ2U6IHN0cmluZztcclxuICByZWFkb25seSBfbWF4SFA6IG51bWJlcjtcclxuICBwcml2YXRlIF9jdXJyZW50SFA6IG51bWJlcjtcclxuICByZWFkb25seSBfYXR0YWNrUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2RlZmVuc2VQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfdHlwZXM6IFBva2Vtb25UeXBlW107XHJcbiAgcmVhZG9ubHkgX21vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaW1hZ2U6IHN0cmluZywgbWF4SFA6IG51bWJlciwgYXR0YWNrUG9pbnRzOiBudW1iZXIsXHJcbiAgICBkZWZlbnNlUG9pbnRzOiBudW1iZXIsIHR5cGVzOiBQb2tlbW9uVHlwZVtdLCBtb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdKSB7XHJcblxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9pbWFnZSA9IGltYWdlO1xyXG4gICAgdGhpcy5fbWF4SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fYXR0YWNrUG9pbnRzID0gYXR0YWNrUG9pbnRzO1xyXG4gICAgdGhpcy5fZGVmZW5zZVBvaW50cyA9IGRlZmVuc2VQb2ludHM7XHJcbiAgICB0aGlzLl90eXBlcyA9IHR5cGVzO1xyXG4gICAgdGhpcy5fbW92ZXMgPSBtb3ZlcztcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGltYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdEhQKHBvaW50c1RvU3VidHJhY3Q6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SFAgPSB0aGlzLl9jdXJyZW50SFAgLSBwb2ludHNUb1N1YnRyYWN0O1xyXG4gICAgaWYgKG5ld0hQIDwgMCkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50SFAgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbmV3SFA7XHJcbiAgfVxyXG5cclxuICBoZWFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0YWNrUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F0dGFja1BvaW50cztcclxuICB9XHJcblxyXG4gIGdldCBkZWZlbnNlUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmVuc2VQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbW92ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW92ZXM7XHJcbiAgfVxyXG5cclxuICBpc0FsaXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUCA+IDA7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5pbXBvcnQgeyBQb2tlbW9uVHlwZSB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb25GYWN0b3J5IHtcclxuICAgIHJlYWRvbmx5IF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBva2VEYXRhOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyB0eXBlczogc3RyaW5nW107XHJcbiAgICAgICAgc3RhdHM6IHsgaHA6IG51bWJlcjsgYXR0YWNrOiBudW1iZXI7IGRlZmVuc2U6IG51bWJlcjsgfTtcclxuICAgICAgICBtb3ZlczogeyBuYW1lOiBzdHJpbmc7IGFjY3VyYWN5OiBudW1iZXI7IHBvd2VyOiBudW1iZXI7IHR5cGU6IHN0cmluZzsgfVtdXHJcbiAgICB9W10pIHtcclxuICAgICAgICB0aGlzLl9wb2tlbW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBwb2tlbW9uIG9mIHBva2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlSW1nID0gXCIuLi9hc3NldHMvXCIgKyBwb2tlbW9uLm5hbWUgKyBcIi5wbmdcIlxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZU1vdmVzID0gcG9rZW1vbi5tb3Zlcy5yZWR1Y2UoICh0YWIsIG1vdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhYi5wdXNoKHttb3ZlTmFtZTogbW92ZS5uYW1lLCBtb3ZlVHlwZTogbW92ZS50eXBlIGFzIFBva2Vtb25UeXBlfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWJcclxuICAgICAgICAgICAgICAgIH0sIFtdIGFzIHttb3ZlTmFtZTogc3RyaW5nLCBtb3ZlVHlwZTogUG9rZW1vblR5cGV9W10pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlVHlwZXM6IFBva2Vtb25UeXBlW10gPSBwb2tlbW9uLnR5cGVzLm1hcCh2ID0+IHYgYXMgUG9rZW1vblR5cGUpXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlbW9uT2JqZWN0ID0gbmV3IFBva2Vtb24odGhpcy5fY2FwaXRhbGl6ZShwb2tlbW9uLm5hbWUpLCBwb2tlSW1nLCBcclxuICAgICAgICAgICAgICAgIHBva2Vtb24uc3RhdHMuaHAsIHBva2Vtb24uc3RhdHMuYXR0YWNrLCBwb2tlbW9uLnN0YXRzLmRlZmVuc2UsXHJcbiAgICAgICAgICAgICAgICBwb2tlVHlwZXMsIHBva2VNb3ZlcylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbk9iamVjdClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9rZW1vbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQb2tlbW9uIHtcclxuICAgICAgICBjb25zdCBwb2tlbW9uID0gdGhpcy5fcG9rZW1vbnMuZmluZCggcG9rZW1vbiA9PiBwb2tlbW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAocG9rZW1vbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9rZW1vbiAke25hbWV9IGlzIG5vdCBmb3VuZCBpbiB0aGUgcG9rZW1vbiBmYWN0b3J5YClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBva2Vtb25cclxuICAgIH1cclxuXHJcbiAgICBfY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgICAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdhbWVIYW5kbGVyIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllck9uZTogUGxheWVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxheWVyVHdvOiBQbGF5ZXJcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5ZXI6IFBsYXllciA9IHRoaXMuX3BsYXllck9uZTtcclxuXHJcbiAgZ2V0IHBsYXllck9uZSAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IHN0YXJ0QmF0dGxlIH0gZnJvbSBcIi4uL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEdhbWVJZlJlYWR5ID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGlmIChwbGF5ZXJPbmUucG9rZW1vbnMubGVuZ3RoIDwgMyB8fCBwbGF5ZXJUd28ucG9rZW1vbnMubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHN0YXJ0QmF0dGxlKHBsYXllck9uZSwgcGxheWVyVHdvLCBhcHApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2UgfSBmcm9tIFwiLi9yZW5kZXJGaWdodFBhZ2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEJhdHRsZSA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhcHA6IEhUTUxEaXZFbGVtZW50XHJcbikgPT4ge1xyXG4gIGNvbnN0IGdhbWUgPSBuZXcgR2FtZUhhbmRsZXIocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlnaHRQYWdlKGFwcCwgZ2FtZSksIDIwMDApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQb2tlbW9uIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXIgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJcIjtcclxuaW1wb3J0IHsgY3JlYXRlSFBCYXJzIH0gZnJvbSBcIi4vY3JlYXRlSFBCYXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxsc1wiO1xyXG5cclxuY29uc3QgY3JlYXRlUGxheWVyRmlnaHROYW1lcyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVOYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMS1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29OYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMi1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBwbGF5ZXJPbmVOYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyT25lLm5hbWU7XHJcbiAgcGxheWVyVHdvTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllclR3by5uYW1lO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZSA9IChcclxuICBhcHBEaXY6IEhUTUxEaXZFbGVtZW50LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBmaWdodFBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBmaWdodFBhZ2UuaW5uZXJIVE1MO1xyXG4gIGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMoZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVIUEJhcnMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgY3JlYXRlQmFyID0gKHBsYXllcjogUGxheWVyLCBIUEJhcjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1heEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubWF4SFA7XHJcbiAgICBjb25zdCBjdXJyZW50SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5jdXJyZW50SFA7XHJcbiAgICBjb25zdCBIUEluUGVyY2VudCA9IChjdXJyZW50SFAgLyBtYXhIUCkgKiAxMDA7XHJcbiAgICBjb25zb2xlLmxvZyhIUEluUGVyY2VudCk7XHJcbiAgICBIUEJhci5zdHlsZS53aWR0aCA9IGAke0hQSW5QZXJjZW50fSVgO1xyXG4gICAgbGV0IEhQQ2xhc3NMaXN0ID0gSFBCYXIuY2xhc3NMaXN0O1xyXG4gICAgaWYgKEhQSW5QZXJjZW50IDwgMjApIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZUhQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0hQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJPbmUsIHBsYXllck9uZUhQQmFyKTtcclxuICBjcmVhdGVCYXIocGxheWVyVHdvLCBwbGF5ZXJUd29IUEJhcik7XHJcbn07XHJcbiIsImltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYWN0aXZlUGxheWVyQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhY3RpdmUtcGxheWVyLWluZm9cIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgYWN0aXZlUGxheWVyQXJlYS50ZXh0Q29udGVudCA9IGAke2dhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIubmFtZX0gbm93IGlzIHlvdXIgdHVybi4gR2V0IHRoZSByZXZlbmdlIWA7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICAgIGNvbnN0IHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjFcIlxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgY29uc3QgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMlwiXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMVwiXHJcbiAgICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICAgIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIyXCJcclxuICAgICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gICAgY29uc3QgY3JlYXRlUG9rZW1vbiA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgICAgbmFtZUFyZWE6IEhUTUxIZWFkaW5nRWxlbWVudFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgICAgaW1hZ2VBcmVhLnNldEF0dHJpYnV0ZShcInNyY1wiLCBgLi9hc3NldHMvJHtwb2tlbW9uTmFtZS50b0xvd2VyQ2FzZSgpfS5wbmdgKTtcclxuICAgICAgbmFtZUFyZWEudGV4dENvbnRlbnQgPSBwb2tlbW9uTmFtZTtcclxuICAgIH07XHJcbiAgICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgICBnYW1lSGFuZGxlci5wbGF5ZXJPbmUsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICAgKTtcclxuICAgIGNyZWF0ZVBva2Vtb24oXHJcbiAgICAgIGdhbWVIYW5kbGVyLnBsYXllclR3byxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgICApO1xyXG4gIH07IiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgICBjb25zdCBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgICApID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPiBwbGF5ZXIuYWxpdmVQb2tlbW9ucy5sZW5ndGggLSAxOyBpLS0pIHtcclxuICAgICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIxIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllclR3bywgcGxheWVyVHdvUG9rZWJhbGxzKTtcclxuICB9OyIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQbGF5ZXJOYW1lcyB9IGZyb20gXCIuL2NyZWF0ZVBsYXllck5hbWVzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2Vtb25zIH0gZnJvbSBcIi4vY3JlYXRlUG9rZW1vbnNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVDaG9vc2VQYWdlID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBhY3RpdmVQbGF5ZXIgPSBwbGF5ZXJPbmU7XHJcbiAgY3JlYXRlUGxheWVyTmFtZXMocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICBjcmVhdGVQb2tlbW9ucyhwbGF5ZXJPbmUsIHBsYXllclR3bywgYWN0aXZlUGxheWVyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUGxheWVyTmFtZXMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHBsYXllck9uZU5hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjFOYW1lXCIpITtcclxuICBwbGF5ZXJPbmVOYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJPbmUubmFtZTtcclxuICBsZXQgcGxheWVyVHdvTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMk5hbWVcIikhO1xyXG4gIHBsYXllclR3b05hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllclR3by5uYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0ICogYXMgZGF0YSBmcm9tIFwiLi4vLi4vYXNzZXRzL3Bva2VfZGF0YS5qc29uXCI7XHJcbmltcG9ydCB7IHN0YXJ0R2FtZUlmUmVhZHkgfSBmcm9tIFwiLi9zdGFydEdhbWVJZlJlYWR5XCI7XHJcbmltcG9ydCB7IGFkZENob3NlblBva2Vtb24gfSBmcm9tIFwiLi9hZGRDaG9zZW5Qb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZVBva2ViYWxsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2Vtb25zID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIHBsYXllclR3bzogUGxheWVyLFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IHBva2VEYXRhID0gZGF0YS5wb2tlbW9ucztcclxuICBjb25zdCBwb2tlbW9uRmFjdG9yeSA9IG5ldyBQb2tlbW9uRmFjdG9yeShwb2tlRGF0YSk7XHJcbiAgY29uc3QgcG9rZW1vbkltYWdlcyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI3Bva2Vtb25MaXN0IGltZ1wiKVxyXG4gICkgYXMgW0hUTUxJbWFnZUVsZW1lbnRdO1xyXG5cclxuICBwb2tlbW9uSW1hZ2VzLmZvckVhY2goKHBva2Vtb25JbWFnZSkgPT5cclxuICAgIHBva2Vtb25JbWFnZS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICBcImNsaWNrXCIsXHJcbiAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDMpIHJldHVybjtcclxuICAgICAgICBhZGRDaG9zZW5Qb2tlbW9uKGUsIHBva2Vtb25GYWN0b3J5LCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIGNyZWF0ZVBva2ViYWxscyhwbGF5ZXJPbmUsIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgLy8gY2hhbmdlIHBsYXllclxyXG4gICAgICAgIGFjdGl2ZVBsYXllciA9IGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lID8gcGxheWVyVHdvIDogcGxheWVyT25lO1xyXG4gICAgICAgIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBzdGFydEdhbWVJZlJlYWR5KHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICAgICAgfSxcclxuICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4uL3Bva2Vtb25DbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhZGRDaG9zZW5Qb2tlbW9uID0gKFxyXG4gIGV2ZW50OiBFdmVudCxcclxuICBmYWN0b3J5OiBQb2tlbW9uRmFjdG9yeSxcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBjbGlja2VkUG9rZW1vbiA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBva2Vtb25OYW1lID0gY2xpY2tlZFBva2Vtb24uaWQ7XHJcbiAgY29uc3QgbmV3UG9rZW1vbk9iamVjdDogUG9rZW1vbiA9IGZhY3RvcnkuZ2V0UG9rZW1vbkJ5TmFtZShwb2tlbW9uTmFtZSk7XHJcbiAgYWN0aXZlUGxheWVyLmFkZFBva2Vtb24obmV3UG9rZW1vbk9iamVjdCk7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuZmlsdGVyID0gXCJncmF5c2NhbGUoMTAwJSlcIjtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZWJhbGxzID0gKHBsYXllck9uZTogUGxheWVyLCBhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdID1cclxuICAgIGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lXHJcbiAgICAgID8gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIxIGltZ1wiKSlcclxuICAgICAgOiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjIgaW1nXCIpKTtcclxuICBjb25zdCBwbGF5ZXJMYXN0UG9rZW1vbk5hbWU6IHN0cmluZyA9IGFjdGl2ZVBsYXllci5wb2tlbW9uc1tcclxuICAgIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxXHJcbiAgXS5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgY29uc3QgbnVtYmVyT2ZMYXN0UG9rZW1vbjogbnVtYmVyID0gYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDE7XHJcbiAgcGxheWVyUG9rZWJhbGxzW251bWJlck9mTGFzdFBva2Vtb25dLnNldEF0dHJpYnV0ZShcclxuICAgIFwic3JjXCIsXHJcbiAgICBgLi9hc3NldHMvJHtwbGF5ZXJMYXN0UG9rZW1vbk5hbWV9LnBuZ2BcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUGxheWVyIHtcclxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcG9rZW1vbnM6IFBva2Vtb25bXTtcclxuICBwcml2YXRlIF9pbmRleE9mQWN0aXZlUG9rZW1vbjogbnVtYmVyO1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcG9rZW1vbnM6IFBva2Vtb25bXSkge1xyXG4gICAgaWYgKG5hbWUubGVuZ3RoID4gOCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbG9uZyBuYW1lXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHBva2Vtb25zLmxlbmd0aCA+IDMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbnVtYmVyIG9mIHBva2Vtb25zXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9wb2tlbW9ucyA9IHBva2Vtb25zO1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9ucztcclxuICB9XHJcblxyXG4gIHNldCBpbmRleE9mQWN0aXZlUG9rZW1vbihudW1PZkFjdGl2ZVBva2Vtb246IG51bWJlcikge1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSBudW1PZkFjdGl2ZVBva2Vtb247XHJcbiAgfVxyXG4gIGdldCBnZXRBY3RpdmVQb2tlbW9uKCk6IFBva2Vtb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zW3RoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGl2ZVBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICBjb25zdCBhbGl2ZVBva2Vtb25zVGFiOiBQb2tlbW9uW10gPSB0aGlzLnBva2Vtb25zLmZpbHRlcigocG9rZW1vbikgPT5cclxuICAgICAgcG9rZW1vbi5pc0FsaXZlKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gYWxpdmVQb2tlbW9uc1RhYjtcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZW5hYmxlZCdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgIH1cclxufSIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/index.html b/index.html index d5b59c2..3ddac5f 100644 --- a/index.html +++ b/index.html @@ -106,13 +106,13 @@

POKEMON LIST

Ash

Pokeball Pokeball - Pokeball + Pokeball -
-

Misty

+
+

Misty

+ Pokeball + Pokeball Pokeball - Pokeball - Pokeball
@@ -120,9 +120,9 @@

Misty

- Pokemon + Pokemon
-

Pikachu

+

Pikachu

HP:

@@ -130,9 +130,9 @@

HP:

- Pokemon + Pokemon
-

Bulbasaur

+

Bulbasaur

HP:

diff --git a/src/choosePokemonsPage/createPokemons.ts b/src/choosePokemonsPage/createPokemons.ts index bae5916..c325b72 100644 --- a/src/choosePokemonsPage/createPokemons.ts +++ b/src/choosePokemonsPage/createPokemons.ts @@ -27,7 +27,6 @@ export const createPokemons = ( // change player activePlayer = activePlayer === playerOne ? playerTwo : playerOne; createActivePlayerName(activePlayer); - console.log(playerOne, playerTwo); startGameIfReady(playerOne, playerTwo); }, { once: true } diff --git a/src/choosePokemonsPage/renderFightPage.ts b/src/choosePokemonsPage/renderFightPage.ts deleted file mode 100644 index 0822c88..0000000 --- a/src/choosePokemonsPage/renderFightPage.ts +++ /dev/null @@ -1,6 +0,0 @@ -export const renderFightPage = (appDiv: HTMLDivElement) => { - const fightPage = document.querySelector( - "#fight-page-template" - ) as HTMLTemplateElement; - appDiv.innerHTML = fightPage.innerHTML; -}; diff --git a/src/choosePokemonsPage/startGameIfReady.ts b/src/choosePokemonsPage/startGameIfReady.ts index 1e3afc2..8bb0666 100644 --- a/src/choosePokemonsPage/startGameIfReady.ts +++ b/src/choosePokemonsPage/startGameIfReady.ts @@ -1,8 +1,9 @@ import { Player } from "../playerClass"; -import { renderFightPage } from "./renderFightPage"; +import { startBattle } from "../fightPage/startBattle"; + export const startGameIfReady = (playerOne: Player, playerTwo: Player) => { if (playerOne.pokemons.length < 3 || playerTwo.pokemons.length < 3) return; const app = document.querySelector("#app") as HTMLDivElement; - setTimeout(() => renderFightPage(app), 2000); + startBattle(playerOne, playerTwo, app); }; diff --git a/src/fightPage/createActivePlayer.ts b/src/fightPage/createActivePlayer.ts new file mode 100644 index 0000000..a46624b --- /dev/null +++ b/src/fightPage/createActivePlayer.ts @@ -0,0 +1,8 @@ +import { GameHandler } from "../gameHandlerClass"; + +export const createActivePlayer = (gameHandler: GameHandler) => { + const activePlayerArea = document.querySelector( + "#active-player-info" + ) as HTMLDivElement; + activePlayerArea.textContent = `${gameHandler.currentPlayer.name} now is your turn. Get the revenge!`; +}; diff --git a/src/fightPage/createActivePokemon.ts b/src/fightPage/createActivePokemon.ts new file mode 100644 index 0000000..af1dfd5 --- /dev/null +++ b/src/fightPage/createActivePokemon.ts @@ -0,0 +1,36 @@ +import { Player } from "../playerClass"; +import { GameHandler } from "../gameHandlerClass"; + +export const createActivePokemon = (gameHandler: GameHandler) => { + const playerOneActivePokemonImageArea = document.querySelector( + "#pokemon-image-player1" + ) as HTMLImageElement; + const playerTwoActivePokemonImageArea = document.querySelector( + "#pokemon-image-player2" + ) as HTMLImageElement; + const playerOneActivePokemonNameArea = document.querySelector( + "#pokemon-name-player1" + ) as HTMLHeadingElement; + const playerTwoActivePokemonNameArea = document.querySelector( + "#pokemon-name-player2" + ) as HTMLHeadingElement; + const createPokemon = ( + player: Player, + imageArea: HTMLImageElement, + nameArea: HTMLHeadingElement + ) => { + const pokemonName = player.getActivePokemon.name; + imageArea.setAttribute("src", `./assets/${pokemonName.toLowerCase()}.png`); + nameArea.textContent = pokemonName; + }; + createPokemon( + gameHandler.playerOne, + playerOneActivePokemonImageArea, + playerOneActivePokemonNameArea + ); + createPokemon( + gameHandler.playerTwo, + playerTwoActivePokemonImageArea, + playerTwoActivePokemonNameArea + ); + }; \ No newline at end of file diff --git a/src/fightPage/createFightPagePokeballs.ts b/src/fightPage/createFightPagePokeballs.ts new file mode 100644 index 0000000..9e3a57c --- /dev/null +++ b/src/fightPage/createFightPagePokeballs.ts @@ -0,0 +1,21 @@ +import { Player } from "../playerClass"; +import { GameHandler } from "../gameHandlerClass"; + +export const createFightPagePokeballs = (gameHandler: GameHandler) => { + const changeClassOfDisabledPokemons = ( + player: Player, + playerPokeballs: HTMLImageElement[] + ) => { + for (let i = 2; i > player.alivePokemons.length - 1; i--) { + playerPokeballs[i].classList.add("disabledPokemon"); + } + }; + const playerOnePokeballs = Array.from( + document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon") + ) as HTMLImageElement[]; + const playerTwoPokeballs = Array.from( + document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon") + ) as HTMLImageElement[]; + changeClassOfDisabledPokemons(gameHandler.playerOne, playerOnePokeballs); + changeClassOfDisabledPokemons(gameHandler.playerTwo, playerTwoPokeballs); + }; \ No newline at end of file diff --git a/src/fightPage/createHPBars.ts b/src/fightPage/createHPBars.ts new file mode 100644 index 0000000..33a3e2f --- /dev/null +++ b/src/fightPage/createHPBars.ts @@ -0,0 +1,27 @@ +import { Player } from "../playerClass"; + +export const createHPBars = (playerOne: Player, playerTwo: Player) => { + const createBar = (player: Player, HPBar: HTMLDivElement) => { + const maxHP = player.getActivePokemon.maxHP; + const currentHP = player.getActivePokemon.currentHP; + const HPInPercent = (currentHP / maxHP) * 100; + console.log(HPInPercent); + HPBar.style.width = `${HPInPercent}%`; + let HPClassList = HPBar.classList; + if (HPInPercent < 20) { + HPClassList.remove("hpBarHighLevel"); + HPClassList.add("hpBarLowLevel"); + } else { + HPClassList.remove("hpBarLowLevel"); + HPClassList.add("hpBarHighLevel"); + } + }; + const playerOneHPBar = document.querySelector( + "#hp-bar-player1" + ) as HTMLDivElement; + const playerTwoHPBar = document.querySelector( + "#hp-bar-player2" + ) as HTMLDivElement; + createBar(playerOne, playerOneHPBar); + createBar(playerTwo, playerTwoHPBar); +}; diff --git a/src/fightPage/renderFightPage.ts b/src/fightPage/renderFightPage.ts new file mode 100644 index 0000000..a9484d8 --- /dev/null +++ b/src/fightPage/renderFightPage.ts @@ -0,0 +1,32 @@ +import { Player } from "../playerClass"; +import { GameHandler } from "../gameHandlerClass"; +import { createActivePokemon } from "./createActivePokemon"; +import { createActivePlayer } from "./createActivePlayer"; +import { createHPBars } from "./createHPBars"; +import { createFightPagePokeballs } from "./createFightPagePokeballs"; + +const createPlayerFightNames = (gameHandler: GameHandler) => { + const playerOneName = document.querySelector( + "#fight-page-player1-name" + ) as HTMLHeadingElement; + const playerTwoName = document.querySelector( + "#fight-page-player2-name" + ) as HTMLHeadingElement; + playerOneName.textContent = gameHandler.playerOne.name; + playerTwoName.textContent = gameHandler.playerTwo.name; +}; + +export const createFightPage = ( + appDiv: HTMLDivElement, + gameHandler: GameHandler +) => { + const fightPage = document.querySelector( + "#fight-page-template" + ) as HTMLTemplateElement; + appDiv.innerHTML = fightPage.innerHTML; + createPlayerFightNames(gameHandler); + createActivePlayer(gameHandler); + createActivePokemon(gameHandler); + createHPBars(gameHandler.playerOne, gameHandler.playerTwo); + createFightPagePokeballs(gameHandler); +}; diff --git a/src/fightPage/startBattle.ts b/src/fightPage/startBattle.ts new file mode 100644 index 0000000..275b998 --- /dev/null +++ b/src/fightPage/startBattle.ts @@ -0,0 +1,12 @@ +import { Player } from "../playerClass"; +import { GameHandler } from "../gameHandlerClass"; +import { createFightPage } from "./renderFightPage"; + +export const startBattle = ( + playerOne: Player, + playerTwo: Player, + app: HTMLDivElement +) => { + const game = new GameHandler(playerOne, playerTwo); + setTimeout(() => createFightPage(app, game), 2000); +}; diff --git a/src/gameHandlerClass.ts b/src/gameHandlerClass.ts index 28bacda..eb9556d 100644 --- a/src/gameHandlerClass.ts +++ b/src/gameHandlerClass.ts @@ -6,13 +6,21 @@ export class GameHandler { private readonly _playerTwo: Player ) {} - _currentPlayer: Player = this._playerOne; + private _currentPlayer: Player = this._playerOne; - getCurrentPlayer(): Player { + get playerOne () { + return this._playerOne; + } + + get playerTwo() { + return this._playerTwo; + } + + get currentPlayer(): Player { return this._currentPlayer; } - getOpponentPlayer(): Player { + get opponentPlayer(): Player { if (this._currentPlayer === this._playerOne) return this._playerTwo; return this._playerOne; } diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index 2cd9893..ff62004 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -94,15 +94,17 @@ grid-column: span 5; width: 100%; height: 1.8rem; - background-color: #0C9300; @include boxshadow; transform-origin: left center; border-radius: 10px; margin-top: 1rem; } - #hp-bar-player2{ - width: 20%; + .hpBarHighLevel { + background-color: #0C9300; + } + + .hpBarLowLevel{ background-color: $color-primary; } } diff --git a/styles/app.css b/styles/app.css index d325055..47585ea 100644 --- a/styles/app.css +++ b/styles/app.css @@ -5,12 +5,14 @@ } html { - box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; font-size: 10px; } *, *:before, *:after { - box-sizing: inherit; + -webkit-box-sizing: inherit; + box-sizing: inherit; } @font-face { @@ -24,10 +26,20 @@ html { margin: auto; padding: 10vw; background-color: #e8f1f2ff; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } @@ -35,28 +47,42 @@ html { max-width: 400px; text-align: center; margin-bottom: 1em; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #loading-view img { + width: -webkit-fit-content; + width: -moz-fit-content; width: fit-content; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #loading-view #zzz { position: relative; left: 50px; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); } #starting-page { width: 100%; height: 100vh; margin: auto; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #header-with-enter-name-manu { @@ -65,17 +91,30 @@ html { padding-right: 10vw; width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: center; - align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #header-with-enter-name-manu .headerWrapper { max-width: 500px; height: 300px; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: space-evenly; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; padding-bottom: 100px; color: #e8f1f2ff; } @@ -109,8 +148,11 @@ html { } #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area { + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-around; + -ms-flex-pack: distribute; + justify-content: space-around; } #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput { @@ -129,7 +171,8 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; background-color: #020402ff; width: 160px; @@ -140,7 +183,8 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; background-color: #e8f1f2ff; width: 130px; @@ -151,9 +195,11 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; width: 110px; height: 110px; text-align: center; @@ -163,7 +209,8 @@ html { } #starting-page #start-game-border #start-game-bg1 #start-game-bg2 #start-game-button:hover { - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); } #starting-page #start-game-border #start-game-bg1 #start-game-bg2 .button-enabled { @@ -182,18 +229,33 @@ html { padding-right: 10vw; width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #info-menu #select-info-menu { width: 240px; height: 30vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: space-around; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -ms-flex-pack: distribute; + justify-content: space-around; margin-top: 80px; } @@ -209,17 +271,26 @@ html { } #starting-page #info-menu #select-info-menu .start-page-button:hover { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #9b1d20ff; } .popupScreen { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #e8f1f2ff; display: none; - flex-flow: column nowrap; - justify-content: space-between; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; border-radius: 25px; width: 80vw; height: 80vh; @@ -237,10 +308,14 @@ html { } .popupScreen .exitButton { - align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; line-height: 1; margin: 2vh; - user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; cursor: pointer; } @@ -255,10 +330,18 @@ html { #choose-page { width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - align-items: center; - justify-content: space-around; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: distribute; + justify-content: space-around; line-height: 1.2; padding: 2vh; } @@ -279,9 +362,13 @@ html { } #choose-page .choosePagePlayers { + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: center; } @@ -295,8 +382,10 @@ html { } #choose-page #pokemonList { + display: -ms-grid; display: grid; - grid-template-columns: repeat(4, 1fr); + -ms-grid-columns: (1fr)[4]; + grid-template-columns: repeat(4, 1fr); justify-items: center; } @@ -309,22 +398,39 @@ html { #fight-page { width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .playersContainer { width: 100%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-evenly; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; } #fight-page .playersContainer .playerDetails { + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: center; } @@ -337,12 +443,14 @@ html { #fight-page .playersContainer .playerDetails .pokeballWithPokemon { width: 20px; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); margin: 0 2px; } #fight-page .playersContainer .playerDetails .disabledPokemon { - filter: grayscale(100%); + -webkit-filter: grayscale(100%); + filter: grayscale(100%); } #fight-page .playersContainer .activePlayer { @@ -363,24 +471,41 @@ html { #fight-page .battleArea .pokemonDetails { width: 100%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-between; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } #fight-page .battleArea .pokemonDetails img { + width: -webkit-fit-content; + width: -moz-fit-content; width: fit-content; } #fight-page .battleArea .pokemonDetails #pokemon-player2 { - order: 2; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } #fight-page .battleArea .pokemonDetails .pokemonInfo { width: 70%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .battleArea .pokemonDetails .pokemonInfo h2 { @@ -395,9 +520,13 @@ html { #fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar { width: 70%; + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: first; } @@ -405,31 +534,43 @@ html { grid-column: span 5; width: 100%; height: 1.8rem; - background-color: #0C9300; - box-shadow: 1px 1px 3px #020402ff; - transform-origin: left center; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; + -webkit-transform-origin: left center; + transform-origin: left center; border-radius: 10px; margin-top: 1rem; } -#fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar #hp-bar-player2 { - width: 20%; +#fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar .hpBarHighLevel { + background-color: #0C9300; +} + +#fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar .hpBarLowLevel { background-color: #9b1d20ff; } #fight-page .gameActions { width: 90%; max-height: 50%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; margin-top: 25px; } #fight-page .gameActions .gameLogs { height: 10vh; width: 100%; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; border-radius: 5px; padding: 10px; font-size: 1.6rem; @@ -447,7 +588,8 @@ html { } #fight-page .gameActions .gameLogs::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 5px; background-color: transparent; } @@ -459,7 +601,8 @@ html { #fight-page .gameActions .gameLogs::-webkit-scrollbar-thumb { border-radius: 5px; - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: #020402ff; } @@ -523,14 +666,16 @@ html { font-size: 24px; } #choose-page .choosePagePlayers { - grid-template-columns: repeat(6, 1fr); + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); } #choose-page .choosePagePlayers img { max-width: 8vh; margin: 2vh; } #choose-page #pokemonList { - grid-template-columns: repeat(6, 1fr); + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); } #choose-page #pokemonList img { max-height: 10vh; @@ -546,24 +691,40 @@ html { font-size: 2.4rem; } #fight-page .battleArea { + display: -webkit-box; + display: -ms-flexbox; display: flex; } #fight-page .battleArea .pokemonDetails { - flex-flow: column; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .battleArea .pokemonDetails #pokemon-player2 { - order: 0; + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; } #fight-page .gameActions { - flex-flow: row; - justify-content: space-evenly; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row; + flex-flow: row; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; } #fight-page .gameActions .gameLogs { height: auto; max-height: 30vh; width: 45%; - order: 2; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } #fight-page .gameActions .buttonsContainer { width: 45%; @@ -590,8 +751,10 @@ footer { position: fixed; top: 50%; margin-left: .5em; - transform: rotate(-90deg) translate(-50%); - transform-origin: top left; + -webkit-transform: rotate(-90deg) translate(-50%); + transform: rotate(-90deg) translate(-50%); + -webkit-transform-origin: top left; + transform-origin: top left; white-space: nowrap; } @@ -603,7 +766,8 @@ footer { margin: 0.5em; border-radius: 1em; font-size: 0.9em; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; text-transform: uppercase; cursor: pointer; } diff --git a/styles/app.css.map b/styles/app.css.map index 904a8e6..9e1fbe7 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From a866dd0d8f243d697931ff9272c5a14e355005b7 Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Wed, 10 Feb 2021 11:09:37 +0100 Subject: [PATCH 24/76] MNG-99 & MNG-100 > created menu and back button with options. Options need to be fixed (now are default). Animation also needs to look better --- index.html | 6 +-- src/fightPage/renderFightPage.ts | 2 + src/gameHandlerClass.ts | 63 ++++++++++++++++++++++++++++++++ styles/SASS/app.scss | 1 + styles/app.css | 2 + styles/app.css.map | 2 +- 6 files changed, 72 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 3ddac5f..bae3bdc 100644 --- a/index.html +++ b/index.html @@ -157,10 +157,10 @@

HP:

Pikachu used Thunder Shock!

Bulbasaur used Mango

-
-
attack
+
+
diff --git a/src/fightPage/renderFightPage.ts b/src/fightPage/renderFightPage.ts index a9484d8..3213a53 100644 --- a/src/fightPage/renderFightPage.ts +++ b/src/fightPage/renderFightPage.ts @@ -29,4 +29,6 @@ export const createFightPage = ( createActivePokemon(gameHandler); createHPBars(gameHandler.playerOne, gameHandler.playerTwo); createFightPagePokeballs(gameHandler); + // generate choose action buttons + gameHandler.generateActionButtons(gameHandler.currentPlayer); }; diff --git a/src/gameHandlerClass.ts b/src/gameHandlerClass.ts index eb9556d..d525db5 100644 --- a/src/gameHandlerClass.ts +++ b/src/gameHandlerClass.ts @@ -43,4 +43,67 @@ export class GameHandler { ? this._playerTwo : this._playerOne; } + + generateActionButtons(player: Player): void { + console.log('action modal'); + const actionContainer = document.querySelector("#actionModals")!; + actionContainer.innerHTML = ` +
attack
+
switch
+
use mango (1)
`; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const attackButton = document.querySelector("#attackButton")!; + const switchButton = document.querySelector("#switchButton")!; + //const mangoButton = document.querySelector("#mangoButton") as HTMLDivElement; + attackButton.addEventListener('click', () => { + this.generateAttackButtons(player); + }); + switchButton.addEventListener('click', () => { + this.generateSwitchButtons(player); + }); + } + + generateAttackButtons(player: Player): void { + console.log('attack modal'); + const actionContainer = document.querySelector("#actionModals")!; + actionContainer.innerHTML = ` +
${player.pokemons[0].moves[0].moveName}
+
${player.pokemons[0].moves[1].moveName}
+
back
`; + //const attackButtonOne = document.querySelector("#attackButtonOne") as HTMLDivElement; + //const attackButtonTwo = document.querySelector("#attackButtonTwo") as HTMLDivElement; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const backButton = document.querySelector("#backButton")!; + backButton.addEventListener('click', () => { + //timeout and style for some button animation - the animation needs to be change + setTimeout( ()=> { + this.generateActionButtons(player); + }, 500); + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.transform = 'scaleX(0)'; + } + }); + } + + generateSwitchButtons(player: Player): void { + console.log('switch pokemon modal'); + const actionContainer = document.querySelector("#actionModals")!; + actionContainer.innerHTML = ` +
${player.pokemons[1].name}
+
${player.pokemons[2].name}
+
back
`; + //const switchButtonOne = document.querySelector("#switchButtonOne") as HTMLDivElement; + //const switchButtonTwo = document.querySelector("#switchButtonTwo") as HTMLDivElement; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const backButton = document.querySelector("#backButton")!; + backButton.addEventListener('click', () => { + //timeout and style for some button animation - the animation needs to be change + setTimeout( ()=> { + this.generateActionButtons(player); + }, 500); + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.transform = 'scaleX(0)'; + } + }); + } } diff --git a/styles/SASS/app.scss b/styles/SASS/app.scss index 893d6bb..f1cf135 100644 --- a/styles/SASS/app.scss +++ b/styles/SASS/app.scss @@ -46,6 +46,7 @@ footer { .battleButton { background-color: $color-bg; color: $color-text; + @include transition-ease; } .disabledButton { diff --git a/styles/app.css b/styles/app.css index 47585ea..da90d50 100644 --- a/styles/app.css +++ b/styles/app.css @@ -779,6 +779,8 @@ footer { .battleButton { background-color: #e8f1f2ff; color: #020402ff; + -webkit-transition: all .5s ease-in-out; + transition: all .5s ease-in-out; } .disabledButton { diff --git a/styles/app.css.map b/styles/app.css.map index 9e1fbe7..2a5a043 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "AEUA,OAAO,CAAC,sFAAI;ADJZ,AAAA,CAAC,CAAC;EACE,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;CACb;;AAED,AAAA,IAAI,CAAC;EACD,UAAU,EAAE,UAAU;EACtB,SAAS,EAAE,IAAI;CAClB;;AAED,AAAA,CAAC,EAAE,CAAC,AAAA,OAAO,EAAE,CAAC,AAAA,MAAM,CAAC;EACjB,UAAU,EAAE,OAAO;CACtB;;ACND,UAAU;EACR,WAAW,EAAE,eAAe;EAC5B,GAAG,EAAE,+BAA+B;;;ACbtC,AAAA,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,gBAAgB,EDDP,SAAS;ECElB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EDQjB,UAAU,EAAE,mBAAmB;CCYlC;;AA7BD,AAYE,aAZW,CAYX,CAAC,CAAC;EACA,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,MAAM;EAClB,aAAa,EAAE,GAAG;EDElB,UAAU,EAAE,mBAAmB;CCAhC;;AAjBH,AAmBE,aAnBW,CAmBX,GAAG,CAAC;EACF,KAAK,EAAE,WAAW;EDHlB,UAAU,EAAE,mBAAmB;CCKhC;;AAtBH,AAwBE,aAxBW,CAwBX,IAAI,CAAC;EACH,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,IAAI;EDDZ,MAAM,EAAE,kCAAoC;CCG3C;;AC3BH,AAAA,cAAc,CAAC;EACX,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAsJtB;;AA7JD,AASI,cATU,CASV,4BAA4B,CAAC;EACzB,gBAAgB,EFTR,SAAS;EEUjB,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAmDtB;;AApEL,AAmBQ,cAnBM,CASV,4BAA4B,CAUxB,cAAc,CAAC;EACX,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,YAAY;EAC7B,cAAc,EAAE,KAAK;EACrB,KAAK,EFvBN,SAAS;CEgEX;;AAnET,AA4BY,cA5BE,CASV,4BAA4B,CAUxB,cAAc,CASV,CAAC,EA5Bb,cAAc,CASV,4BAA4B,CAUxB,cAAc,CASP,GAAG,CAAC;EACH,MAAM,EAAE,GAAG;CACd;;AA9Bb,AAgCY,cAhCE,CASV,4BAA4B,CAUxB,cAAc,CAaV,KAAK,CAAC;EACF,MAAM,EAAE,IAAI;EACZ,gBAAgB,EFjChB,SAAS;EEkCT,UAAU,EAAE,MAAM;EAClB,KAAK,EFjCV,SAAS;EEkCJ,WAAW,EAAE,uBAAuB;EACpC,SAAS,EAAE,KAAK;CAKnB;;AA3Cb,AAwCgB,cAxCF,CASV,4BAA4B,CAUxB,cAAc,CAaV,KAAK,AAQA,MAAM,CAAC;EACJ,OAAO,EAAE,GAAG;CACf;;AA1CjB,AA6CY,cA7CE,CASV,4BAA4B,CAUxB,cAAc,CA0BV,UAAU,CAAC;EACP,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,eAAe;EAC5B,SAAS,EAAE,KAAK;CAEnB;;AAlDb,AAoDY,cApDE,CASV,4BAA4B,CAUxB,cAAc,CAiCV,iBAAiB,CAAC;EACd,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,KAAK;CACnB;;AAvDb,AAyDY,cAzDE,CASV,4BAA4B,CAUxB,cAAc,CAsCV,gBAAgB,CAAC;EACb,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,YAAY;CAMhC;;AAjEb,AA6DgB,cA7DF,CASV,4BAA4B,CAUxB,cAAc,CAsCV,gBAAgB,CAIZ,gBAAgB,CAAC;EACb,KAAK,EAAE,GAAG;CACb;;AA/DjB,AAsEI,cAtEU,CAsEV,kBAAkB,CAAC;EACf,gBAAgB,EFrEX,SAAS;EEsEd,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;CAyCf;;AApHL,AA6EQ,cA7EM,CAsEV,kBAAkB,CAOd,eAAe,CAAC;EF5BtB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,SAAS,EAAE,gBAAgB,CAAC,gBAAgB;EAC5C,aAAa,EAAE,GAAG;EE0BR,gBAAgB,EF7Ef,SAAS;EE8EV,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;CAkChB;;AAnHT,AAmFY,cAnFE,CAsEV,kBAAkB,CAOd,eAAe,CAMX,eAAe,CAAC;EFlC1B,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,SAAS,EAAE,gBAAgB,CAAC,gBAAgB;EAC5C,aAAa,EAAE,GAAG;EEgCJ,gBAAgB,EFlFrB,SAAS;EEmFJ,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;CA2BhB;;AAlHb,AAyFgB,cAzFF,CAsEV,kBAAkB,CAOd,eAAe,CAMX,eAAe,CAMX,kBAAkB,CAAC;EFxCjC,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,GAAG,EAAE,GAAG;EACR,SAAS,EAAE,gBAAgB,CAAC,gBAAgB;EAC5C,aAAa,EAAE,GAAG;EAjChB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAlBd,SAAS;EE0FF,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,eAAe;EAC5B,SAAS,EAAE,GAAG;EACd,WAAW,EAAE,GAAG;CAMnB;;AAvGjB,AAmGoB,cAnGN,CAsEV,kBAAkB,CAOd,eAAe,CAMX,eAAe,CAMX,kBAAkB,AAUb,MAAM,CAAC;EF3E1B,MAAM,EAAE,kCAAoC;CE6EzB;;AArGrB,AAyGgB,cAzGF,CAsEV,kBAAkB,CAOd,eAAe,CAMX,eAAe,CAsBX,eAAe,CAAC;EACZ,gBAAgB,EFvGzB,SAAS;EEwGA,KAAK,EFzGZ,SAAS;CE0GL;;AA5GjB,AA8GgB,cA9GF,CAsEV,kBAAkB,CAOd,eAAe,CAMX,eAAe,CA2BX,gBAAgB,CAAC;EACb,gBAAgB,EF9GpB,SAAS;EE+GL,KAAK,EF/GT,SAAS;CEgHR;;AAjHjB,AAsHI,cAtHU,CAsHV,UAAU,CAAC;EACP,gBAAgB,EFpHb,SAAS;EEqHZ,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CA6BtB;;AA5JL,AAkIQ,cAlIM,CAsHV,UAAU,CAYN,iBAAiB,CAAC;EACd,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,YAAY;EAC7B,UAAU,EAAE,IAAI;CAkBnB;;AA1JT,AA0IY,cA1IE,CAsHV,UAAU,CAYN,iBAAiB,CAQb,kBAAkB,CAAC;EACf,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;EAChB,gBAAgB,EF3InB,SAAS;EE4IN,KAAK,EF3IV,SAAS;EE4IJ,OAAO,EAAE,KAAK;EACd,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,OAAO;CAOlB;;AAzJb,AAoJgB,cApJF,CAsHV,UAAU,CAYN,iBAAiB,CAQb,kBAAkB,AAUb,MAAM,CAAC;EFhIpB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAlBd,SAAS;EEoJF,gBAAgB,EFrJpB,SAAS;CEsJR;;AAQjB,AAAA,YAAY,CAAC;EF3IT,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAlBd,SAAS;EE+Jd,gBAAgB,EF9Jb,SAAS;EE+JZ,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,aAAa;EAC9B,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,KAAK;EAClB,aAAa,EAAE,KAAK;EACpB,OAAO,EAAE,CAAC;CAsBb;;AArCL,AAiBQ,YAjBI,CAiBJ,WAAW,EAjBnB,YAAY,CAiBS,YAAY,EAjBjC,YAAY,CAiBuB,eAAe,CAAC;EACvC,WAAW,EAAE,eAAe;EAC5B,KAAK,EFhLJ,SAAS;CEiLb;;AApBT,AAsBQ,YAtBI,CAsBJ,WAAW,CAAC;EACR,UAAU,EAAC,QAAQ;EACnB,WAAW,EAAE,CAAC;EACd,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,IAAI;EACjB,MAAM,EAAE,OAAO;CAClB;;AA5BT,AA8BQ,YA9BI,CA8BJ,YAAY,CAAC;EACT,SAAS,EAAE,GAAG;CACjB;;AAhCT,AAkCQ,YAlCI,CAkCJ,eAAe,CAAC;EACZ,SAAS,EAAE,KAAK;CACnB;;ACnMT,AAAA,YAAY,CAAC;EACT,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,WAAW,EAAE,MAAM;EACnB,eAAe,EAAE,YAAY;EAC7B,WAAW,EAAE,GAAG;EAChB,OAAO,EAAE,GAAG;CAyCf;;AAjDD,AAUI,YAVQ,CAUR,CAAC,CAAC;EACE,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM;CACrB;;AAbL,AAeI,YAfQ,CAeR,EAAE,CAAC;EACC,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,eAAe;CAC/B;;AAlBL,AAoBI,YApBQ,CAoBR,oBAAoB,CAAC;EACjB,KAAK,EHpBG,SAAS;EGqBjB,SAAS,EAAE,IAAI;CAClB;;AAvBL,AAyBI,YAzBQ,CAyBR,kBAAkB,CAAC;EACf,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,cAAc;EACrC,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,MAAM;CAQxB;;AArCL,AA8BQ,YA9BI,CAyBR,kBAAkB,CAKd,sBAAsB,CAAC;EACnB,WAAW,EAAE,MAAM;CACtB;;AAhCT,AAiCQ,YAjCI,CAyBR,kBAAkB,CAQd,GAAG,CAAC;EACA,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,OAAO;CACnB;;AApCT,AAuCI,YAvCQ,CAuCR,YAAY,CAAA;EACR,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,cAAc;EACrC,aAAa,EAAE,MAAM;CAMxB;;AAhDL,AA2CQ,YA3CI,CAuCR,YAAY,CAIR,GAAG,CAAC;EACA,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,WAAW;EACpB,MAAM,EAAE,OAAO;CAClB;;AC/CT,AAAA,WAAW,CAAC;EACV,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,aAAa;EACxB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CA6JpB;;AAnKD,AAQE,WARS,CAQT,iBAAiB,CAAC;EAChB,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,YAAY;CA8B9B;;AAzCH,AAaI,WAbO,CAQT,iBAAiB,CAKf,cAAc,CAAC;EACb,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,cAAc;EACrC,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,MAAM;CAkBtB;;AAnCL,AAmBM,WAnBK,CAQT,iBAAiB,CAKf,cAAc,CAMZ,EAAE,CAAC;EACD,WAAW,EAAE,eAAe;EAC5B,SAAS,EAAE,MAAM;EACjB,cAAc,EAAE,KAAK;EACrB,WAAW,EAAE,MAAM;CACpB;;AAxBP,AA0BM,WA1BK,CAQT,iBAAiB,CAKf,cAAc,CAaZ,oBAAoB,CAAC;EACnB,KAAK,EAAE,IAAI;EJHjB,MAAM,EAAE,kCAAoC;EIKtC,MAAM,EAAE,KAAK;CACd;;AA9BP,AAgCM,WAhCK,CAQT,iBAAiB,CAKf,cAAc,CAmBZ,gBAAgB,CAAC;EACf,MAAM,EAAE,eAAe;CACxB;;AAlCP,AAqCI,WArCO,CAQT,iBAAiB,CA6Bf,aAAa,CAAC;EACZ,KAAK,EJrCK,SAAS;EIsCnB,aAAa,EAAE,GAAG,CAAC,KAAK,CJtCd,SAAS;CIuCpB;;AAxCL,AA2CE,WA3CS,CA2CT,iBAAiB,CAAC;EAChB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,GAAG;EACV,SAAS,EAAE,MAAM;EACjB,MAAM,EAAE,SAAS;CAClB;;AAhDH,AAmDE,WAnDS,CAmDT,WAAW,CAAC;EACV,KAAK,EAAE,GAAG;CA0DX;;AA9GH,AAsDI,WAtDO,CAmDT,WAAW,CAGT,eAAe,CAAC;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,aAAa;CAoD/B;;AA7GL,AA2DM,WA3DK,CAmDT,WAAW,CAGT,eAAe,CAKb,GAAG,CAAC;EACF,KAAK,EAAE,WAAW;CACnB;;AA7DP,AA+DM,WA/DK,CAmDT,WAAW,CAGT,eAAe,CASb,gBAAgB,CAAC;EACf,KAAK,EAAE,CAAC;CACT;;AAjEP,AAmEM,WAnEK,CAmDT,WAAW,CAGT,eAAe,CAab,YAAY,CAAC;EACX,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM;EACjB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;CAoCpB;;AA5GP,AA0EQ,WA1EG,CAmDT,WAAW,CAGT,eAAe,CAab,YAAY,CAOV,EAAE,CAAC;EACD,WAAW,EAAE,eAAe;EAC5B,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,KAAK;EACrB,UAAU,EAAE,MAAM;EAClB,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;CACnB;;AAlFT,AAmFQ,WAnFG,CAmDT,WAAW,CAGT,eAAe,CAab,YAAY,CAgBV,cAAc,CAAC;EACb,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,cAAc;EACrC,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,KAAK;CAmBrB;;AA3GT,AA0FU,WA1FC,CAmDT,WAAW,CAGT,eAAe,CAab,YAAY,CAgBV,cAAc,CAOZ,MAAM,CAAC;EACL,WAAW,EAAE,MAAM;EACnB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,MAAM;EJzEtB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAlBd,SAAS;EI6FV,gBAAgB,EAAE,WAAW;EAC7B,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,IAAI;CACjB;;AAlGX,AAoGU,WApGC,CAmDT,WAAW,CAGT,eAAe,CAab,YAAY,CAgBV,cAAc,CAiBZ,eAAe,CAAC;EACd,gBAAgB,EAAE,OAAO;CAC1B;;AAtGX,AAwGU,WAxGC,CAmDT,WAAW,CAGT,eAAe,CAab,YAAY,CAgBV,cAAc,CAqBZ,cAAc,CAAA;EACZ,gBAAgB,EJxGZ,SAAS;CIyGd;;AA1GX,AAgHE,WAhHS,CAgHT,YAAY,CAAC;EACX,KAAK,EAAE,GAAG;EACV,UAAU,EAAE,GAAG;EACf,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,IAAI;CA2CjB;;AAjKH,AAwHI,WAxHO,CAgHT,YAAY,CAQV,SAAS,CAAC;EACR,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EJtGb,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAlBd,SAAS;EI2HhB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM;EACjB,UAAU,EAAE,MAAM;CA4BnB;;AA5JL,AAkIM,WAlIK,CAgHT,YAAY,CAQV,SAAS,CAUP,CAAC,CAAC;EACA,MAAM,EAAE,SAAS;EACjB,KAAK,EJlIA,SAAS;EImId,WAAW,EAAE,IAAI;CAKlB;;AA1IP,AAuIQ,WAvIG,CAgHT,YAAY,CAQV,SAAS,CAUP,CAAC,AAKE,UAAW,CAAA,EAAE,EAAE;EACd,KAAK,EJvIC,SAAS;CIwIhB;;AAzIT,AA4IM,WA5IK,CAgHT,YAAY,CAQV,SAAS,AAoBN,yBAAyB,CAAC;EACzB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAe;EACzC,aAAa,EAAE,GAAG;EAClB,gBAAgB,EAAE,WAAW;CAC9B;;AAhJP,AAkJM,WAlJK,CAgHT,YAAY,CAQV,SAAS,AA0BN,mBAAmB,CAAC;EACnB,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,WAAW;CAC9B;;AArJP,AAuJM,WAvJK,CAgHT,YAAY,CAQV,SAAS,AA+BN,yBAAyB,CAAC;EACzB,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAc;EACxC,gBAAgB,EJxJX,SAAS;CIyJf;;AA3JP,AA8JI,WA9JO,CAgHT,YAAY,CA8CV,iBAAiB,CAAC;EAChB,KAAK,EAAE,GAAG;CACX;;AJrHD,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;EMzCrC,AAEM,cAFQ,CACZ,4BAA4B,CACxB,cAAc,CAAC;IACX,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,KAAK;GAkBhB;EAtBP,AAKU,cALI,CACZ,4BAA4B,CACxB,cAAc,CAGV,KAAK,CAAC;IACF,SAAS,EAAE,KAAK;GACnB;EAPX,AASU,cATI,CACZ,4BAA4B,CACxB,cAAc,CAOV,UAAU,CAAC;IACP,SAAS,EAAE,GAAG;GACjB;EAXX,AAaU,cAbI,CACZ,4BAA4B,CACxB,cAAc,CAWV,iBAAiB,CAAC;IACd,SAAS,EAAE,GAAG;GACjB;EAfX,AAkBc,cAlBA,CACZ,4BAA4B,CACxB,cAAc,CAeV,gBAAgB,CACZ,gBAAgB,CAAC;IACb,KAAK,EAAE,GAAG;GACb;EApBf,AAyBE,cAzBY,CAyBZ,kBAAkB,CAAC;IACf,MAAM,EAAE,IAAI;GAiBf;EA3CH,AA4BM,cA5BQ,CAyBZ,kBAAkB,CAGd,eAAe,CAAC;IACZ,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;GAYhB;EA1CP,AAgCU,cAhCI,CAyBZ,kBAAkB,CAGd,eAAe,CAIX,eAAe,CAAC;IACZ,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;GAOhB;EAzCX,AAoCc,cApCA,CAyBZ,kBAAkB,CAGd,eAAe,CAIX,eAAe,CAIX,kBAAkB,CAAC;IACf,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;GAEhB;EAxCf,AA+CI,cA/CU,CA6CZ,UAAU,CAER,iBAAiB,CAAC;IACd,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI;GAKf;EAtDL,AAmDQ,cAnDM,CA6CZ,UAAU,CAER,iBAAiB,CAIb,kBAAkB,CAAC;IACf,SAAS,EAAE,GAAG;GACjB;EAKT,AAAA,YAAY,CAAC;IACX,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,KAAK;GACnB;EAEC,AAAA,YAAY,CAAC;IAEb,OAAO,EAAE,GAAG;GA4BX;EA9BD,AAII,YAJQ,CAIR,CAAC,CAAC;IACE,SAAS,EAAE,IAAI;GAClB;EANL,AAQI,YARQ,CAQR,EAAE,CAAC;IACC,SAAS,EAAE,IAAI;GAClB;EAVL,AAYI,YAZQ,CAYR,oBAAoB,CAAC;IACjB,SAAS,EAAE,IAAI;GAClB;EAdL,AAgBI,YAhBQ,CAgBR,kBAAkB,CAAC;IACf,qBAAqB,EAAE,cAAc;GAKxC;EAtBL,AAkBQ,YAlBI,CAgBR,kBAAkB,CAEd,GAAG,CAAC;IACA,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;GACd;EArBT,AAwBI,YAxBQ,CAwBR,YAAY,CAAA;IACR,qBAAqB,EAAE,cAAc;GAIxC;EA7BL,AA0BQ,YA1BI,CAwBR,YAAY,CAER,GAAG,CAAC;IACA,UAAU,EAAE,IAAI;GACnB;EAIT,AAMU,WANC,CAEP,iBAAiB,CAEb,cAAc,CAEZ,EAAE,CAAC;IACD,SAAS,EAAE,IAAI;GAChB;EARX,AAUU,WAVC,CAEP,iBAAiB,CAEb,cAAc,CAMZ,oBAAoB,CAAC;IACnB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,KAAK;GACd;EAbX,AAgBM,WAhBK,CAEP,iBAAiB,CAcf,iBAAiB,CAAC;IAChB,SAAS,EAAE,MAAM;GAClB;EAlBP,AAoBI,WApBO,CAoBP,WAAW,CAAC;IACR,OAAO,EAAE,IAAI;GAUhB;EA/BL,AAuBQ,WAvBG,CAoBP,WAAW,CAGP,eAAe,CAAC;IACZ,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,MAAM;GAKtB;EA9BT,AA2BY,WA3BD,CAoBP,WAAW,CAGP,eAAe,CAIX,gBAAgB,CAAC;IACjB,KAAK,EAAE,CAAC;GACP;EA7Bb,AAgCI,WAhCO,CAgCP,YAAY,CAAC;IACT,SAAS,EAAE,GAAG;IACd,eAAe,EAAE,YAAY;GAYhC;EA9CL,AAoCO,WApCI,CAgCP,YAAY,CAIT,SAAS,CAAC;IACL,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,CAAC;GACX;EAzCT,AA2CQ,WA3CG,CAgCP,YAAY,CAWR,iBAAiB,CAAC;IACd,KAAK,EAAE,GAAG;GACf;;;ARlIX,AAAA,IAAI,CAAC;EACD,WAAW,EAAE,uBAAuB;EACpC,SAAS,EAAE,KAAK;EAChB,cAAc,EAAE,KAAK;EACrB,gBAAgB,EEbT,SAAS;EFchB,KAAK,EEfI,SAAS;CFgBrB;;AAED,AAAA,IAAI,CAAC;EACD,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,IAAI;CACd;;AAED,AAAA,MAAM,CAAC;EACH,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,cAAc,CAAC,eAAe;EACzC,gBAAgB,EAAE,QAAQ;EAC1B,WAAW,EAAE,MAAM;CACtB;;AAED,AAAA,OAAO,CAAC;EETN,UAAU,EAAE,MAAM;EAClB,gBAAgB,EA3BL,SAAS;EA4BpB,KAAK,EA3BI,SAAS;EA4BlB,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,KAAK;EACb,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,KAAK;EAdd,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAlBd,SAAS;EFqClB,cAAc,EAAE,SAAS;EACzB,MAAM,EAAE,OAAO;CAClB;;AAJD,AEAE,OFAK,AEAJ,MAAM,CAAC;EACJ,gBAAgB,EArCN,SAAS;CAsCtB;;AFIH,AAAA,aAAa,CAAC;EACV,gBAAgB,EEzCT,SAAS;EF0ChB,KAAK,EE3CI,SAAS;EAclB,UAAU,EAAE,mBAAmB;CF+BlC;;AAED,AAAA,eAAe,CAAC;EACZ,gBAAgB,EE9CJ,OAAO;EF+CnB,KAAK,EEhDE,SAAS;EFiDhB,MAAM,EAAE,WAAW;CAItB;;AAPD,AAII,eAJW,AAIV,MAAM,CAAC;EACJ,gBAAgB,EElDR,OAAO;CFmDlB", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From 7de69d45b8b79e468218082511146721cbf12e24 Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Wed, 10 Feb 2021 12:30:19 +0100 Subject: [PATCH 25/76] MNG-109 added --- src/fightPage/buttonsEventListeners.ts | 98 ++++++++++++++++++++++++++ src/gameHandlerClass.ts | 43 ++--------- 2 files changed, 102 insertions(+), 39 deletions(-) create mode 100644 src/fightPage/buttonsEventListeners.ts diff --git a/src/fightPage/buttonsEventListeners.ts b/src/fightPage/buttonsEventListeners.ts new file mode 100644 index 0000000..25baf26 --- /dev/null +++ b/src/fightPage/buttonsEventListeners.ts @@ -0,0 +1,98 @@ +import { Player } from "../playerClass"; +import { GameHandler } from "../gameHandlerClass"; + +export const actionsButtonEventListener = (player: Player, gameHandler: GameHandler) => { + + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const attackButton = document.querySelector("#attackButton")!; + const switchButton = document.querySelector("#switchButton")!; + const mangoButton = document.querySelector("#mangoButton")!; + attackButton.addEventListener('click', () => { + gameHandler.generateAttackButtons(player); + }); + switchButton.addEventListener('click', () => { + gameHandler.generateSwitchButtons(player); + }); + mangoButton.addEventListener('click', () => { + console.log('mango used! mnia mnia mnia...'); + const mango = document.querySelector("#mango")!; + mango.innerHTML = "0"; + mangoButton.classList.add("disabledButton"); + }) +} + +export const attacksButtonEventListener = (player: Player, gameHandler: GameHandler) => { + + const attackButtonOne = document.querySelector("#attackButtonOne") as HTMLDivElement; + const attackButtonTwo = document.querySelector("#attackButtonTwo") as HTMLDivElement; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const backButton = document.querySelector("#backButton")!; + + attackButtonOne.addEventListener('click', () => { + console.log('attack One used!'); + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + //also change player function + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.backgroundColor = 'green'; + } + }); + attackButtonTwo.addEventListener('click', () => { + console.log('attack Two used!'); + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + // also change player function + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.backgroundColor = 'green'; + } + }); + backButton.addEventListener('click', () => { + //timeout and style for some button animation - the animation needs to be change + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.backgroundColor = 'green'; + } + }); + } + + export const switchButtonEventListener = (player: Player, gameHandler: GameHandler) => { + + const switchButtonOne = document.querySelector("#switchButtonOne") as HTMLDivElement; + const switchButtonTwo = document.querySelector("#switchButtonTwo") as HTMLDivElement; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const backButton = document.querySelector("#backButton")!; + + switchButtonOne.addEventListener('click', () => { + console.log('pokemon One gooo!'); + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + // also change player function + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.backgroundColor = 'green'; + } + }); + switchButtonTwo.addEventListener('click', () => { + console.log('pokemon Two gooo!'); + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + // also change player function + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.backgroundColor = 'green'; + } + }); + backButton.addEventListener('click', () => { + //timeout and style for some button animation - the animation needs to be change + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + for(let i = 0; i < battleButtons.length; i++) { + battleButtons[i].style.backgroundColor = 'green'; + } + }); +} \ No newline at end of file diff --git a/src/gameHandlerClass.ts b/src/gameHandlerClass.ts index d525db5..6af310a 100644 --- a/src/gameHandlerClass.ts +++ b/src/gameHandlerClass.ts @@ -1,4 +1,5 @@ import { Player } from "./playerClass"; +import { actionsButtonEventListener, attacksButtonEventListener, switchButtonEventListener } from "./fightPage/buttonsEventListeners"; export class GameHandler { constructor( @@ -45,65 +46,29 @@ export class GameHandler { } generateActionButtons(player: Player): void { - console.log('action modal'); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
attack
switch
use mango (1)
`; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const attackButton = document.querySelector("#attackButton")!; - const switchButton = document.querySelector("#switchButton")!; - //const mangoButton = document.querySelector("#mangoButton") as HTMLDivElement; - attackButton.addEventListener('click', () => { - this.generateAttackButtons(player); - }); - switchButton.addEventListener('click', () => { - this.generateSwitchButtons(player); - }); + actionsButtonEventListener(player, this); } generateAttackButtons(player: Player): void { - console.log('attack modal'); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
${player.pokemons[0].moves[0].moveName}
${player.pokemons[0].moves[1].moveName}
back
`; - //const attackButtonOne = document.querySelector("#attackButtonOne") as HTMLDivElement; - //const attackButtonTwo = document.querySelector("#attackButtonTwo") as HTMLDivElement; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const backButton = document.querySelector("#backButton")!; - backButton.addEventListener('click', () => { - //timeout and style for some button animation - the animation needs to be change - setTimeout( ()=> { - this.generateActionButtons(player); - }, 500); - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.transform = 'scaleX(0)'; - } - }); + attacksButtonEventListener(player, this); } generateSwitchButtons(player: Player): void { - console.log('switch pokemon modal'); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
${player.pokemons[1].name}
${player.pokemons[2].name}
back
`; - //const switchButtonOne = document.querySelector("#switchButtonOne") as HTMLDivElement; - //const switchButtonTwo = document.querySelector("#switchButtonTwo") as HTMLDivElement; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const backButton = document.querySelector("#backButton")!; - backButton.addEventListener('click', () => { - //timeout and style for some button animation - the animation needs to be change - setTimeout( ()=> { - this.generateActionButtons(player); - }, 500); - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.transform = 'scaleX(0)'; - } - }); + switchButtonEventListener(player, this); } } From 5410f159d8387d8a5888739140dab5f511b118b8 Mon Sep 17 00:00:00 2001 From: mariusz-sm Date: Wed, 10 Feb 2021 19:48:32 +0100 Subject: [PATCH 26/76] Add game result template --- index.html | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/index.html b/index.html index 3ddac5f..caea039 100644 --- a/index.html +++ b/index.html @@ -167,6 +167,15 @@

HP:

+ + From 9c2d5b0c8537ad4b44a6d277e8e16d18e0d25652 Mon Sep 17 00:00:00 2001 From: mariusz-sm Date: Wed, 10 Feb 2021 21:55:30 +0100 Subject: [PATCH 27/76] Add styling for mobile devices --- index.html | 12 ++++---- styles/SASS/_config.scss | 4 +++ styles/SASS/_fight-view.scss | 60 ++++++++++++++++++++++++++++++++++++ styles/SASS/_responsive.scss | 34 ++++++++++++++++++++ 4 files changed, 104 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index caea039..ce20792 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ -
+ - + - + diff --git a/styles/SASS/_config.scss b/styles/SASS/_config.scss index ad8359f..8aa1396 100644 --- a/styles/SASS/_config.scss +++ b/styles/SASS/_config.scss @@ -23,6 +23,10 @@ $mobile: 768px; box-shadow: 1px 1px 3px $color-text; } +@mixin textshadow { + text-shadow: 1px 1px 3px $color-text; +} + @mixin dropshadow { filter: drop-shadow(1px 1px 3px $color-text); } diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index ff62004..2393531 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -163,4 +163,64 @@ } } +} + +.popupScreenResult { + @include boxshadow; + background-color: $color-bg; + display: flex; + flex-flow: column nowrap; + justify-content: space-between; + align-items: center; + border-radius: 25px; + width: 80vw; + max-height: 15em; + min-height: 12em; + position: absolute; + left: 50%; + bottom: 50%; + margin-left: -40vw; + margin-bottom: -20vh; + padding-bottom: 5vh; + z-index: 2; + + .exitButton, .modalHeader, .modalParagraph, .modalPlayAgainButton { + font-family: 'Pokemon Solid'; + } + + .exitButton { + align-self:flex-end; + line-height: 1; + margin: 2vh; + color: $color-text; + user-select: none; + cursor: pointer; + } + + .modalHeader { + @include textshadow; + font-size: 1.6em; + line-height: 1; + color: $color-primary; + } + + .modalParagraph { + line-height: 1.8; + font-size: 0.5em; + color: $color-text; + text-align: center; + margin: 1em; + } + + .modalPlayAgainButton { + @include boxshadow; + line-height: 1.8; + font-size: 0.7em; + background-color: $color-text; + color: $color-bg; + padding-left: 2em; + padding-right: 2em; + padding-bottom: 0.5em; + border-radius: 1em; + } } \ No newline at end of file diff --git a/styles/SASS/_responsive.scss b/styles/SASS/_responsive.scss index cfa780e..9989442 100644 --- a/styles/SASS/_responsive.scss +++ b/styles/SASS/_responsive.scss @@ -146,4 +146,38 @@ } } + + .popupScreenResult { + width: 40vw; + margin-left: -20vw; + max-height: 15em; + min-height: 12em; + + .modalHeader { + @include textshadow; + font-size: 2.6em; + line-height: 1; + color: $color-primary; + } + + .modalParagraph { + line-height: 1.8; + font-size: 0.9em; + color: $color-text; + text-align: center; + margin: 1.4em; + } + + .modalPlayAgainButton { + @include boxshadow; + line-height: 1.8; + font-size: 0.7em; + background-color: $color-text; + color: $color-bg; + padding-left: 2em; + padding-right: 2em; + padding-bottom: 0.5em; + border-radius: 1em; + } + } } \ No newline at end of file From 5e6471de744e2e334b04a9255df8e47833beae8b Mon Sep 17 00:00:00 2001 From: AgataLudwiczynska <74932979+AgataLudwiczynska@users.noreply.github.com> Date: Thu, 11 Feb 2021 00:10:22 +0100 Subject: [PATCH 28/76] Blocking the start with unwritten name --- index.html | 4 ++-- src/activateStart.ts | 7 +++++-- src/index.ts | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 6028cab..3187cc0 100644 --- a/index.html +++ b/index.html @@ -40,9 +40,9 @@
-
+
+
diff --git a/src/activateStart.ts b/src/activateStart.ts index 5349b95..987f695 100644 --- a/src/activateStart.ts +++ b/src/activateStart.ts @@ -1,7 +1,10 @@ -export const activateStart = (name1Input: HTMLInputElement, name2Input: HTMLInputElement, startButton: HTMLDivElement) => { +export const activateStart = (name1Input: HTMLInputElement, name2Input: HTMLInputElement, startButton: HTMLButtonElement) => { if (name1Input.value.length > 0 && name2Input.value.length > 0) { startButton.className = 'button-enabled' + startButton.disabled = false; } else { startButton.className = 'button-disabled' + startButton.disabled = true; } -} \ No newline at end of file +} + diff --git a/src/index.ts b/src/index.ts index 18b3081..7c07846 100644 --- a/src/index.ts +++ b/src/index.ts @@ -29,7 +29,7 @@ const createHowToPlayButton = () => { const activateStartButton = () => { const player1NameInput = document.querySelector('#enter-player1-name') as HTMLInputElement; const player2NameInput = document.querySelector('#enter-player2-name') as HTMLInputElement; - const startButton = document.querySelector("#start-game-button") as HTMLDivElement; + const startButton = document.querySelector("#start-game-button") as HTMLButtonElement; player1NameInput.addEventListener("keyup", () => { activateStart(player1NameInput, player2NameInput, startButton) }) @@ -41,7 +41,7 @@ const activateStartButton = () => { const renderChoosePokemonScreen = (appDiv: HTMLDivElement) => { const playButton = document.querySelector( "#start-game-button" - ) as HTMLDivElement; + ) as HTMLButtonElement; playButton?.addEventListener("click", () => { const choosePokemonScreen = document.querySelector( "#choose-page-template" From 5d1336c60c5307851ce85bf8c6f2197302a8019e Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Thu, 11 Feb 2021 10:08:23 +0100 Subject: [PATCH 29/76] added magicFunction --- dist/index.js | 4 +- src/fightPage/buttonsEventListeners.ts | 137 +++++++++++-------------- src/gameHandlerClass.ts | 3 + 3 files changed, 64 insertions(+), 80 deletions(-) diff --git a/dist/index.js b/dist/index.js index 42ce33d..73758b0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,r,o,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=r,this._defensePoints=o,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,r=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),r=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,r)}(t)}(n,r)}),2e3)}(e,t,document.querySelector("#app"))},c=function(t,o){var c=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,o),e(c),function(t,o,c){var i=r.x,u=new n(i);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==c.pokemons.length&&(function(e,t,n){var r=e.target,o=r.id,a=t.getPokemonByName(o);n.addPokemon(a),r.style.cursor="default",r.style.filter="grayscale(100%)"}(n,u,c),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),r=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+r+".png")}(t,c),e(c=c===t?o:t),a(t,o))}),{once:!0})}))}(t,o,c)},i=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),u=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var e,t,n,r,o,a,p,s,y,m=document.querySelector("#app");e=m,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(m),n=document.querySelector("#enter-player1-name"),r=document.querySelector("#enter-player2-name"),o=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){u(n,r,o)})),r.addEventListener("keyup",(function(){u(n,r,o)})),s=document.querySelector("#how-to-play-button"),y=document.querySelector("#info-modal-screen"),s.addEventListener("click",(function(){y.style.display="flex"})),null==(p=(a=y).querySelector(".exitButton"))||p.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,r=document.querySelector("#choose-page-template");e.innerHTML=r.innerHTML,c(new i(t,[]),new i(n,[]))}))}(m)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVIUEJhcnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQbGF5ZXJOYW1lcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlbW9ucy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9hZGRDaG9zZW5Qb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2NyZWF0ZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3BsYXllckNsYXNzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvYWN0aXZhdGVTdGFydC50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbImNyZWF0ZUFjdGl2ZVBsYXllck5hbWUiLCJhY3RpdmVQbGF5ZXIiLCJ3aG9DaG9vc2VzUG9rZW1vblRleHQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwb2tlbW9ucyIsImxlbmd0aCIsInRleHRDb250ZW50IiwibmFtZSIsImltYWdlIiwibWF4SFAiLCJhdHRhY2tQb2ludHMiLCJkZWZlbnNlUG9pbnRzIiwidHlwZXMiLCJtb3ZlcyIsInRoaXMiLCJfbmFtZSIsIl9pbWFnZSIsIl9tYXhIUCIsIl9jdXJyZW50SFAiLCJfYXR0YWNrUG9pbnRzIiwiX2RlZmVuc2VQb2ludHMiLCJfdHlwZXMiLCJfbW92ZXMiLCJzdWJ0cmFjdEhQIiwicG9pbnRzVG9TdWJ0cmFjdCIsIm5ld0hQIiwiaGVhbCIsImlzQWxpdmUiLCJwb2tlRGF0YSIsIl9wb2tlbW9ucyIsInBva2Vtb24iLCJwb2tlSW1nIiwicG9rZU1vdmVzIiwicmVkdWNlIiwidGFiIiwibW92ZSIsInB1c2giLCJtb3ZlTmFtZSIsIm1vdmVUeXBlIiwidHlwZSIsInBva2VUeXBlcyIsIm1hcCIsInYiLCJwb2tlbW9uT2JqZWN0IiwiUG9rZW1vbiIsIl9jYXBpdGFsaXplIiwic3RhdHMiLCJocCIsImF0dGFjayIsImRlZmVuc2UiLCJnZXRQb2tlbW9uQnlOYW1lIiwiZmluZCIsInRvTG93ZXJDYXNlIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJzdHIiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwicGxheWVyIiwiYWxpdmVQb2tlbW9ucyIsImlzR2FtZUZpbmlzaGVkIiwiZ2V0V2lubmVyIiwic3RhcnRHYW1lSWZSZWFkeSIsInBsYXllck9uZSIsInBsYXllclR3byIsImFwcCIsImdhbWUiLCJHYW1lSGFuZGxlciIsInNldFRpbWVvdXQiLCJhcHBEaXYiLCJnYW1lSGFuZGxlciIsImNyZWF0ZUJhciIsInBsYXllck9uZUhQQmFyIiwicGxheWVyVHdvSFBCYXIiLCJmaWdodFBhZ2UiLCJpbm5lckhUTUwiLCJwbGF5ZXJPbmVOYW1lIiwicGxheWVyVHdvTmFtZSIsImNyZWF0ZVBsYXllckZpZ2h0TmFtZXMiLCJjdXJyZW50UGxheWVyIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJjcmVhdGVQb2tlbW9uIiwiaW1hZ2VBcmVhIiwibmFtZUFyZWEiLCJwb2tlbW9uTmFtZSIsImdldEFjdGl2ZVBva2Vtb24iLCJzZXRBdHRyaWJ1dGUiLCJjcmVhdGVBY3RpdmVQb2tlbW9uIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJjbGFzc0xpc3QiLCJyZW1vdmUiLCJhZGQiLCJjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyIsInBsYXllclBva2ViYWxscyIsImkiLCJwbGF5ZXJPbmVQb2tlYmFsbHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicGxheWVyVHdvUG9rZWJhbGxzIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY3JlYXRlRmlnaHRQYWdlIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiZXZlbnQiLCJmYWN0b3J5IiwiY2xpY2tlZFBva2Vtb24iLCJ0YXJnZXQiLCJpZCIsIm5ld1Bva2Vtb25PYmplY3QiLCJhZGRQb2tlbW9uIiwiY3Vyc29yIiwiZmlsdGVyIiwiYWRkQ2hvc2VuUG9rZW1vbiIsInBsYXllckxhc3RQb2tlbW9uTmFtZSIsImNyZWF0ZVBva2ViYWxscyIsIm9uY2UiLCJjcmVhdGVQb2tlbW9ucyIsIl9pbmRleE9mQWN0aXZlUG9rZW1vbiIsIm51bU9mQWN0aXZlUG9rZW1vbiIsImFjdGl2YXRlU3RhcnQiLCJuYW1lMUlucHV0IiwibmFtZTJJbnB1dCIsInN0YXJ0QnV0dG9uIiwidmFsdWUiLCJjbGFzc05hbWUiLCJzdGFydGluZ1BhZ2UiLCJwbGF5ZXIxTmFtZUlucHV0IiwicGxheWVyMk5hbWVJbnB1dCIsInNjcmVlblRvRGlzcGxheSIsImV4aXRCdXR0b24iLCJob3dUb1BsYXlCdXR0b24iLCJpbmZvTW9kYWwiLCJyZW5kZXJIb3dUb1BsYXlNb2RhbCIsImRpc3BsYXkiLCJwbGF5QnV0dG9uIiwiY2hvb3NlUG9rZW1vblNjcmVlbiIsIlBsYXllciIsInJlbmRlckNob29zZVBva2Vtb25TY3JlZW4iXSwibWFwcGluZ3MiOiJtQkFBTyxJQ0VNQSxFQUF5QixTQUFDQyxHQUNyQyxJQUFJQyxFQUF3QkMsU0FBU0MsY0FBYyx3QkFDbEIsSUFBakNILEVBQWFJLFNBQVNDLE9BQ2pCSixFQUFzQkssWUFBYyxnQ0FDcENMLEVBQXNCSyxZQUFpQk4sRUFBYU8sS0FBSSxzQkNTL0QsYUFXRSxXQUFZQSxFQUFjQyxFQUFlQyxFQUFlQyxFQUN0REMsRUFBdUJDLEVBQXNCQyxHQUU3Q0MsS0FBS0MsTUFBUVIsRUFDYk8sS0FBS0UsT0FBU1IsRUFDZE0sS0FBS0csT0FBU1IsRUFDZEssS0FBS0ksV0FBYVQsRUFDbEJLLEtBQUtLLGNBQWdCVCxFQUNyQkksS0FBS00sZUFBaUJULEVBQ3RCRyxLQUFLTyxPQUFTVCxFQUNkRSxLQUFLUSxPQUFTVCxFQW1EbEIsT0EvQ0Us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dUJBQzFDK0ksRUFBY2hKLFNBQVNDLGNBQWMsc0JBQzNDbUosRUFBaUJ6QixpQkFBaUIsU0FBUyxXQUN2Q2tCLEVBQWNPLEVBQWtCQyxFQUFrQkwsTUFFdERLLEVBQWlCMUIsaUJBQWlCLFNBQVMsV0FDdkNrQixFQUFjTyxFQUFrQkMsRUFBa0JMLE1BcEJoRFEsRUFBa0J4SixTQUFTQyxjQUMvQix1QkFFSXdKLEVBQVl6SixTQUFTQyxjQUN6QixzQkFFRnVKLEVBQWdCN0IsaUJBQWlCLFNBQVMsV0FDOUI4QixFbkJyQklyRCxNQUFNdUQsUW1CcUJDLFVuQmhCdkJKLE9BRE1BLEdBRGtCRCxFbUJvQmRHLEduQm5CeUJ4SixjQUFjLGlCQUNqRHNKLEVBQVk1QixpQkFBaUIsU0FBUyxXQUNwQzJCLEVBQWdCbEQsTUFBTXVELFFBQVUsVW1CZ0NGLFNBQUNuRixHQUNqQyxJQUFNb0YsRUFBYTVKLFNBQVNDLGNBQzFCLHNCQUVGMkosV0FBWWpDLGlCQUFpQixTQUFTLFdBQ3BDLElBQU15QixFQUFvQnBKLFNBQVNDLGNBQWMsdUJBQTRDZ0osTUFDdkZJLEVBQW9CckosU0FBU0MsY0FBYyx1QkFBNENnSixNQUN2RlksRUFBc0I3SixTQUFTQyxjQUNuQyx5QkFFRnVFLEVBQU9NLFVBQVkrRSxFQUFvQi9FLFVBQ3ZDdUMsRUFBaUIsSUFBSXlDLEVBQU9WLEVBQWtCLElBQUssSUFBSVUsRUFBT1QsRUFBa0IsUUFVbEZVLENBQTBCM0YsS0FHTixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNob3dNb2RhbCA9IChcclxuICBzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50LFxyXG4gIHN0YXJ0aW5nUG9zaXRpb246IHN0cmluZ1xyXG4pID0+IHtcclxuICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IHN0YXJ0aW5nUG9zaXRpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaGlkZU1vZGFsID0gKHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBleGl0QnV0dG9uID0gc2NyZWVuVG9EaXNwbGF5LnF1ZXJ5U2VsZWN0b3IoXCIuZXhpdEJ1dHRvblwiKTtcclxuICBleGl0QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSA9IChhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGxldCB3aG9DaG9vc2VzUG9rZW1vblRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3dob0Nob29zZXNQYXJhZ3JhcGhcIikhO1xyXG4gIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDNcclxuICAgID8gKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IFwiV2FpdCBmb3IgdGhlIGdhbWUgdG8gc3RhcnQuLi5cIilcclxuICAgIDogKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IGAke2FjdGl2ZVBsYXllci5uYW1lfSBjaG9vc2VzIDEgcG9rZW1vbmApO1xyXG59O1xyXG4iLCJleHBvcnQgdHlwZSBQb2tlbW9uVHlwZSA9XHJcbiAgfCBcImdyYXNzXCJcclxuICB8IFwicG9pc29uXCJcclxuICB8IFwiZmlyZVwiXHJcbiAgfCBcIndhdGVyXCJcclxuICB8IFwiYnVnXCJcclxuICB8IFwibm9ybWFsXCJcclxuICB8IFwiZmx5aW5nXCJcclxuICB8IFwiZWxlY3RyaWNcIlxyXG4gIHwgXCJncm91bmRcIlxyXG4gIHwgXCJmYWlyeVwiXHJcbiAgfCBcInBzeWNoaWNcIlxyXG4gIHwgXCJmaWdodGluZ1wiXHJcbiAgfCBcInJvY2tcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uIHtcclxuXHJcbiAgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcclxuICByZWFkb25seSBfaW1hZ2U6IHN0cmluZztcclxuICByZWFkb25seSBfbWF4SFA6IG51bWJlcjtcclxuICBwcml2YXRlIF9jdXJyZW50SFA6IG51bWJlcjtcclxuICByZWFkb25seSBfYXR0YWNrUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2RlZmVuc2VQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfdHlwZXM6IFBva2Vtb25UeXBlW107XHJcbiAgcmVhZG9ubHkgX21vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaW1hZ2U6IHN0cmluZywgbWF4SFA6IG51bWJlciwgYXR0YWNrUG9pbnRzOiBudW1iZXIsXHJcbiAgICBkZWZlbnNlUG9pbnRzOiBudW1iZXIsIHR5cGVzOiBQb2tlbW9uVHlwZVtdLCBtb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdKSB7XHJcblxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9pbWFnZSA9IGltYWdlO1xyXG4gICAgdGhpcy5fbWF4SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fYXR0YWNrUG9pbnRzID0gYXR0YWNrUG9pbnRzO1xyXG4gICAgdGhpcy5fZGVmZW5zZVBvaW50cyA9IGRlZmVuc2VQb2ludHM7XHJcbiAgICB0aGlzLl90eXBlcyA9IHR5cGVzO1xyXG4gICAgdGhpcy5fbW92ZXMgPSBtb3ZlcztcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGltYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdEhQKHBvaW50c1RvU3VidHJhY3Q6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SFAgPSB0aGlzLl9jdXJyZW50SFAgLSBwb2ludHNUb1N1YnRyYWN0O1xyXG4gICAgaWYgKG5ld0hQIDwgMCkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50SFAgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbmV3SFA7XHJcbiAgfVxyXG5cclxuICBoZWFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0YWNrUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F0dGFja1BvaW50cztcclxuICB9XHJcblxyXG4gIGdldCBkZWZlbnNlUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmVuc2VQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbW92ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW92ZXM7XHJcbiAgfVxyXG5cclxuICBpc0FsaXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUCA+IDA7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5pbXBvcnQgeyBQb2tlbW9uVHlwZSB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb25GYWN0b3J5IHtcclxuICAgIHJlYWRvbmx5IF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBva2VEYXRhOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyB0eXBlczogc3RyaW5nW107XHJcbiAgICAgICAgc3RhdHM6IHsgaHA6IG51bWJlcjsgYXR0YWNrOiBudW1iZXI7IGRlZmVuc2U6IG51bWJlcjsgfTtcclxuICAgICAgICBtb3ZlczogeyBuYW1lOiBzdHJpbmc7IGFjY3VyYWN5OiBudW1iZXI7IHBvd2VyOiBudW1iZXI7IHR5cGU6IHN0cmluZzsgfVtdXHJcbiAgICB9W10pIHtcclxuICAgICAgICB0aGlzLl9wb2tlbW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBwb2tlbW9uIG9mIHBva2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlSW1nID0gXCIuLi9hc3NldHMvXCIgKyBwb2tlbW9uLm5hbWUgKyBcIi5wbmdcIlxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZU1vdmVzID0gcG9rZW1vbi5tb3Zlcy5yZWR1Y2UoICh0YWIsIG1vdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhYi5wdXNoKHttb3ZlTmFtZTogbW92ZS5uYW1lLCBtb3ZlVHlwZTogbW92ZS50eXBlIGFzIFBva2Vtb25UeXBlfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWJcclxuICAgICAgICAgICAgICAgIH0sIFtdIGFzIHttb3ZlTmFtZTogc3RyaW5nLCBtb3ZlVHlwZTogUG9rZW1vblR5cGV9W10pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlVHlwZXM6IFBva2Vtb25UeXBlW10gPSBwb2tlbW9uLnR5cGVzLm1hcCh2ID0+IHYgYXMgUG9rZW1vblR5cGUpXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlbW9uT2JqZWN0ID0gbmV3IFBva2Vtb24odGhpcy5fY2FwaXRhbGl6ZShwb2tlbW9uLm5hbWUpLCBwb2tlSW1nLCBcclxuICAgICAgICAgICAgICAgIHBva2Vtb24uc3RhdHMuaHAsIHBva2Vtb24uc3RhdHMuYXR0YWNrLCBwb2tlbW9uLnN0YXRzLmRlZmVuc2UsXHJcbiAgICAgICAgICAgICAgICBwb2tlVHlwZXMsIHBva2VNb3ZlcylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbk9iamVjdClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9rZW1vbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQb2tlbW9uIHtcclxuICAgICAgICBjb25zdCBwb2tlbW9uID0gdGhpcy5fcG9rZW1vbnMuZmluZCggcG9rZW1vbiA9PiBwb2tlbW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAocG9rZW1vbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9rZW1vbiAke25hbWV9IGlzIG5vdCBmb3VuZCBpbiB0aGUgcG9rZW1vbiBmYWN0b3J5YClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBva2Vtb25cclxuICAgIH1cclxuXHJcbiAgICBfY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgICAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdhbWVIYW5kbGVyIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllck9uZTogUGxheWVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxheWVyVHdvOiBQbGF5ZXJcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5ZXI6IFBsYXllciA9IHRoaXMuX3BsYXllck9uZTtcclxuXHJcbiAgZ2V0IHBsYXllck9uZSAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IHN0YXJ0QmF0dGxlIH0gZnJvbSBcIi4uL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEdhbWVJZlJlYWR5ID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGlmIChwbGF5ZXJPbmUucG9rZW1vbnMubGVuZ3RoIDwgMyB8fCBwbGF5ZXJUd28ucG9rZW1vbnMubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHN0YXJ0QmF0dGxlKHBsYXllck9uZSwgcGxheWVyVHdvLCBhcHApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2UgfSBmcm9tIFwiLi9yZW5kZXJGaWdodFBhZ2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEJhdHRsZSA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhcHA6IEhUTUxEaXZFbGVtZW50XHJcbikgPT4ge1xyXG4gIGNvbnN0IGdhbWUgPSBuZXcgR2FtZUhhbmRsZXIocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlnaHRQYWdlKGFwcCwgZ2FtZSksIDIwMDApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQb2tlbW9uIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXIgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJcIjtcclxuaW1wb3J0IHsgY3JlYXRlSFBCYXJzIH0gZnJvbSBcIi4vY3JlYXRlSFBCYXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxsc1wiO1xyXG5cclxuY29uc3QgY3JlYXRlUGxheWVyRmlnaHROYW1lcyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVOYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMS1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29OYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMi1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBwbGF5ZXJPbmVOYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyT25lLm5hbWU7XHJcbiAgcGxheWVyVHdvTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllclR3by5uYW1lO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZSA9IChcclxuICBhcHBEaXY6IEhUTUxEaXZFbGVtZW50LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBmaWdodFBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBmaWdodFBhZ2UuaW5uZXJIVE1MO1xyXG4gIGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMoZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVIUEJhcnMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgY3JlYXRlQmFyID0gKHBsYXllcjogUGxheWVyLCBIUEJhcjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1heEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubWF4SFA7XHJcbiAgICBjb25zdCBjdXJyZW50SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5jdXJyZW50SFA7XHJcbiAgICBjb25zdCBIUEluUGVyY2VudCA9IChjdXJyZW50SFAgLyBtYXhIUCkgKiAxMDA7XHJcbiAgICBjb25zb2xlLmxvZyhIUEluUGVyY2VudCk7XHJcbiAgICBIUEJhci5zdHlsZS53aWR0aCA9IGAke0hQSW5QZXJjZW50fSVgO1xyXG4gICAgbGV0IEhQQ2xhc3NMaXN0ID0gSFBCYXIuY2xhc3NMaXN0O1xyXG4gICAgaWYgKEhQSW5QZXJjZW50IDwgMjApIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZUhQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0hQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJPbmUsIHBsYXllck9uZUhQQmFyKTtcclxuICBjcmVhdGVCYXIocGxheWVyVHdvLCBwbGF5ZXJUd29IUEJhcik7XHJcbn07XHJcbiIsImltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYWN0aXZlUGxheWVyQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhY3RpdmUtcGxheWVyLWluZm9cIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgYWN0aXZlUGxheWVyQXJlYS50ZXh0Q29udGVudCA9IGAke2dhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIubmFtZX0gbm93IGlzIHlvdXIgdHVybi4gR2V0IHRoZSByZXZlbmdlIWA7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICAgIGNvbnN0IHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjFcIlxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgY29uc3QgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMlwiXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMVwiXHJcbiAgICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICAgIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIyXCJcclxuICAgICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gICAgY29uc3QgY3JlYXRlUG9rZW1vbiA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgICAgbmFtZUFyZWE6IEhUTUxIZWFkaW5nRWxlbWVudFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgICAgaW1hZ2VBcmVhLnNldEF0dHJpYnV0ZShcInNyY1wiLCBgLi9hc3NldHMvJHtwb2tlbW9uTmFtZS50b0xvd2VyQ2FzZSgpfS5wbmdgKTtcclxuICAgICAgbmFtZUFyZWEudGV4dENvbnRlbnQgPSBwb2tlbW9uTmFtZTtcclxuICAgIH07XHJcbiAgICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgICBnYW1lSGFuZGxlci5wbGF5ZXJPbmUsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICAgKTtcclxuICAgIGNyZWF0ZVBva2Vtb24oXHJcbiAgICAgIGdhbWVIYW5kbGVyLnBsYXllclR3byxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgICApO1xyXG4gIH07IiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgICBjb25zdCBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgICApID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPiBwbGF5ZXIuYWxpdmVQb2tlbW9ucy5sZW5ndGggLSAxOyBpLS0pIHtcclxuICAgICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIxIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllclR3bywgcGxheWVyVHdvUG9rZWJhbGxzKTtcclxuICB9OyIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQbGF5ZXJOYW1lcyB9IGZyb20gXCIuL2NyZWF0ZVBsYXllck5hbWVzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2Vtb25zIH0gZnJvbSBcIi4vY3JlYXRlUG9rZW1vbnNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVDaG9vc2VQYWdlID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBhY3RpdmVQbGF5ZXIgPSBwbGF5ZXJPbmU7XHJcbiAgY3JlYXRlUGxheWVyTmFtZXMocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICBjcmVhdGVQb2tlbW9ucyhwbGF5ZXJPbmUsIHBsYXllclR3bywgYWN0aXZlUGxheWVyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUGxheWVyTmFtZXMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHBsYXllck9uZU5hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjFOYW1lXCIpITtcclxuICBwbGF5ZXJPbmVOYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJPbmUubmFtZTtcclxuICBsZXQgcGxheWVyVHdvTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMk5hbWVcIikhO1xyXG4gIHBsYXllclR3b05hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllclR3by5uYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0ICogYXMgZGF0YSBmcm9tIFwiLi4vLi4vYXNzZXRzL3Bva2VfZGF0YS5qc29uXCI7XHJcbmltcG9ydCB7IHN0YXJ0R2FtZUlmUmVhZHkgfSBmcm9tIFwiLi9zdGFydEdhbWVJZlJlYWR5XCI7XHJcbmltcG9ydCB7IGFkZENob3NlblBva2Vtb24gfSBmcm9tIFwiLi9hZGRDaG9zZW5Qb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZVBva2ViYWxsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2Vtb25zID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIHBsYXllclR3bzogUGxheWVyLFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IHBva2VEYXRhID0gZGF0YS5wb2tlbW9ucztcclxuICBjb25zdCBwb2tlbW9uRmFjdG9yeSA9IG5ldyBQb2tlbW9uRmFjdG9yeShwb2tlRGF0YSk7XHJcbiAgY29uc3QgcG9rZW1vbkltYWdlcyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI3Bva2Vtb25MaXN0IGltZ1wiKVxyXG4gICkgYXMgW0hUTUxJbWFnZUVsZW1lbnRdO1xyXG5cclxuICBwb2tlbW9uSW1hZ2VzLmZvckVhY2goKHBva2Vtb25JbWFnZSkgPT5cclxuICAgIHBva2Vtb25JbWFnZS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICBcImNsaWNrXCIsXHJcbiAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDMpIHJldHVybjtcclxuICAgICAgICBhZGRDaG9zZW5Qb2tlbW9uKGUsIHBva2Vtb25GYWN0b3J5LCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIGNyZWF0ZVBva2ViYWxscyhwbGF5ZXJPbmUsIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgLy8gY2hhbmdlIHBsYXllclxyXG4gICAgICAgIGFjdGl2ZVBsYXllciA9IGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lID8gcGxheWVyVHdvIDogcGxheWVyT25lO1xyXG4gICAgICAgIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBzdGFydEdhbWVJZlJlYWR5KHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICAgICAgfSxcclxuICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4uL3Bva2Vtb25DbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhZGRDaG9zZW5Qb2tlbW9uID0gKFxyXG4gIGV2ZW50OiBFdmVudCxcclxuICBmYWN0b3J5OiBQb2tlbW9uRmFjdG9yeSxcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBjbGlja2VkUG9rZW1vbiA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBva2Vtb25OYW1lID0gY2xpY2tlZFBva2Vtb24uaWQ7XHJcbiAgY29uc3QgbmV3UG9rZW1vbk9iamVjdDogUG9rZW1vbiA9IGZhY3RvcnkuZ2V0UG9rZW1vbkJ5TmFtZShwb2tlbW9uTmFtZSk7XHJcbiAgYWN0aXZlUGxheWVyLmFkZFBva2Vtb24obmV3UG9rZW1vbk9iamVjdCk7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuZmlsdGVyID0gXCJncmF5c2NhbGUoMTAwJSlcIjtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZWJhbGxzID0gKHBsYXllck9uZTogUGxheWVyLCBhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdID1cclxuICAgIGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lXHJcbiAgICAgID8gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIxIGltZ1wiKSlcclxuICAgICAgOiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjIgaW1nXCIpKTtcclxuICBjb25zdCBwbGF5ZXJMYXN0UG9rZW1vbk5hbWU6IHN0cmluZyA9IGFjdGl2ZVBsYXllci5wb2tlbW9uc1tcclxuICAgIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxXHJcbiAgXS5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgY29uc3QgbnVtYmVyT2ZMYXN0UG9rZW1vbjogbnVtYmVyID0gYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDE7XHJcbiAgcGxheWVyUG9rZWJhbGxzW251bWJlck9mTGFzdFBva2Vtb25dLnNldEF0dHJpYnV0ZShcclxuICAgIFwic3JjXCIsXHJcbiAgICBgLi9hc3NldHMvJHtwbGF5ZXJMYXN0UG9rZW1vbk5hbWV9LnBuZ2BcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUGxheWVyIHtcclxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcG9rZW1vbnM6IFBva2Vtb25bXTtcclxuICBwcml2YXRlIF9pbmRleE9mQWN0aXZlUG9rZW1vbjogbnVtYmVyO1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcG9rZW1vbnM6IFBva2Vtb25bXSkge1xyXG4gICAgaWYgKG5hbWUubGVuZ3RoID4gOCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbG9uZyBuYW1lXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHBva2Vtb25zLmxlbmd0aCA+IDMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbnVtYmVyIG9mIHBva2Vtb25zXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9wb2tlbW9ucyA9IHBva2Vtb25zO1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9ucztcclxuICB9XHJcblxyXG4gIHNldCBpbmRleE9mQWN0aXZlUG9rZW1vbihudW1PZkFjdGl2ZVBva2Vtb246IG51bWJlcikge1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSBudW1PZkFjdGl2ZVBva2Vtb247XHJcbiAgfVxyXG4gIGdldCBnZXRBY3RpdmVQb2tlbW9uKCk6IFBva2Vtb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zW3RoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGl2ZVBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICBjb25zdCBhbGl2ZVBva2Vtb25zVGFiOiBQb2tlbW9uW10gPSB0aGlzLnBva2Vtb25zLmZpbHRlcigocG9rZW1vbikgPT5cclxuICAgICAgcG9rZW1vbi5pc0FsaXZlKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gYWxpdmVQb2tlbW9uc1RhYjtcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZW5hYmxlZCdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgIH1cclxufSIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;n\n
'+e.pokemons[0].moves[1].moveName+'
\n
back
',function(e,t){var n=document.querySelector("#attackButtonOne"),o=document.querySelector("#attackButtonTwo"),c=document.getElementsByClassName("battleButton"),u=document.querySelector("#backButton");r(n,c,e,t,a),r(o,c,e,t,a),r(u,c,e,t)}(e,this)},e.prototype.generateSwitchButtons=function(e){console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+e.pokemons[1].name+'
\n
'+e.pokemons[2].name+'
\n
back
',function(e,t){var n=document.querySelector("#switchButtonOne"),o=document.querySelector("#switchButtonTwo"),a=document.getElementsByClassName("battleButton"),u=document.querySelector("#backButton");r(n,a,e,t,c),r(o,a,e,t,c),r(u,a,e,t)}(e,this)},e}(),i=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new u(e,t);setTimeout((function(){return function(e,t){var n,o,r,a,c,u=document.querySelector("#fight-page-template");e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),function(e){document.querySelector("#active-player-info").textContent=e.currentPlayer.name+" now is your turn. Get the revenge!"}(t),function(e){var t=document.querySelector("#pokemon-image-player1"),n=document.querySelector("#pokemon-image-player2"),o=document.querySelector("#pokemon-name-player1"),r=document.querySelector("#pokemon-name-player2"),a=function(e,t,n){var o=e.getActivePokemon.name;t.setAttribute("src","./assets/"+o.toLowerCase()+".png"),n.textContent=o};a(e.playerOne,t,o),a(e.playerTwo,n,r)}(t),n=t.playerOne,o=t.playerTwo,r=function(e,t){var n=e.getActivePokemon.maxHP,o=e.getActivePokemon.currentHP/n*100;console.log(o),t.style.width=o+"%";var r=t.classList;o<20?(r.remove("hpBarHighLevel"),r.add("hpBarLowLevel")):(r.remove("hpBarLowLevel"),r.add("hpBarHighLevel"))},a=document.querySelector("#hp-bar-player1"),c=document.querySelector("#hp-bar-player2"),r(n,a),r(o,c),function(e){var t=function(e,t){for(var n=2;n>e.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)}(t),t.generateActionButtons(t.currentPlayer)}(n,o)}),2e3)}(e,t,document.querySelector("#app"))},s=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,u=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,u,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),i(t,r))}),{once:!0})}))}(t,r,a)},p=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),m=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var e,t,n,o,r,a,c,u,i,l=document.querySelector("#app");e=l,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(l),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){m(n,o,r)})),o.addEventListener("keyup",(function(){m(n,o,r)})),u=document.querySelector("#how-to-play-button"),i=document.querySelector("#info-modal-screen"),u.addEventListener("click",(function(){i.style.display="flex"})),null==(c=(a=i).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,s(new p(t,[]),new p(n,[]))}))}(l)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2J1dHRvbnNFdmVudExpc3RlbmVycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2dhbWVIYW5kbGVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2Uvc3RhcnRHYW1lSWZSZWFkeS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9yZW5kZXJGaWdodFBhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlSFBCYXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBsYXllci50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVBY3RpdmVQb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsIm1hZ2ljRnVuY3Rpb24iLCJidXR0b24iLCJidXR0b25zIiwicGxheWVyIiwiZ2FtZUhhbmRsZXIiLCJmdW5jdGlvblRvQ2FsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwiaW5uZXJUZXh0Iiwic2V0VGltZW91dCIsImdlbmVyYXRlQWN0aW9uQnV0dG9ucyIsImkiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInN3aXRjaFBva2UiLCJfcGxheWVyT25lIiwiX3BsYXllclR3byIsIl9jdXJyZW50UGxheWVyIiwiZGlkUGxheWVyTG9vc2UiLCJhbGl2ZVBva2Vtb25zIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbm5lckhUTUwiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiYXR0YWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsImdlbmVyYXRlQXR0YWNrQnV0dG9ucyIsImdlbmVyYXRlU3dpdGNoQnV0dG9ucyIsImNsYXNzTGlzdCIsImFkZCIsImFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyIiwiYXR0YWNrQnV0dG9uT25lIiwiYXR0YWNrQnV0dG9uVHdvIiwiYmF0dGxlQnV0dG9ucyIsImJhY2tCdXR0b24iLCJhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lciIsInN3aXRjaEJ1dHRvbk9uZSIsInN3aXRjaEJ1dHRvblR3byIsInN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIiLCJzdGFydEdhbWVJZlJlYWR5IiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiY3JlYXRlQmFyIiwicGxheWVyT25lSFBCYXIiLCJwbGF5ZXJUd29IUEJhciIsImZpZ2h0UGFnZSIsInBsYXllck9uZU5hbWUiLCJwbGF5ZXJUd29OYW1lIiwiY3JlYXRlUGxheWVyRmlnaHROYW1lcyIsImN1cnJlbnRQbGF5ZXIiLCJjcmVhdGVBY3RpdmVQbGF5ZXIiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSIsImNyZWF0ZVBva2Vtb24iLCJpbWFnZUFyZWEiLCJuYW1lQXJlYSIsInBva2Vtb25OYW1lIiwiZ2V0QWN0aXZlUG9rZW1vbiIsInNldEF0dHJpYnV0ZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJIUEJhciIsIkhQSW5QZXJjZW50IiwiY3VycmVudEhQIiwid2lkdGgiLCJIUENsYXNzTGlzdCIsInJlbW92ZSIsImNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zIiwicGxheWVyUG9rZWJhbGxzIiwicGxheWVyT25lUG9rZWJhbGxzIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsInBsYXllclR3b1Bva2ViYWxscyIsImNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyIsImNyZWF0ZUZpZ2h0UGFnZSIsInN0YXJ0QmF0dGxlIiwiY3JlYXRlQ2hvb3NlUGFnZSIsImNyZWF0ZVBsYXllck5hbWVzIiwicG9rZW1vbkZhY3RvcnkiLCJQb2tlbW9uRmFjdG9yeSIsImZvckVhY2giLCJwb2tlbW9uSW1hZ2UiLCJlIiwiZXZlbnQiLCJmYWN0b3J5IiwiY2xpY2tlZFBva2Vtb24iLCJ0YXJnZXQiLCJpZCIsIm5ld1Bva2Vtb25PYmplY3QiLCJhZGRQb2tlbW9uIiwiY3Vyc29yIiwiZmlsdGVyIiwiYWRkQ2hvc2VuUG9rZW1vbiIsInBsYXllckxhc3RQb2tlbW9uTmFtZSIsImNyZWF0ZVBva2ViYWxscyIsIm9uY2UiLCJjcmVhdGVQb2tlbW9ucyIsIl9pbmRleE9mQWN0aXZlUG9rZW1vbiIsIm51bU9mQWN0aXZlUG9rZW1vbiIsImFjdGl2YXRlU3RhcnQiLCJuYW1lMUlucHV0IiwibmFtZTJJbnB1dCIsInN0YXJ0QnV0dG9uIiwidmFsdWUiLCJjbGFzc05hbWUiLCJzdGFydGluZ1BhZ2UiLCJwbGF5ZXIxTmFtZUlucHV0IiwicGxheWVyMk5hbWVJbnB1dCIsInNjcmVlblRvRGlzcGxheSIsImV4aXRCdXR0b24iLCJob3dUb1BsYXlCdXR0b24iLCJpbmZvTW9kYWwiLCJyZW5kZXJIb3dUb1BsYXlNb2RhbCIsImRpc3BsYXkiLCJwbGF5QnV0dG9uIiwiY2hvb3NlUG9rZW1vblNjcmVlbiIsIlBsYXllciIsInJlbmRlckNob29zZVBva2Vtb25TY3JlZW4iXSwibWFwcGluZ3MiOiJtQkFBTyxJQ0VNQSxFQUF5QixTQUFDQyxHQUNyQyxJQUFJQyxFQUF3QkMsU0FBU0MsY0FBYyx3QkFDbEIsSUFBakNILEVBQWFJLFNBQVNDLE9BQ2pCSixFQUFzQkssWUFBYyxnQ0FDcENMLEVBQXNCSyxZQUFpQk4sRUFBYU8sS0FBSSxzQkNTL0QsYUFXRSxXQUFZQSxFQUFjQyxFQUFlQyxFQUFlQyxFQUN0REMsRUFBdUJDLEVBQXNCQyxHQUU3Q0MsS0FBS0MsTUFBUVIsRUFDYk8sS0FBS0UsT0FBU1IsRUFDZE0sS0FBS0csT0FBU1IsRUFDZEssS0FBS0ksV0FBYVQsRUFDbEJLLEtBQUtLLGNBQWdCVCxFQUNyQkksS0FBS00sZUFBaUJULEVBQ3RCRyxLQUFLTyxPQUFTVCxFQUNkRSxLQUFLUSxPQUFTVCxFQW1EbEIsT0EvQ0Usc0JBQUksbUJBQUksQyxJQUFSLFdBQ0UsT0FBT0MsS0FBS0MsTyxnQ0FHZCxzQkFBSSxvQkFBSyxDLElBQVQsV0FDRSxPQUFPRCxLQUFLRSxRLGdDQUdkLHNCQUFJLHdCQUFTLEMsSUFBYixXQUNFLE9BQU9GLEtBQUtJLFksZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0osS0FBS0csUSxnQ0FHZCxZQUFBTSxXQUFBLFNBQVdDLEdBQ1QsSUFBTUMsRUFBUVgsS0FBS0ksV0FBYU0sRUFDNUJDLEVBQVEsSUFDVlgsS0FBS0ksV0FBYSxHQUVwQkosS0FBS0ksV0FBYU8sR0FHcEIsWUFBQUMsS0FBQSxXQUNFWixLQUFLSSxXQUFhSixLQUFLRyxRQUd6QixzQkFBSSwyQkFBWSxDLElBQWhCLFdBQ0UsT0FBT0gsS0FBS0ssZSxnQ0FHZCxzQkFBSSw0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QyxjQUFjLHVCQUE0Q3dLLE1BQ3ZGWSxFQUFzQnJMLFNBQVNDLGNBQ25DLHlCQUVGd0csRUFBT3pCLFVBQVlxRyxFQUFvQnJHLFVBQ3ZDOEQsRUFBaUIsSUFBSXdDLEVBQU9WLEVBQWtCLElBQUssSUFBSVUsRUFBT1QsRUFBa0IsUUFVbEZVLENBQTBCakYsS0FHTixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNob3dNb2RhbCA9IChcclxuICBzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50LFxyXG4gIHN0YXJ0aW5nUG9zaXRpb246IHN0cmluZ1xyXG4pID0+IHtcclxuICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IHN0YXJ0aW5nUG9zaXRpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaGlkZU1vZGFsID0gKHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBleGl0QnV0dG9uID0gc2NyZWVuVG9EaXNwbGF5LnF1ZXJ5U2VsZWN0b3IoXCIuZXhpdEJ1dHRvblwiKTtcclxuICBleGl0QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSA9IChhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGxldCB3aG9DaG9vc2VzUG9rZW1vblRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3dob0Nob29zZXNQYXJhZ3JhcGhcIikhO1xyXG4gIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDNcclxuICAgID8gKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IFwiV2FpdCBmb3IgdGhlIGdhbWUgdG8gc3RhcnQuLi5cIilcclxuICAgIDogKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IGAke2FjdGl2ZVBsYXllci5uYW1lfSBjaG9vc2VzIDEgcG9rZW1vbmApO1xyXG59O1xyXG4iLCJleHBvcnQgdHlwZSBQb2tlbW9uVHlwZSA9XHJcbiAgfCBcImdyYXNzXCJcclxuICB8IFwicG9pc29uXCJcclxuICB8IFwiZmlyZVwiXHJcbiAgfCBcIndhdGVyXCJcclxuICB8IFwiYnVnXCJcclxuICB8IFwibm9ybWFsXCJcclxuICB8IFwiZmx5aW5nXCJcclxuICB8IFwiZWxlY3RyaWNcIlxyXG4gIHwgXCJncm91bmRcIlxyXG4gIHwgXCJmYWlyeVwiXHJcbiAgfCBcInBzeWNoaWNcIlxyXG4gIHwgXCJmaWdodGluZ1wiXHJcbiAgfCBcInJvY2tcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uIHtcclxuXHJcbiAgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcclxuICByZWFkb25seSBfaW1hZ2U6IHN0cmluZztcclxuICByZWFkb25seSBfbWF4SFA6IG51bWJlcjtcclxuICBwcml2YXRlIF9jdXJyZW50SFA6IG51bWJlcjtcclxuICByZWFkb25seSBfYXR0YWNrUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2RlZmVuc2VQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfdHlwZXM6IFBva2Vtb25UeXBlW107XHJcbiAgcmVhZG9ubHkgX21vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaW1hZ2U6IHN0cmluZywgbWF4SFA6IG51bWJlciwgYXR0YWNrUG9pbnRzOiBudW1iZXIsXHJcbiAgICBkZWZlbnNlUG9pbnRzOiBudW1iZXIsIHR5cGVzOiBQb2tlbW9uVHlwZVtdLCBtb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdKSB7XHJcblxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9pbWFnZSA9IGltYWdlO1xyXG4gICAgdGhpcy5fbWF4SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fYXR0YWNrUG9pbnRzID0gYXR0YWNrUG9pbnRzO1xyXG4gICAgdGhpcy5fZGVmZW5zZVBvaW50cyA9IGRlZmVuc2VQb2ludHM7XHJcbiAgICB0aGlzLl90eXBlcyA9IHR5cGVzO1xyXG4gICAgdGhpcy5fbW92ZXMgPSBtb3ZlcztcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGltYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdEhQKHBvaW50c1RvU3VidHJhY3Q6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SFAgPSB0aGlzLl9jdXJyZW50SFAgLSBwb2ludHNUb1N1YnRyYWN0O1xyXG4gICAgaWYgKG5ld0hQIDwgMCkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50SFAgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbmV3SFA7XHJcbiAgfVxyXG5cclxuICBoZWFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0YWNrUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F0dGFja1BvaW50cztcclxuICB9XHJcblxyXG4gIGdldCBkZWZlbnNlUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmVuc2VQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbW92ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW92ZXM7XHJcbiAgfVxyXG5cclxuICBpc0FsaXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUCA+IDA7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5pbXBvcnQgeyBQb2tlbW9uVHlwZSB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb25GYWN0b3J5IHtcclxuICAgIHJlYWRvbmx5IF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBva2VEYXRhOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyB0eXBlczogc3RyaW5nW107XHJcbiAgICAgICAgc3RhdHM6IHsgaHA6IG51bWJlcjsgYXR0YWNrOiBudW1iZXI7IGRlZmVuc2U6IG51bWJlcjsgfTtcclxuICAgICAgICBtb3ZlczogeyBuYW1lOiBzdHJpbmc7IGFjY3VyYWN5OiBudW1iZXI7IHBvd2VyOiBudW1iZXI7IHR5cGU6IHN0cmluZzsgfVtdXHJcbiAgICB9W10pIHtcclxuICAgICAgICB0aGlzLl9wb2tlbW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBwb2tlbW9uIG9mIHBva2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlSW1nID0gXCIuLi9hc3NldHMvXCIgKyBwb2tlbW9uLm5hbWUgKyBcIi5wbmdcIlxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZU1vdmVzID0gcG9rZW1vbi5tb3Zlcy5yZWR1Y2UoICh0YWIsIG1vdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhYi5wdXNoKHttb3ZlTmFtZTogbW92ZS5uYW1lLCBtb3ZlVHlwZTogbW92ZS50eXBlIGFzIFBva2Vtb25UeXBlfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWJcclxuICAgICAgICAgICAgICAgIH0sIFtdIGFzIHttb3ZlTmFtZTogc3RyaW5nLCBtb3ZlVHlwZTogUG9rZW1vblR5cGV9W10pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlVHlwZXM6IFBva2Vtb25UeXBlW10gPSBwb2tlbW9uLnR5cGVzLm1hcCh2ID0+IHYgYXMgUG9rZW1vblR5cGUpXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlbW9uT2JqZWN0ID0gbmV3IFBva2Vtb24odGhpcy5fY2FwaXRhbGl6ZShwb2tlbW9uLm5hbWUpLCBwb2tlSW1nLCBcclxuICAgICAgICAgICAgICAgIHBva2Vtb24uc3RhdHMuaHAsIHBva2Vtb24uc3RhdHMuYXR0YWNrLCBwb2tlbW9uLnN0YXRzLmRlZmVuc2UsXHJcbiAgICAgICAgICAgICAgICBwb2tlVHlwZXMsIHBva2VNb3ZlcylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbk9iamVjdClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9rZW1vbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQb2tlbW9uIHtcclxuICAgICAgICBjb25zdCBwb2tlbW9uID0gdGhpcy5fcG9rZW1vbnMuZmluZCggcG9rZW1vbiA9PiBwb2tlbW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAocG9rZW1vbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9rZW1vbiAke25hbWV9IGlzIG5vdCBmb3VuZCBpbiB0aGUgcG9rZW1vbiBmYWN0b3J5YClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBva2Vtb25cclxuICAgIH1cclxuXHJcbiAgICBfY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgICAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChwbGF5ZXI6IFBsYXllciwgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcblxyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBhdHRhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYXR0YWNrQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKHBsYXllcik7XHJcbiAgfSk7XHJcbiAgc3dpdGNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKHBsYXllcik7XHJcbiAgfSk7XHJcblxyXG4gIGlmKHRydWUpIHsgLy9nYW1lSGFuZGxlci5jYW5Vc2VNYW5nbygpXHJcbiAgICBtYW5nb0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy9nYW1lSGFuZGxlci51c2VNYW5nbygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnbWFuZ28gdXNlZCEgbW5pYSBtbmlhIG1uaWEuLi4nKTsgLy9uZWVkcyB0byBiZSBkZWxldGVkXHJcbiAgICAgIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gICAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgbWFuZ28uaW5uZXJIVE1MID0gXCIwXCI7XHJcbiAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAocGxheWVyOiBQbGF5ZXIsIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG5cclxuICBjb25zdCBhdHRhY2tCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvbk9uZVwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhdHRhY2tCdXR0b25Ud29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIHBsYXllciwgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIHBsYXllciwgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCBjb25zdCBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyID0gKHBsYXllcjogUGxheWVyLCBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuXHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25PbmVcIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHN3aXRjaEJ1dHRvblR3byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjc3dpdGNoQnV0dG9uVHdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBiYXR0bGVCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImJhdHRsZUJ1dHRvblwiKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIG1hZ2ljRnVuY3Rpb24oc3dpdGNoQnV0dG9uT25lLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgc3dpdGNoUG9rZSk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyKTtcclxufVxyXG5cclxuXHJcbmNvbnN0IG1hZ2ljRnVuY3Rpb24gPSAoYnV0dG9uOiBIVE1MRGl2RWxlbWVudCwgYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4sIHBsYXllcjogUGxheWVyLCBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsIGZ1bmN0aW9uVG9DYWxsPzogYW55KSA9PiB7XHJcbiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coYCR7YnV0dG9uLmlubmVyVGV4dH0gdXNlZCFgKTtcclxuICAgIGlmIChmdW5jdGlvblRvQ2FsbCkgeyBmdW5jdGlvblRvQ2FsbCgpOyB9IC8vID8/XHJcbiAgICBzZXRUaW1lb3V0KCAoKT0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKHBsYXllcik7XHJcbiAgICB9LCA1MDApO1xyXG4gICAgLy9hbHNvIGNoYW5nZSBwbGF5ZXIgZnVuY3Rpb24gXHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBidXR0b25zW2ldLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmVlbic7XHJcbiAgICB9XHJcbiAgfSApO1xyXG59XHJcblxyXG5cclxuLy8gZnVuY2lvbnMganVzdCBmb3IgY2hlY2sgaWYgaXRzIHdvcmtzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGdhbWVIYW5kbGVyID4gdXNlIGF0dGFjayBvciBzd2l0Y2ggUG9rZW1vbiBmdW5jdGlvbnNcclxuY29uc3QgYXR0YWNrID0gKCkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKCdidW0gYnVtIGJhY2ghJyk7XHJcbn1cclxuY29uc3Qgc3dpdGNoUG9rZSA9ICgpID0+IHtcclxuICBjb25zb2xlLmxvZygncHVmZiEnKTtcclxufSIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyLCBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lciwgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lciB9IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUgKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIGdldCBwbGF5ZXJUd28oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyVHdvO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGxheWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9wcG9uZW50UGxheWVyKCk6IFBsYXllciB7XHJcbiAgICBpZiAodGhpcy5fY3VycmVudFBsYXllciA9PT0gdGhpcy5fcGxheWVyT25lKSByZXR1cm4gdGhpcy5fcGxheWVyVHdvO1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlkUGxheWVyTG9vc2UocGxheWVyOiBQbGF5ZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBwbGF5ZXIuYWxpdmVQb2tlbW9ucy5sZW5ndGggPT09IDA7XHJcbiAgfVxyXG5cclxuICBpc0dhbWVGaW5pc2hlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSB8fFxyXG4gICAgICB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllclR3bylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRXaW5uZXIoKTogUGxheWVyIHwgRXJyb3Ige1xyXG4gICAgaWYgKCF0aGlzLmlzR2FtZUZpbmlzaGVkKCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgZ2V0IHRoZSB3aW5uZXIuIFRoZSBnYW1lIGlzIG5vdCBvdmVyLlwiKTtcclxuICAgIHJldHVybiB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllck9uZSkgPT09IHRydWVcclxuICAgICAgPyB0aGlzLl9wbGF5ZXJUd29cclxuICAgICAgOiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUFjdGlvbkJ1dHRvbnMocGxheWVyOiBQbGF5ZXIpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdTdGFydCAtIGFjdGlvbiBtb2RhbCcpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYXR0YWNrQnV0dG9uXCI+YXR0YWNrPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblwiPnN3aXRjaDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJtYW5nb0J1dHRvblwiPnVzZSBtYW5nbyAoPHNwYW4gaWQ9XCJtYW5nb1wiPjE8L3NwYW4+KTwvZGl2PmA7XHJcbiAgICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcihwbGF5ZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBdHRhY2tCdXR0b25zKHBsYXllcjogUGxheWVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnQXR0YWNrIGNob29zZSBtb2RhbCcpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYXR0YWNrQnV0dG9uT25lXCI+JHtwbGF5ZXIucG9rZW1vbnNbMF0ubW92ZXNbMF0ubW92ZU5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblR3b1wiPiR7cGxheWVyLnBva2Vtb25zWzBdLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcihwbGF5ZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKHBsYXllcjogUGxheWVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnU3dpdGNoIGNob29zZSBtb2RhbCcpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uT25lXCI+JHtwbGF5ZXIucG9rZW1vbnNbMV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uVHdvXCI+JHtwbGF5ZXIucG9rZW1vbnNbMl0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYmFja0J1dHRvblwiPmJhY2s8L2Rpdj5gO1xyXG4gICAgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lcihwbGF5ZXIsIHRoaXMpO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgc3RhcnRCYXR0bGUgfSBmcm9tIFwiLi4vZmlnaHRQYWdlL3N0YXJ0QmF0dGxlXCI7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IHN0YXJ0R2FtZUlmUmVhZHkgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgaWYgKHBsYXllck9uZS5wb2tlbW9ucy5sZW5ndGggPCAzIHx8IHBsYXllclR3by5wb2tlbW9ucy5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHBcIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgc3RhcnRCYXR0bGUocGxheWVyT25lLCBwbGF5ZXJUd28sIGFwcCk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZSB9IGZyb20gXCIuL3JlbmRlckZpZ2h0UGFnZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0YXJ0QmF0dGxlID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIHBsYXllclR3bzogUGxheWVyLFxyXG4gIGFwcDogSFRNTERpdkVsZW1lbnRcclxuKSA9PiB7XHJcbiAgY29uc3QgZ2FtZSA9IG5ldyBHYW1lSGFuZGxlcihwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgc2V0VGltZW91dCgoKSA9PiBjcmVhdGVGaWdodFBhZ2UoYXBwLCBnYW1lKSwgMjAwMCk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5jb25zdCBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllck9uZU5hbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS1wbGF5ZXIxLW5hbWVcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b05hbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS1wbGF5ZXIyLW5hbWVcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIHBsYXllck9uZU5hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUubmFtZTtcclxuICBwbGF5ZXJUd29OYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyVHdvLm5hbWU7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlnaHRQYWdlID0gKFxyXG4gIGFwcERpdjogSFRNTERpdkVsZW1lbnQsXHJcbiAgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZpZ2h0UGFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCA9IGZpZ2h0UGFnZS5pbm5lckhUTUw7XHJcbiAgY3JlYXRlUGxheWVyRmlnaHROYW1lcyhnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQb2tlbW9uKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVIUEJhcnMoZ2FtZUhhbmRsZXIucGxheWVyT25lLCBnYW1lSGFuZGxlci5wbGF5ZXJUd28pO1xyXG4gIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgLy8gZ2VuZXJhdGUgY2hvb3NlIGFjdGlvbiBidXR0b25zXHJcbiAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKGdhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVIUEJhcnMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgY3JlYXRlQmFyID0gKHBsYXllcjogUGxheWVyLCBIUEJhcjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1heEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubWF4SFA7XHJcbiAgICBjb25zdCBjdXJyZW50SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5jdXJyZW50SFA7XHJcbiAgICBjb25zdCBIUEluUGVyY2VudCA9IChjdXJyZW50SFAgLyBtYXhIUCkgKiAxMDA7XHJcbiAgICBjb25zb2xlLmxvZyhIUEluUGVyY2VudCk7XHJcbiAgICBIUEJhci5zdHlsZS53aWR0aCA9IGAke0hQSW5QZXJjZW50fSVgO1xyXG4gICAgbGV0IEhQQ2xhc3NMaXN0ID0gSFBCYXIuY2xhc3NMaXN0O1xyXG4gICAgaWYgKEhQSW5QZXJjZW50IDwgMjApIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZUhQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0hQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJPbmUsIHBsYXllck9uZUhQQmFyKTtcclxuICBjcmVhdGVCYXIocGxheWVyVHdvLCBwbGF5ZXJUd29IUEJhcik7XHJcbn07XHJcbiIsImltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYWN0aXZlUGxheWVyQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhY3RpdmUtcGxheWVyLWluZm9cIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgYWN0aXZlUGxheWVyQXJlYS50ZXh0Q29udGVudCA9IGAke2dhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIubmFtZX0gbm93IGlzIHlvdXIgdHVybi4gR2V0IHRoZSByZXZlbmdlIWA7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICAgIGNvbnN0IHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjFcIlxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgY29uc3QgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMlwiXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMVwiXHJcbiAgICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICAgIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIyXCJcclxuICAgICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gICAgY29uc3QgY3JlYXRlUG9rZW1vbiA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgICAgbmFtZUFyZWE6IEhUTUxIZWFkaW5nRWxlbWVudFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgICAgaW1hZ2VBcmVhLnNldEF0dHJpYnV0ZShcInNyY1wiLCBgLi9hc3NldHMvJHtwb2tlbW9uTmFtZS50b0xvd2VyQ2FzZSgpfS5wbmdgKTtcclxuICAgICAgbmFtZUFyZWEudGV4dENvbnRlbnQgPSBwb2tlbW9uTmFtZTtcclxuICAgIH07XHJcbiAgICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgICBnYW1lSGFuZGxlci5wbGF5ZXJPbmUsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICAgKTtcclxuICAgIGNyZWF0ZVBva2Vtb24oXHJcbiAgICAgIGdhbWVIYW5kbGVyLnBsYXllclR3byxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgICApO1xyXG4gIH07IiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgICBjb25zdCBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgICApID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPiBwbGF5ZXIuYWxpdmVQb2tlbW9ucy5sZW5ndGggLSAxOyBpLS0pIHtcclxuICAgICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIxIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllclR3bywgcGxheWVyVHdvUG9rZWJhbGxzKTtcclxuICB9OyIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQbGF5ZXJOYW1lcyB9IGZyb20gXCIuL2NyZWF0ZVBsYXllck5hbWVzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2Vtb25zIH0gZnJvbSBcIi4vY3JlYXRlUG9rZW1vbnNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVDaG9vc2VQYWdlID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBhY3RpdmVQbGF5ZXIgPSBwbGF5ZXJPbmU7XHJcbiAgY3JlYXRlUGxheWVyTmFtZXMocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICBjcmVhdGVQb2tlbW9ucyhwbGF5ZXJPbmUsIHBsYXllclR3bywgYWN0aXZlUGxheWVyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUGxheWVyTmFtZXMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHBsYXllck9uZU5hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjFOYW1lXCIpITtcclxuICBwbGF5ZXJPbmVOYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJPbmUubmFtZTtcclxuICBsZXQgcGxheWVyVHdvTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMk5hbWVcIikhO1xyXG4gIHBsYXllclR3b05hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllclR3by5uYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0ICogYXMgZGF0YSBmcm9tIFwiLi4vLi4vYXNzZXRzL3Bva2VfZGF0YS5qc29uXCI7XHJcbmltcG9ydCB7IHN0YXJ0R2FtZUlmUmVhZHkgfSBmcm9tIFwiLi9zdGFydEdhbWVJZlJlYWR5XCI7XHJcbmltcG9ydCB7IGFkZENob3NlblBva2Vtb24gfSBmcm9tIFwiLi9hZGRDaG9zZW5Qb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZVBva2ViYWxsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2Vtb25zID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIHBsYXllclR3bzogUGxheWVyLFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IHBva2VEYXRhID0gZGF0YS5wb2tlbW9ucztcclxuICBjb25zdCBwb2tlbW9uRmFjdG9yeSA9IG5ldyBQb2tlbW9uRmFjdG9yeShwb2tlRGF0YSk7XHJcbiAgY29uc3QgcG9rZW1vbkltYWdlcyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI3Bva2Vtb25MaXN0IGltZ1wiKVxyXG4gICkgYXMgW0hUTUxJbWFnZUVsZW1lbnRdO1xyXG5cclxuICBwb2tlbW9uSW1hZ2VzLmZvckVhY2goKHBva2Vtb25JbWFnZSkgPT5cclxuICAgIHBva2Vtb25JbWFnZS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICBcImNsaWNrXCIsXHJcbiAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDMpIHJldHVybjtcclxuICAgICAgICBhZGRDaG9zZW5Qb2tlbW9uKGUsIHBva2Vtb25GYWN0b3J5LCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIGNyZWF0ZVBva2ViYWxscyhwbGF5ZXJPbmUsIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgLy8gY2hhbmdlIHBsYXllclxyXG4gICAgICAgIGFjdGl2ZVBsYXllciA9IGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lID8gcGxheWVyVHdvIDogcGxheWVyT25lO1xyXG4gICAgICAgIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBzdGFydEdhbWVJZlJlYWR5KHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICAgICAgfSxcclxuICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4uL3Bva2Vtb25DbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhZGRDaG9zZW5Qb2tlbW9uID0gKFxyXG4gIGV2ZW50OiBFdmVudCxcclxuICBmYWN0b3J5OiBQb2tlbW9uRmFjdG9yeSxcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBjbGlja2VkUG9rZW1vbiA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBva2Vtb25OYW1lID0gY2xpY2tlZFBva2Vtb24uaWQ7XHJcbiAgY29uc3QgbmV3UG9rZW1vbk9iamVjdDogUG9rZW1vbiA9IGZhY3RvcnkuZ2V0UG9rZW1vbkJ5TmFtZShwb2tlbW9uTmFtZSk7XHJcbiAgYWN0aXZlUGxheWVyLmFkZFBva2Vtb24obmV3UG9rZW1vbk9iamVjdCk7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuZmlsdGVyID0gXCJncmF5c2NhbGUoMTAwJSlcIjtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZWJhbGxzID0gKHBsYXllck9uZTogUGxheWVyLCBhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdID1cclxuICAgIGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lXHJcbiAgICAgID8gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIxIGltZ1wiKSlcclxuICAgICAgOiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjIgaW1nXCIpKTtcclxuICBjb25zdCBwbGF5ZXJMYXN0UG9rZW1vbk5hbWU6IHN0cmluZyA9IGFjdGl2ZVBsYXllci5wb2tlbW9uc1tcclxuICAgIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxXHJcbiAgXS5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgY29uc3QgbnVtYmVyT2ZMYXN0UG9rZW1vbjogbnVtYmVyID0gYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDE7XHJcbiAgcGxheWVyUG9rZWJhbGxzW251bWJlck9mTGFzdFBva2Vtb25dLnNldEF0dHJpYnV0ZShcclxuICAgIFwic3JjXCIsXHJcbiAgICBgLi9hc3NldHMvJHtwbGF5ZXJMYXN0UG9rZW1vbk5hbWV9LnBuZ2BcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUGxheWVyIHtcclxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcG9rZW1vbnM6IFBva2Vtb25bXTtcclxuICBwcml2YXRlIF9pbmRleE9mQWN0aXZlUG9rZW1vbjogbnVtYmVyO1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcG9rZW1vbnM6IFBva2Vtb25bXSkge1xyXG4gICAgaWYgKG5hbWUubGVuZ3RoID4gOCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbG9uZyBuYW1lXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHBva2Vtb25zLmxlbmd0aCA+IDMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbnVtYmVyIG9mIHBva2Vtb25zXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9wb2tlbW9ucyA9IHBva2Vtb25zO1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9ucztcclxuICB9XHJcblxyXG4gIHNldCBpbmRleE9mQWN0aXZlUG9rZW1vbihudW1PZkFjdGl2ZVBva2Vtb246IG51bWJlcikge1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSBudW1PZkFjdGl2ZVBva2Vtb247XHJcbiAgfVxyXG4gIGdldCBnZXRBY3RpdmVQb2tlbW9uKCk6IFBva2Vtb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zW3RoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGl2ZVBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICBjb25zdCBhbGl2ZVBva2Vtb25zVGFiOiBQb2tlbW9uW10gPSB0aGlzLnBva2Vtb25zLmZpbHRlcigocG9rZW1vbikgPT5cclxuICAgICAgcG9rZW1vbi5pc0FsaXZlKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gYWxpdmVQb2tlbW9uc1RhYjtcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZW5hYmxlZCdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgIH1cclxufSIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/src/fightPage/buttonsEventListeners.ts b/src/fightPage/buttonsEventListeners.ts index 25baf26..8fcd8d7 100644 --- a/src/fightPage/buttonsEventListeners.ts +++ b/src/fightPage/buttonsEventListeners.ts @@ -1,98 +1,79 @@ import { Player } from "../playerClass"; import { GameHandler } from "../gameHandlerClass"; + export const actionsButtonEventListener = (player: Player, gameHandler: GameHandler) => { const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const attackButton = document.querySelector("#attackButton")!; - const switchButton = document.querySelector("#switchButton")!; - const mangoButton = document.querySelector("#mangoButton")!; - attackButton.addEventListener('click', () => { - gameHandler.generateAttackButtons(player); - }); - switchButton.addEventListener('click', () => { - gameHandler.generateSwitchButtons(player); - }); + const attackButton = document.querySelector("#attackButton")! as HTMLDivElement; + const switchButton = document.querySelector("#switchButton")! as HTMLDivElement; + const mangoButton = document.querySelector("#mangoButton")! as HTMLDivElement; + const mango = document.querySelector("#mango")! as HTMLDivElement; + + attackButton.addEventListener('click', () => { + gameHandler.generateAttackButtons(player); + }); + switchButton.addEventListener('click', () => { + gameHandler.generateSwitchButtons(player); + }); + + if(true) { //gameHandler.canUseMango() mangoButton.addEventListener('click', () => { - console.log('mango used! mnia mnia mnia...'); - const mango = document.querySelector("#mango")!; + //gameHandler.useMango(); + console.log('mango used! mnia mnia mnia...'); //needs to be deleted mango.innerHTML = "0"; mangoButton.classList.add("disabledButton"); - }) + }); + } else { + mango.innerHTML = "0"; + mangoButton.classList.add("disabledButton"); + } } export const attacksButtonEventListener = (player: Player, gameHandler: GameHandler) => { - const attackButtonOne = document.querySelector("#attackButtonOne") as HTMLDivElement; - const attackButtonTwo = document.querySelector("#attackButtonTwo") as HTMLDivElement; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const backButton = document.querySelector("#backButton")!; + const attackButtonOne = document.querySelector("#attackButtonOne")! as HTMLDivElement; + const attackButtonTwo = document.querySelector("#attackButtonTwo")! as HTMLDivElement; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const backButton = document.querySelector("#backButton")! as HTMLDivElement; - attackButtonOne.addEventListener('click', () => { - console.log('attack One used!'); - setTimeout( ()=> { - gameHandler.generateActionButtons(player); - }, 500); - //also change player function - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.backgroundColor = 'green'; - } - }); - attackButtonTwo.addEventListener('click', () => { - console.log('attack Two used!'); - setTimeout( ()=> { - gameHandler.generateActionButtons(player); - }, 500); - // also change player function - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.backgroundColor = 'green'; - } - }); - backButton.addEventListener('click', () => { - //timeout and style for some button animation - the animation needs to be change - setTimeout( ()=> { - gameHandler.generateActionButtons(player); - }, 500); - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.backgroundColor = 'green'; - } - }); + magicFunction(attackButtonOne, battleButtons, player, gameHandler, attack); + magicFunction(attackButtonTwo, battleButtons, player, gameHandler, attack); + magicFunction(backButton, battleButtons, player, gameHandler); } export const switchButtonEventListener = (player: Player, gameHandler: GameHandler) => { - const switchButtonOne = document.querySelector("#switchButtonOne") as HTMLDivElement; - const switchButtonTwo = document.querySelector("#switchButtonTwo") as HTMLDivElement; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const backButton = document.querySelector("#backButton")!; + const switchButtonOne = document.querySelector("#switchButtonOne")! as HTMLDivElement; + const switchButtonTwo = document.querySelector("#switchButtonTwo")! as HTMLDivElement; + const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + const backButton = document.querySelector("#backButton")! as HTMLDivElement; - switchButtonOne.addEventListener('click', () => { - console.log('pokemon One gooo!'); - setTimeout( ()=> { - gameHandler.generateActionButtons(player); - }, 500); - // also change player function - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.backgroundColor = 'green'; - } - }); - switchButtonTwo.addEventListener('click', () => { - console.log('pokemon Two gooo!'); - setTimeout( ()=> { - gameHandler.generateActionButtons(player); - }, 500); - // also change player function - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.backgroundColor = 'green'; - } - }); - backButton.addEventListener('click', () => { - //timeout and style for some button animation - the animation needs to be change - setTimeout( ()=> { - gameHandler.generateActionButtons(player); - }, 500); - for(let i = 0; i < battleButtons.length; i++) { - battleButtons[i].style.backgroundColor = 'green'; - } - }); + magicFunction(switchButtonOne, battleButtons, player, gameHandler, switchPoke); + magicFunction(switchButtonTwo, battleButtons, player, gameHandler, switchPoke); + magicFunction(backButton, battleButtons, player, gameHandler); +} + + +const magicFunction = (button: HTMLDivElement, buttons: HTMLCollectionOf, player: Player, gameHandler: GameHandler, functionToCall?: any) => { + button.addEventListener('click', () => { + console.log(`${button.innerText} used!`); + if (functionToCall) { functionToCall(); } // ?? + setTimeout( ()=> { + gameHandler.generateActionButtons(player); + }, 500); + //also change player function + for(let i = 0; i < buttons.length; i++) { + buttons[i].style.backgroundColor = 'green'; + } + } ); +} + + +// funcions just for check if its works should be replaced with gameHandler > use attack or switch Pokemon functions +const attack = () => { + console.log('bum bum bach!'); +} +const switchPoke = () => { + console.log('puff!'); } \ No newline at end of file diff --git a/src/gameHandlerClass.ts b/src/gameHandlerClass.ts index 6af310a..a9eb54f 100644 --- a/src/gameHandlerClass.ts +++ b/src/gameHandlerClass.ts @@ -46,6 +46,7 @@ export class GameHandler { } generateActionButtons(player: Player): void { + console.log('Start - action modal'); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
attack
@@ -55,6 +56,7 @@ export class GameHandler { } generateAttackButtons(player: Player): void { + console.log('Attack choose modal'); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
${player.pokemons[0].moves[0].moveName}
@@ -64,6 +66,7 @@ export class GameHandler { } generateSwitchButtons(player: Player): void { + console.log('Switch choose modal'); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
${player.pokemons[1].name}
From 80e3d48382c1e85a45fb705f83c6b7a34423fa8f Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Thu, 11 Feb 2021 10:36:49 +0100 Subject: [PATCH 30/76] added animations for buttons --- dist/index.js | 4 +- src/fightPage/buttonsEventListeners.ts | 35 +++++++++++++--- styles/SASS/_animations.scss | 57 +++++++++++++++++++++++++- styles/app.css | 52 +++++++++++++++++++++++ styles/app.css.map | 2 +- 5 files changed, 140 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index 73758b0..68d6b3a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;n\n
'+e.pokemons[0].moves[1].moveName+'
\n
back
',function(e,t){var n=document.querySelector("#attackButtonOne"),o=document.querySelector("#attackButtonTwo"),c=document.getElementsByClassName("battleButton"),u=document.querySelector("#backButton");r(n,c,e,t,a),r(o,c,e,t,a),r(u,c,e,t)}(e,this)},e.prototype.generateSwitchButtons=function(e){console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+e.pokemons[1].name+'
\n
'+e.pokemons[2].name+'
\n
back
',function(e,t){var n=document.querySelector("#switchButtonOne"),o=document.querySelector("#switchButtonTwo"),a=document.getElementsByClassName("battleButton"),u=document.querySelector("#backButton");r(n,a,e,t,c),r(o,a,e,t,c),r(u,a,e,t)}(e,this)},e}(),i=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new u(e,t);setTimeout((function(){return function(e,t){var n,o,r,a,c,u=document.querySelector("#fight-page-template");e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),function(e){document.querySelector("#active-player-info").textContent=e.currentPlayer.name+" now is your turn. Get the revenge!"}(t),function(e){var t=document.querySelector("#pokemon-image-player1"),n=document.querySelector("#pokemon-image-player2"),o=document.querySelector("#pokemon-name-player1"),r=document.querySelector("#pokemon-name-player2"),a=function(e,t,n){var o=e.getActivePokemon.name;t.setAttribute("src","./assets/"+o.toLowerCase()+".png"),n.textContent=o};a(e.playerOne,t,o),a(e.playerTwo,n,r)}(t),n=t.playerOne,o=t.playerTwo,r=function(e,t){var n=e.getActivePokemon.maxHP,o=e.getActivePokemon.currentHP/n*100;console.log(o),t.style.width=o+"%";var r=t.classList;o<20?(r.remove("hpBarHighLevel"),r.add("hpBarLowLevel")):(r.remove("hpBarLowLevel"),r.add("hpBarHighLevel"))},a=document.querySelector("#hp-bar-player1"),c=document.querySelector("#hp-bar-player2"),r(n,a),r(o,c),function(e){var t=function(e,t){for(var n=2;n>e.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)}(t),t.generateActionButtons(t.currentPlayer)}(n,o)}),2e3)}(e,t,document.querySelector("#app"))},s=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,u=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,u,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),i(t,r))}),{once:!0})}))}(t,r,a)},p=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),m=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var e,t,n,o,r,a,c,u,i,l=document.querySelector("#app");e=l,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(l),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){m(n,o,r)})),o.addEventListener("keyup",(function(){m(n,o,r)})),u=document.querySelector("#how-to-play-button"),i=document.querySelector("#info-modal-screen"),u.addEventListener("click",(function(){i.style.display="flex"})),null==(c=(a=i).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,s(new p(t,[]),new p(n,[]))}))}(l)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2J1dHRvbnNFdmVudExpc3RlbmVycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2dhbWVIYW5kbGVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2Uvc3RhcnRHYW1lSWZSZWFkeS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9yZW5kZXJGaWdodFBhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlSFBCYXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBsYXllci50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVBY3RpdmVQb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsIm1hZ2ljRnVuY3Rpb24iLCJidXR0b24iLCJidXR0b25zIiwicGxheWVyIiwiZ2FtZUhhbmRsZXIiLCJmdW5jdGlvblRvQ2FsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwiaW5uZXJUZXh0Iiwic2V0VGltZW91dCIsImdlbmVyYXRlQWN0aW9uQnV0dG9ucyIsImkiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInN3aXRjaFBva2UiLCJfcGxheWVyT25lIiwiX3BsYXllclR3byIsIl9jdXJyZW50UGxheWVyIiwiZGlkUGxheWVyTG9vc2UiLCJhbGl2ZVBva2Vtb25zIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbm5lckhUTUwiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiYXR0YWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsImdlbmVyYXRlQXR0YWNrQnV0dG9ucyIsImdlbmVyYXRlU3dpdGNoQnV0dG9ucyIsImNsYXNzTGlzdCIsImFkZCIsImFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyIiwiYXR0YWNrQnV0dG9uT25lIiwiYXR0YWNrQnV0dG9uVHdvIiwiYmF0dGxlQnV0dG9ucyIsImJhY2tCdXR0b24iLCJhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lciIsInN3aXRjaEJ1dHRvbk9uZSIsInN3aXRjaEJ1dHRvblR3byIsInN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIiLCJzdGFydEdhbWVJZlJlYWR5IiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiY3JlYXRlQmFyIiwicGxheWVyT25lSFBCYXIiLCJwbGF5ZXJUd29IUEJhciIsImZpZ2h0UGFnZSIsInBsYXllck9uZU5hbWUiLCJwbGF5ZXJUd29OYW1lIiwiY3JlYXRlUGxheWVyRmlnaHROYW1lcyIsImN1cnJlbnRQbGF5ZXIiLCJjcmVhdGVBY3RpdmVQbGF5ZXIiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSIsImNyZWF0ZVBva2Vtb24iLCJpbWFnZUFyZWEiLCJuYW1lQXJlYSIsInBva2Vtb25OYW1lIiwiZ2V0QWN0aXZlUG9rZW1vbiIsInNldEF0dHJpYnV0ZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJIUEJhciIsIkhQSW5QZXJjZW50IiwiY3VycmVudEhQIiwid2lkdGgiLCJIUENsYXNzTGlzdCIsInJlbW92ZSIsImNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zIiwicGxheWVyUG9rZWJhbGxzIiwicGxheWVyT25lUG9rZWJhbGxzIiwiQXJyYXkiLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsInBsYXllclR3b1Bva2ViYWxscyIsImNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyIsImNyZWF0ZUZpZ2h0UGFnZSIsInN0YXJ0QmF0dGxlIiwiY3JlYXRlQ2hvb3NlUGFnZSIsImNyZWF0ZVBsYXllck5hbWVzIiwicG9rZW1vbkZhY3RvcnkiLCJQb2tlbW9uRmFjdG9yeSIsImZvckVhY2giLCJwb2tlbW9uSW1hZ2UiLCJlIiwiZXZlbnQiLCJmYWN0b3J5IiwiY2xpY2tlZFBva2Vtb24iLCJ0YXJnZXQiLCJpZCIsIm5ld1Bva2Vtb25PYmplY3QiLCJhZGRQb2tlbW9uIiwiY3Vyc29yIiwiZmlsdGVyIiwiYWRkQ2hvc2VuUG9rZW1vbiIsInBsYXllckxhc3RQb2tlbW9uTmFtZSIsImNyZWF0ZVBva2ViYWxscyIsIm9uY2UiLCJjcmVhdGVQb2tlbW9ucyIsIl9pbmRleE9mQWN0aXZlUG9rZW1vbiIsIm51bU9mQWN0aXZlUG9rZW1vbiIsImFjdGl2YXRlU3RhcnQiLCJuYW1lMUlucHV0IiwibmFtZTJJbnB1dCIsInN0YXJ0QnV0dG9uIiwidmFsdWUiLCJjbGFzc05hbWUiLCJzdGFydGluZ1BhZ2UiLCJwbGF5ZXIxTmFtZUlucHV0IiwicGxheWVyMk5hbWVJbnB1dCIsInNjcmVlblRvRGlzcGxheSIsImV4aXRCdXR0b24iLCJob3dUb1BsYXlCdXR0b24iLCJpbmZvTW9kYWwiLCJyZW5kZXJIb3dUb1BsYXlNb2RhbCIsImRpc3BsYXkiLCJwbGF5QnV0dG9uIiwiY2hvb3NlUG9rZW1vblNjcmVlbiIsIlBsYXllciIsInJlbmRlckNob29zZVBva2Vtb25TY3JlZW4iXSwibWFwcGluZ3MiOiJtQkFBTyxJQ0VNQSxFQUF5QixTQUFDQyxHQUNyQyxJQUFJQyxFQUF3QkMsU0FBU0MsY0FBYyx3QkFDbEIsSUFBakNILEVBQWFJLFNBQVNDLE9BQ2pCSixFQUFzQkssWUFBYyxnQ0FDcENMLEVBQXNCSyxZQUFpQk4sRUFBYU8sS0FBSSxzQkNTL0QsYUFXRSxXQUFZQSxFQUFjQyxFQUFlQyxFQUFlQyxFQUN0REMsRUFBdUJDLEVBQXNCQyxHQUU3Q0MsS0FBS0MsTUFBUVIsRUFDYk8sS0FBS0UsT0FBU1IsRUFDZE0sS0FBS0csT0FBU1IsRUFDZEssS0FBS0ksV0FBYVQsRUFDbEJLLEtBQUtLLGNBQWdCVCxFQUNyQkksS0FBS00sZUFBaUJULEVBQ3RCRyxLQUFLTyxPQUFTVCxFQUNkRSxLQUFLUSxPQUFTVCxFQW1EbEIsT0EvQ0Usc0JBQUksbUJBQUksQyxJQUFSLFdBQ0UsT0FBT0MsS0FBS0MsTyxnQ0FHZCxzQkFBSSxvQkFBSyxDLElBQVQsV0FDRSxPQUFPRCxLQUFLRSxRLGdDQUdkLHNCQUFJLHdCQUFTLEMsSUFBYixXQUNFLE9BQU9GLEtBQUtJLFksZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0osS0FBS0csUSxnQ0FHZCxZQUFBTSxXQUFBLFNBQVdDLEdBQ1QsSUFBTUMsRUFBUVgsS0FBS0ksV0FBYU0sRUFDNUJDLEVBQVEsSUFDVlgsS0FBS0ksV0FBYSxHQUVwQkosS0FBS0ksV0FBYU8sR0FHcEIsWUFBQUMsS0FBQSxXQUNFWixLQUFLSSxXQUFhSixLQUFLRyxRQUd6QixzQkFBSSwyQkFBWSxDLElBQWhCLFdBQ0UsT0FBT0gsS0FBS0ssZSxnQ0FHZCxzQkFBSSw0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QyxjQUFjLHVCQUE0Q3dLLE1BQ3ZGWSxFQUFzQnJMLFNBQVNDLGNBQ25DLHlCQUVGd0csRUFBT3pCLFVBQVlxRyxFQUFvQnJHLFVBQ3ZDOEQsRUFBaUIsSUFBSXdDLEVBQU9WLEVBQWtCLElBQUssSUFBSVUsRUFBT1QsRUFBa0IsUUFVbEZVLENBQTBCakYsS0FHTixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNob3dNb2RhbCA9IChcclxuICBzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50LFxyXG4gIHN0YXJ0aW5nUG9zaXRpb246IHN0cmluZ1xyXG4pID0+IHtcclxuICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IHN0YXJ0aW5nUG9zaXRpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaGlkZU1vZGFsID0gKHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBleGl0QnV0dG9uID0gc2NyZWVuVG9EaXNwbGF5LnF1ZXJ5U2VsZWN0b3IoXCIuZXhpdEJ1dHRvblwiKTtcclxuICBleGl0QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSA9IChhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGxldCB3aG9DaG9vc2VzUG9rZW1vblRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3dob0Nob29zZXNQYXJhZ3JhcGhcIikhO1xyXG4gIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDNcclxuICAgID8gKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IFwiV2FpdCBmb3IgdGhlIGdhbWUgdG8gc3RhcnQuLi5cIilcclxuICAgIDogKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IGAke2FjdGl2ZVBsYXllci5uYW1lfSBjaG9vc2VzIDEgcG9rZW1vbmApO1xyXG59O1xyXG4iLCJleHBvcnQgdHlwZSBQb2tlbW9uVHlwZSA9XHJcbiAgfCBcImdyYXNzXCJcclxuICB8IFwicG9pc29uXCJcclxuICB8IFwiZmlyZVwiXHJcbiAgfCBcIndhdGVyXCJcclxuICB8IFwiYnVnXCJcclxuICB8IFwibm9ybWFsXCJcclxuICB8IFwiZmx5aW5nXCJcclxuICB8IFwiZWxlY3RyaWNcIlxyXG4gIHwgXCJncm91bmRcIlxyXG4gIHwgXCJmYWlyeVwiXHJcbiAgfCBcInBzeWNoaWNcIlxyXG4gIHwgXCJmaWdodGluZ1wiXHJcbiAgfCBcInJvY2tcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uIHtcclxuXHJcbiAgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcclxuICByZWFkb25seSBfaW1hZ2U6IHN0cmluZztcclxuICByZWFkb25seSBfbWF4SFA6IG51bWJlcjtcclxuICBwcml2YXRlIF9jdXJyZW50SFA6IG51bWJlcjtcclxuICByZWFkb25seSBfYXR0YWNrUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2RlZmVuc2VQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfdHlwZXM6IFBva2Vtb25UeXBlW107XHJcbiAgcmVhZG9ubHkgX21vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaW1hZ2U6IHN0cmluZywgbWF4SFA6IG51bWJlciwgYXR0YWNrUG9pbnRzOiBudW1iZXIsXHJcbiAgICBkZWZlbnNlUG9pbnRzOiBudW1iZXIsIHR5cGVzOiBQb2tlbW9uVHlwZVtdLCBtb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdKSB7XHJcblxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9pbWFnZSA9IGltYWdlO1xyXG4gICAgdGhpcy5fbWF4SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fYXR0YWNrUG9pbnRzID0gYXR0YWNrUG9pbnRzO1xyXG4gICAgdGhpcy5fZGVmZW5zZVBvaW50cyA9IGRlZmVuc2VQb2ludHM7XHJcbiAgICB0aGlzLl90eXBlcyA9IHR5cGVzO1xyXG4gICAgdGhpcy5fbW92ZXMgPSBtb3ZlcztcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGltYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdEhQKHBvaW50c1RvU3VidHJhY3Q6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SFAgPSB0aGlzLl9jdXJyZW50SFAgLSBwb2ludHNUb1N1YnRyYWN0O1xyXG4gICAgaWYgKG5ld0hQIDwgMCkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50SFAgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbmV3SFA7XHJcbiAgfVxyXG5cclxuICBoZWFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0YWNrUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F0dGFja1BvaW50cztcclxuICB9XHJcblxyXG4gIGdldCBkZWZlbnNlUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmVuc2VQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbW92ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW92ZXM7XHJcbiAgfVxyXG5cclxuICBpc0FsaXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUCA+IDA7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5pbXBvcnQgeyBQb2tlbW9uVHlwZSB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb25GYWN0b3J5IHtcclxuICAgIHJlYWRvbmx5IF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBva2VEYXRhOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyB0eXBlczogc3RyaW5nW107XHJcbiAgICAgICAgc3RhdHM6IHsgaHA6IG51bWJlcjsgYXR0YWNrOiBudW1iZXI7IGRlZmVuc2U6IG51bWJlcjsgfTtcclxuICAgICAgICBtb3ZlczogeyBuYW1lOiBzdHJpbmc7IGFjY3VyYWN5OiBudW1iZXI7IHBvd2VyOiBudW1iZXI7IHR5cGU6IHN0cmluZzsgfVtdXHJcbiAgICB9W10pIHtcclxuICAgICAgICB0aGlzLl9wb2tlbW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBwb2tlbW9uIG9mIHBva2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlSW1nID0gXCIuLi9hc3NldHMvXCIgKyBwb2tlbW9uLm5hbWUgKyBcIi5wbmdcIlxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZU1vdmVzID0gcG9rZW1vbi5tb3Zlcy5yZWR1Y2UoICh0YWIsIG1vdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhYi5wdXNoKHttb3ZlTmFtZTogbW92ZS5uYW1lLCBtb3ZlVHlwZTogbW92ZS50eXBlIGFzIFBva2Vtb25UeXBlfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWJcclxuICAgICAgICAgICAgICAgIH0sIFtdIGFzIHttb3ZlTmFtZTogc3RyaW5nLCBtb3ZlVHlwZTogUG9rZW1vblR5cGV9W10pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlVHlwZXM6IFBva2Vtb25UeXBlW10gPSBwb2tlbW9uLnR5cGVzLm1hcCh2ID0+IHYgYXMgUG9rZW1vblR5cGUpXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlbW9uT2JqZWN0ID0gbmV3IFBva2Vtb24odGhpcy5fY2FwaXRhbGl6ZShwb2tlbW9uLm5hbWUpLCBwb2tlSW1nLCBcclxuICAgICAgICAgICAgICAgIHBva2Vtb24uc3RhdHMuaHAsIHBva2Vtb24uc3RhdHMuYXR0YWNrLCBwb2tlbW9uLnN0YXRzLmRlZmVuc2UsXHJcbiAgICAgICAgICAgICAgICBwb2tlVHlwZXMsIHBva2VNb3ZlcylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbk9iamVjdClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9rZW1vbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQb2tlbW9uIHtcclxuICAgICAgICBjb25zdCBwb2tlbW9uID0gdGhpcy5fcG9rZW1vbnMuZmluZCggcG9rZW1vbiA9PiBwb2tlbW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAocG9rZW1vbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9rZW1vbiAke25hbWV9IGlzIG5vdCBmb3VuZCBpbiB0aGUgcG9rZW1vbiBmYWN0b3J5YClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBva2Vtb25cclxuICAgIH1cclxuXHJcbiAgICBfY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgICAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChwbGF5ZXI6IFBsYXllciwgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcblxyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBhdHRhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYXR0YWNrQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKHBsYXllcik7XHJcbiAgfSk7XHJcbiAgc3dpdGNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKHBsYXllcik7XHJcbiAgfSk7XHJcblxyXG4gIGlmKHRydWUpIHsgLy9nYW1lSGFuZGxlci5jYW5Vc2VNYW5nbygpXHJcbiAgICBtYW5nb0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy9nYW1lSGFuZGxlci51c2VNYW5nbygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnbWFuZ28gdXNlZCEgbW5pYSBtbmlhIG1uaWEuLi4nKTsgLy9uZWVkcyB0byBiZSBkZWxldGVkXHJcbiAgICAgIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gICAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgbWFuZ28uaW5uZXJIVE1MID0gXCIwXCI7XHJcbiAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAocGxheWVyOiBQbGF5ZXIsIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG5cclxuICBjb25zdCBhdHRhY2tCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvbk9uZVwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhdHRhY2tCdXR0b25Ud29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIHBsYXllciwgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIHBsYXllciwgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCBjb25zdCBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyID0gKHBsYXllcjogUGxheWVyLCBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuXHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25PbmVcIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHN3aXRjaEJ1dHRvblR3byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjc3dpdGNoQnV0dG9uVHdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBiYXR0bGVCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImJhdHRsZUJ1dHRvblwiKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIG1hZ2ljRnVuY3Rpb24oc3dpdGNoQnV0dG9uT25lLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgc3dpdGNoUG9rZSk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyKTtcclxufVxyXG5cclxuXHJcbmNvbnN0IG1hZ2ljRnVuY3Rpb24gPSAoYnV0dG9uOiBIVE1MRGl2RWxlbWVudCwgYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4sIHBsYXllcjogUGxheWVyLCBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsIGZ1bmN0aW9uVG9DYWxsPzogYW55KSA9PiB7XHJcbiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coYCR7YnV0dG9uLmlubmVyVGV4dH0gdXNlZCFgKTtcclxuICAgIGlmIChmdW5jdGlvblRvQ2FsbCkgeyBmdW5jdGlvblRvQ2FsbCgpOyB9IC8vID8/XHJcbiAgICBzZXRUaW1lb3V0KCAoKT0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKHBsYXllcik7XHJcbiAgICB9LCA1MDApO1xyXG4gICAgLy9hbHNvIGNoYW5nZSBwbGF5ZXIgZnVuY3Rpb24gXHJcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBidXR0b25zW2ldLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdncmVlbic7XHJcbiAgICB9XHJcbiAgfSApO1xyXG59XHJcblxyXG5cclxuLy8gZnVuY2lvbnMganVzdCBmb3IgY2hlY2sgaWYgaXRzIHdvcmtzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGdhbWVIYW5kbGVyID4gdXNlIGF0dGFjayBvciBzd2l0Y2ggUG9rZW1vbiBmdW5jdGlvbnNcclxuY29uc3QgYXR0YWNrID0gKCkgPT4ge1xyXG4gIGNvbnNvbGUubG9nKCdidW0gYnVtIGJhY2ghJyk7XHJcbn1cclxuY29uc3Qgc3dpdGNoUG9rZSA9ICgpID0+IHtcclxuICBjb25zb2xlLmxvZygncHVmZiEnKTtcclxufSIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyLCBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lciwgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lciB9IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUgKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIGdldCBwbGF5ZXJUd28oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyVHdvO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGxheWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG9wcG9uZW50UGxheWVyKCk6IFBsYXllciB7XHJcbiAgICBpZiAodGhpcy5fY3VycmVudFBsYXllciA9PT0gdGhpcy5fcGxheWVyT25lKSByZXR1cm4gdGhpcy5fcGxheWVyVHdvO1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGlkUGxheWVyTG9vc2UocGxheWVyOiBQbGF5ZXIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBwbGF5ZXIuYWxpdmVQb2tlbW9ucy5sZW5ndGggPT09IDA7XHJcbiAgfVxyXG5cclxuICBpc0dhbWVGaW5pc2hlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSB8fFxyXG4gICAgICB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllclR3bylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRXaW5uZXIoKTogUGxheWVyIHwgRXJyb3Ige1xyXG4gICAgaWYgKCF0aGlzLmlzR2FtZUZpbmlzaGVkKCkpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgZ2V0IHRoZSB3aW5uZXIuIFRoZSBnYW1lIGlzIG5vdCBvdmVyLlwiKTtcclxuICAgIHJldHVybiB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllck9uZSkgPT09IHRydWVcclxuICAgICAgPyB0aGlzLl9wbGF5ZXJUd29cclxuICAgICAgOiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUFjdGlvbkJ1dHRvbnMocGxheWVyOiBQbGF5ZXIpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdTdGFydCAtIGFjdGlvbiBtb2RhbCcpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYXR0YWNrQnV0dG9uXCI+YXR0YWNrPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblwiPnN3aXRjaDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJtYW5nb0J1dHRvblwiPnVzZSBtYW5nbyAoPHNwYW4gaWQ9XCJtYW5nb1wiPjE8L3NwYW4+KTwvZGl2PmA7XHJcbiAgICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcihwbGF5ZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBdHRhY2tCdXR0b25zKHBsYXllcjogUGxheWVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnQXR0YWNrIGNob29zZSBtb2RhbCcpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYXR0YWNrQnV0dG9uT25lXCI+JHtwbGF5ZXIucG9rZW1vbnNbMF0ubW92ZXNbMF0ubW92ZU5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblR3b1wiPiR7cGxheWVyLnBva2Vtb25zWzBdLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcihwbGF5ZXIsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKHBsYXllcjogUGxheWVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnU3dpdGNoIGNob29zZSBtb2RhbCcpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uT25lXCI+JHtwbGF5ZXIucG9rZW1vbnNbMV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uVHdvXCI+JHtwbGF5ZXIucG9rZW1vbnNbMl0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYmFja0J1dHRvblwiPmJhY2s8L2Rpdj5gO1xyXG4gICAgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lcihwbGF5ZXIsIHRoaXMpO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgc3RhcnRCYXR0bGUgfSBmcm9tIFwiLi4vZmlnaHRQYWdlL3N0YXJ0QmF0dGxlXCI7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IHN0YXJ0R2FtZUlmUmVhZHkgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgaWYgKHBsYXllck9uZS5wb2tlbW9ucy5sZW5ndGggPCAzIHx8IHBsYXllclR3by5wb2tlbW9ucy5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHBcIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgc3RhcnRCYXR0bGUocGxheWVyT25lLCBwbGF5ZXJUd28sIGFwcCk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZSB9IGZyb20gXCIuL3JlbmRlckZpZ2h0UGFnZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0YXJ0QmF0dGxlID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIHBsYXllclR3bzogUGxheWVyLFxyXG4gIGFwcDogSFRNTERpdkVsZW1lbnRcclxuKSA9PiB7XHJcbiAgY29uc3QgZ2FtZSA9IG5ldyBHYW1lSGFuZGxlcihwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgc2V0VGltZW91dCgoKSA9PiBjcmVhdGVGaWdodFBhZ2UoYXBwLCBnYW1lKSwgMjAwMCk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5jb25zdCBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllck9uZU5hbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS1wbGF5ZXIxLW5hbWVcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b05hbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS1wbGF5ZXIyLW5hbWVcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIHBsYXllck9uZU5hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUubmFtZTtcclxuICBwbGF5ZXJUd29OYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyVHdvLm5hbWU7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlnaHRQYWdlID0gKFxyXG4gIGFwcERpdjogSFRNTERpdkVsZW1lbnQsXHJcbiAgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGZpZ2h0UGFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCA9IGZpZ2h0UGFnZS5pbm5lckhUTUw7XHJcbiAgY3JlYXRlUGxheWVyRmlnaHROYW1lcyhnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQb2tlbW9uKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVIUEJhcnMoZ2FtZUhhbmRsZXIucGxheWVyT25lLCBnYW1lSGFuZGxlci5wbGF5ZXJUd28pO1xyXG4gIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgLy8gZ2VuZXJhdGUgY2hvb3NlIGFjdGlvbiBidXR0b25zXHJcbiAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKGdhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVIUEJhcnMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgY3JlYXRlQmFyID0gKHBsYXllcjogUGxheWVyLCBIUEJhcjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1heEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubWF4SFA7XHJcbiAgICBjb25zdCBjdXJyZW50SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5jdXJyZW50SFA7XHJcbiAgICBjb25zdCBIUEluUGVyY2VudCA9IChjdXJyZW50SFAgLyBtYXhIUCkgKiAxMDA7XHJcbiAgICBjb25zb2xlLmxvZyhIUEluUGVyY2VudCk7XHJcbiAgICBIUEJhci5zdHlsZS53aWR0aCA9IGAke0hQSW5QZXJjZW50fSVgO1xyXG4gICAgbGV0IEhQQ2xhc3NMaXN0ID0gSFBCYXIuY2xhc3NMaXN0O1xyXG4gICAgaWYgKEhQSW5QZXJjZW50IDwgMjApIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZUhQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0hQQmFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hwLWJhci1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJPbmUsIHBsYXllck9uZUhQQmFyKTtcclxuICBjcmVhdGVCYXIocGxheWVyVHdvLCBwbGF5ZXJUd29IUEJhcik7XHJcbn07XHJcbiIsImltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYWN0aXZlUGxheWVyQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhY3RpdmUtcGxheWVyLWluZm9cIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgYWN0aXZlUGxheWVyQXJlYS50ZXh0Q29udGVudCA9IGAke2dhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIubmFtZX0gbm93IGlzIHlvdXIgdHVybi4gR2V0IHRoZSByZXZlbmdlIWA7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICAgIGNvbnN0IHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjFcIlxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgY29uc3QgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMlwiXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMVwiXHJcbiAgICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICAgIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIyXCJcclxuICAgICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gICAgY29uc3QgY3JlYXRlUG9rZW1vbiA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgICAgbmFtZUFyZWE6IEhUTUxIZWFkaW5nRWxlbWVudFxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgICAgaW1hZ2VBcmVhLnNldEF0dHJpYnV0ZShcInNyY1wiLCBgLi9hc3NldHMvJHtwb2tlbW9uTmFtZS50b0xvd2VyQ2FzZSgpfS5wbmdgKTtcclxuICAgICAgbmFtZUFyZWEudGV4dENvbnRlbnQgPSBwb2tlbW9uTmFtZTtcclxuICAgIH07XHJcbiAgICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgICBnYW1lSGFuZGxlci5wbGF5ZXJPbmUsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICAgKTtcclxuICAgIGNyZWF0ZVBva2Vtb24oXHJcbiAgICAgIGdhbWVIYW5kbGVyLnBsYXllclR3byxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSxcclxuICAgICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgICApO1xyXG4gIH07IiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgICBjb25zdCBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyA9IChcclxuICAgICAgcGxheWVyOiBQbGF5ZXIsXHJcbiAgICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgICApID0+IHtcclxuICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPiBwbGF5ZXIuYWxpdmVQb2tlbW9ucy5sZW5ndGggLSAxOyBpLS0pIHtcclxuICAgICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIxIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgICApIGFzIEhUTUxJbWFnZUVsZW1lbnRbXTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICAgIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllclR3bywgcGxheWVyVHdvUG9rZWJhbGxzKTtcclxuICB9OyIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQbGF5ZXJOYW1lcyB9IGZyb20gXCIuL2NyZWF0ZVBsYXllck5hbWVzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2Vtb25zIH0gZnJvbSBcIi4vY3JlYXRlUG9rZW1vbnNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVDaG9vc2VQYWdlID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBhY3RpdmVQbGF5ZXIgPSBwbGF5ZXJPbmU7XHJcbiAgY3JlYXRlUGxheWVyTmFtZXMocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICBjcmVhdGVQb2tlbW9ucyhwbGF5ZXJPbmUsIHBsYXllclR3bywgYWN0aXZlUGxheWVyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUGxheWVyTmFtZXMgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHBsYXllck9uZU5hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjFOYW1lXCIpITtcclxuICBwbGF5ZXJPbmVOYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJPbmUubmFtZTtcclxuICBsZXQgcGxheWVyVHdvTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMk5hbWVcIikhO1xyXG4gIHBsYXllclR3b05hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllclR3by5uYW1lO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0ICogYXMgZGF0YSBmcm9tIFwiLi4vLi4vYXNzZXRzL3Bva2VfZGF0YS5qc29uXCI7XHJcbmltcG9ydCB7IHN0YXJ0R2FtZUlmUmVhZHkgfSBmcm9tIFwiLi9zdGFydEdhbWVJZlJlYWR5XCI7XHJcbmltcG9ydCB7IGFkZENob3NlblBva2Vtb24gfSBmcm9tIFwiLi9hZGRDaG9zZW5Qb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZVBva2ViYWxsc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyTmFtZVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2Vtb25zID0gKFxyXG4gIHBsYXllck9uZTogUGxheWVyLFxyXG4gIHBsYXllclR3bzogUGxheWVyLFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IHBva2VEYXRhID0gZGF0YS5wb2tlbW9ucztcclxuICBjb25zdCBwb2tlbW9uRmFjdG9yeSA9IG5ldyBQb2tlbW9uRmFjdG9yeShwb2tlRGF0YSk7XHJcbiAgY29uc3QgcG9rZW1vbkltYWdlcyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI3Bva2Vtb25MaXN0IGltZ1wiKVxyXG4gICkgYXMgW0hUTUxJbWFnZUVsZW1lbnRdO1xyXG5cclxuICBwb2tlbW9uSW1hZ2VzLmZvckVhY2goKHBva2Vtb25JbWFnZSkgPT5cclxuICAgIHBva2Vtb25JbWFnZS5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICBcImNsaWNrXCIsXHJcbiAgICAgIChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDMpIHJldHVybjtcclxuICAgICAgICBhZGRDaG9zZW5Qb2tlbW9uKGUsIHBva2Vtb25GYWN0b3J5LCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIGNyZWF0ZVBva2ViYWxscyhwbGF5ZXJPbmUsIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgLy8gY2hhbmdlIHBsYXllclxyXG4gICAgICAgIGFjdGl2ZVBsYXllciA9IGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lID8gcGxheWVyVHdvIDogcGxheWVyT25lO1xyXG4gICAgICAgIGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUoYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBzdGFydEdhbWVJZlJlYWR5KHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICAgICAgfSxcclxuICAgICAgeyBvbmNlOiB0cnVlIH1cclxuICAgIClcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4uL3Bva2Vtb25DbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhZGRDaG9zZW5Qb2tlbW9uID0gKFxyXG4gIGV2ZW50OiBFdmVudCxcclxuICBmYWN0b3J5OiBQb2tlbW9uRmFjdG9yeSxcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBjbGlja2VkUG9rZW1vbiA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBva2Vtb25OYW1lID0gY2xpY2tlZFBva2Vtb24uaWQ7XHJcbiAgY29uc3QgbmV3UG9rZW1vbk9iamVjdDogUG9rZW1vbiA9IGZhY3RvcnkuZ2V0UG9rZW1vbkJ5TmFtZShwb2tlbW9uTmFtZSk7XHJcbiAgYWN0aXZlUGxheWVyLmFkZFBva2Vtb24obmV3UG9rZW1vbk9iamVjdCk7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuZmlsdGVyID0gXCJncmF5c2NhbGUoMTAwJSlcIjtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZWJhbGxzID0gKHBsYXllck9uZTogUGxheWVyLCBhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdID1cclxuICAgIGFjdGl2ZVBsYXllciA9PT0gcGxheWVyT25lXHJcbiAgICAgID8gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIxIGltZ1wiKSlcclxuICAgICAgOiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjIgaW1nXCIpKTtcclxuICBjb25zdCBwbGF5ZXJMYXN0UG9rZW1vbk5hbWU6IHN0cmluZyA9IGFjdGl2ZVBsYXllci5wb2tlbW9uc1tcclxuICAgIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxXHJcbiAgXS5uYW1lLnRvTG93ZXJDYXNlKCk7XHJcbiAgY29uc3QgbnVtYmVyT2ZMYXN0UG9rZW1vbjogbnVtYmVyID0gYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDE7XHJcbiAgcGxheWVyUG9rZWJhbGxzW251bWJlck9mTGFzdFBva2Vtb25dLnNldEF0dHJpYnV0ZShcclxuICAgIFwic3JjXCIsXHJcbiAgICBgLi9hc3NldHMvJHtwbGF5ZXJMYXN0UG9rZW1vbk5hbWV9LnBuZ2BcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUGxheWVyIHtcclxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfcG9rZW1vbnM6IFBva2Vtb25bXTtcclxuICBwcml2YXRlIF9pbmRleE9mQWN0aXZlUG9rZW1vbjogbnVtYmVyO1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcG9rZW1vbnM6IFBva2Vtb25bXSkge1xyXG4gICAgaWYgKG5hbWUubGVuZ3RoID4gOCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbG9uZyBuYW1lXCIpO1xyXG4gICAgfVxyXG4gICAgaWYgKHBva2Vtb25zLmxlbmd0aCA+IDMpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgbnVtYmVyIG9mIHBva2Vtb25zXCIpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9wb2tlbW9ucyA9IHBva2Vtb25zO1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSAwO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9ucztcclxuICB9XHJcblxyXG4gIHNldCBpbmRleE9mQWN0aXZlUG9rZW1vbihudW1PZkFjdGl2ZVBva2Vtb246IG51bWJlcikge1xyXG4gICAgdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb24gPSBudW1PZkFjdGl2ZVBva2Vtb247XHJcbiAgfVxyXG4gIGdldCBnZXRBY3RpdmVQb2tlbW9uKCk6IFBva2Vtb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zW3RoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uXTtcclxuICB9XHJcblxyXG4gIGdldCBhbGl2ZVBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICBjb25zdCBhbGl2ZVBva2Vtb25zVGFiOiBQb2tlbW9uW10gPSB0aGlzLnBva2Vtb25zLmZpbHRlcigocG9rZW1vbikgPT5cclxuICAgICAgcG9rZW1vbi5pc0FsaXZlKClcclxuICAgICk7XHJcbiAgICByZXR1cm4gYWxpdmVQb2tlbW9uc1RhYjtcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZW5hYmxlZCdcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgIH1cclxufSIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;n\n
'+e.pokemons[0].moves[1].moveName+'
\n
back
',function(e,t){var n=document.querySelector("#attackButtonOne"),o=document.querySelector("#attackButtonTwo"),c=document.getElementsByClassName("battleButton"),u=document.querySelector("#backButton");a(c),r(n,c,e,t,i),r(o,c,e,t,i),r(u,c,e,t)}(e,this)},e.prototype.generateSwitchButtons=function(e){console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+e.pokemons[1].name+'
\n
'+e.pokemons[2].name+'
\n
back
',function(e,t){var n=document.querySelector("#switchButtonOne"),o=document.querySelector("#switchButtonTwo"),c=document.getElementsByClassName("battleButton"),i=document.querySelector("#backButton");a(c),r(n,c,e,t,u),r(o,c,e,t,u),r(i,c,e,t)}(e,this)},e}(),p=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new s(e,t);setTimeout((function(){return function(e,t){var n,o,r,a,c,i=document.querySelector("#fight-page-template");e.innerHTML=i.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),function(e){document.querySelector("#active-player-info").textContent=e.currentPlayer.name+" now is your turn. Get the revenge!"}(t),function(e){var t=document.querySelector("#pokemon-image-player1"),n=document.querySelector("#pokemon-image-player2"),o=document.querySelector("#pokemon-name-player1"),r=document.querySelector("#pokemon-name-player2"),a=function(e,t,n){var o=e.getActivePokemon.name;t.setAttribute("src","./assets/"+o.toLowerCase()+".png"),n.textContent=o};a(e.playerOne,t,o),a(e.playerTwo,n,r)}(t),n=t.playerOne,o=t.playerTwo,r=function(e,t){var n=e.getActivePokemon.maxHP,o=e.getActivePokemon.currentHP/n*100;console.log(o),t.style.width=o+"%";var r=t.classList;o<20?(r.remove("hpBarHighLevel"),r.add("hpBarLowLevel")):(r.remove("hpBarLowLevel"),r.add("hpBarHighLevel"))},a=document.querySelector("#hp-bar-player1"),c=document.querySelector("#hp-bar-player2"),r(n,a),r(o,c),function(e){var t=function(e,t){for(var n=2;n>e.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)}(t),t.generateActionButtons(t.currentPlayer)}(n,o)}),2e3)}(e,t,document.querySelector("#app"))},m=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),p(t,r))}),{once:!0})}))}(t,r,a)},l=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),y=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){y(n,o,r)})),o.addEventListener("keyup",(function(){y(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,m(new l(t,[]),new l(n,[]))}))}(s)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2J1dHRvbnNFdmVudExpc3RlbmVycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2dhbWVIYW5kbGVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2Uvc3RhcnRHYW1lSWZSZWFkeS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9yZW5kZXJGaWdodFBhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlSFBCYXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBsYXllci50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVBY3RpdmVQb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsIm1hZ2ljRnVuY3Rpb24iLCJidXR0b24iLCJidXR0b25zIiwicGxheWVyIiwiZ2FtZUhhbmRsZXIiLCJmdW5jdGlvblRvQ2FsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwiaW5uZXJUZXh0Iiwic2V0VGltZW91dCIsImdlbmVyYXRlQWN0aW9uQnV0dG9ucyIsImFuaW1hdGlvbkJ1dHRvbnNFeGl0IiwiYW5pbWF0aW9uQnV0dG9uc0VudHJ5IiwiaSIsInN0eWxlIiwiYW5pbWF0aW9uIiwiYW5pbWF0aW9uRGVsYXkiLCJzd2l0Y2hQb2tlIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiYWxpdmVQb2tlbW9ucyIsImlzR2FtZUZpbmlzaGVkIiwiZ2V0V2lubmVyIiwiaW5uZXJIVE1MIiwiYmF0dGxlQnV0dG9ucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJtYW5nb0J1dHRvbiIsIm1hbmdvIiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiY2xhc3NMaXN0IiwiYWRkIiwiYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIiLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwiYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIiLCJzd2l0Y2hCdXR0b25PbmUiLCJzd2l0Y2hCdXR0b25Ud28iLCJzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyIiwic3RhcnRHYW1lSWZSZWFkeSIsInBsYXllck9uZSIsInBsYXllclR3byIsImFwcCIsImdhbWUiLCJHYW1lSGFuZGxlciIsImFwcERpdiIsImNyZWF0ZUJhciIsInBsYXllck9uZUhQQmFyIiwicGxheWVyVHdvSFBCYXIiLCJmaWdodFBhZ2UiLCJwbGF5ZXJPbmVOYW1lIiwicGxheWVyVHdvTmFtZSIsImNyZWF0ZVBsYXllckZpZ2h0TmFtZXMiLCJjdXJyZW50UGxheWVyIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJjcmVhdGVQb2tlbW9uIiwiaW1hZ2VBcmVhIiwibmFtZUFyZWEiLCJwb2tlbW9uTmFtZSIsImdldEFjdGl2ZVBva2Vtb24iLCJzZXRBdHRyaWJ1dGUiLCJjcmVhdGVBY3RpdmVQb2tlbW9uIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJyZW1vdmUiLCJjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyIsInBsYXllclBva2ViYWxscyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMiLCJjcmVhdGVGaWdodFBhZ2UiLCJzdGFydEJhdHRsZSIsImNyZWF0ZUNob29zZVBhZ2UiLCJjcmVhdGVQbGF5ZXJOYW1lcyIsInBva2Vtb25GYWN0b3J5IiwiUG9rZW1vbkZhY3RvcnkiLCJmb3JFYWNoIiwicG9rZW1vbkltYWdlIiwiZSIsImV2ZW50IiwiZmFjdG9yeSIsImNsaWNrZWRQb2tlbW9uIiwidGFyZ2V0IiwiaWQiLCJuZXdQb2tlbW9uT2JqZWN0IiwiYWRkUG9rZW1vbiIsImN1cnNvciIsImZpbHRlciIsImFkZENob3NlblBva2Vtb24iLCJwbGF5ZXJMYXN0UG9rZW1vbk5hbWUiLCJjcmVhdGVQb2tlYmFsbHMiLCJvbmNlIiwiY3JlYXRlUG9rZW1vbnMiLCJfaW5kZXhPZkFjdGl2ZVBva2Vtb24iLCJudW1PZkFjdGl2ZVBva2Vtb24iLCJhY3RpdmF0ZVN0YXJ0IiwibmFtZTFJbnB1dCIsIm5hbWUySW5wdXQiLCJzdGFydEJ1dHRvbiIsInZhbHVlIiwiY2xhc3NOYW1lIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEsZ0NBR2QsWUFBQU0sV0FBQSxTQUFXQyxHQUNULElBQU1DLEVBQVFYLEtBQUtJLFdBQWFNLEVBQzVCQyxFQUFRLElBQ1ZYLEtBQUtJLFdBQWEsR0FFcEJKLEtBQUtJLFdBQWFPLEdBR3BCLFlBQUFDLEtBQUEsV0FDRVosS0FBS0ksV0FBYUosS0FBS0csUUFHekIsc0JBQUksMkJBQVksQyxJQUFoQixXQUNFLE9BQU9ILEtBQUtLLGUsZ0NBR2Qsc0JBQUksNEJBQWEsQyxJQUFqQixXQUNFLE9BQU9MLEtBQUtNLGdCLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9OLEtBQUtPLFEsZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT1AsS0FBS1EsUSxnQ0FHZCxZQUFBSyxRQUFBLFdBQ0UsT0FBT2IsS0FBS0ksV0FBYSxHQUU3QixFQXhFQSxHQ1hBLGFBR0ksV0FBWVUsR0FLUmQsS0FBS2UsVUFBWSxHQUVqQixJQUFvQixVQUFBRCxFQUFBLGVBQVUsQ0FBekIsSUFBSUUsRUFBTyxLQUVOQyxFQUFVLGFBQWVELEVBQVF2QixLQUFPLE9BRXhDeUIsRUFBWUYsRUFBUWpCLE1BQU1vQixRQUFRLFNBQUNDLEVBQUtDLEdBRTFDLE9BREFELEVBQUlFLEtBQUssQ0FBQ0MsU0FBVUYsRUFBSzVCLEtBQU0rQixTQUFVSCxFQUFLSSxPQUN2Q0wsSUFDSixJQUVETSxFQUEyQlYsRUFBUWxCLE1BQU02QixLQUFJLFNBQUFDLEdBQUssT0FBQUEsS0FFbERDLEVBQWdCLElBQUlDLEVBQVE5QixLQUFLK0IsWUFBWWYsRUFBUXZCLE1BQU93QixFQUM5REQsRUFBUWdCLE1BQU1DLEdBQUlqQixFQUFRZ0IsTUFBTUUsT0FBUWxCLEVBQVFnQixNQUFNRyxRQUN0RFQsRUFBV1IsR0FFZmxCLEtBQUtlLFVBQVVPLEtBQUtPLElBbUJoQyxPQWZJLHNCQUFJLHVCQUFRLEMsSUFBWixXQUNJLE9BQU83QixLQUFLZSxXLGdDQUdoQixZQUFBcUIsaUJBQUEsU0FBaUIzQyxHQUNiLElBQU11QixFQUFVaEIsS0FBS2UsVUFBVXNCLE1BQU0sU0FBQXJCLEdBQVcsT0FBQUEsRUFBUXZCLEtBQUs2QyxnQkFBa0I3QyxFQUFLNkMsaUJBQ3BGLFFBQWdCQyxJQUFadkIsRUFDQSxNQUFNLElBQUl3QixNQUFNLFdBQVcvQyxFQUFJLHdDQUVuQyxPQUFPdUIsR0FHWCxZQUFBZSxZQUFBLFNBQVlVLEdBQ1IsT0FBT0EsRUFBSUMsT0FBTyxHQUFHQyxjQUFnQkYsRUFBSUcsTUFBTSxJQUV2RCxFQTVDQSxHLG1rSUNBTyxJQWlFREMsRUFBZ0IsU0FBQ0MsRUFBd0JDLEVBQXdDQyxFQUFnQkMsRUFBMEJDLEdBQy9ISixFQUFPSyxpQkFBaUIsU0FBUyxXQUMvQkMsUUFBUUMsSUFBT1AsRUFBT1EsVUFBUyxVQUMzQkosR0FBa0JBLElBQ3RCSyxZQUFZLFdBQ1ZOLEVBQVlPLHNCQUFzQlIsS0FDakMsS0FFSFMsRUFBcUJWLE9BSW5CVyxFQUF3QixTQUFDWCxHQUM3QixJQUFJLElBQUlZLEVBQUksRUFBR0EsRUFBSVosRUFBUXhELE9BQVFvRSxJQUNqQ1osRUFBUVksR0FBR0MsTUFBTUMsVUFBWSx5RUFDN0JkLEVBQVFZLEdBQUdDLE1BQU1FLGVBQXdCLElBQUpILEVBQVEsS0FJM0NGLEVBQXVCLFNBQUNWLEdBQzVCLElBQUksSUFBSVksRUFBSSxFQUFHQSxFQUFJWixFQUFReEQsT0FBUW9FLElBQ2pDWixFQUFRWSxHQUFHQyxNQUFNQyxVQUFZLDBFQUM3QmQsRUFBUVksR0FBR0MsTUFBTUUsZUFBd0IsSUFBSkgsRUFBUSxLQUszQ3pCLEVBQVMsV0FDYmtCLFFBQVFDLElBQUksa0JBRVJVLEVBQWEsV0FDakJYLFFBQVFDLElBQUksVUNqR2QsYUFDRSxXQUNtQlcsRUFDQUMsR0FEQSxLQUFBRCxhQUNBLEtBQUFDLGFBR1gsS0FBQUMsZUFBeUJsRSxLQUFLZ0UsV0FtRXhDLE9BakVFLHNCQUFJLHdCQUFTLEMsSUFBYixXQUNFLE9BQU9oRSxLQUFLZ0UsWSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPaEUsS0FBS2lFLFksZ0NBR2Qsc0JBQUksNEJBQWEsQyxJQUFqQixXQUNFLE9BQU9qRSxLQUFLa0UsZ0IsZ0NBR2Qsc0JBQUksNkJBQWMsQyxJQUFsQixXQUNFLE9BQUlsRSxLQUFLa0UsaUJBQW1CbEUsS0FBS2dFLFdBQW1CaEUsS0FBS2lFLFdBQ2xEakUsS0FBS2dFLFksZ0NBR04sWUFBQUcsZUFBUixTQUF1Qm5CLEdBQ3JCLE9BQXVDLElBQWhDQSxFQUFPb0IsY0FBYzdFLFFBRzlCLFlBQUE4RSxlQUFBLFdBQ0UsT0FDRXJFLEtBQUttRSxlQUFlbkUsS0FBS2dFLGFBQ3pCaEUsS0FBS21FLGVBQWVuRSxLQUFLaUUsYUFJN0IsWUFBQUssVUFBQSxXQUNFLElBQUt0RSxLQUFLcUUsaUJBQ1IsTUFBTSxJQUFJN0IsTUFBTSxvREFDbEIsT0FBZ0QsSUFBekN4QyxLQUFLbUUsZUFBZW5FLEtBQUtnRSxZQUM1QmhFLEtBQUtpRSxXQUNMakUsS0FBS2dFLFlBR1gsWUFBQVIsc0JBQUEsU0FBc0JSLEdBQ3BCSSxRQUFRQyxJQUFJLHdCQUNZakUsU0FBU0MsY0FBYyxpQkFDL0JrRixVQUFZLGdTRDlDVSxTQUFDdkIsRUFBZ0JDLEdBRXpELElBQU11QixFQUFnQnBGLFNBQVNxRix1QkFBdUIsZ0JBQ2hEQyxFQUFldEYsU0FBU0MsY0FBYyxpQkFDdENzRixFQUFldkYsU0FBU0MsY0FBYyxpQkFDdEN1RixFQUFjeEYsU0FBU0MsY0FBYyxnQkFDckN3RixFQUFRekYsU0FBU0MsY0FBYyxVQUVyQ3FFLEVBQXNCYyxHQUV0QkUsRUFBYXZCLGlCQUFpQixTQUFTLFdBQ3JDTSxFQUFxQmUsR0FDckJqQixZQUFZLFdBQ1ZOLEVBQVk2QixzQkFBc0I5QixLQUNqQyxRQUVMMkIsRUFBYXhCLGlCQUFpQixTQUFTLFdBQ3JDTSxFQUFxQmUsR0FDckJqQixZQUFZLFdBQ1ZOLEVBQVk4QixzQkFBc0IvQixLQUNqQyxRQUlINEIsRUFBWXpCLGlCQUFpQixTQUFTLFdBRXBDQyxRQUFRQyxJQUFJLGlDQUNad0IsRUFBTU4sVUFBWSxJQUNsQkssRUFBWUksVUFBVUMsSUFBSSxxQkNzQjVCQyxDQUEyQmxDLEVBQVFoRCxPQUdyQyxZQUFBOEUsc0JBQUEsU0FBc0I5QixHQUNwQkksUUFBUUMsSUFBSSx1QkFDWWpFLFNBQVNDLGNBQWMsaUJBQy9Ca0YsVUFBWSwrRUFDNEN2QixFQUFPMUQsU0FBUyxHQUFHUyxNQUFNLEdBQUd3QixTQUFRLHFGQUNwQ3lCLEVBQU8xRCxTQUFTLEdBQUdTLE1BQU0sR0FBR3dCLFNBQVEsMEZEdEJ0RSxTQUFDeUIsRUFBZ0JDLEdBRXpELElBQU1rQyxFQUFrQi9GLFNBQVNDLGNBQWMsb0JBQ3pDK0YsRUFBa0JoRyxTQUFTQyxjQUFjLG9CQUN6Q21GLEVBQWdCcEYsU0FBU3FGLHVCQUF1QixnQkFDaERZLEVBQWFqRyxTQUFTQyxjQUFjLGVBRTFDcUUsRUFBc0JjLEdBRXRCM0IsRUFBY3NDLEVBQWlCWCxFQUFleEIsRUFBUUMsRUFBYWYsR0FDbkVXLEVBQWN1QyxFQUFpQlosRUFBZXhCLEVBQVFDLEVBQWFmLEdBQ25FVyxFQUFjd0MsRUFBWWIsRUFBZXhCLEVBQVFDLEdDYS9DcUMsQ0FBMkJ0QyxFQUFRaEQsT0FHckMsWUFBQStFLHNCQUFBLFNBQXNCL0IsR0FDcEJJLFFBQVFDLElBQUksdUJBQ1lqRSxTQUFTQyxjQUFjLGlCQUMvQmtGLFVBQVksK0VBQzRDdkIsRUFBTzFELFNBQVMsR0FBR0csS0FBSSxxRkFDdkJ1RCxFQUFPMUQsU0FBUyxHQUFHRyxLQUFJLDBGRGxCeEQsU0FBQ3VELEVBQWdCQyxHQUUxRCxJQUFNc0MsRUFBa0JuRyxTQUFTQyxjQUFjLG9CQUN6Q21HLEVBQWtCcEcsU0FBU0MsY0FBYyxvQkFDekNtRixFQUFnQnBGLFNBQVNxRix1QkFBdUIsZ0JBQ2hEWSxFQUFhakcsU0FBU0MsY0FBYyxlQUUxQ3FFLEVBQXNCYyxHQUV0QjNCLEVBQWMwQyxFQUFpQmYsRUFBZXhCLEVBQVFDLEVBQWFjLEdBQ25FbEIsRUFBYzJDLEVBQWlCaEIsRUFBZXhCLEVBQVFDLEVBQWFjLEdBQ25FbEIsRUFBY3dDLEVBQVliLEVBQWV4QixFQUFRQyxHQ1MvQ3dDLENBQTBCekMsRUFBUWhELE9BRXRDLEVBekVBLEdDQ2EwRixFQUFtQixTQUFDQyxFQUFtQkMsR0FDOUNELEVBQVVyRyxTQUFTQyxPQUFTLEdBQUtxRyxFQUFVdEcsU0FBU0MsT0FBUyxHQ0R4QyxTQUN6Qm9HLEVBQ0FDLEVBQ0FDLEdBRUEsSUFBTUMsRUFBTyxJQUFJQyxFQUFZSixFQUFXQyxHQUN4Q3JDLFlBQVcsV0FBTSxPQ1FZLFNBQzdCeUMsRUFDQS9DLEdBRUEsSUNwQjJCMEMsRUFBbUJDLEVBQ3hDSyxFQWVBQyxFQUdBQyxFRENBQyxFQUFZaEgsU0FBU0MsY0FDekIsd0JBRUYyRyxFQUFPekIsVUFBWTZCLEVBQVU3QixVQWxCQSxTQUFDdEIsR0FDOUIsSUFBTW9ELEVBQWdCakgsU0FBU0MsY0FDN0IsNEJBRUlpSCxFQUFnQmxILFNBQVNDLGNBQzdCLDRCQUVGZ0gsRUFBYzdHLFlBQWN5RCxFQUFZMEMsVUFBVWxHLEtBQ2xENkcsRUFBYzlHLFlBQWN5RCxFQUFZMkMsVUFBVW5HLEtBV2xEOEcsQ0FBdUJ0RCxHRXhCUyxTQUFDQSxHQUNSN0QsU0FBU0MsY0FDaEMsdUJBRWVHLFlBQWlCeUQsRUFBWXVELGNBQWMvRyxLQUFJLHNDRnFCaEVnSCxDQUFtQnhELEdHeEJjLFNBQUNBLEdBQ2hDLElBQU15RCxFQUFrQ3RILFNBQVNDLGNBQy9DLDBCQUVJc0gsRUFBa0N2SCxTQUFTQyxjQUMvQywwQkFFSXVILEVBQWlDeEgsU0FBU0MsY0FDOUMseUJBRUl3SCxFQUFpQ3pILFNBQVNDLGNBQzlDLHlCQUVJeUgsRUFBZ0IsU0FDcEI5RCxFQUNBK0QsRUFDQUMsR0FFQSxJQUFNQyxFQUFjakUsRUFBT2tFLGlCQUFpQnpILEtBQzVDc0gsRUFBVUksYUFBYSxNQUFPLFlBQVlGLEVBQVkzRSxjQUFhLFFBQ25FMEUsRUFBU3hILFlBQWN5SCxHQUV6QkgsRUFDRTdELEVBQVkwQyxVQUNaZSxFQUNBRSxHQUVGRSxFQUNFN0QsRUFBWTJDLFVBQ1plLEVBQ0FFLEdITEpPLENBQW9CbkUsR0MxQk8wQyxFRDJCZDFDLEVBQVkwQyxVQzNCcUJDLEVEMkJWM0MsRUFBWTJDLFVDMUIxQ0ssRUFBWSxTQUFDakQsRUFBZ0JxRSxHQUNqQyxJQUFNMUgsRUFBUXFELEVBQU9rRSxpQkFBaUJ2SCxNQUVoQzJILEVBRFl0RSxFQUFPa0UsaUJBQWlCSyxVQUNUNUgsRUFBUyxJQUMxQ3lELFFBQVFDLElBQUlpRSxHQUNaRCxFQUFNekQsTUFBTTRELE1BQVdGLEVBQVcsSUFDbEMsSUFBSUcsRUFBY0osRUFBTXJDLFVBQ3BCc0MsRUFBYyxJQUNoQkcsRUFBWUMsT0FBTyxrQkFDbkJELEVBQVl4QyxJQUFJLG1CQUVoQndDLEVBQVlDLE9BQU8saUJBQ25CRCxFQUFZeEMsSUFBSSxvQkFHZGlCLEVBQWlCOUcsU0FBU0MsY0FDOUIsbUJBRUk4RyxFQUFpQi9HLFNBQVNDLGNBQzlCLG1CQUVGNEcsRUFBVU4sRUFBV08sR0FDckJELEVBQVVMLEVBQVdPLEdHdEJpQixTQUFDbEQsR0FDckMsSUFBTTBFLEVBQWdDLFNBQ3BDM0UsRUFDQTRFLEdBRUEsSUFBSyxJQUFJakUsRUFBSSxFQUFHQSxFQUFJWCxFQUFPb0IsY0FBYzdFLE9BQVMsRUFBR29FLElBQ25EaUUsRUFBZ0JqRSxHQUFHcUIsVUFBVUMsSUFBSSxvQkFHL0I0QyxFQUFxQkMsTUFBTUMsS0FDL0IzSSxTQUFTNEksaUJBQWlCLDZDQUV0QkMsRUFBcUJILE1BQU1DLEtBQy9CM0ksU0FBUzRJLGlCQUFpQiw2Q0FFNUJMLEVBQThCMUUsRUFBWTBDLFVBQVdrQyxHQUNyREYsRUFBOEIxRSxFQUFZMkMsVUFBV3FDLEdKV3ZEQyxDQUF5QmpGLEdBRXpCQSxFQUFZTyxzQkFBc0JQLEVBQVl1RCxlRHRCN0IyQixDQUFnQnRDLEVBQUtDLEtBQU8sS0RIN0NzQyxDQUFZekMsRUFBV0MsRUFEWHhHLFNBQVNDLGNBQWMsVU9EeEJnSixFQUFtQixTQUFDMUMsRUFBbUJDLEdBQ2xELElBQUkxRyxFQUFleUcsR0NKWSxTQUFDQSxFQUFtQkMsR0FDdkJ4RyxTQUFTQyxjQUFjLDBCQUM3QkcsWUFBY21HLEVBQVVsRyxLQUNsQkwsU0FBU0MsY0FBYywwQkFDN0JHLFlBQWNvRyxFQUFVbkcsS0RDOUM2SSxDQUFrQjNDLEVBQVdDLEdBQzdCM0csRUFBdUJDLEdFQUssU0FDNUJ5RyxFQUNBQyxFQUNBMUcsR0FFQSxJQUFNNEIsRUFBVyxJQUNYeUgsRUFBaUIsSUFBSUMsRUFBZTFILEdBQ3BCZ0gsTUFBTUMsS0FDMUIzSSxTQUFTNEksaUJBQWlCLHFCQUdkUyxTQUFRLFNBQUNDLEdBQ3JCLE9BQUFBLEVBQWF2RixpQkFDWCxTQUNBLFNBQUN3RixHQUNzQyxJQUFqQ3pKLEVBQWFJLFNBQVNDLFNDbkJGLFNBQzlCcUosRUFDQUMsRUFDQTNKLEdBRUEsSUFBTTRKLEVBQWlCRixFQUFNRyxPQUN2QjlCLEVBQWM2QixFQUFlRSxHQUM3QkMsRUFBNEJKLEVBQVF6RyxpQkFBaUI2RSxHQUMzRC9ILEVBQWFnSyxXQUFXRCxHQUN4QkgsRUFBZWxGLE1BQU11RixPQUFTLFVBQzlCTCxFQUFlbEYsTUFBTXdGLE9BQVMsa0JEVXhCQyxDQUFpQlYsRUFBR0osRUFBZ0JySixHRXRCYixTQUFDeUcsRUFBbUJ6RyxHQUNqRCxJQUFNMEksRUFDSjFJLElBQWlCeUcsRUFDYm1DLE1BQU1DLEtBQUszSSxTQUFTNEksaUJBQWlCLDJCQUNyQ0YsTUFBTUMsS0FBSzNJLFNBQVM0SSxpQkFBaUIsMkJBQ3JDc0IsRUFBZ0NwSyxFQUFhSSxTQUNqREosRUFBYUksU0FBU0MsT0FBUyxHQUMvQkUsS0FBSzZDLGNBRVBzRixFQURvQzFJLEVBQWFJLFNBQVNDLE9BQVMsR0FDOUI0SCxhQUNuQyxNQUNBLFlBQVltQyxFQUFxQixRRlk3QkMsQ0FBZ0I1RCxFQUFXekcsR0FHM0JELEVBREFDLEVBQWVBLElBQWlCeUcsRUFBWUMsRUFBWUQsR0FFeERELEVBQWlCQyxFQUFXQyxNQUU5QixDQUFFNEQsTUFBTSxPRnRCWkMsQ0FBZTlELEVBQVdDLEVBQVcxRyxJS1B2QyxhQUlFLFdBQVlPLEVBQWNILEdBQ3hCLEdBQUlHLEVBQUtGLE9BQVMsRUFDaEIsTUFBTSxJQUFJaUQsTUFBTSxpQkFFbEIsR0FBSWxELEVBQVNDLE9BQVMsRUFDcEIsTUFBTSxJQUFJaUQsTUFBTSw0QkFFbEJ4QyxLQUFLQyxNQUFRUixFQUNiTyxLQUFLZSxVQUFZekIsRUFDakJVLEtBQUswSixzQkFBd0IsRUEyQmpDLE9BeEJFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU8xSixLQUFLQyxPLGdDQUVkLHNCQUFJLHVCQUFRLEMsSUFBWixXQUNFLE9BQU9ELEtBQUtlLFcsZ0NBR2Qsc0JBQUksbUNBQW9CLEMsSUFBeEIsU0FBeUI0SSxHQUN2QjNKLEtBQUswSixzQkFBd0JDLEcsZ0NBRS9CLHNCQUFJLCtCQUFnQixDLElBQXBCLFdBQ0UsT0FBTzNKLEtBQUtlLFVBQVVmLEtBQUswSix3QixnQ0FHN0Isc0JBQUksNEJBQWEsQyxJQUFqQixXQUlFLE9BSG9DMUosS0FBS1YsU0FBUzhKLFFBQU8sU0FBQ3BJLEdBQ3hELE9BQUFBLEVBQVFILGMsZ0NBS1osWUFBQXFJLFdBQUEsU0FBV2xJLEdBQ1RoQixLQUFLZSxVQUFVTyxLQUFLTixJQUV4QixFQXhDQSxHQ0ZhNEksRUFBZ0IsU0FBQ0MsRUFBOEJDLEVBQThCQyxHQUNsRkYsRUFBV0csTUFBTXpLLE9BQVMsR0FBS3VLLEVBQVdFLE1BQU16SyxPQUFTLEVBQ3pEd0ssRUFBWUUsVUFBWSxpQkFFeEJGLEVBQVlFLFVBQVksbUJDOERoQzFHLFlBVGtCLFdBQ2hCLElBckQwQnlDLEVBQ3BCa0UsRUF5QkFDLEVBQ0FDLEVBQ0FMLEVwQjFCa0JNLEVBQ2xCQyxFb0JVQUMsRUFHQUMsRUFxQ0EzRSxFQUFNekcsU0FBU0MsY0FBYyxRQXJEVDJHLEVBc0RQSCxFQXJEYnFFLEVBQWU5SyxTQUFTQyxjQUM1QiwyQkFFRjJHLEVBQU96QixVQUFZMkYsRUFBYTNGLFVBRUwsU0FBQ3lCLEdBQzVCLElBQU13RSxFQUFZcEwsU0FBU0MsY0FDekIsd0JBRUYyRyxFQUFPekIsV0FBYWlHLEVBQVVqRyxVQTZDOUJrRyxDQUFxQjVFLEdBN0Jmc0UsRUFBbUIvSyxTQUFTQyxjQUFjLHVCQUMxQytLLEVBQW1CaEwsU0FBU0MsY0FBYyx1QkFDMUMwSyxFQUFjM0ssU0FBU0MsY0FBYyxzQkFDM0M4SyxFQUFpQmhILGlCQUFpQixTQUFTLFdBQ3ZDeUcsRUFBY08sRUFBa0JDLEVBQWtCTCxNQUV0REssRUFBaUJqSCxpQkFBaUIsU0FBUyxXQUN2Q3lHLEVBQWNPLEVBQWtCQyxFQUFrQkwsTUFwQmhEUSxFQUFrQm5MLFNBQVNDLGNBQy9CLHVCQUVJbUwsRUFBWXBMLFNBQVNDLGNBQ3pCLHNCQUVGa0wsRUFBZ0JwSCxpQkFBaUIsU0FBUyxXQUM5QnFILEVwQnJCSTVHLE1BQU04RyxRb0JxQkMsVXBCaEJ2QkosT0FETUEsR0FEa0JELEVvQm9CZEcsR3BCbkJ5Qm5MLGNBQWMsaUJBQ2pEaUwsRUFBWW5ILGlCQUFpQixTQUFTLFdBQ3BDa0gsRUFBZ0J6RyxNQUFNOEcsUUFBVSxVb0JnQ0YsU0FBQzFFLEdBQ2pDLElBQU0yRSxFQUFhdkwsU0FBU0MsY0FDMUIsc0JBRUZzTCxXQUFZeEgsaUJBQWlCLFNBQVMsV0FDcEMsSUFBTWdILEVBQW9CL0ssU0FBU0MsY0FBYyx1QkFBNEMySyxNQUN2RkksRUFBb0JoTCxTQUFTQyxjQUFjLHVCQUE0QzJLLE1BQ3ZGWSxFQUFzQnhMLFNBQVNDLGNBQ25DLHlCQUVGMkcsRUFBT3pCLFVBQVlxRyxFQUFvQnJHLFVBQ3ZDOEQsRUFBaUIsSUFBSXdDLEVBQU9WLEVBQWtCLElBQUssSUFBSVUsRUFBT1QsRUFBa0IsUUFVbEZVLENBQTBCakYsS0FHTixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNob3dNb2RhbCA9IChcclxuICBzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50LFxyXG4gIHN0YXJ0aW5nUG9zaXRpb246IHN0cmluZ1xyXG4pID0+IHtcclxuICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IHN0YXJ0aW5nUG9zaXRpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaGlkZU1vZGFsID0gKHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBleGl0QnV0dG9uID0gc2NyZWVuVG9EaXNwbGF5LnF1ZXJ5U2VsZWN0b3IoXCIuZXhpdEJ1dHRvblwiKTtcclxuICBleGl0QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSA9IChhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGxldCB3aG9DaG9vc2VzUG9rZW1vblRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3dob0Nob29zZXNQYXJhZ3JhcGhcIikhO1xyXG4gIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDNcclxuICAgID8gKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IFwiV2FpdCBmb3IgdGhlIGdhbWUgdG8gc3RhcnQuLi5cIilcclxuICAgIDogKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IGAke2FjdGl2ZVBsYXllci5uYW1lfSBjaG9vc2VzIDEgcG9rZW1vbmApO1xyXG59O1xyXG4iLCJleHBvcnQgdHlwZSBQb2tlbW9uVHlwZSA9XHJcbiAgfCBcImdyYXNzXCJcclxuICB8IFwicG9pc29uXCJcclxuICB8IFwiZmlyZVwiXHJcbiAgfCBcIndhdGVyXCJcclxuICB8IFwiYnVnXCJcclxuICB8IFwibm9ybWFsXCJcclxuICB8IFwiZmx5aW5nXCJcclxuICB8IFwiZWxlY3RyaWNcIlxyXG4gIHwgXCJncm91bmRcIlxyXG4gIHwgXCJmYWlyeVwiXHJcbiAgfCBcInBzeWNoaWNcIlxyXG4gIHwgXCJmaWdodGluZ1wiXHJcbiAgfCBcInJvY2tcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uIHtcclxuXHJcbiAgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcclxuICByZWFkb25seSBfaW1hZ2U6IHN0cmluZztcclxuICByZWFkb25seSBfbWF4SFA6IG51bWJlcjtcclxuICBwcml2YXRlIF9jdXJyZW50SFA6IG51bWJlcjtcclxuICByZWFkb25seSBfYXR0YWNrUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2RlZmVuc2VQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfdHlwZXM6IFBva2Vtb25UeXBlW107XHJcbiAgcmVhZG9ubHkgX21vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaW1hZ2U6IHN0cmluZywgbWF4SFA6IG51bWJlciwgYXR0YWNrUG9pbnRzOiBudW1iZXIsXHJcbiAgICBkZWZlbnNlUG9pbnRzOiBudW1iZXIsIHR5cGVzOiBQb2tlbW9uVHlwZVtdLCBtb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdKSB7XHJcblxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9pbWFnZSA9IGltYWdlO1xyXG4gICAgdGhpcy5fbWF4SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fYXR0YWNrUG9pbnRzID0gYXR0YWNrUG9pbnRzO1xyXG4gICAgdGhpcy5fZGVmZW5zZVBvaW50cyA9IGRlZmVuc2VQb2ludHM7XHJcbiAgICB0aGlzLl90eXBlcyA9IHR5cGVzO1xyXG4gICAgdGhpcy5fbW92ZXMgPSBtb3ZlcztcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGltYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdEhQKHBvaW50c1RvU3VidHJhY3Q6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SFAgPSB0aGlzLl9jdXJyZW50SFAgLSBwb2ludHNUb1N1YnRyYWN0O1xyXG4gICAgaWYgKG5ld0hQIDwgMCkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50SFAgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbmV3SFA7XHJcbiAgfVxyXG5cclxuICBoZWFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0YWNrUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F0dGFja1BvaW50cztcclxuICB9XHJcblxyXG4gIGdldCBkZWZlbnNlUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmVuc2VQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbW92ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW92ZXM7XHJcbiAgfVxyXG5cclxuICBpc0FsaXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUCA+IDA7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5pbXBvcnQgeyBQb2tlbW9uVHlwZSB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb25GYWN0b3J5IHtcclxuICAgIHJlYWRvbmx5IF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBva2VEYXRhOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyB0eXBlczogc3RyaW5nW107XHJcbiAgICAgICAgc3RhdHM6IHsgaHA6IG51bWJlcjsgYXR0YWNrOiBudW1iZXI7IGRlZmVuc2U6IG51bWJlcjsgfTtcclxuICAgICAgICBtb3ZlczogeyBuYW1lOiBzdHJpbmc7IGFjY3VyYWN5OiBudW1iZXI7IHBvd2VyOiBudW1iZXI7IHR5cGU6IHN0cmluZzsgfVtdXHJcbiAgICB9W10pIHtcclxuICAgICAgICB0aGlzLl9wb2tlbW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBwb2tlbW9uIG9mIHBva2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlSW1nID0gXCIuLi9hc3NldHMvXCIgKyBwb2tlbW9uLm5hbWUgKyBcIi5wbmdcIlxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZU1vdmVzID0gcG9rZW1vbi5tb3Zlcy5yZWR1Y2UoICh0YWIsIG1vdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhYi5wdXNoKHttb3ZlTmFtZTogbW92ZS5uYW1lLCBtb3ZlVHlwZTogbW92ZS50eXBlIGFzIFBva2Vtb25UeXBlfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWJcclxuICAgICAgICAgICAgICAgIH0sIFtdIGFzIHttb3ZlTmFtZTogc3RyaW5nLCBtb3ZlVHlwZTogUG9rZW1vblR5cGV9W10pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlVHlwZXM6IFBva2Vtb25UeXBlW10gPSBwb2tlbW9uLnR5cGVzLm1hcCh2ID0+IHYgYXMgUG9rZW1vblR5cGUpXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlbW9uT2JqZWN0ID0gbmV3IFBva2Vtb24odGhpcy5fY2FwaXRhbGl6ZShwb2tlbW9uLm5hbWUpLCBwb2tlSW1nLCBcclxuICAgICAgICAgICAgICAgIHBva2Vtb24uc3RhdHMuaHAsIHBva2Vtb24uc3RhdHMuYXR0YWNrLCBwb2tlbW9uLnN0YXRzLmRlZmVuc2UsXHJcbiAgICAgICAgICAgICAgICBwb2tlVHlwZXMsIHBva2VNb3ZlcylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbk9iamVjdClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9rZW1vbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQb2tlbW9uIHtcclxuICAgICAgICBjb25zdCBwb2tlbW9uID0gdGhpcy5fcG9rZW1vbnMuZmluZCggcG9rZW1vbiA9PiBwb2tlbW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAocG9rZW1vbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9rZW1vbiAke25hbWV9IGlzIG5vdCBmb3VuZCBpbiB0aGUgcG9rZW1vbiBmYWN0b3J5YClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBva2Vtb25cclxuICAgIH1cclxuXHJcbiAgICBfY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgICAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChwbGF5ZXI6IFBsYXllciwgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcblxyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBhdHRhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG5cclxuICBhdHRhY2tCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICBhbmltYXRpb25CdXR0b25zRXhpdChiYXR0bGVCdXR0b25zKTtcclxuICAgIHNldFRpbWVvdXQoICgpPT4ge1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZUF0dGFja0J1dHRvbnMocGxheWVyKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH0pO1xyXG4gIHN3aXRjaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCggKCk9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucyhwbGF5ZXIpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmKHRydWUpIHsgLy9nYW1lSGFuZGxlci5jYW5Vc2VNYW5nbygpXHJcbiAgICBtYW5nb0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy9nYW1lSGFuZGxlci51c2VNYW5nbygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnbWFuZ28gdXNlZCEgbW5pYSBtbmlhIG1uaWEuLi4nKTsgLy9uZWVkcyB0byBiZSBkZWxldGVkXHJcbiAgICAgIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gICAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgbWFuZ28uaW5uZXJIVE1MID0gXCIwXCI7XHJcbiAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAocGxheWVyOiBQbGF5ZXIsIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG5cclxuICBjb25zdCBhdHRhY2tCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvbk9uZVwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhdHRhY2tCdXR0b25Ud29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG5cclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgYXR0YWNrKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgYXR0YWNrKTtcclxuICBtYWdpY0Z1bmN0aW9uKGJhY2tCdXR0b24sIGJhdHRsZUJ1dHRvbnMsIHBsYXllciwgZ2FtZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAocGxheWVyOiBQbGF5ZXIsIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG5cclxuICBjb25zdCBzd2l0Y2hCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3N3aXRjaEJ1dHRvbk9uZVwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25Ud29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpXHJcblxyXG4gIG1hZ2ljRnVuY3Rpb24oc3dpdGNoQnV0dG9uT25lLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgc3dpdGNoUG9rZSk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyKTtcclxufVxyXG5cclxuXHJcbmNvbnN0IG1hZ2ljRnVuY3Rpb24gPSAoYnV0dG9uOiBIVE1MRGl2RWxlbWVudCwgYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4sIHBsYXllcjogUGxheWVyLCBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsIGZ1bmN0aW9uVG9DYWxsPzogYW55KSA9PiB7XHJcbiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coYCR7YnV0dG9uLmlubmVyVGV4dH0gdXNlZCFgKTtcclxuICAgIGlmIChmdW5jdGlvblRvQ2FsbCkgeyBmdW5jdGlvblRvQ2FsbCgpOyB9IC8vID8/XHJcbiAgICBzZXRUaW1lb3V0KCAoKT0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKHBsYXllcik7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIC8vYWxzbyBjaGFuZ2UgcGxheWVyIGZ1bmN0aW9uIFxyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYnV0dG9ucyk7XHJcbiAgfSApO1xyXG59XHJcblxyXG5jb25zdCBhbmltYXRpb25CdXR0b25zRW50cnkgPSAoYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pID0+IHtcclxuICBmb3IobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPSBcInNjYWxlLWluLWhvci1jZW50ZXIgMC41cyBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYFxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0V4aXQgPSAoYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pID0+IHtcclxuICBmb3IobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPSBcInNjYWxlLW91dC1ob3Jpem9udGFsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA4NSwgMC42ODAsIDAuNTMwKSBib3RoXCI7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gYCR7aSAqIDAuMTV9c2BcclxuICB9XHJcbn1cclxuXHJcbi8vIGZ1bmNpb25zIGp1c3QgZm9yIGNoZWNrIGlmIGl0cyB3b3JrcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBnYW1lSGFuZGxlciA+IHVzZSBhdHRhY2sgb3Igc3dpdGNoIFBva2Vtb24gZnVuY3Rpb25zXHJcbmNvbnN0IGF0dGFjayA9ICgpID0+IHtcclxuICBjb25zb2xlLmxvZygnYnVtIGJ1bSBiYWNoIScpO1xyXG59XHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoKSA9PiB7XHJcbiAgY29uc29sZS5sb2coJ3B1ZmYhJyk7XHJcbn0iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciwgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIsIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgfSBmcm9tIFwiLi9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR2FtZUhhbmRsZXIge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJUd286IFBsYXllclxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBfY3VycmVudFBsYXllcjogUGxheWVyID0gdGhpcy5fcGxheWVyT25lO1xyXG5cclxuICBnZXQgcGxheWVyT25lICgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxheWVyVHdvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50UGxheWVyKCk6IFBsYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBsYXllcjtcclxuICB9XHJcblxyXG4gIGdldCBvcHBvbmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5ZXIgPT09IHRoaXMuX3BsYXllck9uZSkgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpZFBsYXllckxvb3NlKHBsYXllcjogUGxheWVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNHYW1lRmluaXNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllck9uZSkgfHxcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJUd28pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lubmVyKCk6IFBsYXllciB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5pc0dhbWVGaW5pc2hlZCgpKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgY2Fubm90IGdldCB0aGUgd2lubmVyLiBUaGUgZ2FtZSBpcyBub3Qgb3Zlci5cIik7XHJcbiAgICByZXR1cm4gdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpID09PSB0cnVlXHJcbiAgICAgID8gdGhpcy5fcGxheWVyVHdvXHJcbiAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKHBsYXllcjogUGxheWVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnU3RhcnQgLSBhY3Rpb24gbW9kYWwnKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIocGxheWVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQXR0YWNrQnV0dG9ucyhwbGF5ZXI6IFBsYXllcik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ0F0dGFjayBjaG9vc2UgbW9kYWwnKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvbk9uZVwiPiR7cGxheWVyLnBva2Vtb25zWzBdLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5wb2tlbW9uc1swXS5tb3Zlc1sxXS5tb3ZlTmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYmFja0J1dHRvblwiPmJhY2s8L2Rpdj5gO1xyXG4gICAgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIocGxheWVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucyhwbGF5ZXI6IFBsYXllcik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ1N3aXRjaCBjaG9vc2UgbW9kYWwnKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLnBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLnBva2Vtb25zWzJdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIocGxheWVyLCB0aGlzKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IHN0YXJ0QmF0dGxlIH0gZnJvbSBcIi4uL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEdhbWVJZlJlYWR5ID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGlmIChwbGF5ZXJPbmUucG9rZW1vbnMubGVuZ3RoIDwgMyB8fCBwbGF5ZXJUd28ucG9rZW1vbnMubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHN0YXJ0QmF0dGxlKHBsYXllck9uZSwgcGxheWVyVHdvLCBhcHApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2UgfSBmcm9tIFwiLi9yZW5kZXJGaWdodFBhZ2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEJhdHRsZSA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhcHA6IEhUTUxEaXZFbGVtZW50XHJcbikgPT4ge1xyXG4gIGNvbnN0IGdhbWUgPSBuZXcgR2FtZUhhbmRsZXIocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlnaHRQYWdlKGFwcCwgZ2FtZSksIDIwMDApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQb2tlbW9uIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXIgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJcIjtcclxuaW1wb3J0IHsgY3JlYXRlSFBCYXJzIH0gZnJvbSBcIi4vY3JlYXRlSFBCYXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxsc1wiO1xyXG5cclxuY29uc3QgY3JlYXRlUGxheWVyRmlnaHROYW1lcyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVOYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMS1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29OYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMi1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBwbGF5ZXJPbmVOYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyT25lLm5hbWU7XHJcbiAgcGxheWVyVHdvTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllclR3by5uYW1lO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZSA9IChcclxuICBhcHBEaXY6IEhUTUxEaXZFbGVtZW50LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBmaWdodFBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBmaWdodFBhZ2UuaW5uZXJIVE1MO1xyXG4gIGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMoZ2FtZUhhbmRsZXIpO1xyXG4gIC8vIGdlbmVyYXRlIGNob29zZSBhY3Rpb24gYnV0dG9uc1xyXG4gIGdhbWVIYW5kbGVyLmdlbmVyYXRlQWN0aW9uQnV0dG9ucyhnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlSFBCYXJzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IGNyZWF0ZUJhciA9IChwbGF5ZXI6IFBsYXllciwgSFBCYXI6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBtYXhIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1heEhQO1xyXG4gICAgY29uc3QgY3VycmVudEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24uY3VycmVudEhQO1xyXG4gICAgY29uc3QgSFBJblBlcmNlbnQgPSAoY3VycmVudEhQIC8gbWF4SFApICogMTAwO1xyXG4gICAgY29uc29sZS5sb2coSFBJblBlcmNlbnQpO1xyXG4gICAgSFBCYXIuc3R5bGUud2lkdGggPSBgJHtIUEluUGVyY2VudH0lYDtcclxuICAgIGxldCBIUENsYXNzTGlzdCA9IEhQQmFyLmNsYXNzTGlzdDtcclxuICAgIGlmIChIUEluUGVyY2VudCA8IDIwKSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuICBjb25zdCBwbGF5ZXJPbmVIUEJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNocC1iYXItcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29IUEJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNocC1iYXItcGxheWVyMlwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjcmVhdGVCYXIocGxheWVyT25lLCBwbGF5ZXJPbmVIUEJhcik7XHJcbiAgY3JlYXRlQmFyKHBsYXllclR3bywgcGxheWVyVHdvSFBCYXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IGFjdGl2ZVBsYXllckFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjYWN0aXZlLXBsYXllci1pbmZvXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGFjdGl2ZVBsYXllckFyZWEudGV4dENvbnRlbnQgPSBgJHtnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLm5hbWV9IG5vdyBpcyB5b3VyIHR1cm4uIEdldCB0aGUgcmV2ZW5nZSFgO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBva2Vtb24gPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIxXCJcclxuICAgICkgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICAgIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjJcIlxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjFcIlxyXG4gICAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMlwiXHJcbiAgICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICAgIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICAgIHBsYXllcjogUGxheWVyLFxyXG4gICAgICBpbWFnZUFyZWE6IEhUTUxJbWFnZUVsZW1lbnQsXHJcbiAgICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICAgICkgPT4ge1xyXG4gICAgICBjb25zdCBwb2tlbW9uTmFtZSA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLm5hbWU7XHJcbiAgICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICAgIG5hbWVBcmVhLnRleHRDb250ZW50ID0gcG9rZW1vbk5hbWU7XHJcbiAgICB9O1xyXG4gICAgY3JlYXRlUG9rZW1vbihcclxuICAgICAgZ2FtZUhhbmRsZXIucGxheWVyT25lLFxyXG4gICAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICAgICk7XHJcbiAgICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICAgIHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICAgIHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICAgKTtcclxuICB9OyIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gICAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICAgIHBsYXllcjogUGxheWVyLFxyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHM6IEhUTUxJbWFnZUVsZW1lbnRbXVxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAyOyBpID4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoIC0gMTsgaS0tKSB7XHJcbiAgICAgICAgcGxheWVyUG9rZWJhbGxzW2ldLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZFBva2Vtb25cIik7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVQb2tlYmFsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50W107XHJcbiAgICBjb25zdCBwbGF5ZXJUd29Qb2tlYmFsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50W107XHJcbiAgICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIHBsYXllck9uZVBva2ViYWxscyk7XHJcbiAgICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbiAgfTsiLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuaW1wb3J0IHsgY3JlYXRlUGxheWVyTmFtZXMgfSBmcm9tIFwiLi9jcmVhdGVQbGF5ZXJOYW1lc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlbW9ucyB9IGZyb20gXCIuL2NyZWF0ZVBva2Vtb25zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2hvb3NlUGFnZSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgYWN0aXZlUGxheWVyID0gcGxheWVyT25lO1xyXG4gIGNyZWF0ZVBsYXllck5hbWVzKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgY3JlYXRlUG9rZW1vbnMocGxheWVyT25lLCBwbGF5ZXJUd28sIGFjdGl2ZVBsYXllcik7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBsYXllck5hbWVzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBwbGF5ZXJPbmVOYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIxTmFtZVwiKSE7XHJcbiAgcGxheWVyT25lTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyT25lLm5hbWU7XHJcbiAgbGV0IHBsYXllclR3b05hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjJOYW1lXCIpITtcclxuICBwbGF5ZXJUd29OYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJUd28ubmFtZTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCAqIGFzIGRhdGEgZnJvbSBcIi4uLy4uL2Fzc2V0cy9wb2tlX2RhdGEuanNvblwiO1xyXG5pbXBvcnQgeyBzdGFydEdhbWVJZlJlYWR5IH0gZnJvbSBcIi4vc3RhcnRHYW1lSWZSZWFkeVwiO1xyXG5pbXBvcnQgeyBhZGRDaG9zZW5Qb2tlbW9uIH0gZnJvbSBcIi4vYWRkQ2hvc2VuUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlYmFsbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlbW9ucyA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBwb2tlRGF0YSA9IGRhdGEucG9rZW1vbnM7XHJcbiAgY29uc3QgcG9rZW1vbkZhY3RvcnkgPSBuZXcgUG9rZW1vbkZhY3RvcnkocG9rZURhdGEpO1xyXG4gIGNvbnN0IHBva2Vtb25JbWFnZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNwb2tlbW9uTGlzdCBpbWdcIilcclxuICApIGFzIFtIVE1MSW1hZ2VFbGVtZW50XTtcclxuXHJcbiAgcG9rZW1vbkltYWdlcy5mb3JFYWNoKChwb2tlbW9uSW1hZ2UpID0+XHJcbiAgICBwb2tlbW9uSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJjbGlja1wiLFxyXG4gICAgICAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzKSByZXR1cm47XHJcbiAgICAgICAgYWRkQ2hvc2VuUG9rZW1vbihlLCBwb2tlbW9uRmFjdG9yeSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBjcmVhdGVQb2tlYmFsbHMocGxheWVyT25lLCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIC8vIGNoYW5nZSBwbGF5ZXJcclxuICAgICAgICBhY3RpdmVQbGF5ZXIgPSBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZSA/IHBsYXllclR3byA6IHBsYXllck9uZTtcclxuICAgICAgICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgc3RhcnRHYW1lSWZSZWFkeShwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuLi9wb2tlbW9uQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWRkQ2hvc2VuUG9rZW1vbiA9IChcclxuICBldmVudDogRXZlbnQsXHJcbiAgZmFjdG9yeTogUG9rZW1vbkZhY3RvcnksXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgY2xpY2tlZFBva2Vtb24gPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICBjb25zdCBwb2tlbW9uTmFtZSA9IGNsaWNrZWRQb2tlbW9uLmlkO1xyXG4gIGNvbnN0IG5ld1Bva2Vtb25PYmplY3Q6IFBva2Vtb24gPSBmYWN0b3J5LmdldFBva2Vtb25CeU5hbWUocG9rZW1vbk5hbWUpO1xyXG4gIGFjdGl2ZVBsYXllci5hZGRQb2tlbW9uKG5ld1Bva2Vtb25PYmplY3QpO1xyXG4gIGNsaWNrZWRQb2tlbW9uLnN0eWxlLmN1cnNvciA9IFwiZGVmYXVsdFwiO1xyXG4gIGNsaWNrZWRQb2tlbW9uLnN0eWxlLmZpbHRlciA9IFwiZ3JheXNjYWxlKDEwMCUpXCI7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2ViYWxscyA9IChwbGF5ZXJPbmU6IFBsYXllciwgYWN0aXZlUGxheWVyOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJQb2tlYmFsbHM6IEhUTUxJbWFnZUVsZW1lbnRbXSA9XHJcbiAgICBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZVxyXG4gICAgICA/IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMSBpbWdcIikpXHJcbiAgICAgIDogQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIyIGltZ1wiKSk7XHJcbiAgY29uc3QgcGxheWVyTGFzdFBva2Vtb25OYW1lOiBzdHJpbmcgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnNbXHJcbiAgICBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMVxyXG4gIF0ubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IG51bWJlck9mTGFzdFBva2Vtb246IG51bWJlciA9IGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxO1xyXG4gIHBsYXllclBva2ViYWxsc1tudW1iZXJPZkxhc3RQb2tlbW9uXS5zZXRBdHRyaWJ1dGUoXHJcbiAgICBcInNyY1wiLFxyXG4gICAgYC4vYXNzZXRzLyR7cGxheWVyTGFzdFBva2Vtb25OYW1lfS5wbmdgXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBsYXllciB7XHJcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcbiAgcHJpdmF0ZSBfaW5kZXhPZkFjdGl2ZVBva2Vtb246IG51bWJlcjtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHBva2Vtb25zOiBQb2tlbW9uW10pIHtcclxuICAgIGlmIChuYW1lLmxlbmd0aCA+IDgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIGxvbmcgbmFtZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChwb2tlbW9ucy5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIG51bWJlciBvZiBwb2tlbW9uc1wiKTtcclxuICAgIH1cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5fcG9rZW1vbnMgPSBwb2tlbW9ucztcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gMDtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnM7XHJcbiAgfVxyXG5cclxuICBzZXQgaW5kZXhPZkFjdGl2ZVBva2Vtb24obnVtT2ZBY3RpdmVQb2tlbW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gbnVtT2ZBY3RpdmVQb2tlbW9uO1xyXG4gIH1cclxuICBnZXQgZ2V0QWN0aXZlUG9rZW1vbigpOiBQb2tlbW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1t0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbl07XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgY29uc3QgYWxpdmVQb2tlbW9uc1RhYjogUG9rZW1vbltdID0gdGhpcy5wb2tlbW9ucy5maWx0ZXIoKHBva2Vtb24pID0+XHJcbiAgICAgIHBva2Vtb24uaXNBbGl2ZSgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsaXZlUG9rZW1vbnNUYWI7XHJcbiAgfVxyXG5cclxuICBhZGRQb2tlbW9uKHBva2Vtb246IFBva2Vtb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbik7XHJcbiAgfVxyXG59XHJcbiIsImV4cG9ydCBjb25zdCBhY3RpdmF0ZVN0YXJ0ID0gKG5hbWUxSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIG5hbWUySW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIHN0YXJ0QnV0dG9uOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKG5hbWUxSW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMklucHV0LnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZGlzYWJsZWQnXHJcbiAgICB9XHJcbn0iLCJpbXBvcnQgeyBzaG93TW9kYWwsIGhpZGVNb2RhbCB9IGZyb20gXCIuL21vZGFsUG9wVXBGdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQ2hvb3NlUGFnZSB9IGZyb20gXCIuL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2VcIlxyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBhY3RpdmF0ZVN0YXJ0IH0gZnJvbSAnLi9hY3RpdmF0ZVN0YXJ0JztcclxuXHJcbmNvbnN0IHJlbmRlclN0YXJ0aW5nUGFnZSA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3Qgc3RhcnRpbmdQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0aW5nLXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gc3RhcnRpbmdQYWdlLmlubmVySFRNTDtcclxufTtcclxuY29uc3QgcmVuZGVySG93VG9QbGF5TW9kYWwgPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGluZm9Nb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNpbmZvLW1vZGFsLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCArPSBpbmZvTW9kYWwuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCBjcmVhdGVIb3dUb1BsYXlCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgaG93VG9QbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hvdy10by1wbGF5LWJ1dHRvblwiXHJcbiAgKSBhcyBIVE1MVUxpc3RFbGVtZW50O1xyXG4gIGNvbnN0IGluZm9Nb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNpbmZvLW1vZGFsLXNjcmVlblwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBob3dUb1BsYXlCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIHNob3dNb2RhbChpbmZvTW9kYWwsIFwiZmxleFwiKTtcclxuICB9KTtcclxuICBoaWRlTW9kYWwoaW5mb01vZGFsKTtcclxufTtcclxuXHJcbmNvbnN0IGFjdGl2YXRlU3RhcnRCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyMU5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMi1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBjb25zdCBzdGFydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjc3RhcnQtZ2FtZS1idXR0b25cIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgcGxheWVyMU5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKCkgPT4ge1xyXG4gICAgICBhY3RpdmF0ZVN0YXJ0KHBsYXllcjFOYW1lSW5wdXQsIHBsYXllcjJOYW1lSW5wdXQsIHN0YXJ0QnV0dG9uKVxyXG4gIH0pXHJcbiAgcGxheWVyMk5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKCkgPT4ge1xyXG4gICAgICBhY3RpdmF0ZVN0YXJ0KHBsYXllcjFOYW1lSW5wdXQsIHBsYXllcjJOYW1lSW5wdXQsIHN0YXJ0QnV0dG9uKVxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgcmVuZGVyQ2hvb3NlUG9rZW1vblNjcmVlbiA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgcGxheUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzdGFydC1nYW1lLWJ1dHRvblwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgY29uc3QgcGxheWVyMU5hbWVJbnB1dCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMS1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBjb25zdCBwbGF5ZXIyTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IGNob29zZVBva2Vtb25TY3JlZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNjaG9vc2UtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgICBhcHBEaXYuaW5uZXJIVE1MID0gY2hvb3NlUG9rZW1vblNjcmVlbi5pbm5lckhUTUw7XHJcbiAgICBjcmVhdGVDaG9vc2VQYWdlKG5ldyBQbGF5ZXIocGxheWVyMU5hbWVJbnB1dCwgW10pLCBuZXcgUGxheWVyKHBsYXllcjJOYW1lSW5wdXQsIFtdKSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IHJlbmRlckFwcCA9ICgpID0+IHtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICByZW5kZXJTdGFydGluZ1BhZ2UoYXBwKTtcclxuICByZW5kZXJIb3dUb1BsYXlNb2RhbChhcHApO1xyXG4gIGFjdGl2YXRlU3RhcnRCdXR0b24oKTtcclxuICBjcmVhdGVIb3dUb1BsYXlCdXR0b24oKTtcclxuICByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuKGFwcCk7XHJcbn07XHJcblxyXG5zZXRUaW1lb3V0KHJlbmRlckFwcCwgMjAwMCk7XHJcblxyXG4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/src/fightPage/buttonsEventListeners.ts b/src/fightPage/buttonsEventListeners.ts index 8fcd8d7..caf22c7 100644 --- a/src/fightPage/buttonsEventListeners.ts +++ b/src/fightPage/buttonsEventListeners.ts @@ -10,11 +10,19 @@ export const actionsButtonEventListener = (player: Player, gameHandler: GameHand const mangoButton = document.querySelector("#mangoButton")! as HTMLDivElement; const mango = document.querySelector("#mango")! as HTMLDivElement; + animationButtonsEntry(battleButtons); + attackButton.addEventListener('click', () => { - gameHandler.generateAttackButtons(player); + animationButtonsExit(battleButtons); + setTimeout( ()=> { + gameHandler.generateAttackButtons(player); + }, 1000); }); switchButton.addEventListener('click', () => { - gameHandler.generateSwitchButtons(player); + animationButtonsExit(battleButtons); + setTimeout( ()=> { + gameHandler.generateSwitchButtons(player); + }, 1000); }); if(true) { //gameHandler.canUseMango() @@ -37,6 +45,8 @@ export const attacksButtonEventListener = (player: Player, gameHandler: GameHand const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; const backButton = document.querySelector("#backButton")! as HTMLDivElement; + animationButtonsEntry(battleButtons); + magicFunction(attackButtonOne, battleButtons, player, gameHandler, attack); magicFunction(attackButtonTwo, battleButtons, player, gameHandler, attack); magicFunction(backButton, battleButtons, player, gameHandler); @@ -49,6 +59,8 @@ export const attacksButtonEventListener = (player: Player, gameHandler: GameHand const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; const backButton = document.querySelector("#backButton")! as HTMLDivElement; + animationButtonsEntry(battleButtons) + magicFunction(switchButtonOne, battleButtons, player, gameHandler, switchPoke); magicFunction(switchButtonTwo, battleButtons, player, gameHandler, switchPoke); magicFunction(backButton, battleButtons, player, gameHandler); @@ -61,14 +73,25 @@ const magicFunction = (button: HTMLDivElement, buttons: HTMLCollectionOf { gameHandler.generateActionButtons(player); - }, 500); + }, 1000); //also change player function - for(let i = 0; i < buttons.length; i++) { - buttons[i].style.backgroundColor = 'green'; - } + animationButtonsExit(buttons); } ); } +const animationButtonsEntry = (buttons: HTMLCollectionOf) => { + for(let i = 0; i < buttons.length; i++) { + buttons[i].style.animation = "scale-in-hor-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both"; + buttons[i].style.animationDelay = `${i * 0.15}s` + } +} + +const animationButtonsExit = (buttons: HTMLCollectionOf) => { + for(let i = 0; i < buttons.length; i++) { + buttons[i].style.animation = "scale-out-horizontal 0.5s cubic-bezier(0.550, 0.085, 0.680, 0.530) both"; + buttons[i].style.animationDelay = `${i * 0.15}s` + } +} // funcions just for check if its works should be replaced with gameHandler > use attack or switch Pokemon functions const attack = () => { diff --git a/styles/SASS/_animations.scss b/styles/SASS/_animations.scss index f5c60ee..e6f17f1 100644 --- a/styles/SASS/_animations.scss +++ b/styles/SASS/_animations.scss @@ -1 +1,56 @@ -// Placeholder for animations (keyframes) \ No newline at end of file +// Placeholder for animations (keyframes) + +//Buttons EXIT + +@-webkit-keyframes scale-out-horizontal { + 0% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } +} +@keyframes scale-out-horizontal { + 0% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } +} + + +// ENTRY + +@-webkit-keyframes scale-in-hor-center { + 0% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } +} +@keyframes scale-in-hor-center { + 0% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } +} diff --git a/styles/app.css b/styles/app.css index da90d50..d383f47 100644 --- a/styles/app.css +++ b/styles/app.css @@ -610,6 +610,58 @@ html { width: 80%; } +@-webkit-keyframes scale-out-horizontal { + 0% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } +} + +@keyframes scale-out-horizontal { + 0% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } +} + +@-webkit-keyframes scale-in-hor-center { + 0% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } +} + +@keyframes scale-in-hor-center { + 0% { + -webkit-transform: scaleX(0); + transform: scaleX(0); + opacity: 1; + } + 100% { + -webkit-transform: scaleX(1); + transform: scaleX(1); + opacity: 1; + } +} + @media screen and (min-width: 768px) { #starting-page #header-with-enter-name-manu .headerWrapper { max-width: 700px; diff --git a/styles/app.css.map b/styles/app.css.map index 2a5a043..9bc4618 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From c52b5c9a786a3745c9db480d7e0287fe178a6685 Mon Sep 17 00:00:00 2001 From: AgataLudwiczynska <74932979+AgataLudwiczynska@users.noreply.github.com> Date: Thu, 11 Feb 2021 11:19:42 +0100 Subject: [PATCH 31/76] Style button --- styles/SASS/_start-view.scss | 1 - styles/app.css | 303 +++++++++++++++++++++++++++-------- styles/app.css.map | 2 +- 3 files changed, 233 insertions(+), 73 deletions(-) diff --git a/styles/SASS/_start-view.scss b/styles/SASS/_start-view.scss index 86ef40c..0616bd3 100644 --- a/styles/SASS/_start-view.scss +++ b/styles/SASS/_start-view.scss @@ -97,7 +97,6 @@ text-align: center; font-family: 'Pokemon Solid'; font-size: 1em; - padding-top: 15%; &:hover { @include dropshadow diff --git a/styles/app.css b/styles/app.css index d325055..3eef627 100644 --- a/styles/app.css +++ b/styles/app.css @@ -5,12 +5,14 @@ } html { - box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; font-size: 10px; } *, *:before, *:after { - box-sizing: inherit; + -webkit-box-sizing: inherit; + box-sizing: inherit; } @font-face { @@ -24,10 +26,20 @@ html { margin: auto; padding: 10vw; background-color: #e8f1f2ff; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } @@ -35,28 +47,42 @@ html { max-width: 400px; text-align: center; margin-bottom: 1em; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #loading-view img { + width: -webkit-fit-content; + width: -moz-fit-content; width: fit-content; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #loading-view #zzz { position: relative; left: 50px; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); } #starting-page { width: 100%; height: 100vh; margin: auto; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #header-with-enter-name-manu { @@ -65,17 +91,30 @@ html { padding-right: 10vw; width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: center; - align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #header-with-enter-name-manu .headerWrapper { max-width: 500px; height: 300px; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: space-evenly; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; padding-bottom: 100px; color: #e8f1f2ff; } @@ -109,8 +148,11 @@ html { } #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area { + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-around; + -ms-flex-pack: distribute; + justify-content: space-around; } #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput { @@ -129,7 +171,8 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; background-color: #020402ff; width: 160px; @@ -140,7 +183,8 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; background-color: #e8f1f2ff; width: 130px; @@ -151,19 +195,21 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; width: 110px; height: 110px; text-align: center; font-family: 'Pokemon Solid'; font-size: 1em; - padding-top: 15%; } #starting-page #start-game-border #start-game-bg1 #start-game-bg2 #start-game-button:hover { - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); } #starting-page #start-game-border #start-game-bg1 #start-game-bg2 .button-enabled { @@ -182,18 +228,33 @@ html { padding-right: 10vw; width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #info-menu #select-info-menu { width: 240px; height: 30vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: space-around; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -ms-flex-pack: distribute; + justify-content: space-around; margin-top: 80px; } @@ -209,17 +270,26 @@ html { } #starting-page #info-menu #select-info-menu .start-page-button:hover { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #9b1d20ff; } .popupScreen { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #e8f1f2ff; display: none; - flex-flow: column nowrap; - justify-content: space-between; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; border-radius: 25px; width: 80vw; height: 80vh; @@ -237,10 +307,14 @@ html { } .popupScreen .exitButton { - align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; line-height: 1; margin: 2vh; - user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; cursor: pointer; } @@ -255,10 +329,18 @@ html { #choose-page { width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - align-items: center; - justify-content: space-around; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: distribute; + justify-content: space-around; line-height: 1.2; padding: 2vh; } @@ -279,9 +361,13 @@ html { } #choose-page .choosePagePlayers { + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: center; } @@ -295,8 +381,10 @@ html { } #choose-page #pokemonList { + display: -ms-grid; display: grid; - grid-template-columns: repeat(4, 1fr); + -ms-grid-columns: (1fr)[4]; + grid-template-columns: repeat(4, 1fr); justify-items: center; } @@ -309,22 +397,39 @@ html { #fight-page { width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .playersContainer { width: 100%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-evenly; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; } #fight-page .playersContainer .playerDetails { + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: center; } @@ -337,12 +442,14 @@ html { #fight-page .playersContainer .playerDetails .pokeballWithPokemon { width: 20px; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); margin: 0 2px; } #fight-page .playersContainer .playerDetails .disabledPokemon { - filter: grayscale(100%); + -webkit-filter: grayscale(100%); + filter: grayscale(100%); } #fight-page .playersContainer .activePlayer { @@ -363,24 +470,41 @@ html { #fight-page .battleArea .pokemonDetails { width: 100%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-between; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } #fight-page .battleArea .pokemonDetails img { + width: -webkit-fit-content; + width: -moz-fit-content; width: fit-content; } #fight-page .battleArea .pokemonDetails #pokemon-player2 { - order: 2; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } #fight-page .battleArea .pokemonDetails .pokemonInfo { width: 70%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .battleArea .pokemonDetails .pokemonInfo h2 { @@ -395,9 +519,13 @@ html { #fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar { width: 70%; + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: first; } @@ -406,8 +534,10 @@ html { width: 100%; height: 1.8rem; background-color: #0C9300; - box-shadow: 1px 1px 3px #020402ff; - transform-origin: left center; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; + -webkit-transform-origin: left center; + transform-origin: left center; border-radius: 10px; margin-top: 1rem; } @@ -420,16 +550,24 @@ html { #fight-page .gameActions { width: 90%; max-height: 50%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; margin-top: 25px; } #fight-page .gameActions .gameLogs { height: 10vh; width: 100%; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; border-radius: 5px; padding: 10px; font-size: 1.6rem; @@ -447,7 +585,8 @@ html { } #fight-page .gameActions .gameLogs::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 5px; background-color: transparent; } @@ -459,7 +598,8 @@ html { #fight-page .gameActions .gameLogs::-webkit-scrollbar-thumb { border-radius: 5px; - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: #020402ff; } @@ -523,14 +663,16 @@ html { font-size: 24px; } #choose-page .choosePagePlayers { - grid-template-columns: repeat(6, 1fr); + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); } #choose-page .choosePagePlayers img { max-width: 8vh; margin: 2vh; } #choose-page #pokemonList { - grid-template-columns: repeat(6, 1fr); + -ms-grid-columns: (1fr)[6]; + grid-template-columns: repeat(6, 1fr); } #choose-page #pokemonList img { max-height: 10vh; @@ -546,24 +688,40 @@ html { font-size: 2.4rem; } #fight-page .battleArea { + display: -webkit-box; + display: -ms-flexbox; display: flex; } #fight-page .battleArea .pokemonDetails { - flex-flow: column; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .battleArea .pokemonDetails #pokemon-player2 { - order: 0; + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; } #fight-page .gameActions { - flex-flow: row; - justify-content: space-evenly; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row; + flex-flow: row; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; } #fight-page .gameActions .gameLogs { height: auto; max-height: 30vh; width: 45%; - order: 2; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } #fight-page .gameActions .buttonsContainer { width: 45%; @@ -590,8 +748,10 @@ footer { position: fixed; top: 50%; margin-left: .5em; - transform: rotate(-90deg) translate(-50%); - transform-origin: top left; + -webkit-transform: rotate(-90deg) translate(-50%); + transform: rotate(-90deg) translate(-50%); + -webkit-transform-origin: top left; + transform-origin: top left; white-space: nowrap; } @@ -603,7 +763,8 @@ footer { margin: 0.5em; border-radius: 1em; font-size: 0.9em; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; text-transform: uppercase; cursor: pointer; } diff --git a/styles/app.css.map b/styles/app.css.map index 904a8e6..caedb5b 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From b3e7d74401600fbd9f715c3b3264a53aad216912 Mon Sep 17 00:00:00 2001 From: AgataLudwiczynska <74932979+AgataLudwiczynska@users.noreply.github.com> Date: Thu, 11 Feb 2021 16:54:49 +0100 Subject: [PATCH 32/76] Blocking button when the name is too long --- index.html | 4 ++-- src/activateStart.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index b829fc7..e0827b4 100644 --- a/index.html +++ b/index.html @@ -32,8 +32,8 @@

Pokemon Fight

Enter yours names to start the Fight!

- - + +
diff --git a/src/activateStart.ts b/src/activateStart.ts index 987f695..5b23e54 100644 --- a/src/activateStart.ts +++ b/src/activateStart.ts @@ -1,5 +1,5 @@ export const activateStart = (name1Input: HTMLInputElement, name2Input: HTMLInputElement, startButton: HTMLButtonElement) => { - if (name1Input.value.length > 0 && name2Input.value.length > 0) { + if (name1Input.value.length > 0 && name2Input.value.length > 0 && name1Input.value.length <= 8 && name2Input.value.length <= 8) { startButton.className = 'button-enabled' startButton.disabled = false; } else { From 15911f8fed35582836e098fb2e2f162a739ceb14 Mon Sep 17 00:00:00 2001 From: AgataLudwiczynska <74932979+AgataLudwiczynska@users.noreply.github.com> Date: Thu, 11 Feb 2021 17:28:27 +0100 Subject: [PATCH 33/76] MNG-98 Add useMango to gameHandler class (#22) * Add useMango to gameHandler class * corrections type of mango value * Corrections * useMango i PlayerClass Co-authored-by: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> --- src/playerClass.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/playerClass.ts b/src/playerClass.ts index 4229a51..252b01d 100644 --- a/src/playerClass.ts +++ b/src/playerClass.ts @@ -4,6 +4,7 @@ export class Player { private _name: string; private _pokemons: Pokemon[]; private _indexOfActivePokemon: number; + private _hasMango: Boolean; constructor(name: string, pokemons: Pokemon[]) { if (name.length > 8) { throw new Error("Too long name"); @@ -14,6 +15,7 @@ export class Player { this._name = name; this._pokemons = pokemons; this._indexOfActivePokemon = 0; + this._hasMango = true; } get name(): string { @@ -37,6 +39,17 @@ export class Player { return alivePokemonsTab; } + useMango(): void | Error { + if (!this._hasMango) + throw new Error("You cannot use mango. You use all mangos"); + this._hasMango = false; + this.getActivePokemon.heal(); + } + + get hasMango() { + return this._hasMango; + } + addPokemon(pokemon: Pokemon): void { this._pokemons.push(pokemon); } From 3a9d23b1c7546444695bfd2ede8ce5dbe667f753 Mon Sep 17 00:00:00 2001 From: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> Date: Thu, 11 Feb 2021 18:51:29 +0100 Subject: [PATCH 34/76] MNG-97 MNG-101 change player&change pokemon (#24) * Add switch pokemon and switch Player game handler methods * Implement mango, change the structure (build up magic function) * remove an unnecessary comment --- dist/index.js | 4 +- src/fightPage/buttonsEventListeners.ts | 175 +++++++++++++--------- src/fightPage/createActivePlayer.ts | 9 ++ src/fightPage/createActivePokemon.ts | 64 ++++---- src/fightPage/createFightPagePokeballs.ts | 34 ++--- src/fightPage/renderFightPage.ts | 2 +- src/gameHandlerClass.ts | 50 +++++-- src/playerClass.ts | 6 + styles/SASS/_fight-view.scss | 34 ++--- styles/app.css | 10 +- styles/app.css.map | 2 +- 11 files changed, 231 insertions(+), 159 deletions(-) diff --git a/dist/index.js b/dist/index.js index 68d6b3a..3ffcd37 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;n\n
'+e.pokemons[0].moves[1].moveName+'
\n
back
',function(e,t){var n=document.querySelector("#attackButtonOne"),o=document.querySelector("#attackButtonTwo"),c=document.getElementsByClassName("battleButton"),u=document.querySelector("#backButton");a(c),r(n,c,e,t,i),r(o,c,e,t,i),r(u,c,e,t)}(e,this)},e.prototype.generateSwitchButtons=function(e){console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+e.pokemons[1].name+'
\n
'+e.pokemons[2].name+'
\n
back
',function(e,t){var n=document.querySelector("#switchButtonOne"),o=document.querySelector("#switchButtonTwo"),c=document.getElementsByClassName("battleButton"),i=document.querySelector("#backButton");a(c),r(n,c,e,t,u),r(o,c,e,t,u),r(i,c,e,t)}(e,this)},e}(),p=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new s(e,t);setTimeout((function(){return function(e,t){var n,o,r,a,c,i=document.querySelector("#fight-page-template");e.innerHTML=i.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),function(e){document.querySelector("#active-player-info").textContent=e.currentPlayer.name+" now is your turn. Get the revenge!"}(t),function(e){var t=document.querySelector("#pokemon-image-player1"),n=document.querySelector("#pokemon-image-player2"),o=document.querySelector("#pokemon-name-player1"),r=document.querySelector("#pokemon-name-player2"),a=function(e,t,n){var o=e.getActivePokemon.name;t.setAttribute("src","./assets/"+o.toLowerCase()+".png"),n.textContent=o};a(e.playerOne,t,o),a(e.playerTwo,n,r)}(t),n=t.playerOne,o=t.playerTwo,r=function(e,t){var n=e.getActivePokemon.maxHP,o=e.getActivePokemon.currentHP/n*100;console.log(o),t.style.width=o+"%";var r=t.classList;o<20?(r.remove("hpBarHighLevel"),r.add("hpBarLowLevel")):(r.remove("hpBarLowLevel"),r.add("hpBarHighLevel"))},a=document.querySelector("#hp-bar-player1"),c=document.querySelector("#hp-bar-player2"),r(n,a),r(o,c),function(e){var t=function(e,t){for(var n=2;n>e.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)}(t),t.generateActionButtons(t.currentPlayer)}(n,o)}),2e3)}(e,t,document.querySelector("#app"))},m=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),p(t,r))}),{once:!0})}))}(t,r,a)},l=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},e}(),y=function(e,t,n){e.value.length>0&&t.value.length>0?n.className="button-enabled":n.className="button-disabled"};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){y(n,o,r)})),o.addEventListener("keyup",(function(){y(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,m(new l(t,[]),new l(n,[]))}))}(s)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2J1dHRvbnNFdmVudExpc3RlbmVycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2dhbWVIYW5kbGVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2Uvc3RhcnRHYW1lSWZSZWFkeS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9yZW5kZXJGaWdodFBhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlSFBCYXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBsYXllci50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVBY3RpdmVQb2tlbW9uLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsIm1hZ2ljRnVuY3Rpb24iLCJidXR0b24iLCJidXR0b25zIiwicGxheWVyIiwiZ2FtZUhhbmRsZXIiLCJmdW5jdGlvblRvQ2FsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwiaW5uZXJUZXh0Iiwic2V0VGltZW91dCIsImdlbmVyYXRlQWN0aW9uQnV0dG9ucyIsImFuaW1hdGlvbkJ1dHRvbnNFeGl0IiwiYW5pbWF0aW9uQnV0dG9uc0VudHJ5IiwiaSIsInN0eWxlIiwiYW5pbWF0aW9uIiwiYW5pbWF0aW9uRGVsYXkiLCJzd2l0Y2hQb2tlIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiYWxpdmVQb2tlbW9ucyIsImlzR2FtZUZpbmlzaGVkIiwiZ2V0V2lubmVyIiwiaW5uZXJIVE1MIiwiYmF0dGxlQnV0dG9ucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJtYW5nb0J1dHRvbiIsIm1hbmdvIiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiY2xhc3NMaXN0IiwiYWRkIiwiYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIiLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwiYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIiLCJzd2l0Y2hCdXR0b25PbmUiLCJzd2l0Y2hCdXR0b25Ud28iLCJzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyIiwic3RhcnRHYW1lSWZSZWFkeSIsInBsYXllck9uZSIsInBsYXllclR3byIsImFwcCIsImdhbWUiLCJHYW1lSGFuZGxlciIsImFwcERpdiIsImNyZWF0ZUJhciIsInBsYXllck9uZUhQQmFyIiwicGxheWVyVHdvSFBCYXIiLCJmaWdodFBhZ2UiLCJwbGF5ZXJPbmVOYW1lIiwicGxheWVyVHdvTmFtZSIsImNyZWF0ZVBsYXllckZpZ2h0TmFtZXMiLCJjdXJyZW50UGxheWVyIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEiLCJjcmVhdGVQb2tlbW9uIiwiaW1hZ2VBcmVhIiwibmFtZUFyZWEiLCJwb2tlbW9uTmFtZSIsImdldEFjdGl2ZVBva2Vtb24iLCJzZXRBdHRyaWJ1dGUiLCJjcmVhdGVBY3RpdmVQb2tlbW9uIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJyZW1vdmUiLCJjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyIsInBsYXllclBva2ViYWxscyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMiLCJjcmVhdGVGaWdodFBhZ2UiLCJzdGFydEJhdHRsZSIsImNyZWF0ZUNob29zZVBhZ2UiLCJjcmVhdGVQbGF5ZXJOYW1lcyIsInBva2Vtb25GYWN0b3J5IiwiUG9rZW1vbkZhY3RvcnkiLCJmb3JFYWNoIiwicG9rZW1vbkltYWdlIiwiZSIsImV2ZW50IiwiZmFjdG9yeSIsImNsaWNrZWRQb2tlbW9uIiwidGFyZ2V0IiwiaWQiLCJuZXdQb2tlbW9uT2JqZWN0IiwiYWRkUG9rZW1vbiIsImN1cnNvciIsImZpbHRlciIsImFkZENob3NlblBva2Vtb24iLCJwbGF5ZXJMYXN0UG9rZW1vbk5hbWUiLCJjcmVhdGVQb2tlYmFsbHMiLCJvbmNlIiwiY3JlYXRlUG9rZW1vbnMiLCJfaW5kZXhPZkFjdGl2ZVBva2Vtb24iLCJudW1PZkFjdGl2ZVBva2Vtb24iLCJhY3RpdmF0ZVN0YXJ0IiwibmFtZTFJbnB1dCIsIm5hbWUySW5wdXQiLCJzdGFydEJ1dHRvbiIsInZhbHVlIiwiY2xhc3NOYW1lIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEsZ0NBR2QsWUFBQU0sV0FBQSxTQUFXQyxHQUNULElBQU1DLEVBQVFYLEtBQUtJLFdBQWFNLEVBQzVCQyxFQUFRLElBQ1ZYLEtBQUtJLFdBQWEsR0FFcEJKLEtBQUtJLFdBQWFPLEdBR3BCLFlBQUFDLEtBQUEsV0FDRVosS0FBS0ksV0FBYUosS0FBS0csUUFHekIsc0JBQUksMkJBQVksQyxJQUFoQixXQUNFLE9BQU9ILEtBQUtLLGUsZ0NBR2Qsc0JBQUksNEJBQWEsQyxJQUFqQixXQUNFLE9BQU9MLEtBQUtNLGdCLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9OLEtBQUtPLFEsZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT1AsS0FBS1EsUSxnQ0FHZCxZQUFBSyxRQUFBLFdBQ0UsT0FBT2IsS0FBS0ksV0FBYSxHQUU3QixFQXhFQSxHQ1hBLGFBR0ksV0FBWVUsR0FLUmQsS0FBS2UsVUFBWSxHQUVqQixJQUFvQixVQUFBRCxFQUFBLGVBQVUsQ0FBekIsSUFBSUUsRUFBTyxLQUVOQyxFQUFVLGFBQWVELEVBQVF2QixLQUFPLE9BRXhDeUIsRUFBWUYsRUFBUWpCLE1BQU1vQixRQUFRLFNBQUNDLEVBQUtDLEdBRTFDLE9BREFELEVBQUlFLEtBQUssQ0FBQ0MsU0FBVUYsRUFBSzVCLEtBQU0rQixTQUFVSCxFQUFLSSxPQUN2Q0wsSUFDSixJQUVETSxFQUEyQlYsRUFBUWxCLE1BQU02QixLQUFJLFNBQUFDLEdBQUssT0FBQUEsS0FFbERDLEVBQWdCLElBQUlDLEVBQVE5QixLQUFLK0IsWUFBWWYsRUFBUXZCLE1BQU93QixFQUM5REQsRUFBUWdCLE1BQU1DLEdBQUlqQixFQUFRZ0IsTUFBTUUsT0FBUWxCLEVBQVFnQixNQUFNRyxRQUN0RFQsRUFBV1IsR0FFZmxCLEtBQUtlLFVBQVVPLEtBQUtPLElBbUJoQyxPQWZJLHNCQUFJLHVCQUFRLEMsSUFBWixXQUNJLE9BQU83QixLQUFLZSxXLGdDQUdoQixZQUFBcUIsaUJBQUEsU0FBaUIzQyxHQUNiLElBQU11QixFQUFVaEIsS0FBS2UsVUFBVXNCLE1BQU0sU0FBQXJCLEdBQVcsT0FBQUEsRUFBUXZCLEtBQUs2QyxnQkFBa0I3QyxFQUFLNkMsaUJBQ3BGLFFBQWdCQyxJQUFadkIsRUFDQSxNQUFNLElBQUl3QixNQUFNLFdBQVcvQyxFQUFJLHdDQUVuQyxPQUFPdUIsR0FHWCxZQUFBZSxZQUFBLFNBQVlVLEdBQ1IsT0FBT0EsRUFBSUMsT0FBTyxHQUFHQyxjQUFnQkYsRUFBSUcsTUFBTSxJQUV2RCxFQTVDQSxHLG1rSUNBTyxJQWlFREMsRUFBZ0IsU0FBQ0MsRUFBd0JDLEVBQXdDQyxFQUFnQkMsRUFBMEJDLEdBQy9ISixFQUFPSyxpQkFBaUIsU0FBUyxXQUMvQkMsUUFBUUMsSUFBT1AsRUFBT1EsVUFBUyxVQUMzQkosR0FBa0JBLElBQ3RCSyxZQUFZLFdBQ1ZOLEVBQVlPLHNCQUFzQlIsS0FDakMsS0FFSFMsRUFBcUJWLE9BSW5CVyxFQUF3QixTQUFDWCxHQUM3QixJQUFJLElBQUlZLEVBQUksRUFBR0EsRUFBSVosRUFBUXhELE9BQVFvRSxJQUNqQ1osRUFBUVksR0FBR0MsTUFBTUMsVUFBWSx5RUFDN0JkLEVBQVFZLEdBQUdDLE1BQU1FLGVBQXdCLElBQUpILEVBQVEsS0FJM0NGLEVBQXVCLFNBQUNWLEdBQzVCLElBQUksSUFBSVksRUFBSSxFQUFHQSxFQUFJWixFQUFReEQsT0FBUW9FLElBQ2pDWixFQUFRWSxHQUFHQyxNQUFNQyxVQUFZLDBFQUM3QmQsRUFBUVksR0FBR0MsTUFBTUUsZUFBd0IsSUFBSkgsRUFBUSxLQUszQ3pCLEVBQVMsV0FDYmtCLFFBQVFDLElBQUksa0JBRVJVLEVBQWEsV0FDakJYLFFBQVFDLElBQUksVUNqR2QsYUFDRSxXQUNtQlcsRUFDQUMsR0FEQSxLQUFBRCxhQUNBLEtBQUFDLGFBR1gsS0FBQUMsZUFBeUJsRSxLQUFLZ0UsV0FtRXhDLE9BakVFLHNCQUFJLHdCQUFTLEMsSUFBYixXQUNFLE9BQU9oRSxLQUFLZ0UsWSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPaEUsS0FBS2lFLFksZ0NBR2Qsc0JBQUksNEJBQWEsQyxJQUFqQixXQUNFLE9BQU9qRSxLQUFLa0UsZ0IsZ0NBR2Qsc0JBQUksNkJBQWMsQyxJQUFsQixXQUNFLE9BQUlsRSxLQUFLa0UsaUJBQW1CbEUsS0FBS2dFLFdBQW1CaEUsS0FBS2lFLFdBQ2xEakUsS0FBS2dFLFksZ0NBR04sWUFBQUcsZUFBUixTQUF1Qm5CLEdBQ3JCLE9BQXVDLElBQWhDQSxFQUFPb0IsY0FBYzdFLFFBRzlCLFlBQUE4RSxlQUFBLFdBQ0UsT0FDRXJFLEtBQUttRSxlQUFlbkUsS0FBS2dFLGFBQ3pCaEUsS0FBS21FLGVBQWVuRSxLQUFLaUUsYUFJN0IsWUFBQUssVUFBQSxXQUNFLElBQUt0RSxLQUFLcUUsaUJBQ1IsTUFBTSxJQUFJN0IsTUFBTSxvREFDbEIsT0FBZ0QsSUFBekN4QyxLQUFLbUUsZUFBZW5FLEtBQUtnRSxZQUM1QmhFLEtBQUtpRSxXQUNMakUsS0FBS2dFLFlBR1gsWUFBQVIsc0JBQUEsU0FBc0JSLEdBQ3BCSSxRQUFRQyxJQUFJLHdCQUNZakUsU0FBU0MsY0FBYyxpQkFDL0JrRixVQUFZLGdTRDlDVSxTQUFDdkIsRUFBZ0JDLEdBRXpELElBQU11QixFQUFnQnBGLFNBQVNxRix1QkFBdUIsZ0JBQ2hEQyxFQUFldEYsU0FBU0MsY0FBYyxpQkFDdENzRixFQUFldkYsU0FBU0MsY0FBYyxpQkFDdEN1RixFQUFjeEYsU0FBU0MsY0FBYyxnQkFDckN3RixFQUFRekYsU0FBU0MsY0FBYyxVQUVyQ3FFLEVBQXNCYyxHQUV0QkUsRUFBYXZCLGlCQUFpQixTQUFTLFdBQ3JDTSxFQUFxQmUsR0FDckJqQixZQUFZLFdBQ1ZOLEVBQVk2QixzQkFBc0I5QixLQUNqQyxRQUVMMkIsRUFBYXhCLGlCQUFpQixTQUFTLFdBQ3JDTSxFQUFxQmUsR0FDckJqQixZQUFZLFdBQ1ZOLEVBQVk4QixzQkFBc0IvQixLQUNqQyxRQUlINEIsRUFBWXpCLGlCQUFpQixTQUFTLFdBRXBDQyxRQUFRQyxJQUFJLGlDQUNad0IsRUFBTU4sVUFBWSxJQUNsQkssRUFBWUksVUFBVUMsSUFBSSxxQkNzQjVCQyxDQUEyQmxDLEVBQVFoRCxPQUdyQyxZQUFBOEUsc0JBQUEsU0FBc0I5QixHQUNwQkksUUFBUUMsSUFBSSx1QkFDWWpFLFNBQVNDLGNBQWMsaUJBQy9Ca0YsVUFBWSwrRUFDNEN2QixFQUFPMUQsU0FBUyxHQUFHUyxNQUFNLEdBQUd3QixTQUFRLHFGQUNwQ3lCLEVBQU8xRCxTQUFTLEdBQUdTLE1BQU0sR0FBR3dCLFNBQVEsMEZEdEJ0RSxTQUFDeUIsRUFBZ0JDLEdBRXpELElBQU1rQyxFQUFrQi9GLFNBQVNDLGNBQWMsb0JBQ3pDK0YsRUFBa0JoRyxTQUFTQyxjQUFjLG9CQUN6Q21GLEVBQWdCcEYsU0FBU3FGLHVCQUF1QixnQkFDaERZLEVBQWFqRyxTQUFTQyxjQUFjLGVBRTFDcUUsRUFBc0JjLEdBRXRCM0IsRUFBY3NDLEVBQWlCWCxFQUFleEIsRUFBUUMsRUFBYWYsR0FDbkVXLEVBQWN1QyxFQUFpQlosRUFBZXhCLEVBQVFDLEVBQWFmLEdBQ25FVyxFQUFjd0MsRUFBWWIsRUFBZXhCLEVBQVFDLEdDYS9DcUMsQ0FBMkJ0QyxFQUFRaEQsT0FHckMsWUFBQStFLHNCQUFBLFNBQXNCL0IsR0FDcEJJLFFBQVFDLElBQUksdUJBQ1lqRSxTQUFTQyxjQUFjLGlCQUMvQmtGLFVBQVksK0VBQzRDdkIsRUFBTzFELFNBQVMsR0FBR0csS0FBSSxxRkFDdkJ1RCxFQUFPMUQsU0FBUyxHQUFHRyxLQUFJLDBGRGxCeEQsU0FBQ3VELEVBQWdCQyxHQUUxRCxJQUFNc0MsRUFBa0JuRyxTQUFTQyxjQUFjLG9CQUN6Q21HLEVBQWtCcEcsU0FBU0MsY0FBYyxvQkFDekNtRixFQUFnQnBGLFNBQVNxRix1QkFBdUIsZ0JBQ2hEWSxFQUFhakcsU0FBU0MsY0FBYyxlQUUxQ3FFLEVBQXNCYyxHQUV0QjNCLEVBQWMwQyxFQUFpQmYsRUFBZXhCLEVBQVFDLEVBQWFjLEdBQ25FbEIsRUFBYzJDLEVBQWlCaEIsRUFBZXhCLEVBQVFDLEVBQWFjLEdBQ25FbEIsRUFBY3dDLEVBQVliLEVBQWV4QixFQUFRQyxHQ1MvQ3dDLENBQTBCekMsRUFBUWhELE9BRXRDLEVBekVBLEdDQ2EwRixFQUFtQixTQUFDQyxFQUFtQkMsR0FDOUNELEVBQVVyRyxTQUFTQyxPQUFTLEdBQUtxRyxFQUFVdEcsU0FBU0MsT0FBUyxHQ0R4QyxTQUN6Qm9HLEVBQ0FDLEVBQ0FDLEdBRUEsSUFBTUMsRUFBTyxJQUFJQyxFQUFZSixFQUFXQyxHQUN4Q3JDLFlBQVcsV0FBTSxPQ1FZLFNBQzdCeUMsRUFDQS9DLEdBRUEsSUNwQjJCMEMsRUFBbUJDLEVBQ3hDSyxFQWVBQyxFQUdBQyxFRENBQyxFQUFZaEgsU0FBU0MsY0FDekIsd0JBRUYyRyxFQUFPekIsVUFBWTZCLEVBQVU3QixVQWxCQSxTQUFDdEIsR0FDOUIsSUFBTW9ELEVBQWdCakgsU0FBU0MsY0FDN0IsNEJBRUlpSCxFQUFnQmxILFNBQVNDLGNBQzdCLDRCQUVGZ0gsRUFBYzdHLFlBQWN5RCxFQUFZMEMsVUFBVWxHLEtBQ2xENkcsRUFBYzlHLFlBQWN5RCxFQUFZMkMsVUFBVW5HLEtBV2xEOEcsQ0FBdUJ0RCxHRXhCUyxTQUFDQSxHQUNSN0QsU0FBU0MsY0FDaEMsdUJBRWVHLFlBQWlCeUQsRUFBWXVELGNBQWMvRyxLQUFJLHNDRnFCaEVnSCxDQUFtQnhELEdHeEJjLFNBQUNBLEdBQ2hDLElBQU15RCxFQUFrQ3RILFNBQVNDLGNBQy9DLDBCQUVJc0gsRUFBa0N2SCxTQUFTQyxjQUMvQywwQkFFSXVILEVBQWlDeEgsU0FBU0MsY0FDOUMseUJBRUl3SCxFQUFpQ3pILFNBQVNDLGNBQzlDLHlCQUVJeUgsRUFBZ0IsU0FDcEI5RCxFQUNBK0QsRUFDQUMsR0FFQSxJQUFNQyxFQUFjakUsRUFBT2tFLGlCQUFpQnpILEtBQzVDc0gsRUFBVUksYUFBYSxNQUFPLFlBQVlGLEVBQVkzRSxjQUFhLFFBQ25FMEUsRUFBU3hILFlBQWN5SCxHQUV6QkgsRUFDRTdELEVBQVkwQyxVQUNaZSxFQUNBRSxHQUVGRSxFQUNFN0QsRUFBWTJDLFVBQ1plLEVBQ0FFLEdITEpPLENBQW9CbkUsR0MxQk8wQyxFRDJCZDFDLEVBQVkwQyxVQzNCcUJDLEVEMkJWM0MsRUFBWTJDLFVDMUIxQ0ssRUFBWSxTQUFDakQsRUFBZ0JxRSxHQUNqQyxJQUFNMUgsRUFBUXFELEVBQU9rRSxpQkFBaUJ2SCxNQUVoQzJILEVBRFl0RSxFQUFPa0UsaUJBQWlCSyxVQUNUNUgsRUFBUyxJQUMxQ3lELFFBQVFDLElBQUlpRSxHQUNaRCxFQUFNekQsTUFBTTRELE1BQVdGLEVBQVcsSUFDbEMsSUFBSUcsRUFBY0osRUFBTXJDLFVBQ3BCc0MsRUFBYyxJQUNoQkcsRUFBWUMsT0FBTyxrQkFDbkJELEVBQVl4QyxJQUFJLG1CQUVoQndDLEVBQVlDLE9BQU8saUJBQ25CRCxFQUFZeEMsSUFBSSxvQkFHZGlCLEVBQWlCOUcsU0FBU0MsY0FDOUIsbUJBRUk4RyxFQUFpQi9HLFNBQVNDLGNBQzlCLG1CQUVGNEcsRUFBVU4sRUFBV08sR0FDckJELEVBQVVMLEVBQVdPLEdHdEJpQixTQUFDbEQsR0FDckMsSUFBTTBFLEVBQWdDLFNBQ3BDM0UsRUFDQTRFLEdBRUEsSUFBSyxJQUFJakUsRUFBSSxFQUFHQSxFQUFJWCxFQUFPb0IsY0FBYzdFLE9BQVMsRUFBR29FLElBQ25EaUUsRUFBZ0JqRSxHQUFHcUIsVUFBVUMsSUFBSSxvQkFHL0I0QyxFQUFxQkMsTUFBTUMsS0FDL0IzSSxTQUFTNEksaUJBQWlCLDZDQUV0QkMsRUFBcUJILE1BQU1DLEtBQy9CM0ksU0FBUzRJLGlCQUFpQiw2Q0FFNUJMLEVBQThCMUUsRUFBWTBDLFVBQVdrQyxHQUNyREYsRUFBOEIxRSxFQUFZMkMsVUFBV3FDLEdKV3ZEQyxDQUF5QmpGLEdBRXpCQSxFQUFZTyxzQkFBc0JQLEVBQVl1RCxlRHRCN0IyQixDQUFnQnRDLEVBQUtDLEtBQU8sS0RIN0NzQyxDQUFZekMsRUFBV0MsRUFEWHhHLFNBQVNDLGNBQWMsVU9EeEJnSixFQUFtQixTQUFDMUMsRUFBbUJDLEdBQ2xELElBQUkxRyxFQUFleUcsR0NKWSxTQUFDQSxFQUFtQkMsR0FDdkJ4RyxTQUFTQyxjQUFjLDBCQUM3QkcsWUFBY21HLEVBQVVsRyxLQUNsQkwsU0FBU0MsY0FBYywwQkFDN0JHLFlBQWNvRyxFQUFVbkcsS0RDOUM2SSxDQUFrQjNDLEVBQVdDLEdBQzdCM0csRUFBdUJDLEdFQUssU0FDNUJ5RyxFQUNBQyxFQUNBMUcsR0FFQSxJQUFNNEIsRUFBVyxJQUNYeUgsRUFBaUIsSUFBSUMsRUFBZTFILEdBQ3BCZ0gsTUFBTUMsS0FDMUIzSSxTQUFTNEksaUJBQWlCLHFCQUdkUyxTQUFRLFNBQUNDLEdBQ3JCLE9BQUFBLEVBQWF2RixpQkFDWCxTQUNBLFNBQUN3RixHQUNzQyxJQUFqQ3pKLEVBQWFJLFNBQVNDLFNDbkJGLFNBQzlCcUosRUFDQUMsRUFDQTNKLEdBRUEsSUFBTTRKLEVBQWlCRixFQUFNRyxPQUN2QjlCLEVBQWM2QixFQUFlRSxHQUM3QkMsRUFBNEJKLEVBQVF6RyxpQkFBaUI2RSxHQUMzRC9ILEVBQWFnSyxXQUFXRCxHQUN4QkgsRUFBZWxGLE1BQU11RixPQUFTLFVBQzlCTCxFQUFlbEYsTUFBTXdGLE9BQVMsa0JEVXhCQyxDQUFpQlYsRUFBR0osRUFBZ0JySixHRXRCYixTQUFDeUcsRUFBbUJ6RyxHQUNqRCxJQUFNMEksRUFDSjFJLElBQWlCeUcsRUFDYm1DLE1BQU1DLEtBQUszSSxTQUFTNEksaUJBQWlCLDJCQUNyQ0YsTUFBTUMsS0FBSzNJLFNBQVM0SSxpQkFBaUIsMkJBQ3JDc0IsRUFBZ0NwSyxFQUFhSSxTQUNqREosRUFBYUksU0FBU0MsT0FBUyxHQUMvQkUsS0FBSzZDLGNBRVBzRixFQURvQzFJLEVBQWFJLFNBQVNDLE9BQVMsR0FDOUI0SCxhQUNuQyxNQUNBLFlBQVltQyxFQUFxQixRRlk3QkMsQ0FBZ0I1RCxFQUFXekcsR0FHM0JELEVBREFDLEVBQWVBLElBQWlCeUcsRUFBWUMsRUFBWUQsR0FFeERELEVBQWlCQyxFQUFXQyxNQUU5QixDQUFFNEQsTUFBTSxPRnRCWkMsQ0FBZTlELEVBQVdDLEVBQVcxRyxJS1B2QyxhQUlFLFdBQVlPLEVBQWNILEdBQ3hCLEdBQUlHLEVBQUtGLE9BQVMsRUFDaEIsTUFBTSxJQUFJaUQsTUFBTSxpQkFFbEIsR0FBSWxELEVBQVNDLE9BQVMsRUFDcEIsTUFBTSxJQUFJaUQsTUFBTSw0QkFFbEJ4QyxLQUFLQyxNQUFRUixFQUNiTyxLQUFLZSxVQUFZekIsRUFDakJVLEtBQUswSixzQkFBd0IsRUEyQmpDLE9BeEJFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU8xSixLQUFLQyxPLGdDQUVkLHNCQUFJLHVCQUFRLEMsSUFBWixXQUNFLE9BQU9ELEtBQUtlLFcsZ0NBR2Qsc0JBQUksbUNBQW9CLEMsSUFBeEIsU0FBeUI0SSxHQUN2QjNKLEtBQUswSixzQkFBd0JDLEcsZ0NBRS9CLHNCQUFJLCtCQUFnQixDLElBQXBCLFdBQ0UsT0FBTzNKLEtBQUtlLFVBQVVmLEtBQUswSix3QixnQ0FHN0Isc0JBQUksNEJBQWEsQyxJQUFqQixXQUlFLE9BSG9DMUosS0FBS1YsU0FBUzhKLFFBQU8sU0FBQ3BJLEdBQ3hELE9BQUFBLEVBQVFILGMsZ0NBS1osWUFBQXFJLFdBQUEsU0FBV2xJLEdBQ1RoQixLQUFLZSxVQUFVTyxLQUFLTixJQUV4QixFQXhDQSxHQ0ZhNEksRUFBZ0IsU0FBQ0MsRUFBOEJDLEVBQThCQyxHQUNsRkYsRUFBV0csTUFBTXpLLE9BQVMsR0FBS3VLLEVBQVdFLE1BQU16SyxPQUFTLEVBQ3pEd0ssRUFBWUUsVUFBWSxpQkFFeEJGLEVBQVlFLFVBQVksbUJDOERoQzFHLFlBVGtCLFdBQ2hCLElBckQwQnlDLEVBQ3BCa0UsRUF5QkFDLEVBQ0FDLEVBQ0FMLEVwQjFCa0JNLEVBQ2xCQyxFb0JVQUMsRUFHQUMsRUFxQ0EzRSxFQUFNekcsU0FBU0MsY0FBYyxRQXJEVDJHLEVBc0RQSCxFQXJEYnFFLEVBQWU5SyxTQUFTQyxjQUM1QiwyQkFFRjJHLEVBQU96QixVQUFZMkYsRUFBYTNGLFVBRUwsU0FBQ3lCLEdBQzVCLElBQU13RSxFQUFZcEwsU0FBU0MsY0FDekIsd0JBRUYyRyxFQUFPekIsV0FBYWlHLEVBQVVqRyxVQTZDOUJrRyxDQUFxQjVFLEdBN0Jmc0UsRUFBbUIvSyxTQUFTQyxjQUFjLHVCQUMxQytLLEVBQW1CaEwsU0FBU0MsY0FBYyx1QkFDMUMwSyxFQUFjM0ssU0FBU0MsY0FBYyxzQkFDM0M4SyxFQUFpQmhILGlCQUFpQixTQUFTLFdBQ3ZDeUcsRUFBY08sRUFBa0JDLEVBQWtCTCxNQUV0REssRUFBaUJqSCxpQkFBaUIsU0FBUyxXQUN2Q3lHLEVBQWNPLEVBQWtCQyxFQUFrQkwsTUFwQmhEUSxFQUFrQm5MLFNBQVNDLGNBQy9CLHVCQUVJbUwsRUFBWXBMLFNBQVNDLGNBQ3pCLHNCQUVGa0wsRUFBZ0JwSCxpQkFBaUIsU0FBUyxXQUM5QnFILEVwQnJCSTVHLE1BQU04RyxRb0JxQkMsVXBCaEJ2QkosT0FETUEsR0FEa0JELEVvQm9CZEcsR3BCbkJ5Qm5MLGNBQWMsaUJBQ2pEaUwsRUFBWW5ILGlCQUFpQixTQUFTLFdBQ3BDa0gsRUFBZ0J6RyxNQUFNOEcsUUFBVSxVb0JnQ0YsU0FBQzFFLEdBQ2pDLElBQU0yRSxFQUFhdkwsU0FBU0MsY0FDMUIsc0JBRUZzTCxXQUFZeEgsaUJBQWlCLFNBQVMsV0FDcEMsSUFBTWdILEVBQW9CL0ssU0FBU0MsY0FBYyx1QkFBNEMySyxNQUN2RkksRUFBb0JoTCxTQUFTQyxjQUFjLHVCQUE0QzJLLE1BQ3ZGWSxFQUFzQnhMLFNBQVNDLGNBQ25DLHlCQUVGMkcsRUFBT3pCLFVBQVlxRyxFQUFvQnJHLFVBQ3ZDOEQsRUFBaUIsSUFBSXdDLEVBQU9WLEVBQWtCLElBQUssSUFBSVUsRUFBT1QsRUFBa0IsUUFVbEZVLENBQTBCakYsS0FHTixNIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHNob3dNb2RhbCA9IChcclxuICBzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50LFxyXG4gIHN0YXJ0aW5nUG9zaXRpb246IHN0cmluZ1xyXG4pID0+IHtcclxuICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IHN0YXJ0aW5nUG9zaXRpb247XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaGlkZU1vZGFsID0gKHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBleGl0QnV0dG9uID0gc2NyZWVuVG9EaXNwbGF5LnF1ZXJ5U2VsZWN0b3IoXCIuZXhpdEJ1dHRvblwiKTtcclxuICBleGl0QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICB9KTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSA9IChhY3RpdmVQbGF5ZXI6IFBsYXllcikgPT4ge1xyXG4gIGxldCB3aG9DaG9vc2VzUG9rZW1vblRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3dob0Nob29zZXNQYXJhZ3JhcGhcIikhO1xyXG4gIGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggPT09IDNcclxuICAgID8gKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IFwiV2FpdCBmb3IgdGhlIGdhbWUgdG8gc3RhcnQuLi5cIilcclxuICAgIDogKHdob0Nob29zZXNQb2tlbW9uVGV4dC50ZXh0Q29udGVudCA9IGAke2FjdGl2ZVBsYXllci5uYW1lfSBjaG9vc2VzIDEgcG9rZW1vbmApO1xyXG59O1xyXG4iLCJleHBvcnQgdHlwZSBQb2tlbW9uVHlwZSA9XHJcbiAgfCBcImdyYXNzXCJcclxuICB8IFwicG9pc29uXCJcclxuICB8IFwiZmlyZVwiXHJcbiAgfCBcIndhdGVyXCJcclxuICB8IFwiYnVnXCJcclxuICB8IFwibm9ybWFsXCJcclxuICB8IFwiZmx5aW5nXCJcclxuICB8IFwiZWxlY3RyaWNcIlxyXG4gIHwgXCJncm91bmRcIlxyXG4gIHwgXCJmYWlyeVwiXHJcbiAgfCBcInBzeWNoaWNcIlxyXG4gIHwgXCJmaWdodGluZ1wiXHJcbiAgfCBcInJvY2tcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uIHtcclxuXHJcbiAgcmVhZG9ubHkgX25hbWU6IHN0cmluZztcclxuICByZWFkb25seSBfaW1hZ2U6IHN0cmluZztcclxuICByZWFkb25seSBfbWF4SFA6IG51bWJlcjtcclxuICBwcml2YXRlIF9jdXJyZW50SFA6IG51bWJlcjtcclxuICByZWFkb25seSBfYXR0YWNrUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2RlZmVuc2VQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfdHlwZXM6IFBva2Vtb25UeXBlW107XHJcbiAgcmVhZG9ubHkgX21vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W107XHJcblxyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgaW1hZ2U6IHN0cmluZywgbWF4SFA6IG51bWJlciwgYXR0YWNrUG9pbnRzOiBudW1iZXIsXHJcbiAgICBkZWZlbnNlUG9pbnRzOiBudW1iZXIsIHR5cGVzOiBQb2tlbW9uVHlwZVtdLCBtb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdKSB7XHJcblxyXG4gICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICB0aGlzLl9pbWFnZSA9IGltYWdlO1xyXG4gICAgdGhpcy5fbWF4SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fYXR0YWNrUG9pbnRzID0gYXR0YWNrUG9pbnRzO1xyXG4gICAgdGhpcy5fZGVmZW5zZVBvaW50cyA9IGRlZmVuc2VQb2ludHM7XHJcbiAgICB0aGlzLl90eXBlcyA9IHR5cGVzO1xyXG4gICAgdGhpcy5fbW92ZXMgPSBtb3ZlcztcclxuICB9XHJcblxyXG5cclxuICBnZXQgbmFtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGltYWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgbWF4SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdEhQKHBvaW50c1RvU3VidHJhY3Q6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3SFAgPSB0aGlzLl9jdXJyZW50SFAgLSBwb2ludHNUb1N1YnRyYWN0O1xyXG4gICAgaWYgKG5ld0hQIDwgMCkge1xyXG4gICAgICB0aGlzLl9jdXJyZW50SFAgPSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbmV3SFA7XHJcbiAgfVxyXG5cclxuICBoZWFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gdGhpcy5fbWF4SFA7XHJcbiAgfVxyXG5cclxuICBnZXQgYXR0YWNrUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2F0dGFja1BvaW50cztcclxuICB9XHJcblxyXG4gIGdldCBkZWZlbnNlUG9pbnRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlZmVuc2VQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgdHlwZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZXM7XHJcbiAgfVxyXG5cclxuICBnZXQgbW92ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbW92ZXM7XHJcbiAgfVxyXG5cclxuICBpc0FsaXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUCA+IDA7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5pbXBvcnQgeyBQb2tlbW9uVHlwZSB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb25GYWN0b3J5IHtcclxuICAgIHJlYWRvbmx5IF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHBva2VEYXRhOiB7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyB0eXBlczogc3RyaW5nW107XHJcbiAgICAgICAgc3RhdHM6IHsgaHA6IG51bWJlcjsgYXR0YWNrOiBudW1iZXI7IGRlZmVuc2U6IG51bWJlcjsgfTtcclxuICAgICAgICBtb3ZlczogeyBuYW1lOiBzdHJpbmc7IGFjY3VyYWN5OiBudW1iZXI7IHBvd2VyOiBudW1iZXI7IHR5cGU6IHN0cmluZzsgfVtdXHJcbiAgICB9W10pIHtcclxuICAgICAgICB0aGlzLl9wb2tlbW9ucyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBwb2tlbW9uIG9mIHBva2VEYXRhKSB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlSW1nID0gXCIuLi9hc3NldHMvXCIgKyBwb2tlbW9uLm5hbWUgKyBcIi5wbmdcIlxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZU1vdmVzID0gcG9rZW1vbi5tb3Zlcy5yZWR1Y2UoICh0YWIsIG1vdmUpID0+IHtcclxuICAgICAgICAgICAgICAgIHRhYi5wdXNoKHttb3ZlTmFtZTogbW92ZS5uYW1lLCBtb3ZlVHlwZTogbW92ZS50eXBlIGFzIFBva2Vtb25UeXBlfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0YWJcclxuICAgICAgICAgICAgICAgIH0sIFtdIGFzIHttb3ZlTmFtZTogc3RyaW5nLCBtb3ZlVHlwZTogUG9rZW1vblR5cGV9W10pXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlVHlwZXM6IFBva2Vtb25UeXBlW10gPSBwb2tlbW9uLnR5cGVzLm1hcCh2ID0+IHYgYXMgUG9rZW1vblR5cGUpXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlbW9uT2JqZWN0ID0gbmV3IFBva2Vtb24odGhpcy5fY2FwaXRhbGl6ZShwb2tlbW9uLm5hbWUpLCBwb2tlSW1nLCBcclxuICAgICAgICAgICAgICAgIHBva2Vtb24uc3RhdHMuaHAsIHBva2Vtb24uc3RhdHMuYXR0YWNrLCBwb2tlbW9uLnN0YXRzLmRlZmVuc2UsXHJcbiAgICAgICAgICAgICAgICBwb2tlVHlwZXMsIHBva2VNb3ZlcylcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbk9iamVjdClcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UG9rZW1vbkJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQb2tlbW9uIHtcclxuICAgICAgICBjb25zdCBwb2tlbW9uID0gdGhpcy5fcG9rZW1vbnMuZmluZCggcG9rZW1vbiA9PiBwb2tlbW9uLm5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBpZiAocG9rZW1vbiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9rZW1vbiAke25hbWV9IGlzIG5vdCBmb3VuZCBpbiB0aGUgcG9rZW1vbiBmYWN0b3J5YClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBva2Vtb25cclxuICAgIH1cclxuXHJcbiAgICBfY2FwaXRhbGl6ZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcclxuICAgICAgfVxyXG59XHJcblxyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChwbGF5ZXI6IFBsYXllciwgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcblxyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBhdHRhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG5cclxuICBhdHRhY2tCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICBhbmltYXRpb25CdXR0b25zRXhpdChiYXR0bGVCdXR0b25zKTtcclxuICAgIHNldFRpbWVvdXQoICgpPT4ge1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZUF0dGFja0J1dHRvbnMocGxheWVyKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH0pO1xyXG4gIHN3aXRjaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCggKCk9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucyhwbGF5ZXIpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmKHRydWUpIHsgLy9nYW1lSGFuZGxlci5jYW5Vc2VNYW5nbygpXHJcbiAgICBtYW5nb0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy9nYW1lSGFuZGxlci51c2VNYW5nbygpO1xyXG4gICAgICBjb25zb2xlLmxvZygnbWFuZ28gdXNlZCEgbW5pYSBtbmlhIG1uaWEuLi4nKTsgLy9uZWVkcyB0byBiZSBkZWxldGVkXHJcbiAgICAgIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gICAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgbWFuZ28uaW5uZXJIVE1MID0gXCIwXCI7XHJcbiAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAocGxheWVyOiBQbGF5ZXIsIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG5cclxuICBjb25zdCBhdHRhY2tCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2F0dGFja0J1dHRvbk9uZVwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhdHRhY2tCdXR0b25Ud29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG5cclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgYXR0YWNrKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgYXR0YWNrKTtcclxuICBtYWdpY0Z1bmN0aW9uKGJhY2tCdXR0b24sIGJhdHRsZUJ1dHRvbnMsIHBsYXllciwgZ2FtZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAocGxheWVyOiBQbGF5ZXIsIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG5cclxuICBjb25zdCBzd2l0Y2hCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3N3aXRjaEJ1dHRvbk9uZVwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzd2l0Y2hCdXR0b25Ud29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmF0dGxlQnV0dG9uXCIpISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpXHJcblxyXG4gIG1hZ2ljRnVuY3Rpb24oc3dpdGNoQnV0dG9uT25lLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgcGxheWVyLCBnYW1lSGFuZGxlciwgc3dpdGNoUG9rZSk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBwbGF5ZXIsIGdhbWVIYW5kbGVyKTtcclxufVxyXG5cclxuXHJcbmNvbnN0IG1hZ2ljRnVuY3Rpb24gPSAoYnV0dG9uOiBIVE1MRGl2RWxlbWVudCwgYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4sIHBsYXllcjogUGxheWVyLCBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsIGZ1bmN0aW9uVG9DYWxsPzogYW55KSA9PiB7XHJcbiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coYCR7YnV0dG9uLmlubmVyVGV4dH0gdXNlZCFgKTtcclxuICAgIGlmIChmdW5jdGlvblRvQ2FsbCkgeyBmdW5jdGlvblRvQ2FsbCgpOyB9IC8vID8/XHJcbiAgICBzZXRUaW1lb3V0KCAoKT0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKHBsYXllcik7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIC8vYWxzbyBjaGFuZ2UgcGxheWVyIGZ1bmN0aW9uIFxyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYnV0dG9ucyk7XHJcbiAgfSApO1xyXG59XHJcblxyXG5jb25zdCBhbmltYXRpb25CdXR0b25zRW50cnkgPSAoYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pID0+IHtcclxuICBmb3IobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPSBcInNjYWxlLWluLWhvci1jZW50ZXIgMC41cyBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYFxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0V4aXQgPSAoYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pID0+IHtcclxuICBmb3IobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPSBcInNjYWxlLW91dC1ob3Jpem9udGFsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA4NSwgMC42ODAsIDAuNTMwKSBib3RoXCI7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gYCR7aSAqIDAuMTV9c2BcclxuICB9XHJcbn1cclxuXHJcbi8vIGZ1bmNpb25zIGp1c3QgZm9yIGNoZWNrIGlmIGl0cyB3b3JrcyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBnYW1lSGFuZGxlciA+IHVzZSBhdHRhY2sgb3Igc3dpdGNoIFBva2Vtb24gZnVuY3Rpb25zXHJcbmNvbnN0IGF0dGFjayA9ICgpID0+IHtcclxuICBjb25zb2xlLmxvZygnYnVtIGJ1bSBiYWNoIScpO1xyXG59XHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoKSA9PiB7XHJcbiAgY29uc29sZS5sb2coJ3B1ZmYhJyk7XHJcbn0iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciwgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIsIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgfSBmcm9tIFwiLi9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR2FtZUhhbmRsZXIge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJUd286IFBsYXllclxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBfY3VycmVudFBsYXllcjogUGxheWVyID0gdGhpcy5fcGxheWVyT25lO1xyXG5cclxuICBnZXQgcGxheWVyT25lICgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxheWVyVHdvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50UGxheWVyKCk6IFBsYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBsYXllcjtcclxuICB9XHJcblxyXG4gIGdldCBvcHBvbmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5ZXIgPT09IHRoaXMuX3BsYXllck9uZSkgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpZFBsYXllckxvb3NlKHBsYXllcjogUGxheWVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNHYW1lRmluaXNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllck9uZSkgfHxcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJUd28pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lubmVyKCk6IFBsYXllciB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5pc0dhbWVGaW5pc2hlZCgpKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgY2Fubm90IGdldCB0aGUgd2lubmVyLiBUaGUgZ2FtZSBpcyBub3Qgb3Zlci5cIik7XHJcbiAgICByZXR1cm4gdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpID09PSB0cnVlXHJcbiAgICAgID8gdGhpcy5fcGxheWVyVHdvXHJcbiAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKHBsYXllcjogUGxheWVyKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnU3RhcnQgLSBhY3Rpb24gbW9kYWwnKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIocGxheWVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQXR0YWNrQnV0dG9ucyhwbGF5ZXI6IFBsYXllcik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ0F0dGFjayBjaG9vc2UgbW9kYWwnKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvbk9uZVwiPiR7cGxheWVyLnBva2Vtb25zWzBdLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5wb2tlbW9uc1swXS5tb3Zlc1sxXS5tb3ZlTmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYmFja0J1dHRvblwiPmJhY2s8L2Rpdj5gO1xyXG4gICAgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIocGxheWVyLCB0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucyhwbGF5ZXI6IFBsYXllcik6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ1N3aXRjaCBjaG9vc2UgbW9kYWwnKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLnBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLnBva2Vtb25zWzJdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIocGxheWVyLCB0aGlzKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IHN0YXJ0QmF0dGxlIH0gZnJvbSBcIi4uL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEdhbWVJZlJlYWR5ID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGlmIChwbGF5ZXJPbmUucG9rZW1vbnMubGVuZ3RoIDwgMyB8fCBwbGF5ZXJUd28ucG9rZW1vbnMubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHN0YXJ0QmF0dGxlKHBsYXllck9uZSwgcGxheWVyVHdvLCBhcHApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2UgfSBmcm9tIFwiLi9yZW5kZXJGaWdodFBhZ2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEJhdHRsZSA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhcHA6IEhUTUxEaXZFbGVtZW50XHJcbikgPT4ge1xyXG4gIGNvbnN0IGdhbWUgPSBuZXcgR2FtZUhhbmRsZXIocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlnaHRQYWdlKGFwcCwgZ2FtZSksIDIwMDApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQb2tlbW9uIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXIgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJcIjtcclxuaW1wb3J0IHsgY3JlYXRlSFBCYXJzIH0gZnJvbSBcIi4vY3JlYXRlSFBCYXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxsc1wiO1xyXG5cclxuY29uc3QgY3JlYXRlUGxheWVyRmlnaHROYW1lcyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVOYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMS1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29OYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMi1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBwbGF5ZXJPbmVOYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyT25lLm5hbWU7XHJcbiAgcGxheWVyVHdvTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllclR3by5uYW1lO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZSA9IChcclxuICBhcHBEaXY6IEhUTUxEaXZFbGVtZW50LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBmaWdodFBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBmaWdodFBhZ2UuaW5uZXJIVE1MO1xyXG4gIGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMoZ2FtZUhhbmRsZXIpO1xyXG4gIC8vIGdlbmVyYXRlIGNob29zZSBhY3Rpb24gYnV0dG9uc1xyXG4gIGdhbWVIYW5kbGVyLmdlbmVyYXRlQWN0aW9uQnV0dG9ucyhnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlSFBCYXJzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IGNyZWF0ZUJhciA9IChwbGF5ZXI6IFBsYXllciwgSFBCYXI6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBtYXhIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1heEhQO1xyXG4gICAgY29uc3QgY3VycmVudEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24uY3VycmVudEhQO1xyXG4gICAgY29uc3QgSFBJblBlcmNlbnQgPSAoY3VycmVudEhQIC8gbWF4SFApICogMTAwO1xyXG4gICAgY29uc29sZS5sb2coSFBJblBlcmNlbnQpO1xyXG4gICAgSFBCYXIuc3R5bGUud2lkdGggPSBgJHtIUEluUGVyY2VudH0lYDtcclxuICAgIGxldCBIUENsYXNzTGlzdCA9IEhQQmFyLmNsYXNzTGlzdDtcclxuICAgIGlmIChIUEluUGVyY2VudCA8IDIwKSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuICBjb25zdCBwbGF5ZXJPbmVIUEJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNocC1iYXItcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29IUEJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNocC1iYXItcGxheWVyMlwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjcmVhdGVCYXIocGxheWVyT25lLCBwbGF5ZXJPbmVIUEJhcik7XHJcbiAgY3JlYXRlQmFyKHBsYXllclR3bywgcGxheWVyVHdvSFBCYXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IGFjdGl2ZVBsYXllckFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjYWN0aXZlLXBsYXllci1pbmZvXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGFjdGl2ZVBsYXllckFyZWEudGV4dENvbnRlbnQgPSBgJHtnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLm5hbWV9IG5vdyBpcyB5b3VyIHR1cm4uIEdldCB0aGUgcmV2ZW5nZSFgO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBva2Vtb24gPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIxXCJcclxuICAgICkgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICAgIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjJcIlxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gICAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjFcIlxyXG4gICAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMlwiXHJcbiAgICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICAgIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICAgIHBsYXllcjogUGxheWVyLFxyXG4gICAgICBpbWFnZUFyZWE6IEhUTUxJbWFnZUVsZW1lbnQsXHJcbiAgICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICAgICkgPT4ge1xyXG4gICAgICBjb25zdCBwb2tlbW9uTmFtZSA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLm5hbWU7XHJcbiAgICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICAgIG5hbWVBcmVhLnRleHRDb250ZW50ID0gcG9rZW1vbk5hbWU7XHJcbiAgICB9O1xyXG4gICAgY3JlYXRlUG9rZW1vbihcclxuICAgICAgZ2FtZUhhbmRsZXIucGxheWVyT25lLFxyXG4gICAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICAgICk7XHJcbiAgICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICAgIHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICAgIHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICAgKTtcclxuICB9OyIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gICAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICAgIHBsYXllcjogUGxheWVyLFxyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHM6IEhUTUxJbWFnZUVsZW1lbnRbXVxyXG4gICAgKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAyOyBpID4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoIC0gMTsgaS0tKSB7XHJcbiAgICAgICAgcGxheWVyUG9rZWJhbGxzW2ldLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZFBva2Vtb25cIik7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBwbGF5ZXJPbmVQb2tlYmFsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50W107XHJcbiAgICBjb25zdCBwbGF5ZXJUd29Qb2tlYmFsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50W107XHJcbiAgICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIHBsYXllck9uZVBva2ViYWxscyk7XHJcbiAgICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbiAgfTsiLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuaW1wb3J0IHsgY3JlYXRlUGxheWVyTmFtZXMgfSBmcm9tIFwiLi9jcmVhdGVQbGF5ZXJOYW1lc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlbW9ucyB9IGZyb20gXCIuL2NyZWF0ZVBva2Vtb25zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2hvb3NlUGFnZSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgYWN0aXZlUGxheWVyID0gcGxheWVyT25lO1xyXG4gIGNyZWF0ZVBsYXllck5hbWVzKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgY3JlYXRlUG9rZW1vbnMocGxheWVyT25lLCBwbGF5ZXJUd28sIGFjdGl2ZVBsYXllcik7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBsYXllck5hbWVzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBwbGF5ZXJPbmVOYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIxTmFtZVwiKSE7XHJcbiAgcGxheWVyT25lTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyT25lLm5hbWU7XHJcbiAgbGV0IHBsYXllclR3b05hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjJOYW1lXCIpITtcclxuICBwbGF5ZXJUd29OYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJUd28ubmFtZTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCAqIGFzIGRhdGEgZnJvbSBcIi4uLy4uL2Fzc2V0cy9wb2tlX2RhdGEuanNvblwiO1xyXG5pbXBvcnQgeyBzdGFydEdhbWVJZlJlYWR5IH0gZnJvbSBcIi4vc3RhcnRHYW1lSWZSZWFkeVwiO1xyXG5pbXBvcnQgeyBhZGRDaG9zZW5Qb2tlbW9uIH0gZnJvbSBcIi4vYWRkQ2hvc2VuUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlYmFsbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlbW9ucyA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBwb2tlRGF0YSA9IGRhdGEucG9rZW1vbnM7XHJcbiAgY29uc3QgcG9rZW1vbkZhY3RvcnkgPSBuZXcgUG9rZW1vbkZhY3RvcnkocG9rZURhdGEpO1xyXG4gIGNvbnN0IHBva2Vtb25JbWFnZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNwb2tlbW9uTGlzdCBpbWdcIilcclxuICApIGFzIFtIVE1MSW1hZ2VFbGVtZW50XTtcclxuXHJcbiAgcG9rZW1vbkltYWdlcy5mb3JFYWNoKChwb2tlbW9uSW1hZ2UpID0+XHJcbiAgICBwb2tlbW9uSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJjbGlja1wiLFxyXG4gICAgICAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzKSByZXR1cm47XHJcbiAgICAgICAgYWRkQ2hvc2VuUG9rZW1vbihlLCBwb2tlbW9uRmFjdG9yeSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBjcmVhdGVQb2tlYmFsbHMocGxheWVyT25lLCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIC8vIGNoYW5nZSBwbGF5ZXJcclxuICAgICAgICBhY3RpdmVQbGF5ZXIgPSBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZSA/IHBsYXllclR3byA6IHBsYXllck9uZTtcclxuICAgICAgICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgc3RhcnRHYW1lSWZSZWFkeShwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuLi9wb2tlbW9uQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWRkQ2hvc2VuUG9rZW1vbiA9IChcclxuICBldmVudDogRXZlbnQsXHJcbiAgZmFjdG9yeTogUG9rZW1vbkZhY3RvcnksXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgY2xpY2tlZFBva2Vtb24gPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICBjb25zdCBwb2tlbW9uTmFtZSA9IGNsaWNrZWRQb2tlbW9uLmlkO1xyXG4gIGNvbnN0IG5ld1Bva2Vtb25PYmplY3Q6IFBva2Vtb24gPSBmYWN0b3J5LmdldFBva2Vtb25CeU5hbWUocG9rZW1vbk5hbWUpO1xyXG4gIGFjdGl2ZVBsYXllci5hZGRQb2tlbW9uKG5ld1Bva2Vtb25PYmplY3QpO1xyXG4gIGNsaWNrZWRQb2tlbW9uLnN0eWxlLmN1cnNvciA9IFwiZGVmYXVsdFwiO1xyXG4gIGNsaWNrZWRQb2tlbW9uLnN0eWxlLmZpbHRlciA9IFwiZ3JheXNjYWxlKDEwMCUpXCI7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2ViYWxscyA9IChwbGF5ZXJPbmU6IFBsYXllciwgYWN0aXZlUGxheWVyOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJQb2tlYmFsbHM6IEhUTUxJbWFnZUVsZW1lbnRbXSA9XHJcbiAgICBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZVxyXG4gICAgICA/IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMSBpbWdcIikpXHJcbiAgICAgIDogQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIyIGltZ1wiKSk7XHJcbiAgY29uc3QgcGxheWVyTGFzdFBva2Vtb25OYW1lOiBzdHJpbmcgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnNbXHJcbiAgICBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMVxyXG4gIF0ubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IG51bWJlck9mTGFzdFBva2Vtb246IG51bWJlciA9IGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxO1xyXG4gIHBsYXllclBva2ViYWxsc1tudW1iZXJPZkxhc3RQb2tlbW9uXS5zZXRBdHRyaWJ1dGUoXHJcbiAgICBcInNyY1wiLFxyXG4gICAgYC4vYXNzZXRzLyR7cGxheWVyTGFzdFBva2Vtb25OYW1lfS5wbmdgXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBsYXllciB7XHJcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcbiAgcHJpdmF0ZSBfaW5kZXhPZkFjdGl2ZVBva2Vtb246IG51bWJlcjtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHBva2Vtb25zOiBQb2tlbW9uW10pIHtcclxuICAgIGlmIChuYW1lLmxlbmd0aCA+IDgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIGxvbmcgbmFtZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChwb2tlbW9ucy5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIG51bWJlciBvZiBwb2tlbW9uc1wiKTtcclxuICAgIH1cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5fcG9rZW1vbnMgPSBwb2tlbW9ucztcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gMDtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnM7XHJcbiAgfVxyXG5cclxuICBzZXQgaW5kZXhPZkFjdGl2ZVBva2Vtb24obnVtT2ZBY3RpdmVQb2tlbW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gbnVtT2ZBY3RpdmVQb2tlbW9uO1xyXG4gIH1cclxuICBnZXQgZ2V0QWN0aXZlUG9rZW1vbigpOiBQb2tlbW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1t0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbl07XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgY29uc3QgYWxpdmVQb2tlbW9uc1RhYjogUG9rZW1vbltdID0gdGhpcy5wb2tlbW9ucy5maWx0ZXIoKHBva2Vtb24pID0+XHJcbiAgICAgIHBva2Vtb24uaXNBbGl2ZSgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsaXZlUG9rZW1vbnNUYWI7XHJcbiAgfVxyXG5cclxuICBhZGRQb2tlbW9uKHBva2Vtb246IFBva2Vtb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX3Bva2Vtb25zLnB1c2gocG9rZW1vbik7XHJcbiAgfVxyXG59XHJcbiIsImV4cG9ydCBjb25zdCBhY3RpdmF0ZVN0YXJ0ID0gKG5hbWUxSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIG5hbWUySW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsIHN0YXJ0QnV0dG9uOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgaWYgKG5hbWUxSW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMklucHV0LnZhbHVlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZGlzYWJsZWQnXHJcbiAgICB9XHJcbn0iLCJpbXBvcnQgeyBzaG93TW9kYWwsIGhpZGVNb2RhbCB9IGZyb20gXCIuL21vZGFsUG9wVXBGdW5jdGlvbnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQ2hvb3NlUGFnZSB9IGZyb20gXCIuL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2VcIlxyXG5pbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBhY3RpdmF0ZVN0YXJ0IH0gZnJvbSAnLi9hY3RpdmF0ZVN0YXJ0JztcclxuXHJcbmNvbnN0IHJlbmRlclN0YXJ0aW5nUGFnZSA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3Qgc3RhcnRpbmdQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0aW5nLXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gc3RhcnRpbmdQYWdlLmlubmVySFRNTDtcclxufTtcclxuY29uc3QgcmVuZGVySG93VG9QbGF5TW9kYWwgPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGluZm9Nb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNpbmZvLW1vZGFsLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCArPSBpbmZvTW9kYWwuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCBjcmVhdGVIb3dUb1BsYXlCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgaG93VG9QbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2hvdy10by1wbGF5LWJ1dHRvblwiXHJcbiAgKSBhcyBIVE1MVUxpc3RFbGVtZW50O1xyXG4gIGNvbnN0IGluZm9Nb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNpbmZvLW1vZGFsLXNjcmVlblwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBob3dUb1BsYXlCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIHNob3dNb2RhbChpbmZvTW9kYWwsIFwiZmxleFwiKTtcclxuICB9KTtcclxuICBoaWRlTW9kYWwoaW5mb01vZGFsKTtcclxufTtcclxuXHJcbmNvbnN0IGFjdGl2YXRlU3RhcnRCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyMU5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMi1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBjb25zdCBzdGFydEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjc3RhcnQtZ2FtZS1idXR0b25cIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgcGxheWVyMU5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKCkgPT4ge1xyXG4gICAgICBhY3RpdmF0ZVN0YXJ0KHBsYXllcjFOYW1lSW5wdXQsIHBsYXllcjJOYW1lSW5wdXQsIHN0YXJ0QnV0dG9uKVxyXG4gIH0pXHJcbiAgcGxheWVyMk5hbWVJbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgKCkgPT4ge1xyXG4gICAgICBhY3RpdmF0ZVN0YXJ0KHBsYXllcjFOYW1lSW5wdXQsIHBsYXllcjJOYW1lSW5wdXQsIHN0YXJ0QnV0dG9uKVxyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgcmVuZGVyQ2hvb3NlUG9rZW1vblNjcmVlbiA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgcGxheUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzdGFydC1nYW1lLWJ1dHRvblwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBwbGF5QnV0dG9uPy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgY29uc3QgcGxheWVyMU5hbWVJbnB1dCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMS1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBjb25zdCBwbGF5ZXIyTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IGNob29zZVBva2Vtb25TY3JlZW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNjaG9vc2UtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgICBhcHBEaXYuaW5uZXJIVE1MID0gY2hvb3NlUG9rZW1vblNjcmVlbi5pbm5lckhUTUw7XHJcbiAgICBjcmVhdGVDaG9vc2VQYWdlKG5ldyBQbGF5ZXIocGxheWVyMU5hbWVJbnB1dCwgW10pLCBuZXcgUGxheWVyKHBsYXllcjJOYW1lSW5wdXQsIFtdKSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IHJlbmRlckFwcCA9ICgpID0+IHtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICByZW5kZXJTdGFydGluZ1BhZ2UoYXBwKTtcclxuICByZW5kZXJIb3dUb1BsYXlNb2RhbChhcHApO1xyXG4gIGFjdGl2YXRlU3RhcnRCdXR0b24oKTtcclxuICBjcmVhdGVIb3dUb1BsYXlCdXR0b24oKTtcclxuICByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuKGFwcCk7XHJcbn07XHJcblxyXG5zZXRUaW1lb3V0KHJlbmRlckFwcCwgMjAwMCk7XHJcblxyXG4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateAttackButtons(),n.generateSwitchButtons(),n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJnYW1lSGFuZGxlciIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwiY3JlYXRlUG9rZW1vbiIsInBsYXllciIsImltYWdlQXJlYSIsIm5hbWVBcmVhIiwicG9rZW1vbk5hbWUiLCJnZXRBY3RpdmVQb2tlbW9uIiwic2V0QXR0cmlidXRlIiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwiY3VycmVudFBsYXllciIsInBsYXllck9uZVVuZGVybGluZUFyZWEiLCJwbGF5ZXJUd29VbmRlcmxpbmVBcmVhIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiY3JlYXRlSFBCYXJzIiwiY3JlYXRlQmFyIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJwbGF5ZXJPbmVIUEJhciIsInBsYXllclR3b0hQQmFyIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMiLCJwbGF5ZXJQb2tlYmFsbHMiLCJpIiwiYWxpdmVQb2tlbW9ucyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJtYWdpY0Z1bmN0aW9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImZ1bmN0aW9uVG9DYWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJpbm5lclRleHQiLCJzd2l0Y2hQbGF5ZXIiLCJzZXRUaW1lb3V0IiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiZ2VuZXJhdGVBY3Rpb25CdXR0b25zIiwiYW5pbWF0aW9uQnV0dG9uc0V4aXQiLCJhbmltYXRpb25CdXR0b25zRW50cnkiLCJhbmltYXRpb24iLCJhbmltYXRpb25EZWxheSIsInN3aXRjaFBva2UiLCJldmVudCIsIm5hbWVPZkNob3NlblBva2Vtb24iLCJjdXJyZW50VGFyZ2V0Iiwic3dpdGNoUG9rZW1vbiIsImVhdE1hbmdvIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsInVzZU1hbmdvIiwiaW5uZXJIVE1MIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbmRleE9mQWN0aXZlUG9rZW1vbiIsImZpbmRJbmRleCIsImJhdHRsZUJ1dHRvbnMiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGFzTWFuZ28iLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uT25lIiwic3dpdGNoQnV0dG9uVHdvIiwibm90QWN0aXZlUG9rZW1vbnMiLCJzdGFydEdhbWVJZlJlYWR5IiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwicGxheWVyT25lTmFtZSIsInBsYXllclR3b05hbWUiLCJjcmVhdGVQbGF5ZXJGaWdodE5hbWVzIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImZhY3RvcnkiLCJjbGlja2VkUG9rZW1vbiIsInRhcmdldCIsImlkIiwibmV3UG9rZW1vbk9iamVjdCIsImFkZFBva2Vtb24iLCJjdXJzb3IiLCJmaWx0ZXIiLCJhZGRDaG9zZW5Qb2tlbW9uIiwicGxheWVyTGFzdFBva2Vtb25OYW1lIiwiY3JlYXRlUG9rZWJhbGxzIiwib25jZSIsImNyZWF0ZVBva2Vtb25zIiwiX2luZGV4T2ZBY3RpdmVQb2tlbW9uIiwiX2hhc01hbmdvIiwibnVtT2ZBY3RpdmVQb2tlbW9uIiwiYWN0aXZhdGVTdGFydCIsIm5hbWUxSW5wdXQiLCJuYW1lMklucHV0Iiwic3RhcnRCdXR0b24iLCJ2YWx1ZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEs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aW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2hvd01vZGFsID0gKFxyXG4gIHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQsXHJcbiAgc3RhcnRpbmdQb3NpdGlvbjogc3RyaW5nXHJcbikgPT4ge1xyXG4gIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gc3RhcnRpbmdQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBoaWRlTW9kYWwgPSAoc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGV4aXRCdXR0b24gPSBzY3JlZW5Ub0Rpc3BsYXkucXVlcnlTZWxlY3RvcihcIi5leGl0QnV0dG9uXCIpO1xyXG4gIGV4aXRCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lID0gKGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHdob0Nob29zZXNQb2tlbW9uVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjd2hvQ2hvb3Nlc1BhcmFncmFwaFwiKSE7XHJcbiAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gM1xyXG4gICAgPyAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gXCJXYWl0IGZvciB0aGUgZ2FtZSB0byBzdGFydC4uLlwiKVxyXG4gICAgOiAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gYCR7YWN0aXZlUGxheWVyLm5hbWV9IGNob29zZXMgMSBwb2tlbW9uYCk7XHJcbn07XHJcbiIsImV4cG9ydCB0eXBlIFBva2Vtb25UeXBlID1cclxuICB8IFwiZ3Jhc3NcIlxyXG4gIHwgXCJwb2lzb25cIlxyXG4gIHwgXCJmaXJlXCJcclxuICB8IFwid2F0ZXJcIlxyXG4gIHwgXCJidWdcIlxyXG4gIHwgXCJub3JtYWxcIlxyXG4gIHwgXCJmbHlpbmdcIlxyXG4gIHwgXCJlbGVjdHJpY1wiXHJcbiAgfCBcImdyb3VuZFwiXHJcbiAgfCBcImZhaXJ5XCJcclxuICB8IFwicHN5Y2hpY1wiXHJcbiAgfCBcImZpZ2h0aW5nXCJcclxuICB8IFwicm9ja1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb24ge1xyXG5cclxuICByZWFkb25seSBfbmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9pbWFnZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9tYXhIUDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRIUDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9hdHRhY2tQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfZGVmZW5zZVBvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF90eXBlczogUG9rZW1vblR5cGVbXTtcclxuICByZWFkb25seSBfbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXTtcclxuXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBpbWFnZTogc3RyaW5nLCBtYXhIUDogbnVtYmVyLCBhdHRhY2tQb2ludHM6IG51bWJlcixcclxuICAgIGRlZmVuc2VQb2ludHM6IG51bWJlciwgdHlwZXM6IFBva2Vtb25UeXBlW10sIG1vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W10pIHtcclxuXHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX2ltYWdlID0gaW1hZ2U7XHJcbiAgICB0aGlzLl9tYXhIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9hdHRhY2tQb2ludHMgPSBhdHRhY2tQb2ludHM7XHJcbiAgICB0aGlzLl9kZWZlbnNlUG9pbnRzID0gZGVmZW5zZVBvaW50cztcclxuICAgIHRoaXMuX3R5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLl9tb3ZlcyA9IG1vdmVzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIHN1YnRyYWN0SFAocG9pbnRzVG9TdWJ0cmFjdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdIUCA9IHRoaXMuX2N1cnJlbnRIUCAtIHBvaW50c1RvU3VidHJhY3Q7XHJcbiAgICBpZiAobmV3SFAgPCAwKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRIUCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBuZXdIUDtcclxuICB9XHJcblxyXG4gIGhlYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIGdldCBhdHRhY2tQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXR0YWNrUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmVuc2VQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmZW5zZVBvaW50cztcclxuICB9XHJcblxyXG4gIGdldCB0eXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlcztcclxuICB9XHJcblxyXG4gIGdldCBtb3ZlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb3ZlcztcclxuICB9XHJcblxyXG4gIGlzQWxpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQID4gMDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcbmltcG9ydCB7IFBva2Vtb25UeXBlIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbkZhY3Rvcnkge1xyXG4gICAgcmVhZG9ubHkgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocG9rZURhdGE6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7IHR5cGVzOiBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0czogeyBocDogbnVtYmVyOyBhdHRhY2s6IG51bWJlcjsgZGVmZW5zZTogbnVtYmVyOyB9O1xyXG4gICAgICAgIG1vdmVzOiB7IG5hbWU6IHN0cmluZzsgYWNjdXJhY3k6IG51bWJlcjsgcG93ZXI6IG51bWJlcjsgdHlwZTogc3RyaW5nOyB9W11cclxuICAgIH1bXSkge1xyXG4gICAgICAgIHRoaXMuX3Bva2Vtb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IHBva2Vtb24gb2YgcG9rZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VJbWcgPSBcIi4uL2Fzc2V0cy9cIiArIHBva2Vtb24ubmFtZSArIFwiLnBuZ1wiXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlTW92ZXMgPSBwb2tlbW9uLm1vdmVzLnJlZHVjZSggKHRhYiwgbW92ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFiLnB1c2goe21vdmVOYW1lOiBtb3ZlLm5hbWUsIG1vdmVUeXBlOiBtb3ZlLnR5cGUgYXMgUG9rZW1vblR5cGV9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYlxyXG4gICAgICAgICAgICAgICAgfSwgW10gYXMge21vdmVOYW1lOiBzdHJpbmcsIG1vdmVUeXBlOiBQb2tlbW9uVHlwZX1bXSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VUeXBlczogUG9rZW1vblR5cGVbXSA9IHBva2Vtb24udHlwZXMubWFwKHYgPT4gdiBhcyBQb2tlbW9uVHlwZSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2Vtb25PYmplY3QgPSBuZXcgUG9rZW1vbih0aGlzLl9jYXBpdGFsaXplKHBva2Vtb24ubmFtZSksIHBva2VJbWcsIFxyXG4gICAgICAgICAgICAgICAgcG9rZW1vbi5zdGF0cy5ocCwgcG9rZW1vbi5zdGF0cy5hdHRhY2ssIHBva2Vtb24uc3RhdHMuZGVmZW5zZSxcclxuICAgICAgICAgICAgICAgIHBva2VUeXBlcywgcG9rZU1vdmVzKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uT2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb2tlbW9uQnlOYW1lKG5hbWU6IHN0cmluZyk6IFBva2Vtb24ge1xyXG4gICAgICAgIGNvbnN0IHBva2Vtb24gPSB0aGlzLl9wb2tlbW9ucy5maW5kKCBwb2tlbW9uID0+IHBva2Vtb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChwb2tlbW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2tlbW9uICR7bmFtZX0gaXMgbm90IGZvdW5kIGluIHRoZSBwb2tlbW9uIGZhY3RvcnlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9rZW1vblxyXG4gICAgfVxyXG5cclxuICAgIF9jYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICApID0+IHtcclxuICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICBuYW1lQXJlYS50ZXh0Q29udGVudCA9IHBva2Vtb25OYW1lO1xyXG4gIH07XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllck9uZSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG4gIGNyZWF0ZVBva2Vtb24oXHJcbiAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhY3RpdmVQbGF5ZXJBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2FjdGl2ZS1wbGF5ZXItaW5mb1wiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBhY3RpdmVQbGF5ZXJBcmVhLnRleHRDb250ZW50ID0gYCR7Z2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lfSBub3cgaXMgeW91ciB0dXJuLiBHZXQgdGhlIHJldmVuZ2UhYDtcclxuICBjb25zdCBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjFcIik7XHJcbiAgY29uc3QgcGxheWVyVHdvVW5kZXJsaW5lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyXCIpO1xyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyID09PSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUpIHtcclxuICAgIHBsYXllclR3b1VuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVBsYXllclwiKTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUhQQmFycyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBjcmVhdGVCYXIgPSAocGxheWVyOiBQbGF5ZXIsIEhQQmFyOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbWF4SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5tYXhIUDtcclxuICAgIGNvbnN0IGN1cnJlbnRIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLmN1cnJlbnRIUDtcclxuICAgIGNvbnN0IEhQSW5QZXJjZW50ID0gKGN1cnJlbnRIUCAvIG1heEhQKSAqIDEwMDtcclxuICAgIGNvbnNvbGUubG9nKEhQSW5QZXJjZW50KTtcclxuICAgIEhQQmFyLnN0eWxlLndpZHRoID0gYCR7SFBJblBlcmNlbnR9JWA7XHJcbiAgICBsZXQgSFBDbGFzc0xpc3QgPSBIUEJhci5jbGFzc0xpc3Q7XHJcbiAgICBpZiAoSFBJblBlcmNlbnQgPCAyMCkge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlQmFyKHBsYXllck9uZSwgcGxheWVyT25lSFBCYXIpO1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJUd28sIHBsYXllclR3b0hQQmFyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMjsgaSA+IHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCAtIDE7IGktLSkge1xyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoXHJcbiAgLy9wbGF5ZXI6IFBsYXllcixcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ29CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcblxyXG4gIGF0dGFja0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYmF0dGxlQnV0dG9ucyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9KTtcclxuICBzd2l0Y2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLmhhc01hbmdvKSB7XHJcbiAgICBtYWdpY0Z1bmN0aW9uKG1hbmdvQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgZWF0TWFuZ28pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBtYW5nby5pbm5lckhUTUwgPSBcIjBcIjtcclxuICAgIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBhdHRhY2spO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihzd2l0Y2hCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIHN3aXRjaFBva2UpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuY29uc3QgbWFnaWNGdW5jdGlvbiA9IChcclxuICBidXR0b246IEhUTUxEaXZFbGVtZW50LFxyXG4gIGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcixcclxuICBmdW5jdGlvblRvQ2FsbD86IGFueVxyXG4pID0+IHtcclxuICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhgJHtidXR0b24uaW5uZXJUZXh0fSB1c2VkIWApO1xyXG4gICAgaWYgKGZ1bmN0aW9uVG9DYWxsKSB7XHJcbiAgICAgIGZ1bmN0aW9uVG9DYWxsKGdhbWVIYW5kbGVyLCBlKTtcclxuICAgICAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgICAgIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgICAgIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgICAgIGdhbWVIYW5kbGVyLnN3aXRjaFBsYXllcigpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlQXR0YWNrQnV0dG9ucygpO1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZVN3aXRjaEJ1dHRvbnMoKTtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJ1dHRvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0VudHJ5ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtaW4taG9yLWNlbnRlciAwLjVzIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgYm90aFwiO1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb25EZWxheSA9IGAke2kgKiAwLjE1fXNgO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkJ1dHRvbnNFeGl0ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtb3V0LWhvcml6b250YWwgMC41cyBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDg1LCAwLjY4MCwgMC41MzApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYDtcclxuICB9XHJcbn07XHJcblxyXG4vLyBmdW5jaW9ucyBqdXN0IGZvciBjaGVjayBpZiBpdHMgd29ya3Mgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggZ2FtZUhhbmRsZXIgPiB1c2UgYXR0YWNrIG9yIHN3aXRjaCBQb2tlbW9uIGZ1bmN0aW9uc1xyXG5cclxuY29uc3QgYXR0YWNrID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiYnVtIGJ1bSBiYWNoIVwiKTtcclxufTtcclxuXHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLCBldmVudDogRXZlbnQpID0+IHtcclxuICBjb25zdCBuYW1lT2ZDaG9zZW5Qb2tlbW9uID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAudGV4dENvbnRlbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuc3dpdGNoUG9rZW1vbihuYW1lT2ZDaG9zZW5Qb2tlbW9uISk7XHJcbn07XHJcblxyXG5jb25zdCBlYXRNYW5nbyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBtYW5nb0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29CdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb1wiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci51c2VNYW5nbygpO1xyXG4gIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHtcclxuICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyLFxyXG59IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFBsYXllcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPVxyXG4gICAgICB0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmVcclxuICAgICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUG9rZW1vbihwb2tlbW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UGxheWVyLmluZGV4T2ZBY3RpdmVQb2tlbW9uID0gdGhpcy5fY3VycmVudFBsYXllci5wb2tlbW9ucy5maW5kSW5kZXgoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgPT09IHBva2Vtb25OYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTdGFydCAtIGFjdGlvbiBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUF0dGFja0J1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIkF0dGFjayBjaG9vc2UgbW9kYWxcIik7XHJcbiAgICBjb25zdCBhY3Rpb25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FjdGlvbk1vZGFsc1wiKSE7XHJcbiAgICBhY3Rpb25Db250YWluZXIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25PbmVcIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzBdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBzdGFydEJhdHRsZSB9IGZyb20gXCIuLi9maWdodFBhZ2Uvc3RhcnRCYXR0bGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRHYW1lSWZSZWFkeSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBpZiAocGxheWVyT25lLnBva2Vtb25zLmxlbmd0aCA8IDMgfHwgcGxheWVyVHdvLnBva2Vtb25zLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBzdGFydEJhdHRsZShwbGF5ZXJPbmUsIHBsYXllclR3bywgYXBwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlIH0gZnJvbSBcIi4vcmVuZGVyRmlnaHRQYWdlXCI7XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRCYXR0bGUgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYXBwOiBIVE1MRGl2RWxlbWVudFxyXG4pID0+IHtcclxuICBjb25zdCBnYW1lID0gbmV3IEdhbWVIYW5kbGVyKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBzZXRUaW1lb3V0KCgpID0+IGNyZWF0ZUZpZ2h0UGFnZShhcHAsIGdhbWUpLCAyMDAwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUG9rZW1vbiB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUhQQmFycyB9IGZyb20gXCIuL2NyZWF0ZUhQQmFyc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHNcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyT25lTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjEtbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjItbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgcGxheWVyT25lTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllck9uZS5uYW1lO1xyXG4gIHBsYXllclR3b05hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJUd28ubmFtZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2UgPSAoXHJcbiAgYXBwRGl2OiBIVE1MRGl2RWxlbWVudCxcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmlnaHRQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gZmlnaHRQYWdlLmlubmVySFRNTDtcclxuICBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBva2Vtb24oZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAvLyBnZW5lcmF0ZSBjaG9vc2UgYWN0aW9uIGJ1dHRvbnNcclxuICBnYW1lSGFuZGxlci5nZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBsYXllck5hbWVzIH0gZnJvbSBcIi4vY3JlYXRlUGxheWVyTmFtZXNcIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZW1vbnMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlbW9uc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNob29zZVBhZ2UgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IGFjdGl2ZVBsYXllciA9IHBsYXllck9uZTtcclxuICBjcmVhdGVQbGF5ZXJOYW1lcyhwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gIGNyZWF0ZVBva2Vtb25zKHBsYXllck9uZSwgcGxheWVyVHdvLCBhY3RpdmVQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQbGF5ZXJOYW1lcyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgcGxheWVyT25lTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMU5hbWVcIikhO1xyXG4gIHBsYXllck9uZU5hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllck9uZS5uYW1lO1xyXG4gIGxldCBwbGF5ZXJUd29OYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIyTmFtZVwiKSE7XHJcbiAgcGxheWVyVHdvTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyVHdvLm5hbWU7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgKiBhcyBkYXRhIGZyb20gXCIuLi8uLi9hc3NldHMvcG9rZV9kYXRhLmpzb25cIjtcclxuaW1wb3J0IHsgc3RhcnRHYW1lSWZSZWFkeSB9IGZyb20gXCIuL3N0YXJ0R2FtZUlmUmVhZHlcIjtcclxuaW1wb3J0IHsgYWRkQ2hvc2VuUG9rZW1vbiB9IGZyb20gXCIuL2FkZENob3NlblBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlUG9rZWJhbGxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZW1vbnMgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgcG9rZURhdGEgPSBkYXRhLnBva2Vtb25zO1xyXG4gIGNvbnN0IHBva2Vtb25GYWN0b3J5ID0gbmV3IFBva2Vtb25GYWN0b3J5KHBva2VEYXRhKTtcclxuICBjb25zdCBwb2tlbW9uSW1hZ2VzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjcG9rZW1vbkxpc3QgaW1nXCIpXHJcbiAgKSBhcyBbSFRNTEltYWdlRWxlbWVudF07XHJcblxyXG4gIHBva2Vtb25JbWFnZXMuZm9yRWFjaCgocG9rZW1vbkltYWdlKSA9PlxyXG4gICAgcG9rZW1vbkltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwiY2xpY2tcIixcclxuICAgICAgKGUpID0+IHtcclxuICAgICAgICBpZiAoYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gMykgcmV0dXJuO1xyXG4gICAgICAgIGFkZENob3NlblBva2Vtb24oZSwgcG9rZW1vbkZhY3RvcnksIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgY3JlYXRlUG9rZWJhbGxzKHBsYXllck9uZSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICAvLyBjaGFuZ2UgcGxheWVyXHJcbiAgICAgICAgYWN0aXZlUGxheWVyID0gYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmUgPyBwbGF5ZXJUd28gOiBwbGF5ZXJPbmU7XHJcbiAgICAgICAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIHN0YXJ0R2FtZUlmUmVhZHkocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi4vcG9rZW1vbkNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENob3NlblBva2Vtb24gPSAoXHJcbiAgZXZlbnQ6IEV2ZW50LFxyXG4gIGZhY3Rvcnk6IFBva2Vtb25GYWN0b3J5LFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGNsaWNrZWRQb2tlbW9uID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcG9rZW1vbk5hbWUgPSBjbGlja2VkUG9rZW1vbi5pZDtcclxuICBjb25zdCBuZXdQb2tlbW9uT2JqZWN0OiBQb2tlbW9uID0gZmFjdG9yeS5nZXRQb2tlbW9uQnlOYW1lKHBva2Vtb25OYW1lKTtcclxuICBhY3RpdmVQbGF5ZXIuYWRkUG9rZW1vbihuZXdQb2tlbW9uT2JqZWN0KTtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5maWx0ZXIgPSBcImdyYXlzY2FsZSgxMDAlKVwiO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlYmFsbHMgPSAocGxheWVyT25lOiBQbGF5ZXIsIGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W10gPVxyXG4gICAgYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmVcclxuICAgICAgPyBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjEgaW1nXCIpKVxyXG4gICAgICA6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMiBpbWdcIikpO1xyXG4gIGNvbnN0IHBsYXllckxhc3RQb2tlbW9uTmFtZTogc3RyaW5nID0gYWN0aXZlUGxheWVyLnBva2Vtb25zW1xyXG4gICAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDFcclxuICBdLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBudW1iZXJPZkxhc3RQb2tlbW9uOiBudW1iZXIgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMTtcclxuICBwbGF5ZXJQb2tlYmFsbHNbbnVtYmVyT2ZMYXN0UG9rZW1vbl0uc2V0QXR0cmlidXRlKFxyXG4gICAgXCJzcmNcIixcclxuICAgIGAuL2Fzc2V0cy8ke3BsYXllckxhc3RQb2tlbW9uTmFtZX0ucG5nYFxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQbGF5ZXIge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG4gIHByaXZhdGUgX2luZGV4T2ZBY3RpdmVQb2tlbW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGFzTWFuZ286IEJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwb2tlbW9uczogUG9rZW1vbltdKSB7XHJcbiAgICBpZiAobmFtZS5sZW5ndGggPiA4KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBsb25nIG5hbWVcIik7XHJcbiAgICB9XHJcbiAgICBpZiAocG9rZW1vbnMubGVuZ3RoID4gMykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBudW1iZXIgb2YgcG9rZW1vbnNcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX3Bva2Vtb25zID0gcG9rZW1vbnM7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IDA7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG4gIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZGV4T2ZBY3RpdmVQb2tlbW9uKG51bU9mQWN0aXZlUG9rZW1vbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IG51bU9mQWN0aXZlUG9rZW1vbjtcclxuICB9XHJcbiAgZ2V0IGdldEFjdGl2ZVBva2Vtb24oKTogUG9rZW1vbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNbdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb25dO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaXZlUG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIGNvbnN0IGFsaXZlUG9rZW1vbnNUYWI6IFBva2Vtb25bXSA9IHRoaXMucG9rZW1vbnMuZmlsdGVyKChwb2tlbW9uKSA9PlxyXG4gICAgICBwb2tlbW9uLmlzQWxpdmUoKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGl2ZVBva2Vtb25zVGFiO1xyXG4gIH1cclxuXHJcbiAgdXNlTWFuZ28oKTogdm9pZCB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5faGFzTWFuZ28pXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgdXNlIG1hbmdvLiBZb3UgdXNlIGFsbCBtYW5nb3NcIik7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVQb2tlbW9uLmhlYWwoKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNNYW5nbygpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNNYW5nbztcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcblxyXG4gIGdldCBub3RBY3RpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9rZW1vbnMuZmlsdGVyKFxyXG4gICAgICAocG9rZW1vbikgPT4gcG9rZW1vbi5uYW1lICE9PSB0aGlzLmdldEFjdGl2ZVBva2Vtb24ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxCdXR0b25FbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA8PSA4ICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoIDw9IDgpIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/src/fightPage/buttonsEventListeners.ts b/src/fightPage/buttonsEventListeners.ts index caf22c7..99de1a2 100644 --- a/src/fightPage/buttonsEventListeners.ts +++ b/src/fightPage/buttonsEventListeners.ts @@ -1,102 +1,141 @@ import { Player } from "../playerClass"; import { GameHandler } from "../gameHandlerClass"; - - -export const actionsButtonEventListener = (player: Player, gameHandler: GameHandler) => { - - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; - const attackButton = document.querySelector("#attackButton")! as HTMLDivElement; - const switchButton = document.querySelector("#switchButton")! as HTMLDivElement; +import { createActivePokemon } from "./createActivePokemon"; +import { createActivePlayer } from "./createActivePlayer"; +import { createHPBars } from "./createHPBars"; +import { createFightPagePokeballs } from "./createFightPagePokeballs"; + +export const actionsButtonEventListener = ( + //player: Player, + gameHandler: GameHandler +) => { + const battleButtons = document.getElementsByClassName( + "battleButton" + )! as HTMLCollectionOf; + const attackButton = document.querySelector( + "#attackButton" + )! as HTMLDivElement; + const switchButton = document.querySelector( + "#switchButton" + )! as HTMLDivElement; const mangoButton = document.querySelector("#mangoButton")! as HTMLDivElement; const mango = document.querySelector("#mango")! as HTMLDivElement; animationButtonsEntry(battleButtons); - attackButton.addEventListener('click', () => { + attackButton.addEventListener("click", () => { animationButtonsExit(battleButtons); - setTimeout( ()=> { - gameHandler.generateAttackButtons(player); + setTimeout(() => { + gameHandler.generateAttackButtons(); }, 1000); }); - switchButton.addEventListener('click', () => { + switchButton.addEventListener("click", () => { animationButtonsExit(battleButtons); - setTimeout( ()=> { - gameHandler.generateSwitchButtons(player); + setTimeout(() => { + gameHandler.generateSwitchButtons(); }, 1000); }); - if(true) { //gameHandler.canUseMango() - mangoButton.addEventListener('click', () => { - //gameHandler.useMango(); - console.log('mango used! mnia mnia mnia...'); //needs to be deleted - mango.innerHTML = "0"; - mangoButton.classList.add("disabledButton"); - }); + if (gameHandler.currentPlayer.hasMango) { + magicFunction(mangoButton, battleButtons, gameHandler, eatMango); } else { mango.innerHTML = "0"; mangoButton.classList.add("disabledButton"); } -} - -export const attacksButtonEventListener = (player: Player, gameHandler: GameHandler) => { - - const attackButtonOne = document.querySelector("#attackButtonOne")! as HTMLDivElement; - const attackButtonTwo = document.querySelector("#attackButtonTwo")! as HTMLDivElement; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; +}; + +export const attacksButtonEventListener = (gameHandler: GameHandler) => { + const attackButtonOne = document.querySelector( + "#attackButtonOne" + )! as HTMLDivElement; + const attackButtonTwo = document.querySelector( + "#attackButtonTwo" + )! as HTMLDivElement; + const battleButtons = document.getElementsByClassName( + "battleButton" + )! as HTMLCollectionOf; const backButton = document.querySelector("#backButton")! as HTMLDivElement; animationButtonsEntry(battleButtons); - - magicFunction(attackButtonOne, battleButtons, player, gameHandler, attack); - magicFunction(attackButtonTwo, battleButtons, player, gameHandler, attack); - magicFunction(backButton, battleButtons, player, gameHandler); - } - - export const switchButtonEventListener = (player: Player, gameHandler: GameHandler) => { - - const switchButtonOne = document.querySelector("#switchButtonOne")! as HTMLDivElement; - const switchButtonTwo = document.querySelector("#switchButtonTwo")! as HTMLDivElement; - const battleButtons = document.getElementsByClassName("battleButton")! as HTMLCollectionOf; + magicFunction(attackButtonOne, battleButtons, gameHandler, attack); + magicFunction(attackButtonTwo, battleButtons, gameHandler, attack); + magicFunction(backButton, battleButtons, gameHandler); +}; + +export const switchButtonEventListener = (gameHandler: GameHandler) => { + const switchButtonOne = document.querySelector( + "#switchButtonOne" + )! as HTMLDivElement; + const switchButtonTwo = document.querySelector( + "#switchButtonTwo" + )! as HTMLDivElement; + const battleButtons = document.getElementsByClassName( + "battleButton" + )! as HTMLCollectionOf; const backButton = document.querySelector("#backButton")! as HTMLDivElement; - animationButtonsEntry(battleButtons) - - magicFunction(switchButtonOne, battleButtons, player, gameHandler, switchPoke); - magicFunction(switchButtonTwo, battleButtons, player, gameHandler, switchPoke); - magicFunction(backButton, battleButtons, player, gameHandler); -} - + animationButtonsEntry(battleButtons); -const magicFunction = (button: HTMLDivElement, buttons: HTMLCollectionOf, player: Player, gameHandler: GameHandler, functionToCall?: any) => { - button.addEventListener('click', () => { + magicFunction(switchButtonOne, battleButtons, gameHandler, switchPoke); + magicFunction(switchButtonTwo, battleButtons, gameHandler, switchPoke); + magicFunction(backButton, battleButtons, gameHandler); +}; + +const magicFunction = ( + button: HTMLDivElement, + buttons: HTMLCollectionOf, + gameHandler: GameHandler, + functionToCall?: any +) => { + button.addEventListener("click", (e) => { console.log(`${button.innerText} used!`); - if (functionToCall) { functionToCall(); } // ?? - setTimeout( ()=> { - gameHandler.generateActionButtons(player); + if (functionToCall) { + functionToCall(gameHandler, e); + createActivePokemon(gameHandler); + createHPBars(gameHandler.playerOne, gameHandler.playerTwo); + createFightPagePokeballs(gameHandler); + gameHandler.switchPlayer(); + createActivePlayer(gameHandler); + } + setTimeout(() => { + gameHandler.generateAttackButtons(); + gameHandler.generateSwitchButtons(); + gameHandler.generateActionButtons(); }, 1000); - //also change player function animationButtonsExit(buttons); - } ); -} + }); +}; const animationButtonsEntry = (buttons: HTMLCollectionOf) => { - for(let i = 0; i < buttons.length; i++) { - buttons[i].style.animation = "scale-in-hor-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both"; - buttons[i].style.animationDelay = `${i * 0.15}s` + for (let i = 0; i < buttons.length; i++) { + buttons[i].style.animation = + "scale-in-hor-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both"; + buttons[i].style.animationDelay = `${i * 0.15}s`; } -} +}; const animationButtonsExit = (buttons: HTMLCollectionOf) => { - for(let i = 0; i < buttons.length; i++) { - buttons[i].style.animation = "scale-out-horizontal 0.5s cubic-bezier(0.550, 0.085, 0.680, 0.530) both"; - buttons[i].style.animationDelay = `${i * 0.15}s` + for (let i = 0; i < buttons.length; i++) { + buttons[i].style.animation = + "scale-out-horizontal 0.5s cubic-bezier(0.550, 0.085, 0.680, 0.530) both"; + buttons[i].style.animationDelay = `${i * 0.15}s`; } -} +}; -// funcions just for check if its works should be replaced with gameHandler > use attack or switch Pokemon functions -const attack = () => { - console.log('bum bum bach!'); -} -const switchPoke = () => { - console.log('puff!'); -} \ No newline at end of file +const attack = (gameHandler: GameHandler) => { + console.log("bum bum bach!"); +}; + +const switchPoke = (gameHandler: GameHandler, event: Event) => { + const nameOfChosenPokemon = (event.currentTarget as HTMLDivElement) + .textContent; + gameHandler.switchPokemon(nameOfChosenPokemon!); +}; + +const eatMango = (gameHandler: GameHandler) => { + const mangoButton = document.querySelector("#mangoButton")! as HTMLDivElement; + const mango = document.querySelector("#mango")! as HTMLDivElement; + gameHandler.currentPlayer.useMango(); + mango.innerHTML = "0"; + mangoButton.classList.add("disabledButton"); +}; diff --git a/src/fightPage/createActivePlayer.ts b/src/fightPage/createActivePlayer.ts index a46624b..e923c40 100644 --- a/src/fightPage/createActivePlayer.ts +++ b/src/fightPage/createActivePlayer.ts @@ -5,4 +5,13 @@ export const createActivePlayer = (gameHandler: GameHandler) => { "#active-player-info" ) as HTMLDivElement; activePlayerArea.textContent = `${gameHandler.currentPlayer.name} now is your turn. Get the revenge!`; + const playerOneUnderlineArea = document.querySelector("#fight-page-player1"); + const playerTwoUnderlineArea = document.querySelector("#fight-page-player2"); + if (gameHandler.currentPlayer === gameHandler.playerOne) { + playerTwoUnderlineArea?.classList.remove("activePlayer"); + playerOneUnderlineArea?.classList.add("activePlayer"); + } else { + playerOneUnderlineArea?.classList.remove("activePlayer"); + playerTwoUnderlineArea?.classList.add("activePlayer"); + } }; diff --git a/src/fightPage/createActivePokemon.ts b/src/fightPage/createActivePokemon.ts index af1dfd5..dbf7447 100644 --- a/src/fightPage/createActivePokemon.ts +++ b/src/fightPage/createActivePokemon.ts @@ -2,35 +2,35 @@ import { Player } from "../playerClass"; import { GameHandler } from "../gameHandlerClass"; export const createActivePokemon = (gameHandler: GameHandler) => { - const playerOneActivePokemonImageArea = document.querySelector( - "#pokemon-image-player1" - ) as HTMLImageElement; - const playerTwoActivePokemonImageArea = document.querySelector( - "#pokemon-image-player2" - ) as HTMLImageElement; - const playerOneActivePokemonNameArea = document.querySelector( - "#pokemon-name-player1" - ) as HTMLHeadingElement; - const playerTwoActivePokemonNameArea = document.querySelector( - "#pokemon-name-player2" - ) as HTMLHeadingElement; - const createPokemon = ( - player: Player, - imageArea: HTMLImageElement, - nameArea: HTMLHeadingElement - ) => { - const pokemonName = player.getActivePokemon.name; - imageArea.setAttribute("src", `./assets/${pokemonName.toLowerCase()}.png`); - nameArea.textContent = pokemonName; - }; - createPokemon( - gameHandler.playerOne, - playerOneActivePokemonImageArea, - playerOneActivePokemonNameArea - ); - createPokemon( - gameHandler.playerTwo, - playerTwoActivePokemonImageArea, - playerTwoActivePokemonNameArea - ); - }; \ No newline at end of file + const playerOneActivePokemonImageArea = document.querySelector( + "#pokemon-image-player1" + ) as HTMLImageElement; + const playerTwoActivePokemonImageArea = document.querySelector( + "#pokemon-image-player2" + ) as HTMLImageElement; + const playerOneActivePokemonNameArea = document.querySelector( + "#pokemon-name-player1" + ) as HTMLHeadingElement; + const playerTwoActivePokemonNameArea = document.querySelector( + "#pokemon-name-player2" + ) as HTMLHeadingElement; + const createPokemon = ( + player: Player, + imageArea: HTMLImageElement, + nameArea: HTMLHeadingElement + ) => { + const pokemonName = player.getActivePokemon.name; + imageArea.setAttribute("src", `./assets/${pokemonName.toLowerCase()}.png`); + nameArea.textContent = pokemonName; + }; + createPokemon( + gameHandler.playerOne, + playerOneActivePokemonImageArea, + playerOneActivePokemonNameArea + ); + createPokemon( + gameHandler.playerTwo, + playerTwoActivePokemonImageArea, + playerTwoActivePokemonNameArea + ); +}; diff --git a/src/fightPage/createFightPagePokeballs.ts b/src/fightPage/createFightPagePokeballs.ts index 9e3a57c..32bb79c 100644 --- a/src/fightPage/createFightPagePokeballs.ts +++ b/src/fightPage/createFightPagePokeballs.ts @@ -2,20 +2,20 @@ import { Player } from "../playerClass"; import { GameHandler } from "../gameHandlerClass"; export const createFightPagePokeballs = (gameHandler: GameHandler) => { - const changeClassOfDisabledPokemons = ( - player: Player, - playerPokeballs: HTMLImageElement[] - ) => { - for (let i = 2; i > player.alivePokemons.length - 1; i--) { - playerPokeballs[i].classList.add("disabledPokemon"); - } - }; - const playerOnePokeballs = Array.from( - document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon") - ) as HTMLImageElement[]; - const playerTwoPokeballs = Array.from( - document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon") - ) as HTMLImageElement[]; - changeClassOfDisabledPokemons(gameHandler.playerOne, playerOnePokeballs); - changeClassOfDisabledPokemons(gameHandler.playerTwo, playerTwoPokeballs); - }; \ No newline at end of file + const changeClassOfDisabledPokemons = ( + player: Player, + playerPokeballs: HTMLImageElement[] + ) => { + for (let i = 2; i > player.alivePokemons.length - 1; i--) { + playerPokeballs[i].classList.add("disabledPokemon"); + } + }; + const playerOnePokeballs = Array.from( + document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon") + ) as HTMLImageElement[]; + const playerTwoPokeballs = Array.from( + document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon") + ) as HTMLImageElement[]; + changeClassOfDisabledPokemons(gameHandler.playerOne, playerOnePokeballs); + changeClassOfDisabledPokemons(gameHandler.playerTwo, playerTwoPokeballs); +}; diff --git a/src/fightPage/renderFightPage.ts b/src/fightPage/renderFightPage.ts index 3213a53..6bf9505 100644 --- a/src/fightPage/renderFightPage.ts +++ b/src/fightPage/renderFightPage.ts @@ -30,5 +30,5 @@ export const createFightPage = ( createHPBars(gameHandler.playerOne, gameHandler.playerTwo); createFightPagePokeballs(gameHandler); // generate choose action buttons - gameHandler.generateActionButtons(gameHandler.currentPlayer); + gameHandler.generateActionButtons(); }; diff --git a/src/gameHandlerClass.ts b/src/gameHandlerClass.ts index a9eb54f..f8d194a 100644 --- a/src/gameHandlerClass.ts +++ b/src/gameHandlerClass.ts @@ -1,5 +1,9 @@ import { Player } from "./playerClass"; -import { actionsButtonEventListener, attacksButtonEventListener, switchButtonEventListener } from "./fightPage/buttonsEventListeners"; +import { + actionsButtonEventListener, + attacksButtonEventListener, + switchButtonEventListener, +} from "./fightPage/buttonsEventListeners"; export class GameHandler { constructor( @@ -9,7 +13,7 @@ export class GameHandler { private _currentPlayer: Player = this._playerOne; - get playerOne () { + get playerOne() { return this._playerOne; } @@ -45,33 +49,49 @@ export class GameHandler { : this._playerOne; } - generateActionButtons(player: Player): void { - console.log('Start - action modal'); + switchPlayer(): void { + this._currentPlayer = + this._currentPlayer === this._playerOne + ? this._playerTwo + : this._playerOne; + } + + switchPokemon(pokemonName: string) { + this._currentPlayer.indexOfActivePokemon = this._currentPlayer.pokemons.findIndex( + (pokemon) => pokemon.name === pokemonName + ); + } + + generateActionButtons(): void { + const player = this.currentPlayer; + console.log("Start - action modal"); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = `
attack
switch
use mango (1)
`; - actionsButtonEventListener(player, this); + actionsButtonEventListener(this); } - generateAttackButtons(player: Player): void { - console.log('Attack choose modal'); + generateAttackButtons(): void { + const player = this.currentPlayer; + console.log("Attack choose modal"); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = ` -
${player.pokemons[0].moves[0].moveName}
-
${player.pokemons[0].moves[1].moveName}
+
${player.getActivePokemon.moves[0].moveName}
+
${player.getActivePokemon.moves[1].moveName}
back
`; - attacksButtonEventListener(player, this); + attacksButtonEventListener(this); } - generateSwitchButtons(player: Player): void { - console.log('Switch choose modal'); + generateSwitchButtons(): void { + const player = this.currentPlayer; + console.log("Switch choose modal"); const actionContainer = document.querySelector("#actionModals")!; actionContainer.innerHTML = ` -
${player.pokemons[1].name}
-
${player.pokemons[2].name}
+
${player.notActivePokemons[0].name}
+
${player.notActivePokemons[1].name}
back
`; - switchButtonEventListener(player, this); + switchButtonEventListener(this); } } diff --git a/src/playerClass.ts b/src/playerClass.ts index 252b01d..469c910 100644 --- a/src/playerClass.ts +++ b/src/playerClass.ts @@ -53,4 +53,10 @@ export class Player { addPokemon(pokemon: Pokemon): void { this._pokemons.push(pokemon); } + + get notActivePokemons(): Pokemon[] { + return this.pokemons.filter( + (pokemon) => pokemon.name !== this.getActivePokemon.name + ); + } } diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index ff62004..da9c9df 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -12,7 +12,7 @@ width: 100%; display: flex; justify-content: space-evenly; - + .playerDetails { display: grid; grid-template-columns: repeat(6, 1fr); @@ -20,9 +20,9 @@ justify-items: center; h2 { - font-family: 'Pokemon Solid'; + font-family: "Pokemon Solid"; font-size: 1.8rem; - letter-spacing: .2rem; + letter-spacing: 0.2rem; grid-column: span 3; } @@ -50,7 +50,6 @@ margin: 25px auto; } - .battleArea { width: 90%; @@ -75,10 +74,10 @@ align-items: center; h2 { - font-family: 'Pokemon Solid'; + font-family: "Pokemon Solid"; font-size: 1.8rem; line-height: 1; - letter-spacing: .2rem; + letter-spacing: 0.2rem; text-align: center; width: 100%; text-align: center; @@ -89,7 +88,7 @@ grid-template-columns: repeat(6, 1fr); align-items: center; justify-items: first; - + .hpBar { grid-column: span 5; width: 100%; @@ -101,10 +100,10 @@ } .hpBarHighLevel { - background-color: #0C9300; + background-color: #0c9300; } - .hpBarLowLevel{ + .hpBarLowLevel { background-color: $color-primary; } } @@ -129,38 +128,37 @@ padding: 10px; font-size: 1.6rem; overflow-y: scroll; - + p { margin: 10px auto; color: $color-text; font-weight: bold; - + &:nth-child(2n) { color: $color-primary; } } &::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0,0,0,0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 5px; background-color: transparent; } - + &::-webkit-scrollbar { width: 10px; background-color: transparent; } - + &::-webkit-scrollbar-thumb { border-radius: 5px; - box-shadow: inset 0 0 6px rgba(0,0,0,.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: $color-text; } } - + .buttonsContainer { width: 80%; } } - -} \ No newline at end of file +} diff --git a/styles/app.css b/styles/app.css index 6287830..8dd8831 100644 --- a/styles/app.css +++ b/styles/app.css @@ -434,9 +434,9 @@ html { } #fight-page .playersContainer .playerDetails h2 { - font-family: 'Pokemon Solid'; + font-family: "Pokemon Solid"; font-size: 1.8rem; - letter-spacing: .2rem; + letter-spacing: 0.2rem; grid-column: span 3; } @@ -508,10 +508,10 @@ html { } #fight-page .battleArea .pokemonDetails .pokemonInfo h2 { - font-family: 'Pokemon Solid'; + font-family: "Pokemon Solid"; font-size: 1.8rem; line-height: 1; - letter-spacing: .2rem; + letter-spacing: 0.2rem; text-align: center; width: 100%; text-align: center; @@ -542,7 +542,7 @@ html { } #fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar .hpBarHighLevel { - background-color: #0C9300; + background-color: #0c9300; } #fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar .hpBarLowLevel { diff --git a/styles/app.css.map b/styles/app.css.map index 9bc4618..349bd17 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From 353dae6e2820a451198af1a93e5c871ea3459666 Mon Sep 17 00:00:00 2001 From: mariusz-sm Date: Thu, 11 Feb 2021 19:34:38 +0100 Subject: [PATCH 35/76] Add styling for desktop devices --- index.html | 1 - styles/SASS/_fight-view.scss | 1 + styles/SASS/_responsive.scss | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index ce20792..34cbd74 100644 --- a/index.html +++ b/index.html @@ -169,7 +169,6 @@

HP:

- diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index 2393531..e31180a 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -181,6 +181,7 @@ bottom: 50%; margin-left: -40vw; margin-bottom: -20vh; + padding-top: 5vh; padding-bottom: 5vh; z-index: 2; diff --git a/styles/SASS/_responsive.scss b/styles/SASS/_responsive.scss index 9989442..9d135f3 100644 --- a/styles/SASS/_responsive.scss +++ b/styles/SASS/_responsive.scss @@ -148,9 +148,9 @@ } .popupScreenResult { - width: 40vw; - margin-left: -20vw; - max-height: 15em; + width: 50vw; + margin-left: -25vw; + max-height: 18em; min-height: 12em; .modalHeader { From a80716b8562931f1e29dce343b152de1ccd76c27 Mon Sep 17 00:00:00 2001 From: mariusz-sm Date: Thu, 11 Feb 2021 19:51:51 +0100 Subject: [PATCH 36/76] Uncomment --- index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index 34cbd74..4ed571d 100644 --- a/index.html +++ b/index.html @@ -11,7 +11,7 @@ - +
- + - + From 7d47b2989972e893cda2f4e3f1e74ddc18efe65e Mon Sep 17 00:00:00 2001 From: mariusz-sm Date: Thu, 11 Feb 2021 20:38:34 +0100 Subject: [PATCH 37/76] Add result modal functions --- src/fightPage/resultModalPopUpFunctions.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/fightPage/resultModalPopUpFunctions.ts diff --git a/src/fightPage/resultModalPopUpFunctions.ts b/src/fightPage/resultModalPopUpFunctions.ts new file mode 100644 index 0000000..b63c8b8 --- /dev/null +++ b/src/fightPage/resultModalPopUpFunctions.ts @@ -0,0 +1,22 @@ +import { GameHandler } from "../gameHandlerClass"; +import { createFightPage } from "./renderFightPage"; +import { Player } from "../playerClass"; + +export const showResultModal = ( + screenToDisplay: HTMLDivElement, + startingPosition: string + ) => { + screenToDisplay.style.display = startingPosition; + }; + +export const playAgainModal = ( + screenToDisplay: HTMLDivElement, + playerOne: Player, + playerTwo: Player) => { + const playAgainButton = screenToDisplay.querySelector(".modalPlayAgainButton"); + playAgainButton?.addEventListener("click", () => { + const app = document.querySelector("#app") as HTMLDivElement; + const game = new GameHandler(playerOne, playerTwo); + setTimeout(() => createFightPage(app, game), 2000); + }); + }; \ No newline at end of file From e01d49007a6b69882405da4df4f91d107a9b3098 Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Thu, 11 Feb 2021 21:10:42 +0100 Subject: [PATCH 38/76] delete unnecessary code --- dist/index.js | 4 ++-- src/fightPage/buttonsEventListeners.ts | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/dist/index.js b/dist/index.js index 3ffcd37..7ff03d4 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateAttackButtons(),n.generateSwitchButtons(),n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJnYW1lSGFuZGxlciIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwiY3JlYXRlUG9rZW1vbiIsInBsYXllciIsImltYWdlQXJlYSIsIm5hbWVBcmVhIiwicG9rZW1vbk5hbWUiLCJnZXRBY3RpdmVQb2tlbW9uIiwic2V0QXR0cmlidXRlIiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwiY3VycmVudFBsYXllciIsInBsYXllck9uZVVuZGVybGluZUFyZWEiLCJwbGF5ZXJUd29VbmRlcmxpbmVBcmVhIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiY3JlYXRlSFBCYXJzIiwiY3JlYXRlQmFyIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJwbGF5ZXJPbmVIUEJhciIsInBsYXllclR3b0hQQmFyIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMiLCJwbGF5ZXJQb2tlYmFsbHMiLCJpIiwiYWxpdmVQb2tlbW9ucyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJtYWdpY0Z1bmN0aW9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImZ1bmN0aW9uVG9DYWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJpbm5lclRleHQiLCJzd2l0Y2hQbGF5ZXIiLCJzZXRUaW1lb3V0IiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiZ2VuZXJhdGVBY3Rpb25CdXR0b25zIiwiYW5pbWF0aW9uQnV0dG9uc0V4aXQiLCJhbmltYXRpb25CdXR0b25zRW50cnkiLCJhbmltYXRpb24iLCJhbmltYXRpb25EZWxheSIsInN3aXRjaFBva2UiLCJldmVudCIsIm5hbWVPZkNob3NlblBva2Vtb24iLCJjdXJyZW50VGFyZ2V0Iiwic3dpdGNoUG9rZW1vbiIsImVhdE1hbmdvIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsInVzZU1hbmdvIiwiaW5uZXJIVE1MIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbmRleE9mQWN0aXZlUG9rZW1vbiIsImZpbmRJbmRleCIsImJhdHRsZUJ1dHRvbnMiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGFzTWFuZ28iLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uT25lIiwic3dpdGNoQnV0dG9uVHdvIiwibm90QWN0aXZlUG9rZW1vbnMiLCJzdGFydEdhbWVJZlJlYWR5IiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwicGxheWVyT25lTmFtZSIsInBsYXllclR3b05hbWUiLCJjcmVhdGVQbGF5ZXJGaWdodE5hbWVzIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImZhY3RvcnkiLCJjbGlja2VkUG9rZW1vbiIsInRhcmdldCIsImlkIiwibmV3UG9rZW1vbk9iamVjdCIsImFkZFBva2Vtb24iLCJjdXJzb3IiLCJmaWx0ZXIiLCJhZGRDaG9zZW5Qb2tlbW9uIiwicGxheWVyTGFzdFBva2Vtb25OYW1lIiwiY3JlYXRlUG9rZWJhbGxzIiwib25jZSIsImNyZWF0ZVBva2Vtb25zIiwiX2luZGV4T2ZBY3RpdmVQb2tlbW9uIiwiX2hhc01hbmdvIiwibnVtT2ZBY3RpdmVQb2tlbW9uIiwiYWN0aXZhdGVTdGFydCIsIm5hbWUxSW5wdXQiLCJuYW1lMklucHV0Iiwic3RhcnRCdXR0b24iLCJ2YWx1ZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEs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aW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2hvd01vZGFsID0gKFxyXG4gIHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQsXHJcbiAgc3RhcnRpbmdQb3NpdGlvbjogc3RyaW5nXHJcbikgPT4ge1xyXG4gIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gc3RhcnRpbmdQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBoaWRlTW9kYWwgPSAoc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGV4aXRCdXR0b24gPSBzY3JlZW5Ub0Rpc3BsYXkucXVlcnlTZWxlY3RvcihcIi5leGl0QnV0dG9uXCIpO1xyXG4gIGV4aXRCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lID0gKGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHdob0Nob29zZXNQb2tlbW9uVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjd2hvQ2hvb3Nlc1BhcmFncmFwaFwiKSE7XHJcbiAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gM1xyXG4gICAgPyAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gXCJXYWl0IGZvciB0aGUgZ2FtZSB0byBzdGFydC4uLlwiKVxyXG4gICAgOiAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gYCR7YWN0aXZlUGxheWVyLm5hbWV9IGNob29zZXMgMSBwb2tlbW9uYCk7XHJcbn07XHJcbiIsImV4cG9ydCB0eXBlIFBva2Vtb25UeXBlID1cclxuICB8IFwiZ3Jhc3NcIlxyXG4gIHwgXCJwb2lzb25cIlxyXG4gIHwgXCJmaXJlXCJcclxuICB8IFwid2F0ZXJcIlxyXG4gIHwgXCJidWdcIlxyXG4gIHwgXCJub3JtYWxcIlxyXG4gIHwgXCJmbHlpbmdcIlxyXG4gIHwgXCJlbGVjdHJpY1wiXHJcbiAgfCBcImdyb3VuZFwiXHJcbiAgfCBcImZhaXJ5XCJcclxuICB8IFwicHN5Y2hpY1wiXHJcbiAgfCBcImZpZ2h0aW5nXCJcclxuICB8IFwicm9ja1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb24ge1xyXG5cclxuICByZWFkb25seSBfbmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9pbWFnZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9tYXhIUDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRIUDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9hdHRhY2tQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfZGVmZW5zZVBvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF90eXBlczogUG9rZW1vblR5cGVbXTtcclxuICByZWFkb25seSBfbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXTtcclxuXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBpbWFnZTogc3RyaW5nLCBtYXhIUDogbnVtYmVyLCBhdHRhY2tQb2ludHM6IG51bWJlcixcclxuICAgIGRlZmVuc2VQb2ludHM6IG51bWJlciwgdHlwZXM6IFBva2Vtb25UeXBlW10sIG1vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W10pIHtcclxuXHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX2ltYWdlID0gaW1hZ2U7XHJcbiAgICB0aGlzLl9tYXhIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9hdHRhY2tQb2ludHMgPSBhdHRhY2tQb2ludHM7XHJcbiAgICB0aGlzLl9kZWZlbnNlUG9pbnRzID0gZGVmZW5zZVBvaW50cztcclxuICAgIHRoaXMuX3R5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLl9tb3ZlcyA9IG1vdmVzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIHN1YnRyYWN0SFAocG9pbnRzVG9TdWJ0cmFjdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdIUCA9IHRoaXMuX2N1cnJlbnRIUCAtIHBvaW50c1RvU3VidHJhY3Q7XHJcbiAgICBpZiAobmV3SFAgPCAwKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRIUCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBuZXdIUDtcclxuICB9XHJcblxyXG4gIGhlYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIGdldCBhdHRhY2tQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXR0YWNrUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmVuc2VQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmZW5zZVBvaW50cztcclxuICB9XHJcblxyXG4gIGdldCB0eXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlcztcclxuICB9XHJcblxyXG4gIGdldCBtb3ZlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb3ZlcztcclxuICB9XHJcblxyXG4gIGlzQWxpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQID4gMDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcbmltcG9ydCB7IFBva2Vtb25UeXBlIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbkZhY3Rvcnkge1xyXG4gICAgcmVhZG9ubHkgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocG9rZURhdGE6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7IHR5cGVzOiBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0czogeyBocDogbnVtYmVyOyBhdHRhY2s6IG51bWJlcjsgZGVmZW5zZTogbnVtYmVyOyB9O1xyXG4gICAgICAgIG1vdmVzOiB7IG5hbWU6IHN0cmluZzsgYWNjdXJhY3k6IG51bWJlcjsgcG93ZXI6IG51bWJlcjsgdHlwZTogc3RyaW5nOyB9W11cclxuICAgIH1bXSkge1xyXG4gICAgICAgIHRoaXMuX3Bva2Vtb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IHBva2Vtb24gb2YgcG9rZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VJbWcgPSBcIi4uL2Fzc2V0cy9cIiArIHBva2Vtb24ubmFtZSArIFwiLnBuZ1wiXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlTW92ZXMgPSBwb2tlbW9uLm1vdmVzLnJlZHVjZSggKHRhYiwgbW92ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFiLnB1c2goe21vdmVOYW1lOiBtb3ZlLm5hbWUsIG1vdmVUeXBlOiBtb3ZlLnR5cGUgYXMgUG9rZW1vblR5cGV9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYlxyXG4gICAgICAgICAgICAgICAgfSwgW10gYXMge21vdmVOYW1lOiBzdHJpbmcsIG1vdmVUeXBlOiBQb2tlbW9uVHlwZX1bXSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VUeXBlczogUG9rZW1vblR5cGVbXSA9IHBva2Vtb24udHlwZXMubWFwKHYgPT4gdiBhcyBQb2tlbW9uVHlwZSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2Vtb25PYmplY3QgPSBuZXcgUG9rZW1vbih0aGlzLl9jYXBpdGFsaXplKHBva2Vtb24ubmFtZSksIHBva2VJbWcsIFxyXG4gICAgICAgICAgICAgICAgcG9rZW1vbi5zdGF0cy5ocCwgcG9rZW1vbi5zdGF0cy5hdHRhY2ssIHBva2Vtb24uc3RhdHMuZGVmZW5zZSxcclxuICAgICAgICAgICAgICAgIHBva2VUeXBlcywgcG9rZU1vdmVzKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uT2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb2tlbW9uQnlOYW1lKG5hbWU6IHN0cmluZyk6IFBva2Vtb24ge1xyXG4gICAgICAgIGNvbnN0IHBva2Vtb24gPSB0aGlzLl9wb2tlbW9ucy5maW5kKCBwb2tlbW9uID0+IHBva2Vtb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChwb2tlbW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2tlbW9uICR7bmFtZX0gaXMgbm90IGZvdW5kIGluIHRoZSBwb2tlbW9uIGZhY3RvcnlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9rZW1vblxyXG4gICAgfVxyXG5cclxuICAgIF9jYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICApID0+IHtcclxuICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICBuYW1lQXJlYS50ZXh0Q29udGVudCA9IHBva2Vtb25OYW1lO1xyXG4gIH07XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllck9uZSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG4gIGNyZWF0ZVBva2Vtb24oXHJcbiAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhY3RpdmVQbGF5ZXJBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2FjdGl2ZS1wbGF5ZXItaW5mb1wiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBhY3RpdmVQbGF5ZXJBcmVhLnRleHRDb250ZW50ID0gYCR7Z2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lfSBub3cgaXMgeW91ciB0dXJuLiBHZXQgdGhlIHJldmVuZ2UhYDtcclxuICBjb25zdCBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjFcIik7XHJcbiAgY29uc3QgcGxheWVyVHdvVW5kZXJsaW5lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyXCIpO1xyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyID09PSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUpIHtcclxuICAgIHBsYXllclR3b1VuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVBsYXllclwiKTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUhQQmFycyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBjcmVhdGVCYXIgPSAocGxheWVyOiBQbGF5ZXIsIEhQQmFyOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbWF4SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5tYXhIUDtcclxuICAgIGNvbnN0IGN1cnJlbnRIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLmN1cnJlbnRIUDtcclxuICAgIGNvbnN0IEhQSW5QZXJjZW50ID0gKGN1cnJlbnRIUCAvIG1heEhQKSAqIDEwMDtcclxuICAgIGNvbnNvbGUubG9nKEhQSW5QZXJjZW50KTtcclxuICAgIEhQQmFyLnN0eWxlLndpZHRoID0gYCR7SFBJblBlcmNlbnR9JWA7XHJcbiAgICBsZXQgSFBDbGFzc0xpc3QgPSBIUEJhci5jbGFzc0xpc3Q7XHJcbiAgICBpZiAoSFBJblBlcmNlbnQgPCAyMCkge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlQmFyKHBsYXllck9uZSwgcGxheWVyT25lSFBCYXIpO1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJUd28sIHBsYXllclR3b0hQQmFyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMjsgaSA+IHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCAtIDE7IGktLSkge1xyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoXHJcbiAgLy9wbGF5ZXI6IFBsYXllcixcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ29CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcblxyXG4gIGF0dGFja0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYmF0dGxlQnV0dG9ucyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9KTtcclxuICBzd2l0Y2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLmhhc01hbmdvKSB7XHJcbiAgICBtYWdpY0Z1bmN0aW9uKG1hbmdvQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgZWF0TWFuZ28pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBtYW5nby5pbm5lckhUTUwgPSBcIjBcIjtcclxuICAgIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBhdHRhY2spO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihzd2l0Y2hCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIHN3aXRjaFBva2UpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuY29uc3QgbWFnaWNGdW5jdGlvbiA9IChcclxuICBidXR0b246IEhUTUxEaXZFbGVtZW50LFxyXG4gIGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcixcclxuICBmdW5jdGlvblRvQ2FsbD86IGFueVxyXG4pID0+IHtcclxuICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhgJHtidXR0b24uaW5uZXJUZXh0fSB1c2VkIWApO1xyXG4gICAgaWYgKGZ1bmN0aW9uVG9DYWxsKSB7XHJcbiAgICAgIGZ1bmN0aW9uVG9DYWxsKGdhbWVIYW5kbGVyLCBlKTtcclxuICAgICAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgICAgIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgICAgIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgICAgIGdhbWVIYW5kbGVyLnN3aXRjaFBsYXllcigpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlQXR0YWNrQnV0dG9ucygpO1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZVN3aXRjaEJ1dHRvbnMoKTtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJ1dHRvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0VudHJ5ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtaW4taG9yLWNlbnRlciAwLjVzIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgYm90aFwiO1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb25EZWxheSA9IGAke2kgKiAwLjE1fXNgO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkJ1dHRvbnNFeGl0ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtb3V0LWhvcml6b250YWwgMC41cyBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDg1LCAwLjY4MCwgMC41MzApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYDtcclxuICB9XHJcbn07XHJcblxyXG4vLyBmdW5jaW9ucyBqdXN0IGZvciBjaGVjayBpZiBpdHMgd29ya3Mgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggZ2FtZUhhbmRsZXIgPiB1c2UgYXR0YWNrIG9yIHN3aXRjaCBQb2tlbW9uIGZ1bmN0aW9uc1xyXG5cclxuY29uc3QgYXR0YWNrID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiYnVtIGJ1bSBiYWNoIVwiKTtcclxufTtcclxuXHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLCBldmVudDogRXZlbnQpID0+IHtcclxuICBjb25zdCBuYW1lT2ZDaG9zZW5Qb2tlbW9uID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAudGV4dENvbnRlbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuc3dpdGNoUG9rZW1vbihuYW1lT2ZDaG9zZW5Qb2tlbW9uISk7XHJcbn07XHJcblxyXG5jb25zdCBlYXRNYW5nbyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBtYW5nb0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29CdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb1wiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci51c2VNYW5nbygpO1xyXG4gIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHtcclxuICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyLFxyXG59IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFBsYXllcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPVxyXG4gICAgICB0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmVcclxuICAgICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUG9rZW1vbihwb2tlbW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UGxheWVyLmluZGV4T2ZBY3RpdmVQb2tlbW9uID0gdGhpcy5fY3VycmVudFBsYXllci5wb2tlbW9ucy5maW5kSW5kZXgoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgPT09IHBva2Vtb25OYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTdGFydCAtIGFjdGlvbiBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUF0dGFja0J1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIkF0dGFjayBjaG9vc2UgbW9kYWxcIik7XHJcbiAgICBjb25zdCBhY3Rpb25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FjdGlvbk1vZGFsc1wiKSE7XHJcbiAgICBhY3Rpb25Db250YWluZXIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25PbmVcIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzBdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBzdGFydEJhdHRsZSB9IGZyb20gXCIuLi9maWdodFBhZ2Uvc3RhcnRCYXR0bGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRHYW1lSWZSZWFkeSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBpZiAocGxheWVyT25lLnBva2Vtb25zLmxlbmd0aCA8IDMgfHwgcGxheWVyVHdvLnBva2Vtb25zLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBzdGFydEJhdHRsZShwbGF5ZXJPbmUsIHBsYXllclR3bywgYXBwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlIH0gZnJvbSBcIi4vcmVuZGVyRmlnaHRQYWdlXCI7XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRCYXR0bGUgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYXBwOiBIVE1MRGl2RWxlbWVudFxyXG4pID0+IHtcclxuICBjb25zdCBnYW1lID0gbmV3IEdhbWVIYW5kbGVyKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBzZXRUaW1lb3V0KCgpID0+IGNyZWF0ZUZpZ2h0UGFnZShhcHAsIGdhbWUpLCAyMDAwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUG9rZW1vbiB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUhQQmFycyB9IGZyb20gXCIuL2NyZWF0ZUhQQmFyc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHNcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyT25lTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjEtbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjItbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgcGxheWVyT25lTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllck9uZS5uYW1lO1xyXG4gIHBsYXllclR3b05hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJUd28ubmFtZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2UgPSAoXHJcbiAgYXBwRGl2OiBIVE1MRGl2RWxlbWVudCxcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmlnaHRQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gZmlnaHRQYWdlLmlubmVySFRNTDtcclxuICBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBva2Vtb24oZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAvLyBnZW5lcmF0ZSBjaG9vc2UgYWN0aW9uIGJ1dHRvbnNcclxuICBnYW1lSGFuZGxlci5nZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBsYXllck5hbWVzIH0gZnJvbSBcIi4vY3JlYXRlUGxheWVyTmFtZXNcIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZW1vbnMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlbW9uc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNob29zZVBhZ2UgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IGFjdGl2ZVBsYXllciA9IHBsYXllck9uZTtcclxuICBjcmVhdGVQbGF5ZXJOYW1lcyhwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gIGNyZWF0ZVBva2Vtb25zKHBsYXllck9uZSwgcGxheWVyVHdvLCBhY3RpdmVQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQbGF5ZXJOYW1lcyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgcGxheWVyT25lTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMU5hbWVcIikhO1xyXG4gIHBsYXllck9uZU5hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllck9uZS5uYW1lO1xyXG4gIGxldCBwbGF5ZXJUd29OYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIyTmFtZVwiKSE7XHJcbiAgcGxheWVyVHdvTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyVHdvLm5hbWU7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgKiBhcyBkYXRhIGZyb20gXCIuLi8uLi9hc3NldHMvcG9rZV9kYXRhLmpzb25cIjtcclxuaW1wb3J0IHsgc3RhcnRHYW1lSWZSZWFkeSB9IGZyb20gXCIuL3N0YXJ0R2FtZUlmUmVhZHlcIjtcclxuaW1wb3J0IHsgYWRkQ2hvc2VuUG9rZW1vbiB9IGZyb20gXCIuL2FkZENob3NlblBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlUG9rZWJhbGxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZW1vbnMgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgcG9rZURhdGEgPSBkYXRhLnBva2Vtb25zO1xyXG4gIGNvbnN0IHBva2Vtb25GYWN0b3J5ID0gbmV3IFBva2Vtb25GYWN0b3J5KHBva2VEYXRhKTtcclxuICBjb25zdCBwb2tlbW9uSW1hZ2VzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjcG9rZW1vbkxpc3QgaW1nXCIpXHJcbiAgKSBhcyBbSFRNTEltYWdlRWxlbWVudF07XHJcblxyXG4gIHBva2Vtb25JbWFnZXMuZm9yRWFjaCgocG9rZW1vbkltYWdlKSA9PlxyXG4gICAgcG9rZW1vbkltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwiY2xpY2tcIixcclxuICAgICAgKGUpID0+IHtcclxuICAgICAgICBpZiAoYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gMykgcmV0dXJuO1xyXG4gICAgICAgIGFkZENob3NlblBva2Vtb24oZSwgcG9rZW1vbkZhY3RvcnksIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgY3JlYXRlUG9rZWJhbGxzKHBsYXllck9uZSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICAvLyBjaGFuZ2UgcGxheWVyXHJcbiAgICAgICAgYWN0aXZlUGxheWVyID0gYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmUgPyBwbGF5ZXJUd28gOiBwbGF5ZXJPbmU7XHJcbiAgICAgICAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIHN0YXJ0R2FtZUlmUmVhZHkocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi4vcG9rZW1vbkNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENob3NlblBva2Vtb24gPSAoXHJcbiAgZXZlbnQ6IEV2ZW50LFxyXG4gIGZhY3Rvcnk6IFBva2Vtb25GYWN0b3J5LFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGNsaWNrZWRQb2tlbW9uID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcG9rZW1vbk5hbWUgPSBjbGlja2VkUG9rZW1vbi5pZDtcclxuICBjb25zdCBuZXdQb2tlbW9uT2JqZWN0OiBQb2tlbW9uID0gZmFjdG9yeS5nZXRQb2tlbW9uQnlOYW1lKHBva2Vtb25OYW1lKTtcclxuICBhY3RpdmVQbGF5ZXIuYWRkUG9rZW1vbihuZXdQb2tlbW9uT2JqZWN0KTtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5maWx0ZXIgPSBcImdyYXlzY2FsZSgxMDAlKVwiO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlYmFsbHMgPSAocGxheWVyT25lOiBQbGF5ZXIsIGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W10gPVxyXG4gICAgYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmVcclxuICAgICAgPyBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjEgaW1nXCIpKVxyXG4gICAgICA6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMiBpbWdcIikpO1xyXG4gIGNvbnN0IHBsYXllckxhc3RQb2tlbW9uTmFtZTogc3RyaW5nID0gYWN0aXZlUGxheWVyLnBva2Vtb25zW1xyXG4gICAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDFcclxuICBdLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBudW1iZXJPZkxhc3RQb2tlbW9uOiBudW1iZXIgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMTtcclxuICBwbGF5ZXJQb2tlYmFsbHNbbnVtYmVyT2ZMYXN0UG9rZW1vbl0uc2V0QXR0cmlidXRlKFxyXG4gICAgXCJzcmNcIixcclxuICAgIGAuL2Fzc2V0cy8ke3BsYXllckxhc3RQb2tlbW9uTmFtZX0ucG5nYFxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQbGF5ZXIge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG4gIHByaXZhdGUgX2luZGV4T2ZBY3RpdmVQb2tlbW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGFzTWFuZ286IEJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwb2tlbW9uczogUG9rZW1vbltdKSB7XHJcbiAgICBpZiAobmFtZS5sZW5ndGggPiA4KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBsb25nIG5hbWVcIik7XHJcbiAgICB9XHJcbiAgICBpZiAocG9rZW1vbnMubGVuZ3RoID4gMykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBudW1iZXIgb2YgcG9rZW1vbnNcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX3Bva2Vtb25zID0gcG9rZW1vbnM7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IDA7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG4gIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZGV4T2ZBY3RpdmVQb2tlbW9uKG51bU9mQWN0aXZlUG9rZW1vbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IG51bU9mQWN0aXZlUG9rZW1vbjtcclxuICB9XHJcbiAgZ2V0IGdldEFjdGl2ZVBva2Vtb24oKTogUG9rZW1vbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNbdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb25dO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaXZlUG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIGNvbnN0IGFsaXZlUG9rZW1vbnNUYWI6IFBva2Vtb25bXSA9IHRoaXMucG9rZW1vbnMuZmlsdGVyKChwb2tlbW9uKSA9PlxyXG4gICAgICBwb2tlbW9uLmlzQWxpdmUoKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGl2ZVBva2Vtb25zVGFiO1xyXG4gIH1cclxuXHJcbiAgdXNlTWFuZ28oKTogdm9pZCB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5faGFzTWFuZ28pXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgdXNlIG1hbmdvLiBZb3UgdXNlIGFsbCBtYW5nb3NcIik7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVQb2tlbW9uLmhlYWwoKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNNYW5nbygpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNNYW5nbztcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcblxyXG4gIGdldCBub3RBY3RpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9rZW1vbnMuZmlsdGVyKFxyXG4gICAgICAocG9rZW1vbikgPT4gcG9rZW1vbi5uYW1lICE9PSB0aGlzLmdldEFjdGl2ZVBva2Vtb24ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxCdXR0b25FbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA8PSA4ICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoIDw9IDgpIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJnYW1lSGFuZGxlciIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwiY3JlYXRlUG9rZW1vbiIsInBsYXllciIsImltYWdlQXJlYSIsIm5hbWVBcmVhIiwicG9rZW1vbk5hbWUiLCJnZXRBY3RpdmVQb2tlbW9uIiwic2V0QXR0cmlidXRlIiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwiY3VycmVudFBsYXllciIsInBsYXllck9uZVVuZGVybGluZUFyZWEiLCJwbGF5ZXJUd29VbmRlcmxpbmVBcmVhIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiY3JlYXRlSFBCYXJzIiwiY3JlYXRlQmFyIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJwbGF5ZXJPbmVIUEJhciIsInBsYXllclR3b0hQQmFyIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMiLCJwbGF5ZXJQb2tlYmFsbHMiLCJpIiwiYWxpdmVQb2tlbW9ucyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJtYWdpY0Z1bmN0aW9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImZ1bmN0aW9uVG9DYWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJpbm5lclRleHQiLCJzd2l0Y2hQbGF5ZXIiLCJzZXRUaW1lb3V0IiwiZ2VuZXJhdGVBY3Rpb25CdXR0b25zIiwiYW5pbWF0aW9uQnV0dG9uc0V4aXQiLCJhbmltYXRpb25CdXR0b25zRW50cnkiLCJhbmltYXRpb24iLCJhbmltYXRpb25EZWxheSIsInN3aXRjaFBva2UiLCJldmVudCIsIm5hbWVPZkNob3NlblBva2Vtb24iLCJjdXJyZW50VGFyZ2V0Iiwic3dpdGNoUG9rZW1vbiIsImVhdE1hbmdvIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsInVzZU1hbmdvIiwiaW5uZXJIVE1MIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbmRleE9mQWN0aXZlUG9rZW1vbiIsImZpbmRJbmRleCIsImJhdHRsZUJ1dHRvbnMiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiaGFzTWFuZ28iLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uT25lIiwic3dpdGNoQnV0dG9uVHdvIiwibm90QWN0aXZlUG9rZW1vbnMiLCJzdGFydEdhbWVJZlJlYWR5IiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwicGxheWVyT25lTmFtZSIsInBsYXllclR3b05hbWUiLCJjcmVhdGVQbGF5ZXJGaWdodE5hbWVzIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImZhY3RvcnkiLCJjbGlja2VkUG9rZW1vbiIsInRhcmdldCIsImlkIiwibmV3UG9rZW1vbk9iamVjdCIsImFkZFBva2Vtb24iLCJjdXJzb3IiLCJmaWx0ZXIiLCJhZGRDaG9zZW5Qb2tlbW9uIiwicGxheWVyTGFzdFBva2Vtb25OYW1lIiwiY3JlYXRlUG9rZWJhbGxzIiwib25jZSIsImNyZWF0ZVBva2Vtb25zIiwiX2luZGV4T2ZBY3RpdmVQb2tlbW9uIiwiX2hhc01hbmdvIiwibnVtT2ZBY3RpdmVQb2tlbW9uIiwiYWN0aXZhdGVTdGFydCIsIm5hbWUxSW5wdXQiLCJuYW1lMklucHV0Iiwic3RhcnRCdXR0b24iLCJ2YWx1ZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEsZ0NBR2QsWUFBQU0sV0FBQSxTQUFXQyxHQUNULElBQU1DLEVBQVFYLEtBQUtJLFdBQWFNLEVBQzVCQyxFQUFRLElBQ1ZYLEtBQUtJLFdBQWEsR0FFcEJKLEtBQUtJLFdBQWFPLEdBR3BCLFlBQUFDLEtBQUEsV0FDRVosS0FBS0ksV0FBYUosS0FBS0csUUFHekIsc0JBQUksMkJBQVksQyxJQUFoQixXQUNFLE9BQU9ILEtBQUtLLGUsZ0NBR2Qsc0JBQUksNEJBQWEsQyxJQUFqQixXQUNFLE9BQU9MLEtBQUtNLGdCLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9OLEtBQUtPLFEsZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT1AsS0FBS1EsUSxnQ0FHZCxZQUFBSyxRQUFBLFdBQ0UsT0FBT2IsS0FBS0ksV0FBYSxHQUU3QixFQXhFQSxHQ1hBLGFBR0ksV0FBWVUsR0FLUmQsS0FBS2UsVUFBWSxHQUVqQixJQUFvQixVQUFBRCxFQUFBLGVBQVUsQ0FBekIsSUFBSUUsRUFBTyxLQUVOQyxFQUFVLGFBQWVELEVBQVF2QixLQUFPLE9BRXhDeUIsRUFBWUYsRUFBUWpCLE1BQU1vQixRQUFRLFNBQUNDLEVBQUtDLEdBRTFDLE9BREFELEVBQUlFLEtBQUssQ0FBQ0MsU0FBVUYsRUFBSzVCLEtBQU0rQixTQUFVSCxFQUFLSSxPQUN2Q0wsSUFDSixJQUVETSxFQUEyQlYsRUFBUWxCLE1BQU02QixLQUFJLFNBQUFDLEdBQUssT0FBQUEsS0FFbERDLEVBQWdCLElBQUlDLEVBQVE5QixLQUFLK0IsWUFBWWYsRUFBUXZCLE1BQU93QixFQUM5REQsRUFBUWdCLE1BQU1DLEdBQUlqQixFQUFRZ0IsTUFBTUUsT0FBUWxCLEVBQVFnQixNQUFNRyxRQUN0RFQsRUFBV1IsR0FFZmxCLEtBQUtlLFVBQVVPLEtBQUtPLElBbUJoQyxPQWZJLHNCQUFJLHVCQUFRLEMsSUFBWixXQUNJLE9BQU83QixLQUFLZSxXLGdDQUdoQixZQUFBcUIsaUJBQUEsU0FBaUIzQyxHQUNiLElBQU11QixFQUFVaEIsS0FBS2UsVUFBVXNCLE1BQU0sU0FBQXJCLEdBQVcsT0FBQUEsRUFBUXZCLEtBQUs2QyxnQkFBa0I3QyxFQUFLNkMsaUJBQ3BGLFFBQWdCQyxJQUFadkIsRUFDQSxNQUFNLElBQUl3QixNQUFNLFdBQVcvQyxFQUFJLHdDQUVuQyxPQUFPdUIsR0FHWCxZQUFBZSxZQUFBLFNBQVlVLEdBQ1IsT0FBT0EsRUFBSUMsT0FBTyxHQUFHQyxjQUFnQkYsRUFBSUcsTUFBTSxJQUV2RCxFQTVDQSxHLG1rSUNETyxJQUFNQyxFQUFzQixTQUFDQyxHQUNsQyxJQUFNQyxFQUFrQzNELFNBQVNDLGNBQy9DLDBCQUVJMkQsRUFBa0M1RCxTQUFTQyxjQUMvQywwQkFFSTRELEVBQWlDN0QsU0FBU0MsY0FDOUMseUJBRUk2RCxFQUFpQzlELFNBQVNDLGNBQzlDLHlCQUVJOEQsRUFBZ0IsU0FDcEJDLEVBQ0FDLEVBQ0FDLEdBRUEsSUFBTUMsRUFBY0gsRUFBT0ksaUJBQWlCL0QsS0FDNUM0RCxFQUFVSSxhQUFhLE1BQU8sWUFBWUYsRUFBWWpCLGNBQWEsUUFDbkVnQixFQUFTOUQsWUFBYytELEdBRXpCSixFQUNFTCxFQUFZWSxVQUNaWCxFQUNBRSxHQUVGRSxFQUNFTCxFQUFZYSxVQUNaWCxFQUNBRSxJQy9CU1UsRUFBcUIsU0FBQ2QsR0FDUjFELFNBQVNDLGNBQ2hDLHVCQUVlRyxZQUFpQnNELEVBQVllLGNBQWNwRSxLQUFJLHNDQUNoRSxJQUFNcUUsRUFBeUIxRSxTQUFTQyxjQUFjLHVCQUNoRDBFLEVBQXlCM0UsU0FBU0MsY0FBYyx1QkFDbER5RCxFQUFZZSxnQkFBa0JmLEVBQVlZLFdBQzVDSyxXQUF3QkMsVUFBVUMsT0FBTyxnQkFDekNILFdBQXdCRSxVQUFVRSxJQUFJLGtCQUV0Q0osV0FBd0JFLFVBQVVDLE9BQU8sZ0JBQ3pDRixXQUF3QkMsVUFBVUUsSUFBSSxrQkNaN0JDLEVBQWUsU0FBQ1QsRUFBbUJDLEdBQzlDLElBQU1TLEVBQVksU0FBQ2hCLEVBQWdCaUIsR0FDakMsSUFBTTFFLEVBQVF5RCxFQUFPSSxpQkFBaUI3RCxNQUVoQzJFLEVBRFlsQixFQUFPSSxpQkFBaUJlLFVBQ1Q1RSxFQUFTLElBQzFDNkUsUUFBUUMsSUFBSUgsR0FDWkQsRUFBTUssTUFBTUMsTUFBV0wsRUFBVyxJQUNsQyxJQUFJTSxFQUFjUCxFQUFNTCxVQUNwQk0sRUFBYyxJQUNoQk0sRUFBWVgsT0FBTyxrQkFDbkJXLEVBQVlWLElBQUksbUJBRWhCVSxFQUFZWCxPQUFPLGlCQUNuQlcsRUFBWVYsSUFBSSxvQkFHZFcsRUFBaUJ6RixTQUFTQyxjQUM5QixtQkFFSXlGLEVBQWlCMUYsU0FBU0MsY0FDOUIsbUJBRUYrRSxFQUFVVixFQUFXbUIsR0FDckJULEVBQVVULEVBQVdtQixJQ3RCVkMsRUFBMkIsU0FBQ2pDLEdBQ3ZDLElBQU1rQyxFQUFnQyxTQUNwQzVCLEVBQ0E2QixHQUVBLElBQUssSUFBSUMsRUFBSSxFQUFHQSxFQUFJOUIsRUFBTytCLGNBQWM1RixPQUFTLEVBQUcyRixJQUNuREQsRUFBZ0JDLEdBQUdsQixVQUFVRSxJQUFJLG9CQUcvQmtCLEVBQXFCQyxNQUFNQyxLQUMvQmxHLFNBQVNtRyxpQkFBaUIsNkNBRXRCQyxFQUFxQkgsTUFBTUMsS0FDL0JsRyxTQUFTbUcsaUJBQWlCLDZDQUU1QlAsRUFBOEJsQyxFQUFZWSxVQUFXMEIsR0FDckRKLEVBQThCbEMsRUFBWWEsVUFBVzZCLElDZ0VqREMsRUFBZ0IsU0FDcEJDLEVBQ0FDLEVBQ0E3QyxFQUNBOEMsR0FFQUYsRUFBT0csaUJBQWlCLFNBQVMsU0FBQ0MsR0FDaEN0QixRQUFRQyxJQUFPaUIsRUFBT0ssVUFBUyxVQUMzQkgsSUFDRkEsRUFBZTlDLEVBQWFnRCxHQUM1QmpELEVBQW9CQyxHQUNwQnFCLEVBQWFyQixFQUFZWSxVQUFXWixFQUFZYSxXQUNoRG9CLEVBQXlCakMsR0FDekJBLEVBQVlrRCxlQUNacEMsRUFBbUJkLElBRXJCbUQsWUFBVyxXQUNUbkQsRUFBWW9ELDBCQUNYLEtBQ0hDLEVBQXFCUixPQUluQlMsRUFBd0IsU0FBQ1QsR0FDN0IsSUFBSyxJQUFJVCxFQUFJLEVBQUdBLEVBQUlTLEVBQVFwRyxPQUFRMkYsSUFDbENTLEVBQVFULEdBQUdSLE1BQU0yQixVQUNmLHlFQUNGVixFQUFRVCxHQUFHUixNQUFNNEIsZUFBd0IsSUFBSnBCLEVBQVEsS0FJM0NpQixFQUF1QixTQUFDUixHQUM1QixJQUFLLElBQUlULEVBQUksRUFBR0EsRUFBSVMsRUFBUXBHLE9BQVEyRixJQUNsQ1MsRUFBUVQsR0FBR1IsTUFBTTJCLFVBQ2YsMEVBQ0ZWLEVBQVFULEdBQUdSLE1BQU00QixlQUF3QixJQUFKcEIsRUFBUSxLQUkzQ2hELEVBQVMsU0FBQ1ksR0FDZDBCLFFBQVFDLElBQUksa0JBR1I4QixFQUFhLFNBQUN6RCxFQUEwQjBELEdBQzVDLElBQU1DLEVBQXVCRCxFQUFNRSxjQUNoQ2xILFlBQ0hzRCxFQUFZNkQsY0FBY0YsSUFHdEJHLEVBQVcsU0FBQzlELEdBQ2hCLElBQU0rRCxFQUFjekgsU0FBU0MsY0FBYyxnQkFDckN5SCxFQUFRMUgsU0FBU0MsY0FBYyxVQUNyQ3lELEVBQVllLGNBQWNrRCxXQUMxQkQsRUFBTUUsVUFBWSxJQUNsQkgsRUFBWTdDLFVBQVVFLElBQUksbUJDbEk1QixhQUNFLFdBQ21CK0MsRUFDQUMsR0FEQSxLQUFBRCxhQUNBLEtBQUFDLGFBR1gsS0FBQUMsZUFBeUJuSCxLQUFLaUgsV0FtRnhDLE9BakZFLHNCQUFJLHdCQUFTLEMsSUFBYixXQUNFLE9BQU9qSCxLQUFLaUgsWSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPakgsS0FBS2tILFksZ0NBR2Qsc0JBQUksNEJBQWEsQyxJQUFqQixXQUNFLE9BQU9sSCxLQUFLbUgsZ0IsZ0NBR2Qsc0JBQUksNkJBQWMsQyxJQUFsQixXQUNFLE9BQUluSCxLQUFLbUgsaUJBQW1CbkgsS0FBS2lILFdBQW1CakgsS0FBS2tILFdBQ2xEbEgsS0FBS2lILFksZ0NBR04sWUFBQUcsZUFBUixTQUF1QmhFLEdBQ3JCLE9BQXVDLElBQWhDQSxFQUFPK0IsY0FBYzVGLFFBRzlCLFlBQUE4SCxlQUFBLFdBQ0UsT0FDRXJILEtBQUtvSCxlQUFlcEgsS0FBS2lILGFBQ3pCakgsS0FBS29ILGVBQWVwSCxLQUFLa0gsYUFJN0IsWUFBQUksVUFBQSxXQUNFLElBQUt0SCxLQUFLcUgsaUJBQ1IsTUFBTSxJQUFJN0UsTUFBTSxvREFDbEIsT0FBZ0QsSUFBekN4QyxLQUFLb0gsZUFBZXBILEtBQUtpSCxZQUM1QmpILEtBQUtrSCxXQUNMbEgsS0FBS2lILFlBR1gsWUFBQWpCLGFBQUEsV0FDRWhHLEtBQUttSCxlQUNIbkgsS0FBS21ILGlCQUFtQm5ILEtBQUtpSCxXQUN6QmpILEtBQUtrSCxXQUNMbEgsS0FBS2lILFlBR2IsWUFBQU4sY0FBQSxTQUFjcEQsR0FDWnZELEtBQUttSCxlQUFlSSxxQkFBdUJ2SCxLQUFLbUgsZUFBZTdILFNBQVNrSSxXQUN0RSxTQUFDeEcsR0FBWSxPQUFBQSxFQUFRdkIsT0FBUzhELE1BSWxDLFlBQUEyQyxzQkFBQSxXQUNFLElEeERGcEQsRUFFTTJFLEVBR0FDLEVBR0FDLEVBR0FkLEVBQ0FDLEVDNENXOUcsS0FBSzZELGNBQ3BCVyxRQUFRQyxJQUFJLHdCQUNZckYsU0FBU0MsY0FBYyxpQkFDL0IySCxVQUFZLGdTRDNEOUJsRSxFQytENkI5QyxLRDdEdkJ5SCxFQUFnQnJJLFNBQVN3SSx1QkFDN0IsZ0JBRUlGLEVBQWV0SSxTQUFTQyxjQUM1QixpQkFFSXNJLEVBQWV2SSxTQUFTQyxjQUM1QixpQkFFSXdILEVBQWN6SCxTQUFTQyxjQUFjLGdCQUNyQ3lILEVBQVExSCxTQUFTQyxjQUFjLFVBRXJDK0csRUFBc0JxQixHQUV0QkMsRUFBYTdCLGlCQUFpQixTQUFTLFdBQ3JDTSxFQUFxQnNCLEdBQ3JCeEIsWUFBVyxXQUNUbkQsRUFBWStFLDBCQUNYLFFBRUxGLEVBQWE5QixpQkFBaUIsU0FBUyxXQUNyQ00sRUFBcUJzQixHQUNyQnhCLFlBQVcsV0FDVG5ELEVBQVlnRiwwQkFDWCxRQUdEaEYsRUFBWWUsY0FBY2tFLFNBQzVCdEMsRUFBY29CLEVBQWFZLEVBQWUzRSxFQUFhOEQsSUFFdkRFLEVBQU1FLFVBQVksSUFDbEJILEVBQVk3QyxVQUFVRSxJQUFJLG9CQ2lDNUIsWUFBQTJELHNCQUFBLFdBQ0UsSUQ5QnVDL0UsRUFDbkNrRixFQUdBQyxFQUdBUixFQUdBUyxFQ29CRTlFLEVBQVNwRCxLQUFLNkQsY0FDcEJXLFFBQVFDLElBQUksdUJBQ1lyRixTQUFTQyxjQUFjLGlCQUMvQjJILFVBQVksK0VBQzRDNUQsRUFBT0ksaUJBQWlCekQsTUFBTSxHQUFHd0IsU0FBUSxxRkFDekM2QixFQUFPSSxpQkFBaUJ6RCxNQUFNLEdBQUd3QixTQUFRLDBGRG5DMUV1QixFQ3FDWjlDLEtEcEN2QmdJLEVBQWtCNUksU0FBU0MsY0FDL0Isb0JBRUk0SSxFQUFrQjdJLFNBQVNDLGNBQy9CLG9CQUVJb0ksRUFBZ0JySSxTQUFTd0ksdUJBQzdCLGdCQUVJTSxFQUFhOUksU0FBU0MsY0FBYyxlQUUxQytHLEVBQXNCcUIsR0FDdEJoQyxFQUFjdUMsRUFBaUJQLEVBQWUzRSxFQUFhWixHQUMzRHVELEVBQWN3QyxFQUFpQlIsRUFBZTNFLEVBQWFaLEdBQzNEdUQsRUFBY3lDLEVBQVlULEVBQWUzRSxJQ3lCekMsWUFBQWdGLHNCQUFBLFdBQ0UsSUR2QnNDaEYsRUFDbENxRixFQUdBQyxFQUdBWCxFQUdBUyxFQ2FFOUUsRUFBU3BELEtBQUs2RCxjQUNwQlcsUUFBUUMsSUFBSSx1QkFDWXJGLFNBQVNDLGNBQWMsaUJBQy9CMkgsVUFBWSwrRUFDNEM1RCxFQUFPaUYsa0JBQWtCLEdBQUc1SSxLQUFJLHFGQUNoQzJELEVBQU9pRixrQkFBa0IsR0FBRzVJLEtBQUksMEZENUJsRXFELEVDOEJaOUMsS0Q3QnRCbUksRUFBa0IvSSxTQUFTQyxjQUMvQixvQkFFSStJLEVBQWtCaEosU0FBU0MsY0FDL0Isb0JBRUlvSSxFQUFnQnJJLFNBQVN3SSx1QkFDN0IsZ0JBRUlNLEVBQWE5SSxTQUFTQyxjQUFjLGVBRTFDK0csRUFBc0JxQixHQUV0QmhDLEVBQWMwQyxFQUFpQlYsRUFBZTNFLEVBQWF5RCxHQUMzRGQsRUFBYzJDLEVBQWlCWCxFQUFlM0UsRUFBYXlELEdBQzNEZCxFQUFjeUMsRUFBWVQsRUFBZTNFLElDZ0IzQyxFQXpGQSxHQ0hhd0YsRUFBbUIsU0FBQzVFLEVBQW1CQyxHQUM5Q0QsRUFBVXBFLFNBQVNDLE9BQVMsR0FBS29FLEVBQVVyRSxTQUFTQyxPQUFTLEdDRHhDLFNBQ3pCbUUsRUFDQUMsRUFDQTRFLEdBRUEsSUFBTUMsRUFBTyxJQUFJQyxFQUFZL0UsRUFBV0MsR0FDeENzQyxZQUFXLFdBQU0sT0NTakJ5QyxFRFRpQ0gsRUNVakN6RixFRFZzQzBGLEVDWWhDRyxFQUFZdkosU0FBU0MsY0FDekIsd0JBRUZxSixFQUFPMUIsVUFBWTJCLEVBQVUzQixVQWxCQSxTQUFDbEUsR0FDOUIsSUFBTThGLEVBQWdCeEosU0FBU0MsY0FDN0IsNEJBRUl3SixFQUFnQnpKLFNBQVNDLGNBQzdCLDRCQUVGdUosRUFBY3BKLFlBQWNzRCxFQUFZWSxVQUFVakUsS0FDbERvSixFQUFjckosWUFBY3NELEVBQVlhLFVBQVVsRSxLQVdsRHFKLENBQXVCaEcsR0FDdkJjLEVBQW1CZCxHQUNuQkQsRUFBb0JDLEdBQ3BCcUIsRUFBYXJCLEVBQVlZLFVBQVdaLEVBQVlhLFdBQ2hEb0IsRUFBeUJqQyxRQUV6QkEsRUFBWW9ELHdCQWRpQixJQUM3QndDLEVBQ0E1RixFQUVNNkYsSURadUMsS0RIN0NJLENBQVlyRixFQUFXQyxFQURYdkUsU0FBU0MsY0FBYyxVR0R4QjJKLEVBQW1CLFNBQUN0RixFQUFtQkMsR0FDbEQsSUFBSXpFLEVBQWV3RSxHQ0pZLFNBQUNBLEVBQW1CQyxHQUN2QnZFLFNBQVNDLGNBQWMsMEJBQzdCRyxZQUFja0UsRUFBVWpFLEtBQ2xCTCxTQUFTQyxjQUFjLDBCQUM3QkcsWUFBY21FLEVBQVVsRSxLREM5Q3dKLENBQWtCdkYsRUFBV0MsR0FDN0IxRSxFQUF1QkMsR0VBSyxTQUM1QndFLEVBQ0FDLEVBQ0F6RSxHQUVBLElBQU00QixFQUFXLElBQ1hvSSxFQUFpQixJQUFJQyxFQUFlckksR0FDcEJ1RSxNQUFNQyxLQUMxQmxHLFNBQVNtRyxpQkFBaUIscUJBR2Q2RCxTQUFRLFNBQUNDLEdBQ3JCLE9BQUFBLEVBQWF4RCxpQkFDWCxTQUNBLFNBQUNDLEdBQ3NDLElBQWpDNUcsRUFBYUksU0FBU0MsU0NuQkYsU0FDOUJpSCxFQUNBOEMsRUFDQXBLLEdBRUEsSUFBTXFLLEVBQWlCL0MsRUFBTWdELE9BQ3ZCakcsRUFBY2dHLEVBQWVFLEdBQzdCQyxFQUE0QkosRUFBUWxILGlCQUFpQm1CLEdBQzNEckUsRUFBYXlLLFdBQVdELEdBQ3hCSCxFQUFlN0UsTUFBTWtGLE9BQVMsVUFDOUJMLEVBQWU3RSxNQUFNbUYsT0FBUyxrQkRVeEJDLENBQWlCaEUsRUFBR29ELEVBQWdCaEssR0V0QmIsU0FBQ3dFLEVBQW1CeEUsR0FDakQsSUFBTStGLEVBQ0ovRixJQUFpQndFLEVBQ2IyQixNQUFNQyxLQUFLbEcsU0FBU21HLGlCQUFpQiwyQkFDckNGLE1BQU1DLEtBQUtsRyxTQUFTbUcsaUJBQWlCLDJCQUNyQ3dFLEVBQWdDN0ssRUFBYUksU0FDakRKLEVBQWFJLFNBQVNDLE9BQVMsR0FDL0JFLEtBQUs2QyxjQUVQMkMsRUFEb0MvRixFQUFhSSxTQUFTQyxPQUFTLEdBQzlCa0UsYUFDbkMsTUFDQSxZQUFZc0csRUFBcUIsUUZZN0JDLENBQWdCdEcsRUFBV3hFLEdBRzNCRCxFQURBQyxFQUFlQSxJQUFpQndFLEVBQVlDLEVBQVlELEdBRXhENEUsRUFBaUI1RSxFQUFXQyxNQUU5QixDQUFFc0csTUFBTSxPRnRCWkMsQ0FBZXhHLEVBQVdDLEVBQVd6RSxJS1B2QyxhQUtFLFdBQVlPLEVBQWNILEdBQ3hCLEdBQUlHLEVBQUtGLE9BQVMsRUFDaEIsTUFBTSxJQUFJaUQsTUFBTSxpQkFFbEIsR0FBSWxELEVBQVNDLE9BQVMsRUFDcEIsTUFBTSxJQUFJaUQsTUFBTSw0QkFFbEJ4QyxLQUFLQyxNQUFRUixFQUNiTyxLQUFLZSxVQUFZekIsRUFDakJVLEtBQUttSyxzQkFBd0IsRUFDN0JuSyxLQUFLb0ssV0FBWSxFQTRDckIsT0F6Q0Usc0JBQUksbUJBQUksQyxJQUFSLFdBQ0UsT0FBT3BLLEtBQUtDLE8sZ0NBRWQsc0JBQUksdUJBQVEsQyxJQUFaLFdBQ0UsT0FBT0QsS0FBS2UsVyxnQ0FHZCxzQkFBSSxtQ0FBb0IsQyxJQUF4QixTQUF5QnNKLEdBQ3ZCckssS0FBS21LLHNCQUF3QkUsRyxnQ0FFL0Isc0JBQUksK0JBQWdCLEMsSUFBcEIsV0FDRSxPQUFPckssS0FBS2UsVUFBVWYsS0FBS21LLHdCLGdDQUc3QixzQkFBSSw0QkFBYSxDLElBQWpCLFdBSUUsT0FIb0NuSyxLQUFLVixTQUFTdUssUUFBTyxTQUFDN0ksR0FDeEQsT0FBQUEsRUFBUUgsYyxnQ0FLWixZQUFBa0csU0FBQSxXQUNFLElBQUsvRyxLQUFLb0ssVUFDUixNQUFNLElBQUk1SCxNQUFNLDRDQUNsQnhDLEtBQUtvSyxXQUFZLEVBQ2pCcEssS0FBS3dELGlCQUFpQjVDLFFBR3hCLHNCQUFJLHVCQUFRLEMsSUFBWixXQUNFLE9BQU9aLEtBQUtvSyxXLGdDQUdkLFlBQUFULFdBQUEsU0FBVzNJLEdBQ1RoQixLQUFLZSxVQUFVTyxLQUFLTixJQUd0QixzQkFBSSxnQ0FBaUIsQyxJQUFyQixzQkFDRSxPQUFPaEIsS0FBS1YsU0FBU3VLLFFBQ25CLFNBQUM3SSxHQUFZLE9BQUFBLEVBQVF2QixPQUFTLEVBQUsrRCxpQkFBaUIvRCxTLGdDQUcxRCxFQTNEQSxHQ0ZhNkssRUFBZ0IsU0FBQ0MsRUFBOEJDLEVBQThCQyxHQUNsRkYsRUFBV0csTUFBTW5MLE9BQVMsR0FBS2lMLEVBQVdFLE1BQU1uTCxPQUFTLEdBQUtnTCxFQUFXRyxNQUFNbkwsUUFBVSxHQUFLaUwsRUFBV0UsTUFBTW5MLFFBQVUsR0FDekhrTCxFQUFZRSxVQUFZLGlCQUN4QkYsRUFBWUcsVUFBVyxJQUV2QkgsRUFBWUUsVUFBWSxrQkFDeEJGLEVBQVlHLFVBQVcsSUM0RC9CM0UsWUFUa0IsV0FDaEIsSUFyRDBCeUMsRUFDcEJtQyxFQXlCQUMsRUFDQUMsRUFDQU4sRXBCMUJrQk8sRUFDbEJDLEVvQlVBQyxFQUdBQyxFQXFDQTVDLEVBQU1uSixTQUFTQyxjQUFjLFFBckRUcUosRUFzRFBILEVBckRic0MsRUFBZXpMLFNBQVNDLGNBQzVCLDJCQUVGcUosRUFBTzFCLFVBQVk2RCxFQUFhN0QsVUFFTCxTQUFDMEIsR0FDNUIsSUFBTXlDLEVBQVkvTCxTQUFTQyxjQUN6Qix3QkFFRnFKLEVBQU8xQixXQUFhbUUsRUFBVW5FLFVBNkM5Qm9FLENBQXFCN0MsR0E3QmZ1QyxFQUFtQjFMLFNBQVNDLGNBQWMsdUJBQzFDMEwsRUFBbUIzTCxTQUFTQyxjQUFjLHVCQUMxQ29MLEVBQWNyTCxTQUFTQyxjQUFjLHNCQUMzQ3lMLEVBQWlCakYsaUJBQWlCLFNBQVMsV0FDdkN5RSxFQUFjUSxFQUFrQkMsRUFBa0JOLE1BRXRETSxFQUFpQmxGLGlCQUFpQixTQUFTLFdBQ3ZDeUUsRUFBY1EsRUFBa0JDLEVBQWtCTixNQXBCaERTLEVBQWtCOUwsU0FBU0MsY0FDL0IsdUJBRUk4TCxFQUFZL0wsU0FBU0MsY0FDekIsc0JBRUY2TCxFQUFnQnJGLGlCQUFpQixTQUFTLFdBQzlCc0YsRXBCckJJekcsTUFBTTJHLFFvQnFCQyxVcEJoQnZCSixPQURNQSxHQURrQkQsRW9Cb0JkRyxHcEJuQnlCOUwsY0FBYyxpQkFDakQ0TCxFQUFZcEYsaUJBQWlCLFNBQVMsV0FDcENtRixFQUFnQnRHLE1BQU0yRyxRQUFVLFVvQmdDRixTQUFDM0MsR0FDakMsSUFBTTRDLEVBQWFsTSxTQUFTQyxjQUMxQixzQkFFRmlNLFdBQVl6RixpQkFBaUIsU0FBUyxXQUNwQyxJQUFNaUYsRUFBb0IxTCxTQUFTQyxjQUFjLHVCQUE0Q3FMLE1BQ3ZGSyxFQUFvQjNMLFNBQVNDLGNBQWMsdUJBQTRDcUwsTUFDdkZhLEVBQXNCbk0sU0FBU0MsY0FDbkMseUJBRUZxSixFQUFPMUIsVUFBWXVFLEVBQW9CdkUsVUFDdkNnQyxFQUFpQixJQUFJd0MsRUFBT1YsRUFBa0IsSUFBSyxJQUFJVSxFQUFPVCxFQUFrQixRQVVsRlUsQ0FBMEJsRCxLQUdOLE0iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2hvd01vZGFsID0gKFxyXG4gIHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQsXHJcbiAgc3RhcnRpbmdQb3NpdGlvbjogc3RyaW5nXHJcbikgPT4ge1xyXG4gIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gc3RhcnRpbmdQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBoaWRlTW9kYWwgPSAoc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGV4aXRCdXR0b24gPSBzY3JlZW5Ub0Rpc3BsYXkucXVlcnlTZWxlY3RvcihcIi5leGl0QnV0dG9uXCIpO1xyXG4gIGV4aXRCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lID0gKGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHdob0Nob29zZXNQb2tlbW9uVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjd2hvQ2hvb3Nlc1BhcmFncmFwaFwiKSE7XHJcbiAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gM1xyXG4gICAgPyAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gXCJXYWl0IGZvciB0aGUgZ2FtZSB0byBzdGFydC4uLlwiKVxyXG4gICAgOiAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gYCR7YWN0aXZlUGxheWVyLm5hbWV9IGNob29zZXMgMSBwb2tlbW9uYCk7XHJcbn07XHJcbiIsImV4cG9ydCB0eXBlIFBva2Vtb25UeXBlID1cclxuICB8IFwiZ3Jhc3NcIlxyXG4gIHwgXCJwb2lzb25cIlxyXG4gIHwgXCJmaXJlXCJcclxuICB8IFwid2F0ZXJcIlxyXG4gIHwgXCJidWdcIlxyXG4gIHwgXCJub3JtYWxcIlxyXG4gIHwgXCJmbHlpbmdcIlxyXG4gIHwgXCJlbGVjdHJpY1wiXHJcbiAgfCBcImdyb3VuZFwiXHJcbiAgfCBcImZhaXJ5XCJcclxuICB8IFwicHN5Y2hpY1wiXHJcbiAgfCBcImZpZ2h0aW5nXCJcclxuICB8IFwicm9ja1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb24ge1xyXG5cclxuICByZWFkb25seSBfbmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9pbWFnZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9tYXhIUDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRIUDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9hdHRhY2tQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfZGVmZW5zZVBvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF90eXBlczogUG9rZW1vblR5cGVbXTtcclxuICByZWFkb25seSBfbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXTtcclxuXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBpbWFnZTogc3RyaW5nLCBtYXhIUDogbnVtYmVyLCBhdHRhY2tQb2ludHM6IG51bWJlcixcclxuICAgIGRlZmVuc2VQb2ludHM6IG51bWJlciwgdHlwZXM6IFBva2Vtb25UeXBlW10sIG1vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W10pIHtcclxuXHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX2ltYWdlID0gaW1hZ2U7XHJcbiAgICB0aGlzLl9tYXhIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9hdHRhY2tQb2ludHMgPSBhdHRhY2tQb2ludHM7XHJcbiAgICB0aGlzLl9kZWZlbnNlUG9pbnRzID0gZGVmZW5zZVBvaW50cztcclxuICAgIHRoaXMuX3R5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLl9tb3ZlcyA9IG1vdmVzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIHN1YnRyYWN0SFAocG9pbnRzVG9TdWJ0cmFjdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdIUCA9IHRoaXMuX2N1cnJlbnRIUCAtIHBvaW50c1RvU3VidHJhY3Q7XHJcbiAgICBpZiAobmV3SFAgPCAwKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRIUCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBuZXdIUDtcclxuICB9XHJcblxyXG4gIGhlYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIGdldCBhdHRhY2tQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXR0YWNrUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmVuc2VQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmZW5zZVBvaW50cztcclxuICB9XHJcblxyXG4gIGdldCB0eXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlcztcclxuICB9XHJcblxyXG4gIGdldCBtb3ZlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb3ZlcztcclxuICB9XHJcblxyXG4gIGlzQWxpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQID4gMDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcbmltcG9ydCB7IFBva2Vtb25UeXBlIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbkZhY3Rvcnkge1xyXG4gICAgcmVhZG9ubHkgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocG9rZURhdGE6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7IHR5cGVzOiBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0czogeyBocDogbnVtYmVyOyBhdHRhY2s6IG51bWJlcjsgZGVmZW5zZTogbnVtYmVyOyB9O1xyXG4gICAgICAgIG1vdmVzOiB7IG5hbWU6IHN0cmluZzsgYWNjdXJhY3k6IG51bWJlcjsgcG93ZXI6IG51bWJlcjsgdHlwZTogc3RyaW5nOyB9W11cclxuICAgIH1bXSkge1xyXG4gICAgICAgIHRoaXMuX3Bva2Vtb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IHBva2Vtb24gb2YgcG9rZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VJbWcgPSBcIi4uL2Fzc2V0cy9cIiArIHBva2Vtb24ubmFtZSArIFwiLnBuZ1wiXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlTW92ZXMgPSBwb2tlbW9uLm1vdmVzLnJlZHVjZSggKHRhYiwgbW92ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFiLnB1c2goe21vdmVOYW1lOiBtb3ZlLm5hbWUsIG1vdmVUeXBlOiBtb3ZlLnR5cGUgYXMgUG9rZW1vblR5cGV9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYlxyXG4gICAgICAgICAgICAgICAgfSwgW10gYXMge21vdmVOYW1lOiBzdHJpbmcsIG1vdmVUeXBlOiBQb2tlbW9uVHlwZX1bXSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VUeXBlczogUG9rZW1vblR5cGVbXSA9IHBva2Vtb24udHlwZXMubWFwKHYgPT4gdiBhcyBQb2tlbW9uVHlwZSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2Vtb25PYmplY3QgPSBuZXcgUG9rZW1vbih0aGlzLl9jYXBpdGFsaXplKHBva2Vtb24ubmFtZSksIHBva2VJbWcsIFxyXG4gICAgICAgICAgICAgICAgcG9rZW1vbi5zdGF0cy5ocCwgcG9rZW1vbi5zdGF0cy5hdHRhY2ssIHBva2Vtb24uc3RhdHMuZGVmZW5zZSxcclxuICAgICAgICAgICAgICAgIHBva2VUeXBlcywgcG9rZU1vdmVzKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uT2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb2tlbW9uQnlOYW1lKG5hbWU6IHN0cmluZyk6IFBva2Vtb24ge1xyXG4gICAgICAgIGNvbnN0IHBva2Vtb24gPSB0aGlzLl9wb2tlbW9ucy5maW5kKCBwb2tlbW9uID0+IHBva2Vtb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChwb2tlbW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2tlbW9uICR7bmFtZX0gaXMgbm90IGZvdW5kIGluIHRoZSBwb2tlbW9uIGZhY3RvcnlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9rZW1vblxyXG4gICAgfVxyXG5cclxuICAgIF9jYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICApID0+IHtcclxuICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICBuYW1lQXJlYS50ZXh0Q29udGVudCA9IHBva2Vtb25OYW1lO1xyXG4gIH07XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllck9uZSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG4gIGNyZWF0ZVBva2Vtb24oXHJcbiAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhY3RpdmVQbGF5ZXJBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2FjdGl2ZS1wbGF5ZXItaW5mb1wiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBhY3RpdmVQbGF5ZXJBcmVhLnRleHRDb250ZW50ID0gYCR7Z2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lfSBub3cgaXMgeW91ciB0dXJuLiBHZXQgdGhlIHJldmVuZ2UhYDtcclxuICBjb25zdCBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjFcIik7XHJcbiAgY29uc3QgcGxheWVyVHdvVW5kZXJsaW5lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyXCIpO1xyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyID09PSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUpIHtcclxuICAgIHBsYXllclR3b1VuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVBsYXllclwiKTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUhQQmFycyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBjcmVhdGVCYXIgPSAocGxheWVyOiBQbGF5ZXIsIEhQQmFyOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbWF4SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5tYXhIUDtcclxuICAgIGNvbnN0IGN1cnJlbnRIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLmN1cnJlbnRIUDtcclxuICAgIGNvbnN0IEhQSW5QZXJjZW50ID0gKGN1cnJlbnRIUCAvIG1heEhQKSAqIDEwMDtcclxuICAgIGNvbnNvbGUubG9nKEhQSW5QZXJjZW50KTtcclxuICAgIEhQQmFyLnN0eWxlLndpZHRoID0gYCR7SFBJblBlcmNlbnR9JWA7XHJcbiAgICBsZXQgSFBDbGFzc0xpc3QgPSBIUEJhci5jbGFzc0xpc3Q7XHJcbiAgICBpZiAoSFBJblBlcmNlbnQgPCAyMCkge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlQmFyKHBsYXllck9uZSwgcGxheWVyT25lSFBCYXIpO1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJUd28sIHBsYXllclR3b0hQQmFyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMjsgaSA+IHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCAtIDE7IGktLSkge1xyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoXHJcbiAgLy9wbGF5ZXI6IFBsYXllcixcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ29CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcblxyXG4gIGF0dGFja0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYmF0dGxlQnV0dG9ucyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9KTtcclxuICBzd2l0Y2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLmhhc01hbmdvKSB7XHJcbiAgICBtYWdpY0Z1bmN0aW9uKG1hbmdvQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgZWF0TWFuZ28pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBtYW5nby5pbm5lckhUTUwgPSBcIjBcIjtcclxuICAgIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBhdHRhY2spO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihzd2l0Y2hCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIHN3aXRjaFBva2UpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuY29uc3QgbWFnaWNGdW5jdGlvbiA9IChcclxuICBidXR0b246IEhUTUxEaXZFbGVtZW50LFxyXG4gIGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcixcclxuICBmdW5jdGlvblRvQ2FsbD86IGFueVxyXG4pID0+IHtcclxuICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhgJHtidXR0b24uaW5uZXJUZXh0fSB1c2VkIWApO1xyXG4gICAgaWYgKGZ1bmN0aW9uVG9DYWxsKSB7XHJcbiAgICAgIGZ1bmN0aW9uVG9DYWxsKGdhbWVIYW5kbGVyLCBlKTtcclxuICAgICAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgICAgIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgICAgIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgICAgIGdhbWVIYW5kbGVyLnN3aXRjaFBsYXllcigpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlQWN0aW9uQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICBhbmltYXRpb25CdXR0b25zRXhpdChidXR0b25zKTtcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkJ1dHRvbnNFbnRyeSA9IChidXR0b25zOiBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PikgPT4ge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPVxyXG4gICAgICBcInNjYWxlLWluLWhvci1jZW50ZXIgMC41cyBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYDtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhbmltYXRpb25CdXR0b25zRXhpdCA9IChidXR0b25zOiBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PikgPT4ge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPVxyXG4gICAgICBcInNjYWxlLW91dC1ob3Jpem9udGFsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA4NSwgMC42ODAsIDAuNTMwKSBib3RoXCI7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gYCR7aSAqIDAuMTV9c2A7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgYXR0YWNrID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiYnVtIGJ1bSBiYWNoIVwiKTtcclxufTtcclxuXHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLCBldmVudDogRXZlbnQpID0+IHtcclxuICBjb25zdCBuYW1lT2ZDaG9zZW5Qb2tlbW9uID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAudGV4dENvbnRlbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuc3dpdGNoUG9rZW1vbihuYW1lT2ZDaG9zZW5Qb2tlbW9uISk7XHJcbn07XHJcblxyXG5jb25zdCBlYXRNYW5nbyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBtYW5nb0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29CdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb1wiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci51c2VNYW5nbygpO1xyXG4gIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHtcclxuICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyLFxyXG59IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFBsYXllcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPVxyXG4gICAgICB0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmVcclxuICAgICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUG9rZW1vbihwb2tlbW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UGxheWVyLmluZGV4T2ZBY3RpdmVQb2tlbW9uID0gdGhpcy5fY3VycmVudFBsYXllci5wb2tlbW9ucy5maW5kSW5kZXgoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgPT09IHBva2Vtb25OYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTdGFydCAtIGFjdGlvbiBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUF0dGFja0J1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIkF0dGFjayBjaG9vc2UgbW9kYWxcIik7XHJcbiAgICBjb25zdCBhY3Rpb25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FjdGlvbk1vZGFsc1wiKSE7XHJcbiAgICBhY3Rpb25Db250YWluZXIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25PbmVcIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzBdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBzdGFydEJhdHRsZSB9IGZyb20gXCIuLi9maWdodFBhZ2Uvc3RhcnRCYXR0bGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRHYW1lSWZSZWFkeSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBpZiAocGxheWVyT25lLnBva2Vtb25zLmxlbmd0aCA8IDMgfHwgcGxheWVyVHdvLnBva2Vtb25zLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBzdGFydEJhdHRsZShwbGF5ZXJPbmUsIHBsYXllclR3bywgYXBwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlIH0gZnJvbSBcIi4vcmVuZGVyRmlnaHRQYWdlXCI7XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRCYXR0bGUgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYXBwOiBIVE1MRGl2RWxlbWVudFxyXG4pID0+IHtcclxuICBjb25zdCBnYW1lID0gbmV3IEdhbWVIYW5kbGVyKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBzZXRUaW1lb3V0KCgpID0+IGNyZWF0ZUZpZ2h0UGFnZShhcHAsIGdhbWUpLCAyMDAwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUG9rZW1vbiB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUhQQmFycyB9IGZyb20gXCIuL2NyZWF0ZUhQQmFyc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHNcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyT25lTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjEtbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjItbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgcGxheWVyT25lTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllck9uZS5uYW1lO1xyXG4gIHBsYXllclR3b05hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJUd28ubmFtZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2UgPSAoXHJcbiAgYXBwRGl2OiBIVE1MRGl2RWxlbWVudCxcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmlnaHRQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gZmlnaHRQYWdlLmlubmVySFRNTDtcclxuICBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBva2Vtb24oZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAvLyBnZW5lcmF0ZSBjaG9vc2UgYWN0aW9uIGJ1dHRvbnNcclxuICBnYW1lSGFuZGxlci5nZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBsYXllck5hbWVzIH0gZnJvbSBcIi4vY3JlYXRlUGxheWVyTmFtZXNcIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZW1vbnMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlbW9uc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNob29zZVBhZ2UgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IGFjdGl2ZVBsYXllciA9IHBsYXllck9uZTtcclxuICBjcmVhdGVQbGF5ZXJOYW1lcyhwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gIGNyZWF0ZVBva2Vtb25zKHBsYXllck9uZSwgcGxheWVyVHdvLCBhY3RpdmVQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQbGF5ZXJOYW1lcyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgcGxheWVyT25lTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMU5hbWVcIikhO1xyXG4gIHBsYXllck9uZU5hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllck9uZS5uYW1lO1xyXG4gIGxldCBwbGF5ZXJUd29OYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIyTmFtZVwiKSE7XHJcbiAgcGxheWVyVHdvTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyVHdvLm5hbWU7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgKiBhcyBkYXRhIGZyb20gXCIuLi8uLi9hc3NldHMvcG9rZV9kYXRhLmpzb25cIjtcclxuaW1wb3J0IHsgc3RhcnRHYW1lSWZSZWFkeSB9IGZyb20gXCIuL3N0YXJ0R2FtZUlmUmVhZHlcIjtcclxuaW1wb3J0IHsgYWRkQ2hvc2VuUG9rZW1vbiB9IGZyb20gXCIuL2FkZENob3NlblBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlUG9rZWJhbGxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZW1vbnMgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgcG9rZURhdGEgPSBkYXRhLnBva2Vtb25zO1xyXG4gIGNvbnN0IHBva2Vtb25GYWN0b3J5ID0gbmV3IFBva2Vtb25GYWN0b3J5KHBva2VEYXRhKTtcclxuICBjb25zdCBwb2tlbW9uSW1hZ2VzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjcG9rZW1vbkxpc3QgaW1nXCIpXHJcbiAgKSBhcyBbSFRNTEltYWdlRWxlbWVudF07XHJcblxyXG4gIHBva2Vtb25JbWFnZXMuZm9yRWFjaCgocG9rZW1vbkltYWdlKSA9PlxyXG4gICAgcG9rZW1vbkltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwiY2xpY2tcIixcclxuICAgICAgKGUpID0+IHtcclxuICAgICAgICBpZiAoYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gMykgcmV0dXJuO1xyXG4gICAgICAgIGFkZENob3NlblBva2Vtb24oZSwgcG9rZW1vbkZhY3RvcnksIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgY3JlYXRlUG9rZWJhbGxzKHBsYXllck9uZSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICAvLyBjaGFuZ2UgcGxheWVyXHJcbiAgICAgICAgYWN0aXZlUGxheWVyID0gYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmUgPyBwbGF5ZXJUd28gOiBwbGF5ZXJPbmU7XHJcbiAgICAgICAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIHN0YXJ0R2FtZUlmUmVhZHkocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi4vcG9rZW1vbkNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENob3NlblBva2Vtb24gPSAoXHJcbiAgZXZlbnQ6IEV2ZW50LFxyXG4gIGZhY3Rvcnk6IFBva2Vtb25GYWN0b3J5LFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGNsaWNrZWRQb2tlbW9uID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcG9rZW1vbk5hbWUgPSBjbGlja2VkUG9rZW1vbi5pZDtcclxuICBjb25zdCBuZXdQb2tlbW9uT2JqZWN0OiBQb2tlbW9uID0gZmFjdG9yeS5nZXRQb2tlbW9uQnlOYW1lKHBva2Vtb25OYW1lKTtcclxuICBhY3RpdmVQbGF5ZXIuYWRkUG9rZW1vbihuZXdQb2tlbW9uT2JqZWN0KTtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5maWx0ZXIgPSBcImdyYXlzY2FsZSgxMDAlKVwiO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlYmFsbHMgPSAocGxheWVyT25lOiBQbGF5ZXIsIGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W10gPVxyXG4gICAgYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmVcclxuICAgICAgPyBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjEgaW1nXCIpKVxyXG4gICAgICA6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMiBpbWdcIikpO1xyXG4gIGNvbnN0IHBsYXllckxhc3RQb2tlbW9uTmFtZTogc3RyaW5nID0gYWN0aXZlUGxheWVyLnBva2Vtb25zW1xyXG4gICAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDFcclxuICBdLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBudW1iZXJPZkxhc3RQb2tlbW9uOiBudW1iZXIgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMTtcclxuICBwbGF5ZXJQb2tlYmFsbHNbbnVtYmVyT2ZMYXN0UG9rZW1vbl0uc2V0QXR0cmlidXRlKFxyXG4gICAgXCJzcmNcIixcclxuICAgIGAuL2Fzc2V0cy8ke3BsYXllckxhc3RQb2tlbW9uTmFtZX0ucG5nYFxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQbGF5ZXIge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG4gIHByaXZhdGUgX2luZGV4T2ZBY3RpdmVQb2tlbW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGFzTWFuZ286IEJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwb2tlbW9uczogUG9rZW1vbltdKSB7XHJcbiAgICBpZiAobmFtZS5sZW5ndGggPiA4KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBsb25nIG5hbWVcIik7XHJcbiAgICB9XHJcbiAgICBpZiAocG9rZW1vbnMubGVuZ3RoID4gMykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBudW1iZXIgb2YgcG9rZW1vbnNcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX3Bva2Vtb25zID0gcG9rZW1vbnM7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IDA7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG4gIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZGV4T2ZBY3RpdmVQb2tlbW9uKG51bU9mQWN0aXZlUG9rZW1vbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IG51bU9mQWN0aXZlUG9rZW1vbjtcclxuICB9XHJcbiAgZ2V0IGdldEFjdGl2ZVBva2Vtb24oKTogUG9rZW1vbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNbdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb25dO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaXZlUG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIGNvbnN0IGFsaXZlUG9rZW1vbnNUYWI6IFBva2Vtb25bXSA9IHRoaXMucG9rZW1vbnMuZmlsdGVyKChwb2tlbW9uKSA9PlxyXG4gICAgICBwb2tlbW9uLmlzQWxpdmUoKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGl2ZVBva2Vtb25zVGFiO1xyXG4gIH1cclxuXHJcbiAgdXNlTWFuZ28oKTogdm9pZCB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5faGFzTWFuZ28pXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgdXNlIG1hbmdvLiBZb3UgdXNlIGFsbCBtYW5nb3NcIik7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVQb2tlbW9uLmhlYWwoKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNNYW5nbygpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNNYW5nbztcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcblxyXG4gIGdldCBub3RBY3RpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9rZW1vbnMuZmlsdGVyKFxyXG4gICAgICAocG9rZW1vbikgPT4gcG9rZW1vbi5uYW1lICE9PSB0aGlzLmdldEFjdGl2ZVBva2Vtb24ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxCdXR0b25FbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA8PSA4ICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoIDw9IDgpIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/src/fightPage/buttonsEventListeners.ts b/src/fightPage/buttonsEventListeners.ts index 99de1a2..c67e9a2 100644 --- a/src/fightPage/buttonsEventListeners.ts +++ b/src/fightPage/buttonsEventListeners.ts @@ -98,8 +98,6 @@ const magicFunction = ( createActivePlayer(gameHandler); } setTimeout(() => { - gameHandler.generateAttackButtons(); - gameHandler.generateSwitchButtons(); gameHandler.generateActionButtons(); }, 1000); animationButtonsExit(buttons); From 87dc9de786e6cc4abf34c879011e658ea29b1df2 Mon Sep 17 00:00:00 2001 From: mariusz-sm Date: Thu, 11 Feb 2021 21:26:27 +0100 Subject: [PATCH 39/76] Update showResultModal and playAgainModal functions --- src/fightPage/resultModalPopUpFunctions.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/fightPage/resultModalPopUpFunctions.ts b/src/fightPage/resultModalPopUpFunctions.ts index b63c8b8..1f17000 100644 --- a/src/fightPage/resultModalPopUpFunctions.ts +++ b/src/fightPage/resultModalPopUpFunctions.ts @@ -1,11 +1,15 @@ import { GameHandler } from "../gameHandlerClass"; -import { createFightPage } from "./renderFightPage"; +import { createChoosePage } from "../choosePokemonsPage/choosePokemonsPage" import { Player } from "../playerClass"; export const showResultModal = ( screenToDisplay: HTMLDivElement, - startingPosition: string + startingPosition: string, + GameHandler: GameHandler ) => { + const winnerName = GameHandler.getWinner() + const resultHeader = screenToDisplay.querySelector('.modalHeader')! + resultHeader.innerHTML = `${winnerName} won!` screenToDisplay.style.display = startingPosition; }; @@ -15,8 +19,6 @@ export const playAgainModal = ( playerTwo: Player) => { const playAgainButton = screenToDisplay.querySelector(".modalPlayAgainButton"); playAgainButton?.addEventListener("click", () => { - const app = document.querySelector("#app") as HTMLDivElement; - const game = new GameHandler(playerOne, playerTwo); - setTimeout(() => createFightPage(app, game), 2000); + setTimeout(() => createChoosePage(playerOne, playerTwo), 2000); }); }; \ No newline at end of file From b33fa6aea9f7f74120b41e0e93f7e4ae07144e0c Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Thu, 11 Feb 2021 21:36:14 +0100 Subject: [PATCH 40/76] animations for choosePokemonsPage --- dist/index.js | 4 +- src/choosePokemonsPage/addChosenPokemon.ts | 7 +- src/choosePokemonsPage/createPokeballs.ts | 1 + styles/SASS/_animations.scss | 180 +++++++++++++++++++- styles/SASS/_fight-view.scss | 2 +- styles/SASS/_pokemon-choose-view.scss | 4 + styles/SASS/_responsive.scss | 2 +- styles/app.css | 185 ++++++++++++++++++++- styles/app.css.map | 2 +- 9 files changed, 377 insertions(+), 10 deletions(-) diff --git a/dist/index.js b/dist/index.js index 7ff03d4..37ab723 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJnYW1lSGFuZGxlciIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwiY3JlYXRlUG9rZW1vbiIsInBsYXllciIsImltYWdlQXJlYSIsIm5hbWVBcmVhIiwicG9rZW1vbk5hbWUiLCJnZXRBY3RpdmVQb2tlbW9uIiwic2V0QXR0cmlidXRlIiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwiY3VycmVudFBsYXllciIsInBsYXllck9uZVVuZGVybGluZUFyZWEiLCJwbGF5ZXJUd29VbmRlcmxpbmVBcmVhIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiY3JlYXRlSFBCYXJzIiwiY3JlYXRlQmFyIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJwbGF5ZXJPbmVIUEJhciIsInBsYXllclR3b0hQQmFyIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMiLCJwbGF5ZXJQb2tlYmFsbHMiLCJpIiwiYWxpdmVQb2tlbW9ucyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJtYWdpY0Z1bmN0aW9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImZ1bmN0aW9uVG9DYWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJpbm5lclRleHQiLCJzd2l0Y2hQbGF5ZXIiLCJzZXRUaW1lb3V0IiwiZ2VuZXJhdGVBY3Rpb25CdXR0b25zIiwiYW5pbWF0aW9uQnV0dG9uc0V4aXQiLCJhbmltYXRpb25CdXR0b25zRW50cnkiLCJhbmltYXRpb24iLCJhbmltYXRpb25EZWxheSIsInN3aXRjaFBva2UiLCJldmVudCIsIm5hbWVPZkNob3NlblBva2Vtb24iLCJjdXJyZW50VGFyZ2V0Iiwic3dpdGNoUG9rZW1vbiIsImVhdE1hbmdvIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsInVzZU1hbmdvIiwiaW5uZXJIVE1MIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbmRleE9mQWN0aXZlUG9rZW1vbiIsImZpbmRJbmRleCIsImJhdHRsZUJ1dHRvbnMiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiaGFzTWFuZ28iLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uT25lIiwic3dpdGNoQnV0dG9uVHdvIiwibm90QWN0aXZlUG9rZW1vbnMiLCJzdGFydEdhbWVJZlJlYWR5IiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwicGxheWVyT25lTmFtZSIsInBsYXllclR3b05hbWUiLCJjcmVhdGVQbGF5ZXJGaWdodE5hbWVzIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImZhY3RvcnkiLCJjbGlja2VkUG9rZW1vbiIsInRhcmdldCIsImlkIiwibmV3UG9rZW1vbk9iamVjdCIsImFkZFBva2Vtb24iLCJjdXJzb3IiLCJmaWx0ZXIiLCJhZGRDaG9zZW5Qb2tlbW9uIiwicGxheWVyTGFzdFBva2Vtb25OYW1lIiwiY3JlYXRlUG9rZWJhbGxzIiwib25jZSIsImNyZWF0ZVBva2Vtb25zIiwiX2luZGV4T2ZBY3RpdmVQb2tlbW9uIiwiX2hhc01hbmdvIiwibnVtT2ZBY3RpdmVQb2tlbW9uIiwiYWN0aXZhdGVTdGFydCIsIm5hbWUxSW5wdXQiLCJuYW1lMklucHV0Iiwic3RhcnRCdXR0b24iLCJ2YWx1ZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEs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cnQgY29uc3Qgc2hvd01vZGFsID0gKFxyXG4gIHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQsXHJcbiAgc3RhcnRpbmdQb3NpdGlvbjogc3RyaW5nXHJcbikgPT4ge1xyXG4gIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gc3RhcnRpbmdQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBoaWRlTW9kYWwgPSAoc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGV4aXRCdXR0b24gPSBzY3JlZW5Ub0Rpc3BsYXkucXVlcnlTZWxlY3RvcihcIi5leGl0QnV0dG9uXCIpO1xyXG4gIGV4aXRCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lID0gKGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHdob0Nob29zZXNQb2tlbW9uVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjd2hvQ2hvb3Nlc1BhcmFncmFwaFwiKSE7XHJcbiAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gM1xyXG4gICAgPyAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gXCJXYWl0IGZvciB0aGUgZ2FtZSB0byBzdGFydC4uLlwiKVxyXG4gICAgOiAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gYCR7YWN0aXZlUGxheWVyLm5hbWV9IGNob29zZXMgMSBwb2tlbW9uYCk7XHJcbn07XHJcbiIsImV4cG9ydCB0eXBlIFBva2Vtb25UeXBlID1cclxuICB8IFwiZ3Jhc3NcIlxyXG4gIHwgXCJwb2lzb25cIlxyXG4gIHwgXCJmaXJlXCJcclxuICB8IFwid2F0ZXJcIlxyXG4gIHwgXCJidWdcIlxyXG4gIHwgXCJub3JtYWxcIlxyXG4gIHwgXCJmbHlpbmdcIlxyXG4gIHwgXCJlbGVjdHJpY1wiXHJcbiAgfCBcImdyb3VuZFwiXHJcbiAgfCBcImZhaXJ5XCJcclxuICB8IFwicHN5Y2hpY1wiXHJcbiAgfCBcImZpZ2h0aW5nXCJcclxuICB8IFwicm9ja1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb24ge1xyXG5cclxuICByZWFkb25seSBfbmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9pbWFnZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9tYXhIUDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRIUDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9hdHRhY2tQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfZGVmZW5zZVBvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF90eXBlczogUG9rZW1vblR5cGVbXTtcclxuICByZWFkb25seSBfbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXTtcclxuXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBpbWFnZTogc3RyaW5nLCBtYXhIUDogbnVtYmVyLCBhdHRhY2tQb2ludHM6IG51bWJlcixcclxuICAgIGRlZmVuc2VQb2ludHM6IG51bWJlciwgdHlwZXM6IFBva2Vtb25UeXBlW10sIG1vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W10pIHtcclxuXHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX2ltYWdlID0gaW1hZ2U7XHJcbiAgICB0aGlzLl9tYXhIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9hdHRhY2tQb2ludHMgPSBhdHRhY2tQb2ludHM7XHJcbiAgICB0aGlzLl9kZWZlbnNlUG9pbnRzID0gZGVmZW5zZVBvaW50cztcclxuICAgIHRoaXMuX3R5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLl9tb3ZlcyA9IG1vdmVzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIHN1YnRyYWN0SFAocG9pbnRzVG9TdWJ0cmFjdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdIUCA9IHRoaXMuX2N1cnJlbnRIUCAtIHBvaW50c1RvU3VidHJhY3Q7XHJcbiAgICBpZiAobmV3SFAgPCAwKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRIUCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBuZXdIUDtcclxuICB9XHJcblxyXG4gIGhlYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIGdldCBhdHRhY2tQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXR0YWNrUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmVuc2VQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmZW5zZVBvaW50cztcclxuICB9XHJcblxyXG4gIGdldCB0eXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlcztcclxuICB9XHJcblxyXG4gIGdldCBtb3ZlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb3ZlcztcclxuICB9XHJcblxyXG4gIGlzQWxpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQID4gMDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcbmltcG9ydCB7IFBva2Vtb25UeXBlIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbkZhY3Rvcnkge1xyXG4gICAgcmVhZG9ubHkgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocG9rZURhdGE6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7IHR5cGVzOiBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0czogeyBocDogbnVtYmVyOyBhdHRhY2s6IG51bWJlcjsgZGVmZW5zZTogbnVtYmVyOyB9O1xyXG4gICAgICAgIG1vdmVzOiB7IG5hbWU6IHN0cmluZzsgYWNjdXJhY3k6IG51bWJlcjsgcG93ZXI6IG51bWJlcjsgdHlwZTogc3RyaW5nOyB9W11cclxuICAgIH1bXSkge1xyXG4gICAgICAgIHRoaXMuX3Bva2Vtb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IHBva2Vtb24gb2YgcG9rZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VJbWcgPSBcIi4uL2Fzc2V0cy9cIiArIHBva2Vtb24ubmFtZSArIFwiLnBuZ1wiXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlTW92ZXMgPSBwb2tlbW9uLm1vdmVzLnJlZHVjZSggKHRhYiwgbW92ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFiLnB1c2goe21vdmVOYW1lOiBtb3ZlLm5hbWUsIG1vdmVUeXBlOiBtb3ZlLnR5cGUgYXMgUG9rZW1vblR5cGV9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYlxyXG4gICAgICAgICAgICAgICAgfSwgW10gYXMge21vdmVOYW1lOiBzdHJpbmcsIG1vdmVUeXBlOiBQb2tlbW9uVHlwZX1bXSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VUeXBlczogUG9rZW1vblR5cGVbXSA9IHBva2Vtb24udHlwZXMubWFwKHYgPT4gdiBhcyBQb2tlbW9uVHlwZSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2Vtb25PYmplY3QgPSBuZXcgUG9rZW1vbih0aGlzLl9jYXBpdGFsaXplKHBva2Vtb24ubmFtZSksIHBva2VJbWcsIFxyXG4gICAgICAgICAgICAgICAgcG9rZW1vbi5zdGF0cy5ocCwgcG9rZW1vbi5zdGF0cy5hdHRhY2ssIHBva2Vtb24uc3RhdHMuZGVmZW5zZSxcclxuICAgICAgICAgICAgICAgIHBva2VUeXBlcywgcG9rZU1vdmVzKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uT2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb2tlbW9uQnlOYW1lKG5hbWU6IHN0cmluZyk6IFBva2Vtb24ge1xyXG4gICAgICAgIGNvbnN0IHBva2Vtb24gPSB0aGlzLl9wb2tlbW9ucy5maW5kKCBwb2tlbW9uID0+IHBva2Vtb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChwb2tlbW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2tlbW9uICR7bmFtZX0gaXMgbm90IGZvdW5kIGluIHRoZSBwb2tlbW9uIGZhY3RvcnlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9rZW1vblxyXG4gICAgfVxyXG5cclxuICAgIF9jYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICApID0+IHtcclxuICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICBuYW1lQXJlYS50ZXh0Q29udGVudCA9IHBva2Vtb25OYW1lO1xyXG4gIH07XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllck9uZSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG4gIGNyZWF0ZVBva2Vtb24oXHJcbiAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhY3RpdmVQbGF5ZXJBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2FjdGl2ZS1wbGF5ZXItaW5mb1wiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBhY3RpdmVQbGF5ZXJBcmVhLnRleHRDb250ZW50ID0gYCR7Z2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lfSBub3cgaXMgeW91ciB0dXJuLiBHZXQgdGhlIHJldmVuZ2UhYDtcclxuICBjb25zdCBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjFcIik7XHJcbiAgY29uc3QgcGxheWVyVHdvVW5kZXJsaW5lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyXCIpO1xyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyID09PSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUpIHtcclxuICAgIHBsYXllclR3b1VuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVBsYXllclwiKTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUhQQmFycyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBjcmVhdGVCYXIgPSAocGxheWVyOiBQbGF5ZXIsIEhQQmFyOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbWF4SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5tYXhIUDtcclxuICAgIGNvbnN0IGN1cnJlbnRIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLmN1cnJlbnRIUDtcclxuICAgIGNvbnN0IEhQSW5QZXJjZW50ID0gKGN1cnJlbnRIUCAvIG1heEhQKSAqIDEwMDtcclxuICAgIGNvbnNvbGUubG9nKEhQSW5QZXJjZW50KTtcclxuICAgIEhQQmFyLnN0eWxlLndpZHRoID0gYCR7SFBJblBlcmNlbnR9JWA7XHJcbiAgICBsZXQgSFBDbGFzc0xpc3QgPSBIUEJhci5jbGFzc0xpc3Q7XHJcbiAgICBpZiAoSFBJblBlcmNlbnQgPCAyMCkge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlQmFyKHBsYXllck9uZSwgcGxheWVyT25lSFBCYXIpO1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJUd28sIHBsYXllclR3b0hQQmFyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMjsgaSA+IHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCAtIDE7IGktLSkge1xyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoXHJcbiAgLy9wbGF5ZXI6IFBsYXllcixcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ29CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcblxyXG4gIGF0dGFja0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYmF0dGxlQnV0dG9ucyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9KTtcclxuICBzd2l0Y2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLmhhc01hbmdvKSB7XHJcbiAgICBtYWdpY0Z1bmN0aW9uKG1hbmdvQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgZWF0TWFuZ28pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBtYW5nby5pbm5lckhUTUwgPSBcIjBcIjtcclxuICAgIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBhdHRhY2spO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihzd2l0Y2hCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIHN3aXRjaFBva2UpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuY29uc3QgbWFnaWNGdW5jdGlvbiA9IChcclxuICBidXR0b246IEhUTUxEaXZFbGVtZW50LFxyXG4gIGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcixcclxuICBmdW5jdGlvblRvQ2FsbD86IGFueVxyXG4pID0+IHtcclxuICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhgJHtidXR0b24uaW5uZXJUZXh0fSB1c2VkIWApO1xyXG4gICAgaWYgKGZ1bmN0aW9uVG9DYWxsKSB7XHJcbiAgICAgIGZ1bmN0aW9uVG9DYWxsKGdhbWVIYW5kbGVyLCBlKTtcclxuICAgICAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgICAgIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgICAgIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgICAgIGdhbWVIYW5kbGVyLnN3aXRjaFBsYXllcigpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlQWN0aW9uQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICBhbmltYXRpb25CdXR0b25zRXhpdChidXR0b25zKTtcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkJ1dHRvbnNFbnRyeSA9IChidXR0b25zOiBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PikgPT4ge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPVxyXG4gICAgICBcInNjYWxlLWluLWhvci1jZW50ZXIgMC41cyBjdWJpYy1iZXppZXIoMC4yNTAsIDAuNDYwLCAwLjQ1MCwgMC45NDApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYDtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhbmltYXRpb25CdXR0b25zRXhpdCA9IChidXR0b25zOiBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PikgPT4ge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnV0dG9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb24gPVxyXG4gICAgICBcInNjYWxlLW91dC1ob3Jpem9udGFsIDAuNXMgY3ViaWMtYmV6aWVyKDAuNTUwLCAwLjA4NSwgMC42ODAsIDAuNTMwKSBib3RoXCI7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gYCR7aSAqIDAuMTV9c2A7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgYXR0YWNrID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiYnVtIGJ1bSBiYWNoIVwiKTtcclxufTtcclxuXHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLCBldmVudDogRXZlbnQpID0+IHtcclxuICBjb25zdCBuYW1lT2ZDaG9zZW5Qb2tlbW9uID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAudGV4dENvbnRlbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuc3dpdGNoUG9rZW1vbihuYW1lT2ZDaG9zZW5Qb2tlbW9uISk7XHJcbn07XHJcblxyXG5jb25zdCBlYXRNYW5nbyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBtYW5nb0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29CdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb1wiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci51c2VNYW5nbygpO1xyXG4gIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHtcclxuICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyLFxyXG59IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFBsYXllcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPVxyXG4gICAgICB0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmVcclxuICAgICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUG9rZW1vbihwb2tlbW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UGxheWVyLmluZGV4T2ZBY3RpdmVQb2tlbW9uID0gdGhpcy5fY3VycmVudFBsYXllci5wb2tlbW9ucy5maW5kSW5kZXgoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgPT09IHBva2Vtb25OYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTdGFydCAtIGFjdGlvbiBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUF0dGFja0J1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIkF0dGFjayBjaG9vc2UgbW9kYWxcIik7XHJcbiAgICBjb25zdCBhY3Rpb25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FjdGlvbk1vZGFsc1wiKSE7XHJcbiAgICBhY3Rpb25Db250YWluZXIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25PbmVcIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzBdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBzdGFydEJhdHRsZSB9IGZyb20gXCIuLi9maWdodFBhZ2Uvc3RhcnRCYXR0bGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRHYW1lSWZSZWFkeSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBpZiAocGxheWVyT25lLnBva2Vtb25zLmxlbmd0aCA8IDMgfHwgcGxheWVyVHdvLnBva2Vtb25zLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBzdGFydEJhdHRsZShwbGF5ZXJPbmUsIHBsYXllclR3bywgYXBwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlIH0gZnJvbSBcIi4vcmVuZGVyRmlnaHRQYWdlXCI7XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRCYXR0bGUgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYXBwOiBIVE1MRGl2RWxlbWVudFxyXG4pID0+IHtcclxuICBjb25zdCBnYW1lID0gbmV3IEdhbWVIYW5kbGVyKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBzZXRUaW1lb3V0KCgpID0+IGNyZWF0ZUZpZ2h0UGFnZShhcHAsIGdhbWUpLCAyMDAwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUG9rZW1vbiB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUhQQmFycyB9IGZyb20gXCIuL2NyZWF0ZUhQQmFyc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHNcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyT25lTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjEtbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjItbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgcGxheWVyT25lTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllck9uZS5uYW1lO1xyXG4gIHBsYXllclR3b05hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJUd28ubmFtZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2UgPSAoXHJcbiAgYXBwRGl2OiBIVE1MRGl2RWxlbWVudCxcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmlnaHRQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gZmlnaHRQYWdlLmlubmVySFRNTDtcclxuICBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBva2Vtb24oZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAvLyBnZW5lcmF0ZSBjaG9vc2UgYWN0aW9uIGJ1dHRvbnNcclxuICBnYW1lSGFuZGxlci5nZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBsYXllck5hbWVzIH0gZnJvbSBcIi4vY3JlYXRlUGxheWVyTmFtZXNcIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZW1vbnMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlbW9uc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNob29zZVBhZ2UgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IGFjdGl2ZVBsYXllciA9IHBsYXllck9uZTtcclxuICBjcmVhdGVQbGF5ZXJOYW1lcyhwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gIGNyZWF0ZVBva2Vtb25zKHBsYXllck9uZSwgcGxheWVyVHdvLCBhY3RpdmVQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQbGF5ZXJOYW1lcyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgcGxheWVyT25lTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMU5hbWVcIikhO1xyXG4gIHBsYXllck9uZU5hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllck9uZS5uYW1lO1xyXG4gIGxldCBwbGF5ZXJUd29OYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIyTmFtZVwiKSE7XHJcbiAgcGxheWVyVHdvTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyVHdvLm5hbWU7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgKiBhcyBkYXRhIGZyb20gXCIuLi8uLi9hc3NldHMvcG9rZV9kYXRhLmpzb25cIjtcclxuaW1wb3J0IHsgc3RhcnRHYW1lSWZSZWFkeSB9IGZyb20gXCIuL3N0YXJ0R2FtZUlmUmVhZHlcIjtcclxuaW1wb3J0IHsgYWRkQ2hvc2VuUG9rZW1vbiB9IGZyb20gXCIuL2FkZENob3NlblBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlUG9rZWJhbGxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZW1vbnMgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgcG9rZURhdGEgPSBkYXRhLnBva2Vtb25zO1xyXG4gIGNvbnN0IHBva2Vtb25GYWN0b3J5ID0gbmV3IFBva2Vtb25GYWN0b3J5KHBva2VEYXRhKTtcclxuICBjb25zdCBwb2tlbW9uSW1hZ2VzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjcG9rZW1vbkxpc3QgaW1nXCIpXHJcbiAgKSBhcyBbSFRNTEltYWdlRWxlbWVudF07XHJcblxyXG4gIHBva2Vtb25JbWFnZXMuZm9yRWFjaCgocG9rZW1vbkltYWdlKSA9PlxyXG4gICAgcG9rZW1vbkltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwiY2xpY2tcIixcclxuICAgICAgKGUpID0+IHtcclxuICAgICAgICBpZiAoYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gMykgcmV0dXJuO1xyXG4gICAgICAgIGFkZENob3NlblBva2Vtb24oZSwgcG9rZW1vbkZhY3RvcnksIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgY3JlYXRlUG9rZWJhbGxzKHBsYXllck9uZSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICAvLyBjaGFuZ2UgcGxheWVyXHJcbiAgICAgICAgYWN0aXZlUGxheWVyID0gYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmUgPyBwbGF5ZXJUd28gOiBwbGF5ZXJPbmU7XHJcbiAgICAgICAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIHN0YXJ0R2FtZUlmUmVhZHkocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi4vcG9rZW1vbkNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENob3NlblBva2Vtb24gPSAoXHJcbiAgZXZlbnQ6IEV2ZW50LFxyXG4gIGZhY3Rvcnk6IFBva2Vtb25GYWN0b3J5LFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGNsaWNrZWRQb2tlbW9uID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcG9rZW1vbk5hbWUgPSBjbGlja2VkUG9rZW1vbi5pZDtcclxuICBjb25zdCBuZXdQb2tlbW9uT2JqZWN0OiBQb2tlbW9uID0gZmFjdG9yeS5nZXRQb2tlbW9uQnlOYW1lKHBva2Vtb25OYW1lKTtcclxuICBhY3RpdmVQbGF5ZXIuYWRkUG9rZW1vbihuZXdQb2tlbW9uT2JqZWN0KTtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5maWx0ZXIgPSBcImdyYXlzY2FsZSgxMDAlKVwiO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlYmFsbHMgPSAocGxheWVyT25lOiBQbGF5ZXIsIGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W10gPVxyXG4gICAgYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmVcclxuICAgICAgPyBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjEgaW1nXCIpKVxyXG4gICAgICA6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMiBpbWdcIikpO1xyXG4gIGNvbnN0IHBsYXllckxhc3RQb2tlbW9uTmFtZTogc3RyaW5nID0gYWN0aXZlUGxheWVyLnBva2Vtb25zW1xyXG4gICAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDFcclxuICBdLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBudW1iZXJPZkxhc3RQb2tlbW9uOiBudW1iZXIgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMTtcclxuICBwbGF5ZXJQb2tlYmFsbHNbbnVtYmVyT2ZMYXN0UG9rZW1vbl0uc2V0QXR0cmlidXRlKFxyXG4gICAgXCJzcmNcIixcclxuICAgIGAuL2Fzc2V0cy8ke3BsYXllckxhc3RQb2tlbW9uTmFtZX0ucG5nYFxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQbGF5ZXIge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG4gIHByaXZhdGUgX2luZGV4T2ZBY3RpdmVQb2tlbW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGFzTWFuZ286IEJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwb2tlbW9uczogUG9rZW1vbltdKSB7XHJcbiAgICBpZiAobmFtZS5sZW5ndGggPiA4KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBsb25nIG5hbWVcIik7XHJcbiAgICB9XHJcbiAgICBpZiAocG9rZW1vbnMubGVuZ3RoID4gMykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBudW1iZXIgb2YgcG9rZW1vbnNcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX3Bva2Vtb25zID0gcG9rZW1vbnM7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IDA7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG4gIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZGV4T2ZBY3RpdmVQb2tlbW9uKG51bU9mQWN0aXZlUG9rZW1vbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IG51bU9mQWN0aXZlUG9rZW1vbjtcclxuICB9XHJcbiAgZ2V0IGdldEFjdGl2ZVBva2Vtb24oKTogUG9rZW1vbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNbdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb25dO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaXZlUG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIGNvbnN0IGFsaXZlUG9rZW1vbnNUYWI6IFBva2Vtb25bXSA9IHRoaXMucG9rZW1vbnMuZmlsdGVyKChwb2tlbW9uKSA9PlxyXG4gICAgICBwb2tlbW9uLmlzQWxpdmUoKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGl2ZVBva2Vtb25zVGFiO1xyXG4gIH1cclxuXHJcbiAgdXNlTWFuZ28oKTogdm9pZCB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5faGFzTWFuZ28pXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgdXNlIG1hbmdvLiBZb3UgdXNlIGFsbCBtYW5nb3NcIik7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVQb2tlbW9uLmhlYWwoKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNNYW5nbygpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNNYW5nbztcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcblxyXG4gIGdldCBub3RBY3RpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9rZW1vbnMuZmlsdGVyKFxyXG4gICAgICAocG9rZW1vbikgPT4gcG9rZW1vbi5uYW1lICE9PSB0aGlzLmdldEFjdGl2ZVBva2Vtb24ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxCdXR0b25FbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA8PSA4ICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoIDw9IDgpIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),setTimeout((function(){o.style.cursor="default",o.style.filter="grayscale(100%)"}),500),o.style.animation="heartbeat 1s ease-in-out both"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase(),r=t.pokemons.length-1;n[r].setAttribute("src","./assets/"+o+".png"),n[r].style.animation="bounce-in-fwd 1.1s both"}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJnYW1lSGFuZGxlciIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwiY3JlYXRlUG9rZW1vbiIsInBsYXllciIsImltYWdlQXJlYSIsIm5hbWVBcmVhIiwicG9rZW1vbk5hbWUiLCJnZXRBY3RpdmVQb2tlbW9uIiwic2V0QXR0cmlidXRlIiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwiY3VycmVudFBsYXllciIsInBsYXllck9uZVVuZGVybGluZUFyZWEiLCJwbGF5ZXJUd29VbmRlcmxpbmVBcmVhIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiY3JlYXRlSFBCYXJzIiwiY3JlYXRlQmFyIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJwbGF5ZXJPbmVIUEJhciIsInBsYXllclR3b0hQQmFyIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMiLCJwbGF5ZXJQb2tlYmFsbHMiLCJpIiwiYWxpdmVQb2tlbW9ucyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJtYWdpY0Z1bmN0aW9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImZ1bmN0aW9uVG9DYWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJpbm5lclRleHQiLCJzd2l0Y2hQbGF5ZXIiLCJzZXRUaW1lb3V0IiwiZ2VuZXJhdGVBY3Rpb25CdXR0b25zIiwiYW5pbWF0aW9uQnV0dG9uc0V4aXQiLCJhbmltYXRpb25CdXR0b25zRW50cnkiLCJhbmltYXRpb24iLCJhbmltYXRpb25EZWxheSIsInN3aXRjaFBva2UiLCJldmVudCIsIm5hbWVPZkNob3NlblBva2Vtb24iLCJjdXJyZW50VGFyZ2V0Iiwic3dpdGNoUG9rZW1vbiIsImVhdE1hbmdvIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsInVzZU1hbmdvIiwiaW5uZXJIVE1MIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbmRleE9mQWN0aXZlUG9rZW1vbiIsImZpbmRJbmRleCIsImJhdHRsZUJ1dHRvbnMiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiaGFzTWFuZ28iLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uT25lIiwic3dpdGNoQnV0dG9uVHdvIiwibm90QWN0aXZlUG9rZW1vbnMiLCJzdGFydEdhbWVJZlJlYWR5IiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwicGxheWVyT25lTmFtZSIsInBsYXllclR3b05hbWUiLCJjcmVhdGVQbGF5ZXJGaWdodE5hbWVzIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImZhY3RvcnkiLCJjbGlja2VkUG9rZW1vbiIsInRhcmdldCIsImlkIiwibmV3UG9rZW1vbk9iamVjdCIsImFkZFBva2Vtb24iLCJjdXJzb3IiLCJmaWx0ZXIiLCJhZGRDaG9zZW5Qb2tlbW9uIiwicGxheWVyTGFzdFBva2Vtb25OYW1lIiwibnVtYmVyT2ZMYXN0UG9rZW1vbiIsImNyZWF0ZVBva2ViYWxscyIsIm9uY2UiLCJjcmVhdGVQb2tlbW9ucyIsIl9pbmRleE9mQWN0aXZlUG9rZW1vbiIsIl9oYXNNYW5nbyIsIm51bU9mQWN0aXZlUG9rZW1vbiIsImFjdGl2YXRlU3RhcnQiLCJuYW1lMUlucHV0IiwibmFtZTJJbnB1dCIsInN0YXJ0QnV0dG9uIiwidmFsdWUiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsInN0YXJ0aW5nUGFnZSIsInBsYXllcjFOYW1lSW5wdXQiLCJwbGF5ZXIyTmFtZUlucHV0Iiwic2NyZWVuVG9EaXNwbGF5IiwiZXhpdEJ1dHRvbiIsImhvd1RvUGxheUJ1dHRvbiIsImluZm9Nb2RhbCIsInJlbmRlckhvd1RvUGxheU1vZGFsIiwiZGlzcGxheSIsInBsYXlCdXR0b24iLCJjaG9vc2VQb2tlbW9uU2NyZWVuIiwiUGxheWVyIiwicmVuZGVyQ2hvb3NlUG9rZW1vblNjcmVlbiJdLCJtYXBwaW5ncyI6Im1CQUFPLElDRU1BLEVBQXlCLFNBQUNDLEdBQ3JDLElBQUlDLEVBQXdCQyxTQUFTQyxjQUFjLHdCQUNsQixJQUFqQ0gsRUFBYUksU0FBU0MsT0FDakJKLEVBQXNCSyxZQUFjLGdDQUNwQ0wsRUFBc0JLLFlBQWlCTixFQUFhTyxLQUFJLHNCQ1MvRCxhQVdFLFdBQVlBLEVBQWNDLEVBQWVDLEVBQWVDLEVBQ3REQyxFQUF1QkMsRUFBc0JDLEdBRTdDQyxLQUFLQyxNQUFRUixFQUNiTyxLQUFLRSxPQUFTUixFQUNkTSxLQUFLRyxPQUFTUixFQUNkSyxLQUFLSSxXQUFhVCxFQUNsQkssS0FBS0ssY0FBZ0JULEVBQ3JCSSxLQUFLTSxlQUFpQlQsRUFDdEJHLEtBQUtPLE9BQVNULEVBQ2RFLEtBQUtRLE9BQVNULEVBbURsQixPQS9DRSxzQkFBSSxtQkFBSSxDLElBQVIsV0FDRSxPQUFPQyxLQUFLQyxPLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9ELEtBQUtFLFEsZ0NBR2Qsc0JBQUksd0JBQVMsQyxJQUFiLFdBQ0UsT0FBT0YsS0FBS0ksWSxnQ0FHZCxzQkFBSSxvQkFBSyxDLElB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RSxVQUN2Q2dDLEVBQWlCLElBQUl5QyxFQUFPVixFQUFrQixJQUFLLElBQUlVLEVBQU9ULEVBQWtCLFFBVWxGVSxDQUEwQm5ELEtBR04sTSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzaG93TW9kYWwgPSAoXHJcbiAgc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCxcclxuICBzdGFydGluZ1Bvc2l0aW9uOiBzdHJpbmdcclxuKSA9PiB7XHJcbiAgc2NyZWVuVG9EaXNwbGF5LnN0eWxlLmRpc3BsYXkgPSBzdGFydGluZ1Bvc2l0aW9uO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGhpZGVNb2RhbCA9IChzY3JlZW5Ub0Rpc3BsYXk6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgZXhpdEJ1dHRvbiA9IHNjcmVlblRvRGlzcGxheS5xdWVyeVNlbGVjdG9yKFwiLmV4aXRCdXR0b25cIik7XHJcbiAgZXhpdEJ1dHRvbj8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgfSk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgPSAoYWN0aXZlUGxheWVyOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgd2hvQ2hvb3Nlc1Bva2Vtb25UZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiN3aG9DaG9vc2VzUGFyYWdyYXBoXCIpITtcclxuICBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzXHJcbiAgICA/ICh3aG9DaG9vc2VzUG9rZW1vblRleHQudGV4dENvbnRlbnQgPSBcIldhaXQgZm9yIHRoZSBnYW1lIHRvIHN0YXJ0Li4uXCIpXHJcbiAgICA6ICh3aG9DaG9vc2VzUG9rZW1vblRleHQudGV4dENvbnRlbnQgPSBgJHthY3RpdmVQbGF5ZXIubmFtZX0gY2hvb3NlcyAxIHBva2Vtb25gKTtcclxufTtcclxuIiwiZXhwb3J0IHR5cGUgUG9rZW1vblR5cGUgPVxyXG4gIHwgXCJncmFzc1wiXHJcbiAgfCBcInBvaXNvblwiXHJcbiAgfCBcImZpcmVcIlxyXG4gIHwgXCJ3YXRlclwiXHJcbiAgfCBcImJ1Z1wiXHJcbiAgfCBcIm5vcm1hbFwiXHJcbiAgfCBcImZseWluZ1wiXHJcbiAgfCBcImVsZWN0cmljXCJcclxuICB8IFwiZ3JvdW5kXCJcclxuICB8IFwiZmFpcnlcIlxyXG4gIHwgXCJwc3ljaGljXCJcclxuICB8IFwiZmlnaHRpbmdcIlxyXG4gIHwgXCJyb2NrXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbiB7XHJcblxyXG4gIHJlYWRvbmx5IF9uYW1lOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgX2ltYWdlOiBzdHJpbmc7XHJcbiAgcmVhZG9ubHkgX21heEhQOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfY3VycmVudEhQOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX2F0dGFja1BvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9kZWZlbnNlUG9pbnRzOiBudW1iZXI7XHJcbiAgcmVhZG9ubHkgX3R5cGVzOiBQb2tlbW9uVHlwZVtdO1xyXG4gIHJlYWRvbmx5IF9tb3ZlczogeyBtb3ZlTmFtZTogc3RyaW5nOyBtb3ZlVHlwZTogUG9rZW1vblR5cGUgfVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIGltYWdlOiBzdHJpbmcsIG1heEhQOiBudW1iZXIsIGF0dGFja1BvaW50czogbnVtYmVyLFxyXG4gICAgZGVmZW5zZVBvaW50czogbnVtYmVyLCB0eXBlczogUG9rZW1vblR5cGVbXSwgbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXSkge1xyXG5cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5faW1hZ2UgPSBpbWFnZTtcclxuICAgIHRoaXMuX21heEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBtYXhIUDtcclxuICAgIHRoaXMuX2F0dGFja1BvaW50cyA9IGF0dGFja1BvaW50cztcclxuICAgIHRoaXMuX2RlZmVuc2VQb2ludHMgPSBkZWZlbnNlUG9pbnRzO1xyXG4gICAgdGhpcy5fdHlwZXMgPSB0eXBlcztcclxuICAgIHRoaXMuX21vdmVzID0gbW92ZXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IG5hbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcblxyXG4gIGdldCBpbWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9pbWFnZTtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50SFAoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1heEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21heEhQO1xyXG4gIH1cclxuXHJcbiAgc3VidHJhY3RIUChwb2ludHNUb1N1YnRyYWN0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld0hQID0gdGhpcy5fY3VycmVudEhQIC0gcG9pbnRzVG9TdWJ0cmFjdDtcclxuICAgIGlmIChuZXdIUCA8IDApIHtcclxuICAgICAgdGhpcy5fY3VycmVudEhQID0gMDtcclxuICAgIH1cclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IG5ld0hQO1xyXG4gIH1cclxuXHJcbiAgaGVhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRIUCA9IHRoaXMuX21heEhQO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGF0dGFja1BvaW50cygpIHtcclxuICAgIHJldHVybiB0aGlzLl9hdHRhY2tQb2ludHM7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmZW5zZVBvaW50cygpIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWZlbnNlUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHR5cGVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vdmVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vdmVzO1xyXG4gIH1cclxuXHJcbiAgaXNBbGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SFAgPiAwO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgeyBQb2tlbW9uIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuaW1wb3J0IHsgUG9rZW1vblR5cGUgfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIlxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBQb2tlbW9uRmFjdG9yeSB7XHJcbiAgICByZWFkb25seSBfcG9rZW1vbnM6IFBva2Vtb25bXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwb2tlRGF0YToge1xyXG4gICAgICAgIG5hbWU6IHN0cmluZzsgdHlwZXM6IHN0cmluZ1tdO1xyXG4gICAgICAgIHN0YXRzOiB7IGhwOiBudW1iZXI7IGF0dGFjazogbnVtYmVyOyBkZWZlbnNlOiBudW1iZXI7IH07XHJcbiAgICAgICAgbW92ZXM6IHsgbmFtZTogc3RyaW5nOyBhY2N1cmFjeTogbnVtYmVyOyBwb3dlcjogbnVtYmVyOyB0eXBlOiBzdHJpbmc7IH1bXVxyXG4gICAgfVtdKSB7XHJcbiAgICAgICAgdGhpcy5fcG9rZW1vbnMgPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgcG9rZW1vbiBvZiBwb2tlRGF0YSkge1xyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZUltZyA9IFwiLi4vYXNzZXRzL1wiICsgcG9rZW1vbi5uYW1lICsgXCIucG5nXCJcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VNb3ZlcyA9IHBva2Vtb24ubW92ZXMucmVkdWNlKCAodGFiLCBtb3ZlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0YWIucHVzaCh7bW92ZU5hbWU6IG1vdmUubmFtZSwgbW92ZVR5cGU6IG1vdmUudHlwZSBhcyBQb2tlbW9uVHlwZX0pXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFiXHJcbiAgICAgICAgICAgICAgICB9LCBbXSBhcyB7bW92ZU5hbWU6IHN0cmluZywgbW92ZVR5cGU6IFBva2Vtb25UeXBlfVtdKVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZVR5cGVzOiBQb2tlbW9uVHlwZVtdID0gcG9rZW1vbi50eXBlcy5tYXAodiA9PiB2IGFzIFBva2Vtb25UeXBlKVxyXG5cclxuICAgICAgICAgICAgY29uc3QgcG9rZW1vbk9iamVjdCA9IG5ldyBQb2tlbW9uKHRoaXMuX2NhcGl0YWxpemUocG9rZW1vbi5uYW1lKSwgcG9rZUltZywgXHJcbiAgICAgICAgICAgICAgICBwb2tlbW9uLnN0YXRzLmhwLCBwb2tlbW9uLnN0YXRzLmF0dGFjaywgcG9rZW1vbi5zdGF0cy5kZWZlbnNlLFxyXG4gICAgICAgICAgICAgICAgcG9rZVR5cGVzLCBwb2tlTW92ZXMpXHJcblxyXG4gICAgICAgICAgICB0aGlzLl9wb2tlbW9ucy5wdXNoKHBva2Vtb25PYmplY3QpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBva2Vtb25CeU5hbWUobmFtZTogc3RyaW5nKTogUG9rZW1vbiB7XHJcbiAgICAgICAgY29uc3QgcG9rZW1vbiA9IHRoaXMuX3Bva2Vtb25zLmZpbmQoIHBva2Vtb24gPT4gcG9rZW1vbi5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgaWYgKHBva2Vtb24gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBva2Vtb24gJHtuYW1lfSBpcyBub3QgZm91bmQgaW4gdGhlIHBva2Vtb24gZmFjdG9yeWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwb2tlbW9uXHJcbiAgICB9XHJcblxyXG4gICAgX2NhcGl0YWxpemUoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XHJcbiAgICAgIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQb2tlbW9uID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNwb2tlbW9uLWltYWdlLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNwb2tlbW9uLW5hbWUtcGxheWVyMlwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgY29uc3QgY3JlYXRlUG9rZW1vbiA9IChcclxuICAgIHBsYXllcjogUGxheWVyLFxyXG4gICAgaW1hZ2VBcmVhOiBIVE1MSW1hZ2VFbGVtZW50LFxyXG4gICAgbmFtZUFyZWE6IEhUTUxIZWFkaW5nRWxlbWVudFxyXG4gICkgPT4ge1xyXG4gICAgY29uc3QgcG9rZW1vbk5hbWUgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5uYW1lO1xyXG4gICAgaW1hZ2VBcmVhLnNldEF0dHJpYnV0ZShcInNyY1wiLCBgLi9hc3NldHMvJHtwb2tlbW9uTmFtZS50b0xvd2VyQ2FzZSgpfS5wbmdgKTtcclxuICAgIG5hbWVBcmVhLnRleHRDb250ZW50ID0gcG9rZW1vbk5hbWU7XHJcbiAgfTtcclxuICBjcmVhdGVQb2tlbW9uKFxyXG4gICAgZ2FtZUhhbmRsZXIucGxheWVyT25lLFxyXG4gICAgcGxheWVyT25lQWN0aXZlUG9rZW1vbkltYWdlQXJlYSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYVxyXG4gICk7XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllclR3byxcclxuICAgIHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUGxheWVyID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IGFjdGl2ZVBsYXllckFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjYWN0aXZlLXBsYXllci1pbmZvXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGFjdGl2ZVBsYXllckFyZWEudGV4dENvbnRlbnQgPSBgJHtnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLm5hbWV9IG5vdyBpcyB5b3VyIHR1cm4uIEdldCB0aGUgcmV2ZW5nZSFgO1xyXG4gIGNvbnN0IHBsYXllck9uZVVuZGVybGluZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMVwiKTtcclxuICBjb25zdCBwbGF5ZXJUd29VbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjJcIik7XHJcbiAgaWYgKGdhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIgPT09IGdhbWVIYW5kbGVyLnBsYXllck9uZSkge1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LnJlbW92ZShcImFjdGl2ZVBsYXllclwiKTtcclxuICAgIHBsYXllck9uZVVuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5hZGQoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBsYXllck9uZVVuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJUd29VbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH1cclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlSFBCYXJzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGNvbnN0IGNyZWF0ZUJhciA9IChwbGF5ZXI6IFBsYXllciwgSFBCYXI6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBtYXhIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1heEhQO1xyXG4gICAgY29uc3QgY3VycmVudEhQID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24uY3VycmVudEhQO1xyXG4gICAgY29uc3QgSFBJblBlcmNlbnQgPSAoY3VycmVudEhQIC8gbWF4SFApICogMTAwO1xyXG4gICAgY29uc29sZS5sb2coSFBJblBlcmNlbnQpO1xyXG4gICAgSFBCYXIuc3R5bGUud2lkdGggPSBgJHtIUEluUGVyY2VudH0lYDtcclxuICAgIGxldCBIUENsYXNzTGlzdCA9IEhQQmFyLmNsYXNzTGlzdDtcclxuICAgIGlmIChIUEluUGVyY2VudCA8IDIwKSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgICBIUENsYXNzTGlzdC5hZGQoXCJocEJhckxvd0xldmVsXCIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgSFBDbGFzc0xpc3QucmVtb3ZlKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJIaWdoTGV2ZWxcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuICBjb25zdCBwbGF5ZXJPbmVIUEJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNocC1iYXItcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29IUEJhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNocC1iYXItcGxheWVyMlwiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjcmVhdGVCYXIocGxheWVyT25lLCBwbGF5ZXJPbmVIUEJhcik7XHJcbiAgY3JlYXRlQmFyKHBsYXllclR3bywgcGxheWVyVHdvSFBCYXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyA9IChcclxuICAgIHBsYXllcjogUGxheWVyLFxyXG4gICAgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W11cclxuICApID0+IHtcclxuICAgIGZvciAobGV0IGkgPSAyOyBpID4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoIC0gMTsgaS0tKSB7XHJcbiAgICAgIHBsYXllclBva2ViYWxsc1tpXS5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRQb2tlbW9uXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lUG9rZWJhbGxzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIxIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50W107XHJcbiAgY29uc3QgcGxheWVyVHdvUG9rZWJhbGxzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyIC5wb2tlYmFsbFdpdGhQb2tlbW9uXCIpXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50W107XHJcbiAgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMoZ2FtZUhhbmRsZXIucGxheWVyT25lLCBwbGF5ZXJPbmVQb2tlYmFsbHMpO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllclR3bywgcGxheWVyVHdvUG9rZWJhbGxzKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUG9rZW1vbiB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUhQQmFycyB9IGZyb20gXCIuL2NyZWF0ZUhQQmFyc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChcclxuICAvL3BsYXllcjogUGxheWVyLFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBiYXR0bGVCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgIFwiYmF0dGxlQnV0dG9uXCJcclxuICApISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBhdHRhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjYXR0YWNrQnV0dG9uXCJcclxuICApISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBzd2l0Y2hCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3dpdGNoQnV0dG9uXCJcclxuICApISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nb0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29CdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb1wiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuXHJcbiAgYXR0YWNrQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBhbmltYXRpb25CdXR0b25zRXhpdChiYXR0bGVCdXR0b25zKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZUF0dGFja0J1dHRvbnMoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH0pO1xyXG4gIHN3aXRjaEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYmF0dGxlQnV0dG9ucyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9KTtcclxuXHJcbiAgaWYgKGdhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIuaGFzTWFuZ28pIHtcclxuICAgIG1hZ2ljRnVuY3Rpb24obWFuZ29CdXR0b24sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBlYXRNYW5nbyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gICAgbWFuZ29CdXR0b24uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkQnV0dG9uXCIpO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhdHRhY2tCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjYXR0YWNrQnV0dG9uT25lXCJcclxuICApISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBhdHRhY2tCdXR0b25Ud28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjYXR0YWNrQnV0dG9uVHdvXCJcclxuICApISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBiYXR0bGVCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgIFwiYmF0dGxlQnV0dG9uXCJcclxuICApISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYXR0YWNrQnV0dG9uT25lLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgYXR0YWNrKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlcik7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBzd2l0Y2hCdXR0b25PbmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3dpdGNoQnV0dG9uT25lXCJcclxuICApISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBzd2l0Y2hCdXR0b25Ud28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3dpdGNoQnV0dG9uVHdvXCJcclxuICApISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBiYXR0bGVCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcclxuICAgIFwiYmF0dGxlQnV0dG9uXCJcclxuICApISBhcyBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PjtcclxuICBjb25zdCBiYWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNiYWNrQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG5cclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIHN3aXRjaFBva2UpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oc3dpdGNoQnV0dG9uVHdvLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgc3dpdGNoUG9rZSk7XHJcbiAgbWFnaWNGdW5jdGlvbihiYWNrQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlcik7XHJcbn07XHJcblxyXG5jb25zdCBtYWdpY0Z1bmN0aW9uID0gKFxyXG4gIGJ1dHRvbjogSFRNTERpdkVsZW1lbnQsXHJcbiAgYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4sXHJcbiAgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLFxyXG4gIGZ1bmN0aW9uVG9DYWxsPzogYW55XHJcbikgPT4ge1xyXG4gIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKGUpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKGAke2J1dHRvbi5pbm5lclRleHR9IHVzZWQhYCk7XHJcbiAgICBpZiAoZnVuY3Rpb25Ub0NhbGwpIHtcclxuICAgICAgZnVuY3Rpb25Ub0NhbGwoZ2FtZUhhbmRsZXIsIGUpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQb2tlbW9uKGdhbWVIYW5kbGVyKTtcclxuICAgICAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICAgICAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAgICAgZ2FtZUhhbmRsZXIuc3dpdGNoUGxheWVyKCk7XHJcbiAgICAgIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJ1dHRvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0VudHJ5ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtaW4taG9yLWNlbnRlciAwLjVzIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgYm90aFwiO1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb25EZWxheSA9IGAke2kgKiAwLjE1fXNgO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkJ1dHRvbnNFeGl0ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtb3V0LWhvcml6b250YWwgMC41cyBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDg1LCAwLjY4MCwgMC41MzApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYDtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhdHRhY2sgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc29sZS5sb2coXCJidW0gYnVtIGJhY2ghXCIpO1xyXG59O1xyXG5cclxuY29uc3Qgc3dpdGNoUG9rZSA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsIGV2ZW50OiBFdmVudCkgPT4ge1xyXG4gIGNvbnN0IG5hbWVPZkNob3NlblBva2Vtb24gPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRGl2RWxlbWVudClcclxuICAgIC50ZXh0Q29udGVudDtcclxuICBnYW1lSGFuZGxlci5zd2l0Y2hQb2tlbW9uKG5hbWVPZkNob3NlblBva2Vtb24hKTtcclxufTtcclxuXHJcbmNvbnN0IGVhdE1hbmdvID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IG1hbmdvQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLnVzZU1hbmdvKCk7XHJcbiAgbWFuZ28uaW5uZXJIVE1MID0gXCIwXCI7XHJcbiAgbWFuZ29CdXR0b24uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkQnV0dG9uXCIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyLFxyXG4gIGF0dGFja3NCdXR0b25FdmVudExpc3RlbmVyLFxyXG4gIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIsXHJcbn0gZnJvbSBcIi4vZmlnaHRQYWdlL2J1dHRvbnNFdmVudExpc3RlbmVyc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdhbWVIYW5kbGVyIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllck9uZTogUGxheWVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxheWVyVHdvOiBQbGF5ZXJcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5ZXI6IFBsYXllciA9IHRoaXMuX3BsYXllck9uZTtcclxuXHJcbiAgZ2V0IHBsYXllck9uZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxheWVyVHdvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50UGxheWVyKCk6IFBsYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBsYXllcjtcclxuICB9XHJcblxyXG4gIGdldCBvcHBvbmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5ZXIgPT09IHRoaXMuX3BsYXllck9uZSkgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpZFBsYXllckxvb3NlKHBsYXllcjogUGxheWVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNHYW1lRmluaXNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllck9uZSkgfHxcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJUd28pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lubmVyKCk6IFBsYXllciB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5pc0dhbWVGaW5pc2hlZCgpKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgY2Fubm90IGdldCB0aGUgd2lubmVyLiBUaGUgZ2FtZSBpcyBub3Qgb3Zlci5cIik7XHJcbiAgICByZXR1cm4gdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpID09PSB0cnVlXHJcbiAgICAgID8gdGhpcy5fcGxheWVyVHdvXHJcbiAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUGxheWVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudFBsYXllciA9XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPT09IHRoaXMuX3BsYXllck9uZVxyXG4gICAgICAgID8gdGhpcy5fcGxheWVyVHdvXHJcbiAgICAgICAgOiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hQb2tlbW9uKHBva2Vtb25OYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIuaW5kZXhPZkFjdGl2ZVBva2Vtb24gPSB0aGlzLl9jdXJyZW50UGxheWVyLnBva2Vtb25zLmZpbmRJbmRleChcclxuICAgICAgKHBva2Vtb24pID0+IHBva2Vtb24ubmFtZSA9PT0gcG9rZW1vbk5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIlN0YXJ0IC0gYWN0aW9uIG1vZGFsXCIpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYXR0YWNrQnV0dG9uXCI+YXR0YWNrPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblwiPnN3aXRjaDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJtYW5nb0J1dHRvblwiPnVzZSBtYW5nbyAoPHNwYW4gaWQ9XCJtYW5nb1wiPjE8L3NwYW4+KTwvZGl2PmA7XHJcbiAgICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQXR0YWNrQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiQXR0YWNrIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvbk9uZVwiPiR7cGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubW92ZXNbMF0ubW92ZU5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblR3b1wiPiR7cGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubW92ZXNbMV0ubW92ZU5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIGF0dGFja3NCdXR0b25FdmVudExpc3RlbmVyKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTd2l0Y2ggY2hvb3NlIG1vZGFsXCIpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uT25lXCI+JHtwbGF5ZXIubm90QWN0aXZlUG9rZW1vbnNbMF0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uVHdvXCI+JHtwbGF5ZXIubm90QWN0aXZlUG9rZW1vbnNbMV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYmFja0J1dHRvblwiPmJhY2s8L2Rpdj5gO1xyXG4gICAgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IHN0YXJ0QmF0dGxlIH0gZnJvbSBcIi4uL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEdhbWVJZlJlYWR5ID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGlmIChwbGF5ZXJPbmUucG9rZW1vbnMubGVuZ3RoIDwgMyB8fCBwbGF5ZXJUd28ucG9rZW1vbnMubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHN0YXJ0QmF0dGxlKHBsYXllck9uZSwgcGxheWVyVHdvLCBhcHApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2UgfSBmcm9tIFwiLi9yZW5kZXJGaWdodFBhZ2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEJhdHRsZSA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhcHA6IEhUTUxEaXZFbGVtZW50XHJcbikgPT4ge1xyXG4gIGNvbnN0IGdhbWUgPSBuZXcgR2FtZUhhbmRsZXIocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlnaHRQYWdlKGFwcCwgZ2FtZSksIDIwMDApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQb2tlbW9uIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXIgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJcIjtcclxuaW1wb3J0IHsgY3JlYXRlSFBCYXJzIH0gZnJvbSBcIi4vY3JlYXRlSFBCYXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxsc1wiO1xyXG5cclxuY29uc3QgY3JlYXRlUGxheWVyRmlnaHROYW1lcyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVOYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMS1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29OYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMi1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBwbGF5ZXJPbmVOYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyT25lLm5hbWU7XHJcbiAgcGxheWVyVHdvTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllclR3by5uYW1lO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZSA9IChcclxuICBhcHBEaXY6IEhUTUxEaXZFbGVtZW50LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBmaWdodFBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBmaWdodFBhZ2UuaW5uZXJIVE1MO1xyXG4gIGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMoZ2FtZUhhbmRsZXIpO1xyXG4gIC8vIGdlbmVyYXRlIGNob29zZSBhY3Rpb24gYnV0dG9uc1xyXG4gIGdhbWVIYW5kbGVyLmdlbmVyYXRlQWN0aW9uQnV0dG9ucygpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuaW1wb3J0IHsgY3JlYXRlUGxheWVyTmFtZXMgfSBmcm9tIFwiLi9jcmVhdGVQbGF5ZXJOYW1lc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlbW9ucyB9IGZyb20gXCIuL2NyZWF0ZVBva2Vtb25zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2hvb3NlUGFnZSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgYWN0aXZlUGxheWVyID0gcGxheWVyT25lO1xyXG4gIGNyZWF0ZVBsYXllck5hbWVzKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgY3JlYXRlUG9rZW1vbnMocGxheWVyT25lLCBwbGF5ZXJUd28sIGFjdGl2ZVBsYXllcik7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBsYXllck5hbWVzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBwbGF5ZXJPbmVOYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIxTmFtZVwiKSE7XHJcbiAgcGxheWVyT25lTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyT25lLm5hbWU7XHJcbiAgbGV0IHBsYXllclR3b05hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjJOYW1lXCIpITtcclxuICBwbGF5ZXJUd29OYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJUd28ubmFtZTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCAqIGFzIGRhdGEgZnJvbSBcIi4uLy4uL2Fzc2V0cy9wb2tlX2RhdGEuanNvblwiO1xyXG5pbXBvcnQgeyBzdGFydEdhbWVJZlJlYWR5IH0gZnJvbSBcIi4vc3RhcnRHYW1lSWZSZWFkeVwiO1xyXG5pbXBvcnQgeyBhZGRDaG9zZW5Qb2tlbW9uIH0gZnJvbSBcIi4vYWRkQ2hvc2VuUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlYmFsbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlbW9ucyA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBwb2tlRGF0YSA9IGRhdGEucG9rZW1vbnM7XHJcbiAgY29uc3QgcG9rZW1vbkZhY3RvcnkgPSBuZXcgUG9rZW1vbkZhY3RvcnkocG9rZURhdGEpO1xyXG4gIGNvbnN0IHBva2Vtb25JbWFnZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNwb2tlbW9uTGlzdCBpbWdcIilcclxuICApIGFzIFtIVE1MSW1hZ2VFbGVtZW50XTtcclxuXHJcbiAgcG9rZW1vbkltYWdlcy5mb3JFYWNoKChwb2tlbW9uSW1hZ2UpID0+XHJcbiAgICBwb2tlbW9uSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJjbGlja1wiLFxyXG4gICAgICAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzKSByZXR1cm47XHJcbiAgICAgICAgYWRkQ2hvc2VuUG9rZW1vbihlLCBwb2tlbW9uRmFjdG9yeSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBjcmVhdGVQb2tlYmFsbHMocGxheWVyT25lLCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIC8vIGNoYW5nZSBwbGF5ZXJcclxuICAgICAgICBhY3RpdmVQbGF5ZXIgPSBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZSA/IHBsYXllclR3byA6IHBsYXllck9uZTtcclxuICAgICAgICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgc3RhcnRHYW1lSWZSZWFkeShwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuLi9wb2tlbW9uQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWRkQ2hvc2VuUG9rZW1vbiA9IChcclxuICBldmVudDogRXZlbnQsXHJcbiAgZmFjdG9yeTogUG9rZW1vbkZhY3RvcnksXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgY2xpY2tlZFBva2Vtb24gPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICBjb25zdCBwb2tlbW9uTmFtZSA9IGNsaWNrZWRQb2tlbW9uLmlkO1xyXG4gIGNvbnN0IG5ld1Bva2Vtb25PYmplY3Q6IFBva2Vtb24gPSBmYWN0b3J5LmdldFBva2Vtb25CeU5hbWUocG9rZW1vbk5hbWUpO1xyXG4gIGFjdGl2ZVBsYXllci5hZGRQb2tlbW9uKG5ld1Bva2Vtb25PYmplY3QpO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgY2xpY2tlZFBva2Vtb24uc3R5bGUuY3Vyc29yID0gXCJkZWZhdWx0XCI7XHJcbiAgICBjbGlja2VkUG9rZW1vbi5zdHlsZS5maWx0ZXIgPSBcImdyYXlzY2FsZSgxMDAlKVwiO1xyXG4gIH0sIDUwMCk7XHJcbiAgY2xpY2tlZFBva2Vtb24uc3R5bGUuYW5pbWF0aW9uID0gXCJoZWFydGJlYXQgMXMgZWFzZS1pbi1vdXQgYm90aFwiO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlYmFsbHMgPSAocGxheWVyT25lOiBQbGF5ZXIsIGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W10gPVxyXG4gICAgYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmVcclxuICAgICAgPyBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjEgaW1nXCIpKVxyXG4gICAgICA6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMiBpbWdcIikpO1xyXG4gIGNvbnN0IHBsYXllckxhc3RQb2tlbW9uTmFtZTogc3RyaW5nID0gYWN0aXZlUGxheWVyLnBva2Vtb25zW1xyXG4gICAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDFcclxuICBdLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBudW1iZXJPZkxhc3RQb2tlbW9uOiBudW1iZXIgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMTtcclxuICBwbGF5ZXJQb2tlYmFsbHNbbnVtYmVyT2ZMYXN0UG9rZW1vbl0uc2V0QXR0cmlidXRlKFxyXG4gICAgXCJzcmNcIixcclxuICAgIGAuL2Fzc2V0cy8ke3BsYXllckxhc3RQb2tlbW9uTmFtZX0ucG5nYFxyXG4gICk7XHJcbiAgcGxheWVyUG9rZWJhbGxzW251bWJlck9mTGFzdFBva2Vtb25dLnN0eWxlLmFuaW1hdGlvbiA9IFwiYm91bmNlLWluLWZ3ZCAxLjFzIGJvdGhcIjtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBsYXllciB7XHJcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcbiAgcHJpdmF0ZSBfaW5kZXhPZkFjdGl2ZVBva2Vtb246IG51bWJlcjtcclxuICBwcml2YXRlIF9oYXNNYW5nbzogQm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHBva2Vtb25zOiBQb2tlbW9uW10pIHtcclxuICAgIGlmIChuYW1lLmxlbmd0aCA+IDgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIGxvbmcgbmFtZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChwb2tlbW9ucy5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIG51bWJlciBvZiBwb2tlbW9uc1wiKTtcclxuICAgIH1cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5fcG9rZW1vbnMgPSBwb2tlbW9ucztcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gMDtcclxuICAgIHRoaXMuX2hhc01hbmdvID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnM7XHJcbiAgfVxyXG5cclxuICBzZXQgaW5kZXhPZkFjdGl2ZVBva2Vtb24obnVtT2ZBY3RpdmVQb2tlbW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gbnVtT2ZBY3RpdmVQb2tlbW9uO1xyXG4gIH1cclxuICBnZXQgZ2V0QWN0aXZlUG9rZW1vbigpOiBQb2tlbW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1t0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbl07XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgY29uc3QgYWxpdmVQb2tlbW9uc1RhYjogUG9rZW1vbltdID0gdGhpcy5wb2tlbW9ucy5maWx0ZXIoKHBva2Vtb24pID0+XHJcbiAgICAgIHBva2Vtb24uaXNBbGl2ZSgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsaXZlUG9rZW1vbnNUYWI7XHJcbiAgfVxyXG5cclxuICB1c2VNYW5nbygpOiB2b2lkIHwgRXJyb3Ige1xyXG4gICAgaWYgKCF0aGlzLl9oYXNNYW5nbylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCB1c2UgbWFuZ28uIFlvdSB1c2UgYWxsIG1hbmdvc1wiKTtcclxuICAgIHRoaXMuX2hhc01hbmdvID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldEFjdGl2ZVBva2Vtb24uaGVhbCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc01hbmdvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhc01hbmdvO1xyXG4gIH1cclxuXHJcbiAgYWRkUG9rZW1vbihwb2tlbW9uOiBQb2tlbW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb2tlbW9ucy5wdXNoKHBva2Vtb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5vdEFjdGl2ZVBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb2tlbW9ucy5maWx0ZXIoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgIT09IHRoaXMuZ2V0QWN0aXZlUG9rZW1vbi5uYW1lXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJleHBvcnQgY29uc3QgYWN0aXZhdGVTdGFydCA9IChuYW1lMUlucHV0OiBIVE1MSW5wdXRFbGVtZW50LCBuYW1lMklucHV0OiBIVE1MSW5wdXRFbGVtZW50LCBzdGFydEJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQpID0+IHtcclxuICAgIGlmIChuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA+IDAgJiYgbmFtZTJJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUxSW5wdXQudmFsdWUubGVuZ3RoIDw9IDggJiYgbmFtZTJJbnB1dC52YWx1ZS5sZW5ndGggPD0gOCkge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZW5hYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWRpc2FibGVkJ1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgc2hvd01vZGFsLCBoaWRlTW9kYWwgfSBmcm9tIFwiLi9tb2RhbFBvcFVwRnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUNob29zZVBhZ2UgfSBmcm9tIFwiLi9jaG9vc2VQb2tlbW9uc1BhZ2UvY2hvb3NlUG9rZW1vbnNQYWdlXCJcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgYWN0aXZhdGVTdGFydCB9IGZyb20gJy4vYWN0aXZhdGVTdGFydCc7XHJcblxyXG5jb25zdCByZW5kZXJTdGFydGluZ1BhZ2UgPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IHN0YXJ0aW5nUGFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzdGFydGluZy1wYWdlLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCA9IHN0YXJ0aW5nUGFnZS5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IHJlbmRlckhvd1RvUGxheU1vZGFsID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBpbmZvTW9kYWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaW5mby1tb2RhbC10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgKz0gaW5mb01vZGFsLmlubmVySFRNTDtcclxufTtcclxuY29uc3QgY3JlYXRlSG93VG9QbGF5QnV0dG9uID0gKCkgPT4ge1xyXG4gIGNvbnN0IGhvd1RvUGxheUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNob3ctdG8tcGxheS1idXR0b25cIlxyXG4gICkgYXMgSFRNTFVMaXN0RWxlbWVudDtcclxuICBjb25zdCBpbmZvTW9kYWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaW5mby1tb2RhbC1zY3JlZW5cIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgaG93VG9QbGF5QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzaG93TW9kYWwoaW5mb01vZGFsLCBcImZsZXhcIik7XHJcbiAgfSk7XHJcbiAgaGlkZU1vZGFsKGluZm9Nb2RhbCk7XHJcbn07XHJcblxyXG5jb25zdCBhY3RpdmF0ZVN0YXJ0QnV0dG9uID0gKCkgPT4ge1xyXG4gIGNvbnN0IHBsYXllcjFOYW1lSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMS1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXIyTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3Qgc3RhcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCIpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXllcjFOYW1lSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsICgpID0+IHtcclxuICAgICAgYWN0aXZhdGVTdGFydChwbGF5ZXIxTmFtZUlucHV0LCBwbGF5ZXIyTmFtZUlucHV0LCBzdGFydEJ1dHRvbilcclxuICB9KVxyXG4gIHBsYXllcjJOYW1lSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsICgpID0+IHtcclxuICAgICAgYWN0aXZhdGVTdGFydChwbGF5ZXIxTmFtZUlucHV0LCBwbGF5ZXIyTmFtZUlucHV0LCBzdGFydEJ1dHRvbilcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4gPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IHBsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnQtZ2FtZS1idXR0b25cIlxyXG4gICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcbiAgcGxheUJ1dHRvbj8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGNvbnN0IHBsYXllcjFOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMi1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBjb25zdCBjaG9vc2VQb2tlbW9uU2NyZWVuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIjY2hvb3NlLXBhZ2UtdGVtcGxhdGVcIlxyXG4gICAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gICAgYXBwRGl2LmlubmVySFRNTCA9IGNob29zZVBva2Vtb25TY3JlZW4uaW5uZXJIVE1MO1xyXG4gICAgY3JlYXRlQ2hvb3NlUGFnZShuZXcgUGxheWVyKHBsYXllcjFOYW1lSW5wdXQsIFtdKSwgbmV3IFBsYXllcihwbGF5ZXIyTmFtZUlucHV0LCBbXSkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5jb25zdCByZW5kZXJBcHAgPSAoKSA9PiB7XHJcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHBcIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgcmVuZGVyU3RhcnRpbmdQYWdlKGFwcCk7XHJcbiAgcmVuZGVySG93VG9QbGF5TW9kYWwoYXBwKTtcclxuICBhY3RpdmF0ZVN0YXJ0QnV0dG9uKCk7XHJcbiAgY3JlYXRlSG93VG9QbGF5QnV0dG9uKCk7XHJcbiAgcmVuZGVyQ2hvb3NlUG9rZW1vblNjcmVlbihhcHApO1xyXG59O1xyXG5cclxuc2V0VGltZW91dChyZW5kZXJBcHAsIDIwMDApO1xyXG5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/src/choosePokemonsPage/addChosenPokemon.ts b/src/choosePokemonsPage/addChosenPokemon.ts index 5cb895a..64ebde9 100644 --- a/src/choosePokemonsPage/addChosenPokemon.ts +++ b/src/choosePokemonsPage/addChosenPokemon.ts @@ -11,6 +11,9 @@ export const addChosenPokemon = ( const pokemonName = clickedPokemon.id; const newPokemonObject: Pokemon = factory.getPokemonByName(pokemonName); activePlayer.addPokemon(newPokemonObject); - clickedPokemon.style.cursor = "default"; - clickedPokemon.style.filter = "grayscale(100%)"; + setTimeout(() => { + clickedPokemon.style.cursor = "default"; + clickedPokemon.style.filter = "grayscale(100%)"; + }, 500); + clickedPokemon.style.animation = "heartbeat 1s ease-in-out both"; }; diff --git a/src/choosePokemonsPage/createPokeballs.ts b/src/choosePokemonsPage/createPokeballs.ts index 2640f9d..c82b5c9 100644 --- a/src/choosePokemonsPage/createPokeballs.ts +++ b/src/choosePokemonsPage/createPokeballs.ts @@ -13,4 +13,5 @@ export const createPokeballs = (playerOne: Player, activePlayer: Player) => { "src", `./assets/${playerLastPokemonName}.png` ); + playerPokeballs[numberOfLastPokemon].style.animation = "bounce-in-fwd 1.1s both"; }; diff --git a/styles/SASS/_animations.scss b/styles/SASS/_animations.scss index e6f17f1..002d917 100644 --- a/styles/SASS/_animations.scss +++ b/styles/SASS/_animations.scss @@ -28,7 +28,7 @@ } -// ENTRY +// Buttons ENTRY @-webkit-keyframes scale-in-hor-center { 0% { @@ -54,3 +54,181 @@ opacity: 1; } } + +// Pokemon ENTRY animation: bounce-in-fwd 1.1s both; + +@-webkit-keyframes bounce-in-fwd { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + 38% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + opacity: 1; + } + 55% { + -webkit-transform: scale(0.7); + transform: scale(0.7); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 72% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 81% { + -webkit-transform: scale(0.84); + transform: scale(0.84); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 89% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 95% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } +} +@keyframes bounce-in-fwd { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + 38% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + opacity: 1; + } + 55% { + -webkit-transform: scale(0.7); + transform: scale(0.7); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 72% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 81% { + -webkit-transform: scale(0.84); + transform: scale(0.84); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 89% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 95% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } +} + +// Choosing POKEMON animation: heartbeat 1.5s ease-in-out both; + +@-webkit-keyframes heartbeat { + from { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 10% { + -webkit-transform: scale(0.91); + transform: scale(0.91); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 17% { + -webkit-transform: scale(0.98); + transform: scale(0.98); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 33% { + -webkit-transform: scale(0.87); + transform: scale(0.87); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 45% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + } + @keyframes heartbeat { + from { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 10% { + -webkit-transform: scale(0.91); + transform: scale(0.91); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 17% { + -webkit-transform: scale(0.98); + transform: scale(0.98); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 33% { + -webkit-transform: scale(0.87); + transform: scale(0.87); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 45% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + } \ No newline at end of file diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index da9c9df..f17a787 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -62,7 +62,7 @@ width: fit-content; } - #pokemon-player2 { + #pokemon-image-player2 { order: 2; } diff --git a/styles/SASS/_pokemon-choose-view.scss b/styles/SASS/_pokemon-choose-view.scss index 8021c53..a776621 100644 --- a/styles/SASS/_pokemon-choose-view.scss +++ b/styles/SASS/_pokemon-choose-view.scss @@ -47,6 +47,10 @@ max-height: 8.5vh; padding: 0.8vh 0.5vh; cursor: pointer; + + &:hover { + transform: scale(1.25); + } } } } diff --git a/styles/SASS/_responsive.scss b/styles/SASS/_responsive.scss index cfa780e..d36cb83 100644 --- a/styles/SASS/_responsive.scss +++ b/styles/SASS/_responsive.scss @@ -124,7 +124,7 @@ flex-flow: column; align-items: center; - #pokemon-player2 { + #pokemon-image-player2 { order: 0; } } diff --git a/styles/app.css b/styles/app.css index 8dd8831..50969aa 100644 --- a/styles/app.css +++ b/styles/app.css @@ -394,6 +394,11 @@ html { cursor: pointer; } +#choose-page #pokemonList img:hover { + -webkit-transform: scale(1.25); + transform: scale(1.25); +} + #fight-page { width: 100%; height: 100vh; @@ -484,7 +489,7 @@ html { width: fit-content; } -#fight-page .battleArea .pokemonDetails #pokemon-player2 { +#fight-page .battleArea .pokemonDetails #pokemon-image-player2 { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; @@ -661,6 +666,182 @@ html { } } +@-webkit-keyframes bounce-in-fwd { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + 38% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + opacity: 1; + } + 55% { + -webkit-transform: scale(0.7); + transform: scale(0.7); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 72% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 81% { + -webkit-transform: scale(0.84); + transform: scale(0.84); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 89% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 95% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } +} + +@keyframes bounce-in-fwd { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + opacity: 0; + } + 38% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + opacity: 1; + } + 55% { + -webkit-transform: scale(0.7); + transform: scale(0.7); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 72% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 81% { + -webkit-transform: scale(0.84); + transform: scale(0.84); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 89% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 95% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } +} + +@-webkit-keyframes heartbeat { + from { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 10% { + -webkit-transform: scale(0.91); + transform: scale(0.91); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 17% { + -webkit-transform: scale(0.98); + transform: scale(0.98); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 33% { + -webkit-transform: scale(0.87); + transform: scale(0.87); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 45% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } +} + +@keyframes heartbeat { + from { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 10% { + -webkit-transform: scale(0.91); + transform: scale(0.91); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 17% { + -webkit-transform: scale(0.98); + transform: scale(0.98); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } + 33% { + -webkit-transform: scale(0.87); + transform: scale(0.87); + -webkit-animation-timing-function: ease-in; + animation-timing-function: ease-in; + } + 45% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-animation-timing-function: ease-out; + animation-timing-function: ease-out; + } +} + @media screen and (min-width: 768px) { #starting-page #header-with-enter-name-manu .headerWrapper { max-width: 700px; @@ -755,7 +936,7 @@ html { -ms-flex-align: center; align-items: center; } - #fight-page .battleArea .pokemonDetails #pokemon-player2 { + #fight-page .battleArea .pokemonDetails #pokemon-image-player2 { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; diff --git a/styles/app.css.map b/styles/app.css.map index 349bd17..b8b168a 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From 6bb6cf1a222a655d6d8b30beba17a2df328463c1 Mon Sep 17 00:00:00 2001 From: Gosia Dziewit Date: Thu, 11 Feb 2021 22:36:50 +0100 Subject: [PATCH 41/76] added some animations to FightPage default (start) Pokemons border for active Player --- styles/SASS/_fight-view.scss | 16 +++++++++++++++- styles/app.css | 19 ++++++++++++++++++- styles/app.css.map | 2 +- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index f17a787..e880f06 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -39,7 +39,20 @@ .activePlayer { color: $color-primary; - border-bottom: 3px solid $color-primary; + // border-bottom: 3px solid $color-primary; + + &:before { + content: ""; + position: absolute; + z-index: -1; + left: 0; + right: 0; + bottom: 0; + background: $color-primary; + height: 4px; + border-radius: 50%; + animation: scale-in-hor-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; + } } } @@ -60,6 +73,7 @@ img { width: fit-content; + animation: bounce-in-fwd 1.1s both; } #pokemon-image-player2 { diff --git a/styles/app.css b/styles/app.css index 50969aa..1652248 100644 --- a/styles/app.css +++ b/styles/app.css @@ -459,7 +459,22 @@ html { #fight-page .playersContainer .activePlayer { color: #9b1d20ff; - border-bottom: 3px solid #9b1d20ff; + -webkit-transform: perspective(1px) translateZ(0); + transform: perspective(1px) translateZ(0); +} + +#fight-page .playersContainer .activePlayer:before { + content: ""; + position: absolute; + z-index: -1; + left: 0; + right: 0; + bottom: 0; + background: #9b1d20ff; + height: 4px; + border-radius: 50%; + -webkit-animation: scale-in-hor-center 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; + animation: scale-in-hor-center 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; } #fight-page .activePlayerInfo { @@ -487,6 +502,8 @@ html { width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; + -webkit-animation: bounce-in-fwd 1.1s both; + animation: bounce-in-fwd 1.1s both; } #fight-page .battleArea .pokemonDetails #pokemon-image-player2 { diff --git a/styles/app.css.map b/styles/app.css.map index b8b168a..2efe41f 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From 1ef7da3fbc296e916d02ba17456e004d22f6d4ab Mon Sep 17 00:00:00 2001 From: Daria <44535712+daria305@users.noreply.github.com> Date: Fri, 12 Feb 2021 07:31:07 +0100 Subject: [PATCH 42/76] MNG-116 Change webpack to parcel (#28) --- .gitignore | 3 +- package-lock.json | 5467 ++++++++++++++++++++++++++++++++++++++++++--- package.json | 13 +- webpack.config.js | 23 - 4 files changed, 5169 insertions(+), 337 deletions(-) delete mode 100644 webpack.config.js diff --git a/.gitignore b/.gitignore index d26c746..10dcc1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -dist/ \ No newline at end of file +dist/ +.cache/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d11ae96..f715132 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,12 @@ "@babel/highlight": "^7.12.13" } }, + "@babel/compat-data": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.13.tgz", + "integrity": "sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg==", + "dev": true + }, "@babel/core": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.13.tgz", @@ -69,6 +75,77 @@ } } }, + "@babel/helper-annotate-as-pure": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", + "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", + "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.13.tgz", + "integrity": "sha512-dXof20y/6wB5HnLOGyLh/gobsMvDNoekcC+8MCV2iaTd5JemhFkPD73QB+tK3iFC9P0xJC73B6MvKkyUfS9cCw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.13", + "@babel/helper-validator-option": "^7.12.11", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.13.tgz", + "integrity": "sha512-Vs/e9wv7rakKYeywsmEBSRC9KtmE7Px+YBlESekLeJOF0zbGUicGfXSNi3o+tfXSNS48U/7K9mIOOCR79Cl3+Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.13.tgz", + "integrity": "sha512-XC+kiA0J3at6E85dL5UnCYfVOcIZ834QcAY0TIpgUVnz0zDzg+0TtvZTnJ4g9L1dPRGe30Qi03XCIS4tYCLtqw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz", + "integrity": "sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, "@babel/helper-function-name": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", @@ -89,6 +166,15 @@ "@babel/types": "^7.12.13" } }, + "@babel/helper-hoist-variables": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz", + "integrity": "sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw==", + "dev": true, + "requires": { + "@babel/types": "^7.12.13" + } + }, "@babel/helper-member-expression-to-functions": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.13.tgz", @@ -139,6 +225,17 @@ "integrity": "sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA==", "dev": true }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz", + "integrity": "sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-wrap-function": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, "@babel/helper-replace-supers": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz", @@ -160,6 +257,15 @@ "@babel/types": "^7.12.13" } }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, "@babel/helper-split-export-declaration": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", @@ -175,6 +281,24 @@ "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.11.tgz", + "integrity": "sha512-TBFCyj939mFSdeX7U7DDj32WtzYY7fDcalgq8v3fBZMNOJQNn7nOYzMaUCiPxPYfCup69mtIpqlKgMZLvQ8Xhw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz", + "integrity": "sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, "@babel/helpers": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz", @@ -255,6 +379,139 @@ "integrity": "sha512-z7n7ybOUzaRc3wwqLpAX8UFIXsrVXUJhtNGBwAnLz6d1KUapqyq7ad2La8gZ6CXhHmGAIL32cop8Tst4/PNWLw==", "dev": true }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz", + "integrity": "sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz", + "integrity": "sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", + "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz", + "integrity": "sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz", + "integrity": "sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz", + "integrity": "sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", + "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz", + "integrity": "sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.13" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz", + "integrity": "sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.13.tgz", + "integrity": "sha512-0ZwjGfTcnZqyV3y9DSD1Yk3ebp+sIUpT2YDqP8hovzaNZnQq2Kd7PEqa6iOIUDBXBt7Jl3P7YAcEIL5Pz8u09Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz", + "integrity": "sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", + "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, "@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", @@ -282,6 +539,33 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz", + "integrity": "sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -300,6 +584,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz", + "integrity": "sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, "@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", @@ -363,85 +656,530 @@ "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/template": { + "@babel/plugin-transform-arrow-functions": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz", + "integrity": "sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@babel/traverse": { + "@babel/plugin-transform-async-to-generator": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", - "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz", + "integrity": "sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A==", "dev": true, "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.12.13", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-remap-async-to-generator": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", + "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", + "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz", + "integrity": "sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", "@babel/helper-function-name": "^7.12.13", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" + "globals": "^11.1.0" } }, - "@babel/types": { + "@babel/plugin-transform-computed-properties": { "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", - "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz", + "integrity": "sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@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 + "@babel/plugin-transform-destructuring": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz", + "integrity": "sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", + "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" } }, - "@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", - "dev": true + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", + "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } }, - "@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==", + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", + "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "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, + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.13.tgz", + "integrity": "sha512-39/t9HtN+Jlc7EEY6oCSCf3kRrKIl2JULOGPnHZiaRjoYZEFaDXDZI32uE2NosQRh8o6N9B+8iGvDK7ToJhJaw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-flow": "^7.12.13" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz", + "integrity": "sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", + "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", + "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", + "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz", + "integrity": "sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz", + "integrity": "sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-simple-access": "^7.12.13", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz", + "integrity": "sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.12.13", + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz", + "integrity": "sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", + "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", + "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", + "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-replace-supers": "^7.12.13" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz", + "integrity": "sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", + "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.13.tgz", + "integrity": "sha512-hhXZMYR8t9RvduN2uW4sjl6MRtUhzNE726JvoJhpjhxKgRUVkZqTsA0xc49ALZxQM7H26pZ/lLvB2Yrea9dllA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.12.13", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/plugin-syntax-jsx": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", + "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", + "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", + "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz", + "integrity": "sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", + "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz", + "integrity": "sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", + "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", + "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", + "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/preset-env": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.13.tgz", + "integrity": "sha512-JUVlizG8SoFTz4LmVUL8++aVwzwxcvey3N0j1tRbMAXVEy95uQ/cnEkmEKHN00Bwq4voAV3imQGnQvpkLAxsrw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.13", + "@babel/helper-compilation-targets": "^7.12.13", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.12.13", + "@babel/helper-validator-option": "^7.12.11", + "@babel/plugin-proposal-async-generator-functions": "^7.12.13", + "@babel/plugin-proposal-class-properties": "^7.12.13", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.13", + "@babel/plugin-proposal-json-strings": "^7.12.13", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.13", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.13", + "@babel/plugin-proposal-numeric-separator": "^7.12.13", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.13", + "@babel/plugin-proposal-optional-chaining": "^7.12.13", + "@babel/plugin-proposal-private-methods": "^7.12.13", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.13", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.12.13", + "@babel/plugin-transform-arrow-functions": "^7.12.13", + "@babel/plugin-transform-async-to-generator": "^7.12.13", + "@babel/plugin-transform-block-scoped-functions": "^7.12.13", + "@babel/plugin-transform-block-scoping": "^7.12.13", + "@babel/plugin-transform-classes": "^7.12.13", + "@babel/plugin-transform-computed-properties": "^7.12.13", + "@babel/plugin-transform-destructuring": "^7.12.13", + "@babel/plugin-transform-dotall-regex": "^7.12.13", + "@babel/plugin-transform-duplicate-keys": "^7.12.13", + "@babel/plugin-transform-exponentiation-operator": "^7.12.13", + "@babel/plugin-transform-for-of": "^7.12.13", + "@babel/plugin-transform-function-name": "^7.12.13", + "@babel/plugin-transform-literals": "^7.12.13", + "@babel/plugin-transform-member-expression-literals": "^7.12.13", + "@babel/plugin-transform-modules-amd": "^7.12.13", + "@babel/plugin-transform-modules-commonjs": "^7.12.13", + "@babel/plugin-transform-modules-systemjs": "^7.12.13", + "@babel/plugin-transform-modules-umd": "^7.12.13", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.13", + "@babel/plugin-transform-new-target": "^7.12.13", + "@babel/plugin-transform-object-super": "^7.12.13", + "@babel/plugin-transform-parameters": "^7.12.13", + "@babel/plugin-transform-property-literals": "^7.12.13", + "@babel/plugin-transform-regenerator": "^7.12.13", + "@babel/plugin-transform-reserved-words": "^7.12.13", + "@babel/plugin-transform-shorthand-properties": "^7.12.13", + "@babel/plugin-transform-spread": "^7.12.13", + "@babel/plugin-transform-sticky-regex": "^7.12.13", + "@babel/plugin-transform-template-literals": "^7.12.13", + "@babel/plugin-transform-typeof-symbol": "^7.12.13", + "@babel/plugin-transform-unicode-escapes": "^7.12.13", + "@babel/plugin-transform-unicode-regex": "^7.12.13", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.12.13", + "core-js-compat": "^3.8.0", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz", + "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", + "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13" + } + }, + "@babel/traverse": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", + "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.12.13", + "@babel/helper-function-name": "^7.12.13", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/parser": "^7.12.13", + "@babel/types": "^7.12.13", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + } + }, + "@babel/types": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", + "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.12.11", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -674,8 +1412,169 @@ "chalk": "^4.0.0" } }, - "@sinonjs/commons": { - "version": "1.8.2", + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + }, + "dependencies": { + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + } + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dev": true, + "requires": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", + "dev": true + }, + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + } + }, + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } + }, + "@sinonjs/commons": { + "version": "1.8.2", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz", "integrity": "sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw==", "dev": true, @@ -842,6 +1741,12 @@ "integrity": "sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA==", "dev": true }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, "@types/stack-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", @@ -1112,6 +2017,12 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -1156,6 +2067,15 @@ "color-convert": "^2.0.1" } }, + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", + "dev": true, + "requires": { + "entities": "^1.1.2" + } + }, "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", @@ -1193,6 +2113,12 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -1229,6 +2155,53 @@ "safer-buffer": "~2.1.0" } }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -1302,6 +2275,15 @@ "slash": "^3.0.0" } }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, "babel-plugin-istanbul": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", @@ -1357,6 +2339,55 @@ "babel-preset-current-node-syntax": "^1.0.0" } }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -1418,6 +2449,12 @@ } } }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -1445,6 +2482,21 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", @@ -1506,6 +2558,12 @@ "multicast-dns-service-types": "^1.1.0" } }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -1525,12 +2583,124 @@ "fill-range": "^7.0.1" } }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, "browserslist": { "version": "4.16.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.1.tgz", @@ -1562,10 +2732,27 @@ "node-int64": "^0.4.0" } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "buffer-indexof": { @@ -1574,6 +2761,18 @@ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -1607,6 +2806,38 @@ "get-intrinsic": "^1.0.2" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1619,6 +2850,18 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, "caniuse-lite": { "version": "1.0.30001179", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz", @@ -1754,7 +2997,10 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0" + } }, "is-number": { "version": "3.0.0", @@ -1824,6 +3070,16 @@ "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "cjs-module-lexer": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", @@ -1853,6 +3109,21 @@ } } }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -1864,6 +3135,12 @@ "wrap-ansi": "^6.2.0" } }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -1881,6 +3158,69 @@ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -1897,6 +3237,33 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1912,6 +3279,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "colorette": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", @@ -1927,6 +3304,12 @@ "delayed-stream": "~1.0.0" } }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1992,12 +3375,36 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, "connect-history-api-fallback": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -2056,105 +3463,487 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.8.3.tgz", + "integrity": "sha512-1sCb0wBXnBIL16pfFG1Gkvei6UzvKyTNYpiC41yrdjEv0UoJoq9E/abTMzyYJ6JpTkAj15dLjbqifIzEBDVvog==", + "dev": true, + "requires": { + "browserslist": "^4.16.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } } }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "dev": true, "requires": { - "cssom": "~0.3.6" + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" }, "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", "dev": true } } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { - "assert-plus": "^1.0.0" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "ms": "2.1.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", "dev": true }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", "dev": true, "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + }, + "dependencies": { + "css-tree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.2.tgz", + "integrity": "sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + } + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "deasync": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.21.tgz", + "integrity": "sha512-kUmM8Y+PZpMpQ+B4AuOW9k2Pfx/mSupJtxOsLzmnHY2WqZUYRFccFn2RhzPAqt3Xb+sorK/badW2D4zNzqZz5w==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" } }, "deep-is": { @@ -2269,6 +4058,23 @@ } } }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -2357,6 +4163,16 @@ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -2381,6 +4197,25 @@ "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -2406,6 +4241,42 @@ "buffer-indexof": "^1.0.0" } }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -2423,28 +4294,100 @@ } } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "domelementtype": "1" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } }, - "electron-to-chromium": { - "version": "1.3.644", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz", + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.644", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz", "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==", "dev": true }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, "emittery": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", @@ -2497,6 +4440,12 @@ "ansi-colors": "^4.1.1" } }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, "envinfo": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz", @@ -2521,12 +4470,53 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.18.0-next.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", + "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.1", + "object-inspect": "^1.9.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.3", + "string.prototype.trimstart": "^1.0.3" + }, + "dependencies": { + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + } + } + }, "es-module-lexer": { "version": "0.3.26", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", "dev": true }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2630,6 +4620,16 @@ "original": "^1.0.0" } }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "exec-sh": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", @@ -2894,12 +4894,157 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, + "falafel": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "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 }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, "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", @@ -2918,6 +5063,12 @@ "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, "faye-websocket": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", @@ -2936,6 +5087,18 @@ "bser": "2.1.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2999,6 +5162,12 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3085,6 +5254,12 @@ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, "get-stream": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", @@ -3180,6 +5355,16 @@ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -3218,6 +5403,23 @@ "function-bind": "^1.1.1" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3282,24 +5484,93 @@ } } }, - "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", - "dev": true + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dev": true, "requires": { - "inherits": "^2.0.1", + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", "obuf": "^1.0.0", "readable-stream": "^2.0.1", "wbuf": "^1.1.0" } }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -3321,6 +5592,89 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "dev": true + }, + "htmlnano": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.8.tgz", + "integrity": "sha512-q5gbo4SIDAE5sfJ5V0UD6uu+n1dcO/Mpr0B6SlDlJBoV7xKPne4uG4UwrT8vUWjdjIPJl95TY8EDuEbBW2TG0A==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "posthtml": "^0.13.4", + "posthtml-render": "^1.3.0", + "purgecss": "^2.3.0", + "relateurl": "^0.2.7", + "srcset": "^3.0.0", + "svgo": "^1.3.2", + "terser": "^4.8.0", + "timsort": "^0.3.0", + "uncss": "^0.17.3" + }, + "dependencies": { + "posthtml": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.13.4.tgz", + "integrity": "sha512-i2oTo/+dwXGC6zaAQSF6WZEQSbEqu10hsvg01DWzGAfZmy31Iiy9ktPh9nnXDfZiYytjxTIvxoK4TI0uk4QWpw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.5.0", + "posthtml-render": "^1.2.3" + } + }, + "posthtml-parser": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.5.3.tgz", + "integrity": "sha512-uHosRn0y+1wbnlYKrqMjBPoo/kK5LPYImLtiETszNFYfFwAD3cQdD1R2E13Mh5icBxkHj+yKtlIHozCsmVWD/Q==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", @@ -3493,6 +5847,12 @@ "sshpk": "^1.7.0" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -3508,6 +5868,36 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -3572,6 +5962,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -3678,6 +6074,12 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -3687,6 +6089,20 @@ "ci-info": "^2.0.0" } }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, "is-core-module": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", @@ -3741,6 +6157,12 @@ } } }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, "is-docker": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", @@ -3781,12 +6203,33 @@ "is-extglob": "^2.1.1" } }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dev": true, + "requires": { + "html-tags": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -3836,18 +6279,48 @@ "has-symbols": "^1.0.1" } }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -4614,6 +7087,12 @@ "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", "dev": true }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -4626,6 +7105,73 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "loglevel": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", @@ -4641,6 +7187,15 @@ "yallist": "^4.0.0" } }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -4688,6 +7243,23 @@ "object-visit": "^1.0.0" } }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4710,12 +7282,35 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, "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 }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -4732,6 +7327,24 @@ "picomatch": "^2.0.5" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -4765,6 +7378,12 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4872,6 +7491,12 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==", + "dev": true + }, "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", @@ -4884,6 +7509,45 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", @@ -4937,6 +7601,12 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, "npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -4946,6 +7616,15 @@ "path-key": "^3.0.0" } }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -4995,6 +7674,12 @@ } } }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + }, "object-is": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", @@ -5020,15 +7705,50 @@ "isobject": "^3.0.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "^3.0.1" } }, + "object.values": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", + "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1", + "has": "^1.0.3" + } + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -5099,6 +7819,87 @@ "word-wrap": "~1.2.3" } }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "original": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", @@ -5108,6 +7909,12 @@ "url-parse": "^1.4.3" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, "p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -5159,164 +7966,1280 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@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" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "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 - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "parcel-bundler": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.4.tgz", + "integrity": "sha512-G+iZGGiPEXcRzw0fiRxWYCKxdt/F7l9a0xkiU4XbcVRJCSlBnioWEwJMutOCCpoQmaQtjB4RBHDGIHN85AIhLQ==", "dev": true, "requires": { - "find-up": "^5.0.0" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@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" + } + }, + "parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + } + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", "dev": true, "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - } + "htmlparser2": "^3.9.2" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", "dev": true }, "prelude-ls": { @@ -5337,6 +9260,12 @@ "react-is": "^17.0.1" } }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -5375,6 +9304,28 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -5391,6 +9342,104 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "purgecss": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", + "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", + "dev": true, + "requires": { + "commander": "^5.0.0", + "glob": "^7.0.0", + "postcss": "7.0.32", + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -5403,12 +9452,29 @@ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "dev": true }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -5418,6 +9484,16 @@ "safe-buffer": "^5.1.0" } }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -5668,6 +9744,36 @@ "resolve": "^1.9.0" } }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -5688,6 +9794,49 @@ "define-properties": "^1.1.3" } }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", + "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -5833,6 +9982,33 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -5845,6 +10021,18 @@ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -5854,6 +10042,16 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -6110,6 +10308,12 @@ } } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -6209,6 +10413,12 @@ "randombytes": "^2.1.0" } }, + "serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", + "dev": true + }, "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", @@ -6306,12 +10516,28 @@ } } }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -6321,6 +10547,12 @@ "kind-of": "^6.0.2" } }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6349,6 +10581,23 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -6661,6 +10910,12 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "srcset": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/srcset/-/srcset-3.0.0.tgz", + "integrity": "sha512-D59vF08Qzu/C4GAOXVgMTLfgryt5fyWo93FZyhEWANo0PokFz/iWdDe13mX3O5TRf6l8vMTqckAfR4zPiaH0yQ==", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -6678,6 +10933,12 @@ "tweetnacl": "~0.14.0" } }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, "stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", @@ -6695,6 +10956,15 @@ } } }, + "static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "dev": true, + "requires": { + "escodegen": "^1.11.1" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -6716,6 +10986,49 @@ } } }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + }, + "dependencies": { + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -6728,6 +11041,29 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, "string-length": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz", @@ -6744,9 +11080,29 @@ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" } }, "string_decoder": { @@ -6793,6 +11149,30 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6812,6 +11192,88 @@ "supports-color": "^7.0.0" } }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -6884,18 +11346,55 @@ "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -7034,6 +11533,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -7080,6 +11585,12 @@ "mime-types": "~2.1.24" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -7095,6 +11606,245 @@ "integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==", "dev": true }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dev": true, + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -7107,12 +11857,30 @@ "set-value": "^2.0.1" } }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "dev": true }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -7208,12 +11976,68 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + } + } + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -7268,6 +12092,12 @@ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -7279,6 +12109,18 @@ "extsprintf": "^1.2.0" } }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -7325,6 +12167,15 @@ "minimalistic-assert": "^1.0.0" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -7918,6 +12769,12 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", diff --git a/package.json b/package.json index 46f73a8..8c01c4d 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,11 @@ "description": "**UWAGA! Zaczynając pracę nad projektem — nie róbcie forka.\r Jedna osoba z zespołu (np. Mentor) powinna użyć przycisku `Use this template` i dodać innych członków zespołu jako Collaborators do tego repozytorium.\r Mentorzy mogą dowolnie zmieniać zakres projektu lub zdecydować się na zupełnie inny temat.**", "main": "index.ts", "scripts": { + "build": "parcel build index.html --public-url ./", + "start:dev": "parcel -p 8765 watch index.html", "test": "jest", "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "build": "webpack", - "start": "webpack serve --watch", - "watch": "webpack --watch" + "test:cov": "jest --coverage" }, "repository": { "type": "git", @@ -24,12 +23,10 @@ "devDependencies": { "@types/jest": "^26.0.20", "jest": "^26.6.3", + "parcel-bundler": "^1.12.4", "ts-jest": "^26.4.4", "ts-loader": "^8.0.14", - "typescript": "^4.1.3", - "webpack": "^5.17.0", - "webpack-cli": "^4.4.0", - "webpack-dev-server": "^3.11.2" + "typescript": "^4.1.3" }, "dependencies": {} } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 5d2e786..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,23 +0,0 @@ -const path = require('path'); - -module.exports = { - entry: './src/index.ts', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - publicPath: './dist' - }, - devtool: 'inline-source-map', - module: { - rules: [ - { - test: /\.ts$/, - exclude: /node_modules/, - use: 'ts-loader' - } - ] - }, - resolve: { - extensions: ['.ts', '.js'] - }, -}; \ No newline at end of file From 243c24b4600173512f8b0902d9cd00cdc07ffe96 Mon Sep 17 00:00:00 2001 From: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> Date: Fri, 12 Feb 2021 07:47:58 +0100 Subject: [PATCH 43/76] MNG-113 Add game logs (#26) --- dist/index.js | 4 ++-- index.html | 17 +------------- src/fightPage/buttonsEventListeners.ts | 8 ++++--- src/fightPage/updateMovesList.ts | 32 ++++++++++++++++++++++++++ styles/SASS/_responsive.scss | 3 +-- styles/app.css | 3 +-- styles/app.css.map | 2 +- 7 files changed, 43 insertions(+), 26 deletions(-) create mode 100644 src/fightPage/updateMovesList.ts diff --git a/dist/index.js b/dist/index.js index 3ffcd37..b288507 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateAttackButtons(),n.generateSwitchButtons(),n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZ2FtZUhhbmRsZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9zdGFydEdhbWVJZlJlYWR5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3N0YXJ0QmF0dGxlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3JlbmRlckZpZ2h0UGFnZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jaG9vc2VQb2tlbW9uc1BhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUGxheWVyTmFtZXMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZW1vbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvYWRkQ2hvc2VuUG9rZW1vbi50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2Nob29zZVBva2Vtb25zUGFnZS9jcmVhdGVQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9wbGF5ZXJDbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2FjdGl2YXRlU3RhcnQudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lIiwiYWN0aXZlUGxheWVyIiwid2hvQ2hvb3Nlc1Bva2Vtb25UZXh0IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicG9rZW1vbnMiLCJsZW5ndGgiLCJ0ZXh0Q29udGVudCIsIm5hbWUiLCJpbWFnZSIsIm1heEhQIiwiYXR0YWNrUG9pbnRzIiwiZGVmZW5zZVBvaW50cyIsInR5cGVzIiwibW92ZXMiLCJ0aGlzIiwiX25hbWUiLCJfaW1hZ2UiLCJfbWF4SFAiLCJfY3VycmVudEhQIiwiX2F0dGFja1BvaW50cyIsIl9kZWZlbnNlUG9pbnRzIiwiX3R5cGVzIiwiX21vdmVzIiwic3VidHJhY3RIUCIsInBvaW50c1RvU3VidHJhY3QiLCJuZXdIUCIsImhlYWwiLCJpc0FsaXZlIiwicG9rZURhdGEiLCJfcG9rZW1vbnMiLCJwb2tlbW9uIiwicG9rZUltZyIsInBva2VNb3ZlcyIsInJlZHVjZSIsInRhYiIsIm1vdmUiLCJwdXNoIiwibW92ZU5hbWUiLCJtb3ZlVHlwZSIsInR5cGUiLCJwb2tlVHlwZXMiLCJtYXAiLCJ2IiwicG9rZW1vbk9iamVjdCIsIlBva2Vtb24iLCJfY2FwaXRhbGl6ZSIsInN0YXRzIiwiaHAiLCJhdHRhY2siLCJkZWZlbnNlIiwiZ2V0UG9rZW1vbkJ5TmFtZSIsImZpbmQiLCJ0b0xvd2VyQ2FzZSIsInVuZGVmaW5lZCIsIkVycm9yIiwic3RyIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNyZWF0ZUFjdGl2ZVBva2Vtb24iLCJnYW1lSGFuZGxlciIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEiLCJwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhIiwiY3JlYXRlUG9rZW1vbiIsInBsYXllciIsImltYWdlQXJlYSIsIm5hbWVBcmVhIiwicG9rZW1vbk5hbWUiLCJnZXRBY3RpdmVQb2tlbW9uIiwic2V0QXR0cmlidXRlIiwicGxheWVyT25lIiwicGxheWVyVHdvIiwiY3JlYXRlQWN0aXZlUGxheWVyIiwiY3VycmVudFBsYXllciIsInBsYXllck9uZVVuZGVybGluZUFyZWEiLCJwbGF5ZXJUd29VbmRlcmxpbmVBcmVhIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwiYWRkIiwiY3JlYXRlSFBCYXJzIiwiY3JlYXRlQmFyIiwiSFBCYXIiLCJIUEluUGVyY2VudCIsImN1cnJlbnRIUCIsImNvbnNvbGUiLCJsb2ciLCJzdHlsZSIsIndpZHRoIiwiSFBDbGFzc0xpc3QiLCJwbGF5ZXJPbmVIUEJhciIsInBsYXllclR3b0hQQmFyIiwiY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIiwiY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMiLCJwbGF5ZXJQb2tlYmFsbHMiLCJpIiwiYWxpdmVQb2tlbW9ucyIsInBsYXllck9uZVBva2ViYWxscyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJwbGF5ZXJUd29Qb2tlYmFsbHMiLCJtYWdpY0Z1bmN0aW9uIiwiYnV0dG9uIiwiYnV0dG9ucyIsImZ1bmN0aW9uVG9DYWxsIiwiYWRkRXZlbnRMaXN0ZW5lciIsImUiLCJpbm5lclRleHQiLCJzd2l0Y2hQbGF5ZXIiLCJzZXRUaW1lb3V0IiwiZ2VuZXJhdGVBdHRhY2tCdXR0b25zIiwiZ2VuZXJhdGVTd2l0Y2hCdXR0b25zIiwiZ2VuZXJhdGVBY3Rpb25CdXR0b25zIiwiYW5pbWF0aW9uQnV0dG9uc0V4aXQiLCJhbmltYXRpb25CdXR0b25zRW50cnkiLCJhbmltYXRpb24iLCJhbmltYXRpb25EZWxheSIsInN3aXRjaFBva2UiLCJldmVudCIsIm5hbWVPZkNob3NlblBva2Vtb24iLCJjdXJyZW50VGFyZ2V0Iiwic3dpdGNoUG9rZW1vbiIsImVhdE1hbmdvIiwibWFuZ29CdXR0b24iLCJtYW5nbyIsInVzZU1hbmdvIiwiaW5uZXJIVE1MIiwiX3BsYXllck9uZSIsIl9wbGF5ZXJUd28iLCJfY3VycmVudFBsYXllciIsImRpZFBsYXllckxvb3NlIiwiaXNHYW1lRmluaXNoZWQiLCJnZXRXaW5uZXIiLCJpbmRleE9mQWN0aXZlUG9rZW1vbiIsImZpbmRJbmRleCIsImJhdHRsZUJ1dHRvbnMiLCJhdHRhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b24iLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiaGFzTWFuZ28iLCJhdHRhY2tCdXR0b25PbmUiLCJhdHRhY2tCdXR0b25Ud28iLCJiYWNrQnV0dG9uIiwic3dpdGNoQnV0dG9uT25lIiwic3dpdGNoQnV0dG9uVHdvIiwibm90QWN0aXZlUG9rZW1vbnMiLCJzdGFydEdhbWVJZlJlYWR5IiwiYXBwIiwiZ2FtZSIsIkdhbWVIYW5kbGVyIiwiYXBwRGl2IiwiZmlnaHRQYWdlIiwicGxheWVyT25lTmFtZSIsInBsYXllclR3b05hbWUiLCJjcmVhdGVQbGF5ZXJGaWdodE5hbWVzIiwic3RhcnRCYXR0bGUiLCJjcmVhdGVDaG9vc2VQYWdlIiwiY3JlYXRlUGxheWVyTmFtZXMiLCJwb2tlbW9uRmFjdG9yeSIsIlBva2Vtb25GYWN0b3J5IiwiZm9yRWFjaCIsInBva2Vtb25JbWFnZSIsImZhY3RvcnkiLCJjbGlja2VkUG9rZW1vbiIsInRhcmdldCIsImlkIiwibmV3UG9rZW1vbk9iamVjdCIsImFkZFBva2Vtb24iLCJjdXJzb3IiLCJmaWx0ZXIiLCJhZGRDaG9zZW5Qb2tlbW9uIiwicGxheWVyTGFzdFBva2Vtb25OYW1lIiwiY3JlYXRlUG9rZWJhbGxzIiwib25jZSIsImNyZWF0ZVBva2Vtb25zIiwiX2luZGV4T2ZBY3RpdmVQb2tlbW9uIiwiX2hhc01hbmdvIiwibnVtT2ZBY3RpdmVQb2tlbW9uIiwiYWN0aXZhdGVTdGFydCIsIm5hbWUxSW5wdXQiLCJuYW1lMklucHV0Iiwic3RhcnRCdXR0b24iLCJ2YWx1ZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwic3RhcnRpbmdQYWdlIiwicGxheWVyMU5hbWVJbnB1dCIsInBsYXllcjJOYW1lSW5wdXQiLCJzY3JlZW5Ub0Rpc3BsYXkiLCJleGl0QnV0dG9uIiwiaG93VG9QbGF5QnV0dG9uIiwiaW5mb01vZGFsIiwicmVuZGVySG93VG9QbGF5TW9kYWwiLCJkaXNwbGF5IiwicGxheUJ1dHRvbiIsImNob29zZVBva2Vtb25TY3JlZW4iLCJQbGF5ZXIiLCJyZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuIl0sIm1hcHBpbmdzIjoibUJBQU8sSUNFTUEsRUFBeUIsU0FBQ0MsR0FDckMsSUFBSUMsRUFBd0JDLFNBQVNDLGNBQWMsd0JBQ2xCLElBQWpDSCxFQUFhSSxTQUFTQyxPQUNqQkosRUFBc0JLLFlBQWMsZ0NBQ3BDTCxFQUFzQkssWUFBaUJOLEVBQWFPLEtBQUksc0JDUy9ELGFBV0UsV0FBWUEsRUFBY0MsRUFBZUMsRUFBZUMsRUFDdERDLEVBQXVCQyxFQUFzQkMsR0FFN0NDLEtBQUtDLE1BQVFSLEVBQ2JPLEtBQUtFLE9BQVNSLEVBQ2RNLEtBQUtHLE9BQVNSLEVBQ2RLLEtBQUtJLFdBQWFULEVBQ2xCSyxLQUFLSyxjQUFnQlQsRUFDckJJLEtBQUtNLGVBQWlCVCxFQUN0QkcsS0FBS08sT0FBU1QsRUFDZEUsS0FBS1EsT0FBU1QsRUFtRGxCLE9BL0NFLHNCQUFJLG1CQUFJLEMsSUFBUixXQUNFLE9BQU9DLEtBQUtDLE8sZ0NBR2Qsc0JBQUksb0JBQUssQyxJQUFULFdBQ0UsT0FBT0QsS0FBS0UsUSxnQ0FHZCxzQkFBSSx3QkFBUyxDLElBQWIsV0FDRSxPQUFPRixLQUFLSSxZLGdDQUdkLHNCQUFJLG9CQUFLLEMsSUFBVCxXQUNFLE9BQU9KLEtBQUtHLFEs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aW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2hvd01vZGFsID0gKFxyXG4gIHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQsXHJcbiAgc3RhcnRpbmdQb3NpdGlvbjogc3RyaW5nXHJcbikgPT4ge1xyXG4gIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gc3RhcnRpbmdQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBoaWRlTW9kYWwgPSAoc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGV4aXRCdXR0b24gPSBzY3JlZW5Ub0Rpc3BsYXkucXVlcnlTZWxlY3RvcihcIi5leGl0QnV0dG9uXCIpO1xyXG4gIGV4aXRCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lID0gKGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHdob0Nob29zZXNQb2tlbW9uVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjd2hvQ2hvb3Nlc1BhcmFncmFwaFwiKSE7XHJcbiAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gM1xyXG4gICAgPyAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gXCJXYWl0IGZvciB0aGUgZ2FtZSB0byBzdGFydC4uLlwiKVxyXG4gICAgOiAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gYCR7YWN0aXZlUGxheWVyLm5hbWV9IGNob29zZXMgMSBwb2tlbW9uYCk7XHJcbn07XHJcbiIsImV4cG9ydCB0eXBlIFBva2Vtb25UeXBlID1cclxuICB8IFwiZ3Jhc3NcIlxyXG4gIHwgXCJwb2lzb25cIlxyXG4gIHwgXCJmaXJlXCJcclxuICB8IFwid2F0ZXJcIlxyXG4gIHwgXCJidWdcIlxyXG4gIHwgXCJub3JtYWxcIlxyXG4gIHwgXCJmbHlpbmdcIlxyXG4gIHwgXCJlbGVjdHJpY1wiXHJcbiAgfCBcImdyb3VuZFwiXHJcbiAgfCBcImZhaXJ5XCJcclxuICB8IFwicHN5Y2hpY1wiXHJcbiAgfCBcImZpZ2h0aW5nXCJcclxuICB8IFwicm9ja1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb24ge1xyXG5cclxuICByZWFkb25seSBfbmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9pbWFnZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9tYXhIUDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRIUDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9hdHRhY2tQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfZGVmZW5zZVBvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF90eXBlczogUG9rZW1vblR5cGVbXTtcclxuICByZWFkb25seSBfbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXTtcclxuXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBpbWFnZTogc3RyaW5nLCBtYXhIUDogbnVtYmVyLCBhdHRhY2tQb2ludHM6IG51bWJlcixcclxuICAgIGRlZmVuc2VQb2ludHM6IG51bWJlciwgdHlwZXM6IFBva2Vtb25UeXBlW10sIG1vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W10pIHtcclxuXHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX2ltYWdlID0gaW1hZ2U7XHJcbiAgICB0aGlzLl9tYXhIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9hdHRhY2tQb2ludHMgPSBhdHRhY2tQb2ludHM7XHJcbiAgICB0aGlzLl9kZWZlbnNlUG9pbnRzID0gZGVmZW5zZVBvaW50cztcclxuICAgIHRoaXMuX3R5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLl9tb3ZlcyA9IG1vdmVzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIHN1YnRyYWN0SFAocG9pbnRzVG9TdWJ0cmFjdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdIUCA9IHRoaXMuX2N1cnJlbnRIUCAtIHBvaW50c1RvU3VidHJhY3Q7XHJcbiAgICBpZiAobmV3SFAgPCAwKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRIUCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBuZXdIUDtcclxuICB9XHJcblxyXG4gIGhlYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIGdldCBhdHRhY2tQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXR0YWNrUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmVuc2VQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmZW5zZVBvaW50cztcclxuICB9XHJcblxyXG4gIGdldCB0eXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlcztcclxuICB9XHJcblxyXG4gIGdldCBtb3ZlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb3ZlcztcclxuICB9XHJcblxyXG4gIGlzQWxpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQID4gMDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcbmltcG9ydCB7IFBva2Vtb25UeXBlIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbkZhY3Rvcnkge1xyXG4gICAgcmVhZG9ubHkgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocG9rZURhdGE6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7IHR5cGVzOiBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0czogeyBocDogbnVtYmVyOyBhdHRhY2s6IG51bWJlcjsgZGVmZW5zZTogbnVtYmVyOyB9O1xyXG4gICAgICAgIG1vdmVzOiB7IG5hbWU6IHN0cmluZzsgYWNjdXJhY3k6IG51bWJlcjsgcG93ZXI6IG51bWJlcjsgdHlwZTogc3RyaW5nOyB9W11cclxuICAgIH1bXSkge1xyXG4gICAgICAgIHRoaXMuX3Bva2Vtb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IHBva2Vtb24gb2YgcG9rZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VJbWcgPSBcIi4uL2Fzc2V0cy9cIiArIHBva2Vtb24ubmFtZSArIFwiLnBuZ1wiXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlTW92ZXMgPSBwb2tlbW9uLm1vdmVzLnJlZHVjZSggKHRhYiwgbW92ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFiLnB1c2goe21vdmVOYW1lOiBtb3ZlLm5hbWUsIG1vdmVUeXBlOiBtb3ZlLnR5cGUgYXMgUG9rZW1vblR5cGV9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYlxyXG4gICAgICAgICAgICAgICAgfSwgW10gYXMge21vdmVOYW1lOiBzdHJpbmcsIG1vdmVUeXBlOiBQb2tlbW9uVHlwZX1bXSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VUeXBlczogUG9rZW1vblR5cGVbXSA9IHBva2Vtb24udHlwZXMubWFwKHYgPT4gdiBhcyBQb2tlbW9uVHlwZSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2Vtb25PYmplY3QgPSBuZXcgUG9rZW1vbih0aGlzLl9jYXBpdGFsaXplKHBva2Vtb24ubmFtZSksIHBva2VJbWcsIFxyXG4gICAgICAgICAgICAgICAgcG9rZW1vbi5zdGF0cy5ocCwgcG9rZW1vbi5zdGF0cy5hdHRhY2ssIHBva2Vtb24uc3RhdHMuZGVmZW5zZSxcclxuICAgICAgICAgICAgICAgIHBva2VUeXBlcywgcG9rZU1vdmVzKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uT2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb2tlbW9uQnlOYW1lKG5hbWU6IHN0cmluZyk6IFBva2Vtb24ge1xyXG4gICAgICAgIGNvbnN0IHBva2Vtb24gPSB0aGlzLl9wb2tlbW9ucy5maW5kKCBwb2tlbW9uID0+IHBva2Vtb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChwb2tlbW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2tlbW9uICR7bmFtZX0gaXMgbm90IGZvdW5kIGluIHRoZSBwb2tlbW9uIGZhY3RvcnlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9rZW1vblxyXG4gICAgfVxyXG5cclxuICAgIF9jYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICApID0+IHtcclxuICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICBuYW1lQXJlYS50ZXh0Q29udGVudCA9IHBva2Vtb25OYW1lO1xyXG4gIH07XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllck9uZSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG4gIGNyZWF0ZVBva2Vtb24oXHJcbiAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhY3RpdmVQbGF5ZXJBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2FjdGl2ZS1wbGF5ZXItaW5mb1wiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBhY3RpdmVQbGF5ZXJBcmVhLnRleHRDb250ZW50ID0gYCR7Z2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lfSBub3cgaXMgeW91ciB0dXJuLiBHZXQgdGhlIHJldmVuZ2UhYDtcclxuICBjb25zdCBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjFcIik7XHJcbiAgY29uc3QgcGxheWVyVHdvVW5kZXJsaW5lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyXCIpO1xyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyID09PSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUpIHtcclxuICAgIHBsYXllclR3b1VuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVBsYXllclwiKTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUhQQmFycyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBjcmVhdGVCYXIgPSAocGxheWVyOiBQbGF5ZXIsIEhQQmFyOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbWF4SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5tYXhIUDtcclxuICAgIGNvbnN0IGN1cnJlbnRIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLmN1cnJlbnRIUDtcclxuICAgIGNvbnN0IEhQSW5QZXJjZW50ID0gKGN1cnJlbnRIUCAvIG1heEhQKSAqIDEwMDtcclxuICAgIGNvbnNvbGUubG9nKEhQSW5QZXJjZW50KTtcclxuICAgIEhQQmFyLnN0eWxlLndpZHRoID0gYCR7SFBJblBlcmNlbnR9JWA7XHJcbiAgICBsZXQgSFBDbGFzc0xpc3QgPSBIUEJhci5jbGFzc0xpc3Q7XHJcbiAgICBpZiAoSFBJblBlcmNlbnQgPCAyMCkge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlQmFyKHBsYXllck9uZSwgcGxheWVyT25lSFBCYXIpO1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJUd28sIHBsYXllclR3b0hQQmFyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMjsgaSA+IHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCAtIDE7IGktLSkge1xyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoXHJcbiAgLy9wbGF5ZXI6IFBsYXllcixcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ29CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcblxyXG4gIGF0dGFja0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYmF0dGxlQnV0dG9ucyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9KTtcclxuICBzd2l0Y2hCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcblxyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyLmhhc01hbmdvKSB7XHJcbiAgICBtYWdpY0Z1bmN0aW9uKG1hbmdvQnV0dG9uLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgZWF0TWFuZ28pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBtYW5nby5pbm5lckhUTUwgPSBcIjBcIjtcclxuICAgIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgYXR0YWNrc0J1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYXR0YWNrQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2F0dGFja0J1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuICBtYWdpY0Z1bmN0aW9uKGF0dGFja0J1dHRvbk9uZSwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGF0dGFjayk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBhdHRhY2spO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uT25lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvbk9uZVwiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3Qgc3dpdGNoQnV0dG9uVHdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N3aXRjaEJ1dHRvblR3b1wiXHJcbiAgKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgYmF0dGxlQnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXHJcbiAgICBcImJhdHRsZUJ1dHRvblwiXHJcbiAgKSEgYXMgSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD47XHJcbiAgY29uc3QgYmFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYmFja0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcblxyXG4gIGFuaW1hdGlvbkJ1dHRvbnNFbnRyeShiYXR0bGVCdXR0b25zKTtcclxuXHJcbiAgbWFnaWNGdW5jdGlvbihzd2l0Y2hCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKHN3aXRjaEJ1dHRvblR3bywgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIHN3aXRjaFBva2UpO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYmFja0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIpO1xyXG59O1xyXG5cclxuY29uc3QgbWFnaWNGdW5jdGlvbiA9IChcclxuICBidXR0b246IEhUTUxEaXZFbGVtZW50LFxyXG4gIGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcixcclxuICBmdW5jdGlvblRvQ2FsbD86IGFueVxyXG4pID0+IHtcclxuICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIChlKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhgJHtidXR0b24uaW5uZXJUZXh0fSB1c2VkIWApO1xyXG4gICAgaWYgKGZ1bmN0aW9uVG9DYWxsKSB7XHJcbiAgICAgIGZ1bmN0aW9uVG9DYWxsKGdhbWVIYW5kbGVyLCBlKTtcclxuICAgICAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgICAgIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgICAgIGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyhnYW1lSGFuZGxlcik7XHJcbiAgICAgIGdhbWVIYW5kbGVyLnN3aXRjaFBsYXllcigpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlQXR0YWNrQnV0dG9ucygpO1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZVN3aXRjaEJ1dHRvbnMoKTtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk7XHJcbiAgICB9LCAxMDAwKTtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJ1dHRvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0VudHJ5ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtaW4taG9yLWNlbnRlciAwLjVzIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgYm90aFwiO1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb25EZWxheSA9IGAke2kgKiAwLjE1fXNgO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFuaW1hdGlvbkJ1dHRvbnNFeGl0ID0gKGJ1dHRvbnM6IEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+KSA9PiB7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBidXR0b25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbiA9XHJcbiAgICAgIFwic2NhbGUtb3V0LWhvcml6b250YWwgMC41cyBjdWJpYy1iZXppZXIoMC41NTAsIDAuMDg1LCAwLjY4MCwgMC41MzApIGJvdGhcIjtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSBgJHtpICogMC4xNX1zYDtcclxuICB9XHJcbn07XHJcblxyXG4vLyBmdW5jaW9ucyBqdXN0IGZvciBjaGVjayBpZiBpdHMgd29ya3Mgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggZ2FtZUhhbmRsZXIgPiB1c2UgYXR0YWNrIG9yIHN3aXRjaCBQb2tlbW9uIGZ1bmN0aW9uc1xyXG5cclxuY29uc3QgYXR0YWNrID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiYnVtIGJ1bSBiYWNoIVwiKTtcclxufTtcclxuXHJcbmNvbnN0IHN3aXRjaFBva2UgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLCBldmVudDogRXZlbnQpID0+IHtcclxuICBjb25zdCBuYW1lT2ZDaG9zZW5Qb2tlbW9uID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAudGV4dENvbnRlbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuc3dpdGNoUG9rZW1vbihuYW1lT2ZDaG9zZW5Qb2tlbW9uISk7XHJcbn07XHJcblxyXG5jb25zdCBlYXRNYW5nbyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBtYW5nb0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29CdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb1wiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci51c2VNYW5nbygpO1xyXG4gIG1hbmdvLmlubmVySFRNTCA9IFwiMFwiO1xyXG4gIG1hbmdvQnV0dG9uLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZEJ1dHRvblwiKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHtcclxuICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcixcclxuICBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyLFxyXG59IGZyb20gXCIuL2ZpZ2h0UGFnZS9idXR0b25zRXZlbnRMaXN0ZW5lcnNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBHYW1lSGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9wbGF5ZXJPbmU6IFBsYXllcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllclR3bzogUGxheWVyXHJcbiAgKSB7fVxyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UGxheWVyOiBQbGF5ZXIgPSB0aGlzLl9wbGF5ZXJPbmU7XHJcblxyXG4gIGdldCBwbGF5ZXJPbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHBsYXllclR3bygpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQbGF5ZXI7XHJcbiAgfVxyXG5cclxuICBnZXQgb3Bwb25lbnRQbGF5ZXIoKTogUGxheWVyIHtcclxuICAgIGlmICh0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmUpIHJldHVybiB0aGlzLl9wbGF5ZXJUd287XHJcbiAgICByZXR1cm4gdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWRQbGF5ZXJMb29zZShwbGF5ZXI6IFBsYXllcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCA9PT0gMDtcclxuICB9XHJcblxyXG4gIGlzR2FtZUZpbmlzaGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpIHx8XHJcbiAgICAgIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyVHdvKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFdpbm5lcigpOiBQbGF5ZXIgfCBFcnJvciB7XHJcbiAgICBpZiAoIXRoaXMuaXNHYW1lRmluaXNoZWQoKSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBnZXQgdGhlIHdpbm5lci4gVGhlIGdhbWUgaXMgbm90IG92ZXIuXCIpO1xyXG4gICAgcmV0dXJuIHRoaXMuZGlkUGxheWVyTG9vc2UodGhpcy5fcGxheWVyT25lKSA9PT0gdHJ1ZVxyXG4gICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICA6IHRoaXMuX3BsYXllck9uZTtcclxuICB9XHJcblxyXG4gIHN3aXRjaFBsYXllcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPVxyXG4gICAgICB0aGlzLl9jdXJyZW50UGxheWVyID09PSB0aGlzLl9wbGF5ZXJPbmVcclxuICAgICAgICA/IHRoaXMuX3BsYXllclR3b1xyXG4gICAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUG9rZW1vbihwb2tlbW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9jdXJyZW50UGxheWVyLmluZGV4T2ZBY3RpdmVQb2tlbW9uID0gdGhpcy5fY3VycmVudFBsYXllci5wb2tlbW9ucy5maW5kSW5kZXgoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgPT09IHBva2Vtb25OYW1lXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBY3Rpb25CdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTdGFydCAtIGFjdGlvbiBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblwiPmF0dGFjazwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJzd2l0Y2hCdXR0b25cIj5zd2l0Y2g8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwibWFuZ29CdXR0b25cIj51c2UgbWFuZ28gKDxzcGFuIGlkPVwibWFuZ29cIj4xPC9zcGFuPik8L2Rpdj5gO1xyXG4gICAgYWN0aW9uc0J1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUF0dGFja0J1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIkF0dGFjayBjaG9vc2UgbW9kYWxcIik7XHJcbiAgICBjb25zdCBhY3Rpb25Db250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FjdGlvbk1vZGFsc1wiKSE7XHJcbiAgICBhY3Rpb25Db250YWluZXIuaW5uZXJIVE1MID0gYFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25PbmVcIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzBdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJhdHRhY2tCdXR0b25Ud29cIj4ke3BsYXllci5nZXRBY3RpdmVQb2tlbW9uLm1vdmVzWzFdLm1vdmVOYW1lfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJiYWNrQnV0dG9uXCI+YmFjazwvZGl2PmA7XHJcbiAgICBhdHRhY2tzQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlU3dpdGNoQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiU3dpdGNoIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvbk9uZVwiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzBdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblR3b1wiPiR7cGxheWVyLm5vdEFjdGl2ZVBva2Vtb25zWzFdLm5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIodGhpcyk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBzdGFydEJhdHRsZSB9IGZyb20gXCIuLi9maWdodFBhZ2Uvc3RhcnRCYXR0bGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRHYW1lSWZSZWFkeSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBpZiAocGxheWVyT25lLnBva2Vtb25zLmxlbmd0aCA8IDMgfHwgcGxheWVyVHdvLnBva2Vtb25zLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICBjb25zdCBhcHAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcFwiKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBzdGFydEJhdHRsZShwbGF5ZXJPbmUsIHBsYXllclR3bywgYXBwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlIH0gZnJvbSBcIi4vcmVuZGVyRmlnaHRQYWdlXCI7XHJcblxyXG5leHBvcnQgY29uc3Qgc3RhcnRCYXR0bGUgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYXBwOiBIVE1MRGl2RWxlbWVudFxyXG4pID0+IHtcclxuICBjb25zdCBnYW1lID0gbmV3IEdhbWVIYW5kbGVyKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBzZXRUaW1lb3V0KCgpID0+IGNyZWF0ZUZpZ2h0UGFnZShhcHAsIGdhbWUpLCAyMDAwKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUG9rZW1vbiB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUGxheWVyXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUhQQmFycyB9IGZyb20gXCIuL2NyZWF0ZUhQQmFyc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHNcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyT25lTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjEtbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvTmFtZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNmaWdodC1wYWdlLXBsYXllcjItbmFtZVwiXHJcbiAgKSBhcyBIVE1MSGVhZGluZ0VsZW1lbnQ7XHJcbiAgcGxheWVyT25lTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllck9uZS5uYW1lO1xyXG4gIHBsYXllclR3b05hbWUudGV4dENvbnRlbnQgPSBnYW1lSGFuZGxlci5wbGF5ZXJUd28ubmFtZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2UgPSAoXHJcbiAgYXBwRGl2OiBIVE1MRGl2RWxlbWVudCxcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgZmlnaHRQYWdlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MID0gZmlnaHRQYWdlLmlubmVySFRNTDtcclxuICBjcmVhdGVQbGF5ZXJGaWdodE5hbWVzKGdhbWVIYW5kbGVyKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXIoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBva2Vtb24oZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUhQQmFycyhnYW1lSGFuZGxlci5wbGF5ZXJPbmUsIGdhbWVIYW5kbGVyLnBsYXllclR3byk7XHJcbiAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAvLyBnZW5lcmF0ZSBjaG9vc2UgYWN0aW9uIGJ1dHRvbnNcclxuICBnYW1lSGFuZGxlci5nZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVBsYXllck5hbWVzIH0gZnJvbSBcIi4vY3JlYXRlUGxheWVyTmFtZXNcIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZW1vbnMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlbW9uc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNob29zZVBhZ2UgPSAocGxheWVyT25lOiBQbGF5ZXIsIHBsYXllclR3bzogUGxheWVyKSA9PiB7XHJcbiAgbGV0IGFjdGl2ZVBsYXllciA9IHBsYXllck9uZTtcclxuICBjcmVhdGVQbGF5ZXJOYW1lcyhwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gIGNyZWF0ZVBva2Vtb25zKHBsYXllck9uZSwgcGxheWVyVHdvLCBhY3RpdmVQbGF5ZXIpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQbGF5ZXJOYW1lcyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgcGxheWVyT25lTmFtZUFyZWFUZXh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNjaG9vc2VQYWdlUGxheWVyMU5hbWVcIikhO1xyXG4gIHBsYXllck9uZU5hbWVBcmVhVGV4dC50ZXh0Q29udGVudCA9IHBsYXllck9uZS5uYW1lO1xyXG4gIGxldCBwbGF5ZXJUd29OYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIyTmFtZVwiKSE7XHJcbiAgcGxheWVyVHdvTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyVHdvLm5hbWU7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBQb2tlbW9uRmFjdG9yeSB9IGZyb20gXCIuLi9wb2tlbW9uRmFjdG9yeVwiO1xyXG5pbXBvcnQgKiBhcyBkYXRhIGZyb20gXCIuLi8uLi9hc3NldHMvcG9rZV9kYXRhLmpzb25cIjtcclxuaW1wb3J0IHsgc3RhcnRHYW1lSWZSZWFkeSB9IGZyb20gXCIuL3N0YXJ0R2FtZUlmUmVhZHlcIjtcclxuaW1wb3J0IHsgYWRkQ2hvc2VuUG9rZW1vbiB9IGZyb20gXCIuL2FkZENob3NlblBva2Vtb25cIjtcclxuaW1wb3J0IHsgY3JlYXRlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlUG9rZWJhbGxzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllck5hbWUgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJOYW1lXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlUG9rZW1vbnMgPSAoXHJcbiAgcGxheWVyT25lOiBQbGF5ZXIsXHJcbiAgcGxheWVyVHdvOiBQbGF5ZXIsXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgcG9rZURhdGEgPSBkYXRhLnBva2Vtb25zO1xyXG4gIGNvbnN0IHBva2Vtb25GYWN0b3J5ID0gbmV3IFBva2Vtb25GYWN0b3J5KHBva2VEYXRhKTtcclxuICBjb25zdCBwb2tlbW9uSW1hZ2VzID0gQXJyYXkuZnJvbShcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjcG9rZW1vbkxpc3QgaW1nXCIpXHJcbiAgKSBhcyBbSFRNTEltYWdlRWxlbWVudF07XHJcblxyXG4gIHBva2Vtb25JbWFnZXMuZm9yRWFjaCgocG9rZW1vbkltYWdlKSA9PlxyXG4gICAgcG9rZW1vbkltYWdlLmFkZEV2ZW50TGlzdGVuZXIoXHJcbiAgICAgIFwiY2xpY2tcIixcclxuICAgICAgKGUpID0+IHtcclxuICAgICAgICBpZiAoYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gMykgcmV0dXJuO1xyXG4gICAgICAgIGFkZENob3NlblBva2Vtb24oZSwgcG9rZW1vbkZhY3RvcnksIGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgY3JlYXRlUG9rZWJhbGxzKHBsYXllck9uZSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICAvLyBjaGFuZ2UgcGxheWVyXHJcbiAgICAgICAgYWN0aXZlUGxheWVyID0gYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmUgPyBwbGF5ZXJUd28gOiBwbGF5ZXJPbmU7XHJcbiAgICAgICAgY3JlYXRlQWN0aXZlUGxheWVyTmFtZShhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIHN0YXJ0R2FtZUlmUmVhZHkocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gICAgICB9LFxyXG4gICAgICB7IG9uY2U6IHRydWUgfVxyXG4gICAgKVxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi4vcG9rZW1vbkNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZENob3NlblBva2Vtb24gPSAoXHJcbiAgZXZlbnQ6IEV2ZW50LFxyXG4gIGZhY3Rvcnk6IFBva2Vtb25GYWN0b3J5LFxyXG4gIGFjdGl2ZVBsYXllcjogUGxheWVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGNsaWNrZWRQb2tlbW9uID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcG9rZW1vbk5hbWUgPSBjbGlja2VkUG9rZW1vbi5pZDtcclxuICBjb25zdCBuZXdQb2tlbW9uT2JqZWN0OiBQb2tlbW9uID0gZmFjdG9yeS5nZXRQb2tlbW9uQnlOYW1lKHBva2Vtb25OYW1lKTtcclxuICBhY3RpdmVQbGF5ZXIuYWRkUG9rZW1vbihuZXdQb2tlbW9uT2JqZWN0KTtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5jdXJzb3IgPSBcImRlZmF1bHRcIjtcclxuICBjbGlja2VkUG9rZW1vbi5zdHlsZS5maWx0ZXIgPSBcImdyYXlzY2FsZSgxMDAlKVwiO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlYmFsbHMgPSAocGxheWVyT25lOiBQbGF5ZXIsIGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgY29uc3QgcGxheWVyUG9rZWJhbGxzOiBIVE1MSW1hZ2VFbGVtZW50W10gPVxyXG4gICAgYWN0aXZlUGxheWVyID09PSBwbGF5ZXJPbmVcclxuICAgICAgPyBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIjY2hvb3NlUGFnZVBsYXllcjEgaW1nXCIpKVxyXG4gICAgICA6IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMiBpbWdcIikpO1xyXG4gIGNvbnN0IHBsYXllckxhc3RQb2tlbW9uTmFtZTogc3RyaW5nID0gYWN0aXZlUGxheWVyLnBva2Vtb25zW1xyXG4gICAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCAtIDFcclxuICBdLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICBjb25zdCBudW1iZXJPZkxhc3RQb2tlbW9uOiBudW1iZXIgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMTtcclxuICBwbGF5ZXJQb2tlYmFsbHNbbnVtYmVyT2ZMYXN0UG9rZW1vbl0uc2V0QXR0cmlidXRlKFxyXG4gICAgXCJzcmNcIixcclxuICAgIGAuL2Fzc2V0cy8ke3BsYXllckxhc3RQb2tlbW9uTmFtZX0ucG5nYFxyXG4gICk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBva2Vtb24gfSBmcm9tIFwiLi9wb2tlbW9uQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBQbGF5ZXIge1xyXG4gIHByaXZhdGUgX25hbWU6IHN0cmluZztcclxuICBwcml2YXRlIF9wb2tlbW9uczogUG9rZW1vbltdO1xyXG4gIHByaXZhdGUgX2luZGV4T2ZBY3RpdmVQb2tlbW9uOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGFzTWFuZ286IEJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwb2tlbW9uczogUG9rZW1vbltdKSB7XHJcbiAgICBpZiAobmFtZS5sZW5ndGggPiA4KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRvbyBsb25nIG5hbWVcIik7XHJcbiAgICB9XHJcbiAgICBpZiAocG9rZW1vbnMubGVuZ3RoID4gMykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcm9uZyBudW1iZXIgb2YgcG9rZW1vbnNcIik7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX3Bva2Vtb25zID0gcG9rZW1vbnM7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IDA7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG4gIGdldCBwb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Bva2Vtb25zO1xyXG4gIH1cclxuXHJcbiAgc2V0IGluZGV4T2ZBY3RpdmVQb2tlbW9uKG51bU9mQWN0aXZlUG9rZW1vbjogbnVtYmVyKSB7XHJcbiAgICB0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbiA9IG51bU9mQWN0aXZlUG9rZW1vbjtcclxuICB9XHJcbiAgZ2V0IGdldEFjdGl2ZVBva2Vtb24oKTogUG9rZW1vbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNbdGhpcy5faW5kZXhPZkFjdGl2ZVBva2Vtb25dO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFsaXZlUG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgIGNvbnN0IGFsaXZlUG9rZW1vbnNUYWI6IFBva2Vtb25bXSA9IHRoaXMucG9rZW1vbnMuZmlsdGVyKChwb2tlbW9uKSA9PlxyXG4gICAgICBwb2tlbW9uLmlzQWxpdmUoKVxyXG4gICAgKTtcclxuICAgIHJldHVybiBhbGl2ZVBva2Vtb25zVGFiO1xyXG4gIH1cclxuXHJcbiAgdXNlTWFuZ28oKTogdm9pZCB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5faGFzTWFuZ28pXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBjYW5ub3QgdXNlIG1hbmdvLiBZb3UgdXNlIGFsbCBtYW5nb3NcIik7XHJcbiAgICB0aGlzLl9oYXNNYW5nbyA9IGZhbHNlO1xyXG4gICAgdGhpcy5nZXRBY3RpdmVQb2tlbW9uLmhlYWwoKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNNYW5nbygpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYXNNYW5nbztcclxuICB9XHJcblxyXG4gIGFkZFBva2Vtb24ocG9rZW1vbjogUG9rZW1vbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uKTtcclxuICB9XHJcblxyXG4gIGdldCBub3RBY3RpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9rZW1vbnMuZmlsdGVyKFxyXG4gICAgICAocG9rZW1vbikgPT4gcG9rZW1vbi5uYW1lICE9PSB0aGlzLmdldEFjdGl2ZVBva2Vtb24ubmFtZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IGFjdGl2YXRlU3RhcnQgPSAobmFtZTFJbnB1dDogSFRNTElucHV0RWxlbWVudCwgbmFtZTJJbnB1dDogSFRNTElucHV0RWxlbWVudCwgc3RhcnRCdXR0b246IEhUTUxCdXR0b25FbGVtZW50KSA9PiB7XHJcbiAgICBpZiAobmFtZTFJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA8PSA4ICYmIG5hbWUySW5wdXQudmFsdWUubGVuZ3RoIDw9IDgpIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWVuYWJsZWQnXHJcbiAgICAgICAgc3RhcnRCdXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RhcnRCdXR0b24uY2xhc3NOYW1lID0gJ2J1dHRvbi1kaXNhYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IHNob3dNb2RhbCwgaGlkZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxQb3BVcEZ1bmN0aW9uc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVDaG9vc2VQYWdlIH0gZnJvbSBcIi4vY2hvb3NlUG9rZW1vbnNQYWdlL2Nob29zZVBva2Vtb25zUGFnZVwiXHJcbmltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IGFjdGl2YXRlU3RhcnQgfSBmcm9tICcuL2FjdGl2YXRlU3RhcnQnO1xyXG5cclxuY29uc3QgcmVuZGVyU3RhcnRpbmdQYWdlID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBzdGFydGluZ1BhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnRpbmctcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBzdGFydGluZ1BhZ2UuaW5uZXJIVE1MO1xyXG59O1xyXG5jb25zdCByZW5kZXJIb3dUb1BsYXlNb2RhbCA9IChhcHBEaXY6IEhUTUxEaXZFbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtdGVtcGxhdGVcIlxyXG4gICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICBhcHBEaXYuaW5uZXJIVE1MICs9IGluZm9Nb2RhbC5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IGNyZWF0ZUhvd1RvUGxheUJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBob3dUb1BsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaG93LXRvLXBsYXktYnV0dG9uXCJcclxuICApIGFzIEhUTUxVTGlzdEVsZW1lbnQ7XHJcbiAgY29uc3QgaW5mb01vZGFsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2luZm8tbW9kYWwtc2NyZWVuXCJcclxuICApIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGhvd1RvUGxheUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4ge1xyXG4gICAgc2hvd01vZGFsKGluZm9Nb2RhbCwgXCJmbGV4XCIpO1xyXG4gIH0pO1xyXG4gIGhpZGVNb2RhbChpbmZvTW9kYWwpO1xyXG59O1xyXG5cclxuY29uc3QgYWN0aXZhdGVTdGFydEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIyLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGNvbnN0IHN0YXJ0QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNzdGFydC1nYW1lLWJ1dHRvblwiKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcclxuICBwbGF5ZXIxTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSlcclxuICBwbGF5ZXIyTmFtZUlucHV0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXl1cFwiLCAoKSA9PiB7XHJcbiAgICAgIGFjdGl2YXRlU3RhcnQocGxheWVyMU5hbWVJbnB1dCwgcGxheWVyMk5hbWVJbnB1dCwgc3RhcnRCdXR0b24pXHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCByZW5kZXJDaG9vc2VQb2tlbW9uU2NyZWVuID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBwbGF5QnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCJcclxuICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXlCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGF5ZXIxTmFtZUlucHV0ID0gKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlbnRlci1wbGF5ZXIxLW5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcclxuICAgIGNvbnN0IHBsYXllcjJOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgY2hvb3NlUG9rZW1vblNjcmVlbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2Nob29zZS1wYWdlLXRlbXBsYXRlXCJcclxuICAgICkgYXMgSFRNTFRlbXBsYXRlRWxlbWVudDtcclxuICAgIGFwcERpdi5pbm5lckhUTUwgPSBjaG9vc2VQb2tlbW9uU2NyZWVuLmlubmVySFRNTDtcclxuICAgIGNyZWF0ZUNob29zZVBhZ2UobmV3IFBsYXllcihwbGF5ZXIxTmFtZUlucHV0LCBbXSksIG5ldyBQbGF5ZXIocGxheWVyMk5hbWVJbnB1dCwgW10pKTtcclxuICB9KTtcclxufVxyXG5cclxuY29uc3QgcmVuZGVyQXBwID0gKCkgPT4ge1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHJlbmRlclN0YXJ0aW5nUGFnZShhcHApO1xyXG4gIHJlbmRlckhvd1RvUGxheU1vZGFsKGFwcCk7XHJcbiAgYWN0aXZhdGVTdGFydEJ1dHRvbigpO1xyXG4gIGNyZWF0ZUhvd1RvUGxheUJ1dHRvbigpO1xyXG4gIHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4oYXBwKTtcclxufTtcclxuXHJcbnNldFRpbWVvdXQocmVuZGVyQXBwLCAyMDAwKTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{"use strict";var e=function(e){var t=document.querySelector("#whoChoosesParagraph");3===e.pokemons.length?t.textContent="Wait for the game to start...":t.textContent=e.name+" chooses 1 pokemon"},t=function(){function e(e,t,n,o,r,a,c){this._name=e,this._image=t,this._maxHP=n,this._currentHP=n,this._attackPoints=o,this._defensePoints=r,this._types=a,this._moves=c}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"image",{get:function(){return this._image},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentHP",{get:function(){return this._currentHP},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"maxHP",{get:function(){return this._maxHP},enumerable:!1,configurable:!0}),e.prototype.subtractHP=function(e){var t=this._currentHP-e;t<0&&(this._currentHP=0),this._currentHP=t},e.prototype.heal=function(){this._currentHP=this._maxHP},Object.defineProperty(e.prototype,"attackPoints",{get:function(){return this._attackPoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defensePoints",{get:function(){return this._defensePoints},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"types",{get:function(){return this._types},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"moves",{get:function(){return this._moves},enumerable:!1,configurable:!0}),e.prototype.isAlive=function(){return this._currentHP>0},e}(),n=function(){function e(e){this._pokemons=[];for(var n=0,o=e;ne.alivePokemons.length-1;n--)t[n].classList.add("disabledPokemon")},n=Array.from(document.querySelectorAll("#fight-page-player1 .pokeballWithPokemon")),o=Array.from(document.querySelectorAll("#fight-page-player2 .pokeballWithPokemon"));t(e.playerOne,n),t(e.playerTwo,o)},u=function(e,t,n,o){e.addEventListener("click",(function(u){console.log(e.innerText+" used!"),o&&(o(n,u),function(e,t,n){var o=document.querySelector(".gameLogs"),r=document.createElement("p"),a=document.createTextNode("No move found"),c=e.currentPlayer.getActivePokemon.name,i=n.currentTarget.textContent,u=e.currentPlayer.name;switch(console.log(),t){case p:a.nodeValue=u+": "+c+" used "+i+"!";break;case m:a.nodeValue=u+" changed Pokemon: "+c+" comes into play!";break;case y:a.nodeValue=u+" used mango: "+c+" is healed!";break;default:console.log("No move found")}console.log(r),r.append(a),o.insertBefore(r,o.firstChild)}(n,o,u),r(n),c(n.playerOne,n.playerTwo),i(n),n.switchPlayer(),a(n)),setTimeout((function(){n.generateAttackButtons(),n.generateSwitchButtons(),n.generateActionButtons()}),1e3),l(t)}))},s=function(e){for(var t=0;t\n
'+a.getActivePokemon.moves[1].moveName+'
\n
back
',e=this,t=document.querySelector("#attackButtonOne"),n=document.querySelector("#attackButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,p),u(n,o,e,p),u(r,o,e)},e.prototype.generateSwitchButtons=function(){var e,t,n,o,r,a=this.currentPlayer;console.log("Switch choose modal"),document.querySelector("#actionModals").innerHTML='\n
'+a.notActivePokemons[0].name+'
\n
'+a.notActivePokemons[1].name+'
\n
back
',e=this,t=document.querySelector("#switchButtonOne"),n=document.querySelector("#switchButtonTwo"),o=document.getElementsByClassName("battleButton"),r=document.querySelector("#backButton"),s(o),u(t,o,e,m),u(n,o,e,m),u(r,o,e)},e}(),h=function(e,t){e.pokemons.length<3||t.pokemons.length<3||function(e,t,n){var o=new d(e,t);setTimeout((function(){return e=n,t=o,u=document.querySelector("#fight-page-template"),e.innerHTML=u.innerHTML,function(e){var t=document.querySelector("#fight-page-player1-name"),n=document.querySelector("#fight-page-player2-name");t.textContent=e.playerOne.name,n.textContent=e.playerTwo.name}(t),a(t),r(t),c(t.playerOne,t.playerTwo),i(t),void t.generateActionButtons();var e,t,u}),2e3)}(e,t,document.querySelector("#app"))},f=function(t,r){var a=t;!function(e,t){document.querySelector("#choosePagePlayer1Name").textContent=e.name,document.querySelector("#choosePagePlayer2Name").textContent=t.name}(t,r),e(a),function(t,r,a){var c=o.x,i=new n(c);Array.from(document.querySelectorAll("#pokemonList img")).forEach((function(n){return n.addEventListener("click",(function(n){3!==a.pokemons.length&&(function(e,t,n){var o=e.target,r=o.id,a=t.getPokemonByName(r);n.addPokemon(a),o.style.cursor="default",o.style.filter="grayscale(100%)"}(n,i,a),function(e,t){var n=t===e?Array.from(document.querySelectorAll("#choosePagePlayer1 img")):Array.from(document.querySelectorAll("#choosePagePlayer2 img")),o=t.pokemons[t.pokemons.length-1].name.toLowerCase();n[t.pokemons.length-1].setAttribute("src","./assets/"+o+".png")}(t,a),e(a=a===t?r:t),h(t,r))}),{once:!0})}))}(t,r,a)},g=function(){function e(e,t){if(e.length>8)throw new Error("Too long name");if(t.length>3)throw new Error("Wrong number of pokemons");this._name=e,this._pokemons=t,this._indexOfActivePokemon=0,this._hasMango=!0}return Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"pokemons",{get:function(){return this._pokemons},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"indexOfActivePokemon",{set:function(e){this._indexOfActivePokemon=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"getActivePokemon",{get:function(){return this._pokemons[this._indexOfActivePokemon]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alivePokemons",{get:function(){return this.pokemons.filter((function(e){return e.isAlive()}))},enumerable:!1,configurable:!0}),e.prototype.useMango=function(){if(!this._hasMango)throw new Error("You cannot use mango. You use all mangos");this._hasMango=!1,this.getActivePokemon.heal()},Object.defineProperty(e.prototype,"hasMango",{get:function(){return this._hasMango},enumerable:!1,configurable:!0}),e.prototype.addPokemon=function(e){this._pokemons.push(e)},Object.defineProperty(e.prototype,"notActivePokemons",{get:function(){var e=this;return this.pokemons.filter((function(t){return t.name!==e.getActivePokemon.name}))},enumerable:!1,configurable:!0}),e}(),b=function(e,t,n){e.value.length>0&&t.value.length>0&&e.value.length<=8&&t.value.length<=8?(n.className="button-enabled",n.disabled=!1):(n.className="button-disabled",n.disabled=!0)};setTimeout((function(){var e,t,n,o,r,a,c,i,u,s=document.querySelector("#app");e=s,t=document.querySelector("#starting-page-template"),e.innerHTML=t.innerHTML,function(e){var t=document.querySelector("#info-modal-template");e.innerHTML+=t.innerHTML}(s),n=document.querySelector("#enter-player1-name"),o=document.querySelector("#enter-player2-name"),r=document.querySelector("#start-game-button"),n.addEventListener("keyup",(function(){b(n,o,r)})),o.addEventListener("keyup",(function(){b(n,o,r)})),i=document.querySelector("#how-to-play-button"),u=document.querySelector("#info-modal-screen"),i.addEventListener("click",(function(){u.style.display="flex"})),null==(c=(a=u).querySelector(".exitButton"))||c.addEventListener("click",(function(){a.style.display="none"})),function(e){var t=document.querySelector("#start-game-button");null==t||t.addEventListener("click",(function(){var t=document.querySelector("#enter-player1-name").value,n=document.querySelector("#enter-player2-name").value,o=document.querySelector("#choose-page-template");e.innerHTML=o.innerHTML,f(new g(t,[]),new g(n,[]))}))}(s)}),2e3)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL21vZGFsUG9wVXBGdW5jdGlvbnMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlQWN0aXZlUGxheWVyTmFtZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25DbGFzcy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL3Bva2Vtb25GYWN0b3J5LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUFjdGl2ZVBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvY3JlYXRlQWN0aXZlUGxheWVyLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL2NyZWF0ZUhQQmFycy50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9jcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9maWdodFBhZ2UvYnV0dG9uc0V2ZW50TGlzdGVuZXJzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvZmlnaHRQYWdlL3VwZGF0ZU1vdmVzTGlzdC50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2dhbWVIYW5kbGVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2Uvc3RhcnRHYW1lSWZSZWFkeS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZS50cyIsIndlYnBhY2s6Ly9jb2RlcnNjYW1wMjAyMC5wcm9qZWN0LnR5cGVzY3JpcHQucG9rZW1vbmZpZ2h0Ly4vc3JjL2ZpZ2h0UGFnZS9yZW5kZXJGaWdodFBhZ2UudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY2hvb3NlUG9rZW1vbnNQYWdlLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2NyZWF0ZVBsYXllck5hbWVzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2NyZWF0ZVBva2Vtb25zLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvY2hvb3NlUG9rZW1vbnNQYWdlL2FkZENob3NlblBva2Vtb24udHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9jaG9vc2VQb2tlbW9uc1BhZ2UvY3JlYXRlUG9rZWJhbGxzLnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvcGxheWVyQ2xhc3MudHMiLCJ3ZWJwYWNrOi8vY29kZXJzY2FtcDIwMjAucHJvamVjdC50eXBlc2NyaXB0LnBva2Vtb25maWdodC8uL3NyYy9hY3RpdmF0ZVN0YXJ0LnRzIiwid2VicGFjazovL2NvZGVyc2NhbXAyMDIwLnByb2plY3QudHlwZXNjcmlwdC5wb2tlbW9uZmlnaHQvLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOlsiY3JlYXRlQWN0aXZlUGxheWVyTmFtZSIsImFjdGl2ZVBsYXllciIsIndob0Nob29zZXNQb2tlbW9uVGV4dCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInBva2Vtb25zIiwibGVuZ3RoIiwidGV4dENvbnRlbnQiLCJuYW1lIiwiaW1hZ2UiLCJtYXhIUCIsImF0dGFja1BvaW50cyIsImRlZmVuc2VQb2ludHMiLCJ0eXBlcyIsIm1vdmVzIiwidGhpcyIsIl9uYW1lIiwiX2ltYWdlIiwiX21heEhQIiwiX2N1cnJlbnRIUCIsIl9hdHRhY2tQb2ludHMiLCJfZGVmZW5zZVBvaW50cyIsIl90eXBlcyIsIl9tb3ZlcyIsInN1YnRyYWN0SFAiLCJwb2ludHNUb1N1YnRyYWN0IiwibmV3SFAiLCJoZWFsIiwiaXNBbGl2ZSIsInBva2VEYXRhIiwiX3Bva2Vtb25zIiwicG9rZW1vbiIsInBva2VJbWciLCJwb2tlTW92ZXMiLCJyZWR1Y2UiLCJ0YWIiLCJtb3ZlIiwicHVzaCIsIm1vdmVOYW1lIiwibW92ZVR5cGUiLCJ0eXBlIiwicG9rZVR5cGVzIiwibWFwIiwidiIsInBva2Vtb25PYmplY3QiLCJQb2tlbW9uIiwiX2NhcGl0YWxpemUiLCJzdGF0cyIsImhwIiwiYXR0YWNrIiwiZGVmZW5zZSIsImdldFBva2Vtb25CeU5hbWUiLCJmaW5kIiwidG9Mb3dlckNhc2UiLCJ1bmRlZmluZWQiLCJFcnJvciIsInN0ciIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJjcmVhdGVBY3RpdmVQb2tlbW9uIiwiZ2FtZUhhbmRsZXIiLCJwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhIiwicGxheWVyVHdvQWN0aXZlUG9rZW1vbkltYWdlQXJlYSIsInBsYXllck9uZUFjdGl2ZVBva2Vtb25OYW1lQXJlYSIsInBsYXllclR3b0FjdGl2ZVBva2Vtb25OYW1lQXJlYSIsImNyZWF0ZVBva2Vtb24iLCJwbGF5ZXIiLCJpbWFnZUFyZWEiLCJuYW1lQXJlYSIsInBva2Vtb25OYW1lIiwiZ2V0QWN0aXZlUG9rZW1vbiIsInNldEF0dHJpYnV0ZSIsInBsYXllck9uZSIsInBsYXllclR3byIsImNyZWF0ZUFjdGl2ZVBsYXllciIsImN1cnJlbnRQbGF5ZXIiLCJwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhIiwicGxheWVyVHdvVW5kZXJsaW5lQXJlYSIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsImNyZWF0ZUhQQmFycyIsImNyZWF0ZUJhciIsIkhQQmFyIiwiSFBJblBlcmNlbnQiLCJjdXJyZW50SFAiLCJjb25zb2xlIiwibG9nIiwic3R5bGUiLCJ3aWR0aCIsIkhQQ2xhc3NMaXN0IiwicGxheWVyT25lSFBCYXIiLCJwbGF5ZXJUd29IUEJhciIsImNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyIsImNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zIiwicGxheWVyUG9rZWJhbGxzIiwiaSIsImFsaXZlUG9rZW1vbnMiLCJwbGF5ZXJPbmVQb2tlYmFsbHMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwicGxheWVyVHdvUG9rZWJhbGxzIiwibWFnaWNGdW5jdGlvbiIsImJ1dHRvbiIsImJ1dHRvbnMiLCJmdW5jdGlvblRvQ2FsbCIsImFkZEV2ZW50TGlzdGVuZXIiLCJlIiwiaW5uZXJUZXh0IiwiY2FsbGVkRnVuY3Rpb24iLCJldmVudCIsIm1vdmVMaXN0IiwibmV3TW92ZSIsImNyZWF0ZUVsZW1lbnQiLCJuZXdNb3ZlVGV4dCIsImNyZWF0ZVRleHROb2RlIiwiYnV0dG9uQ29udGVudCIsImN1cnJlbnRUYXJnZXQiLCJwbGF5ZXJOYW1lIiwibm9kZVZhbHVlIiwic3dpdGNoUG9rZSIsImVhdE1hbmdvIiwiYXBwZW5kIiwiaW5zZXJ0QmVmb3JlIiwiZmlyc3RDaGlsZCIsInVwZGF0ZU1vdmVzTGlzdCIsInN3aXRjaFBsYXllciIsInNldFRpbWVvdXQiLCJnZW5lcmF0ZUF0dGFja0J1dHRvbnMiLCJnZW5lcmF0ZVN3aXRjaEJ1dHRvbnMiLCJnZW5lcmF0ZUFjdGlvbkJ1dHRvbnMiLCJhbmltYXRpb25CdXR0b25zRXhpdCIsImFuaW1hdGlvbkJ1dHRvbnNFbnRyeSIsImFuaW1hdGlvbiIsImFuaW1hdGlvbkRlbGF5IiwibmFtZU9mQ2hvc2VuUG9rZW1vbiIsInN3aXRjaFBva2Vtb24iLCJtYW5nb0J1dHRvbiIsIm1hbmdvIiwidXNlTWFuZ28iLCJpbm5lckhUTUwiLCJfcGxheWVyT25lIiwiX3BsYXllclR3byIsIl9jdXJyZW50UGxheWVyIiwiZGlkUGxheWVyTG9vc2UiLCJpc0dhbWVGaW5pc2hlZCIsImdldFdpbm5lciIsImluZGV4T2ZBY3RpdmVQb2tlbW9uIiwiZmluZEluZGV4IiwiYmF0dGxlQnV0dG9ucyIsImF0dGFja0J1dHRvbiIsInN3aXRjaEJ1dHRvbiIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJoYXNNYW5nbyIsImF0dGFja0J1dHRvbk9uZSIsImF0dGFja0J1dHRvblR3byIsImJhY2tCdXR0b24iLCJzd2l0Y2hCdXR0b25PbmUiLCJzd2l0Y2hCdXR0b25Ud28iLCJub3RBY3RpdmVQb2tlbW9ucyIsInN0YXJ0R2FtZUlmUmVhZHkiLCJhcHAiLCJnYW1lIiwiR2FtZUhhbmRsZXIiLCJhcHBEaXYiLCJmaWdodFBhZ2UiLCJwbGF5ZXJPbmVOYW1lIiwicGxheWVyVHdvTmFtZSIsImNyZWF0ZVBsYXllckZpZ2h0TmFtZXMiLCJzdGFydEJhdHRsZSIsImNyZWF0ZUNob29zZVBhZ2UiLCJjcmVhdGVQbGF5ZXJOYW1lcyIsInBva2Vtb25GYWN0b3J5IiwiUG9rZW1vbkZhY3RvcnkiLCJmb3JFYWNoIiwicG9rZW1vbkltYWdlIiwiZmFjdG9yeSIsImNsaWNrZWRQb2tlbW9uIiwidGFyZ2V0IiwiaWQiLCJuZXdQb2tlbW9uT2JqZWN0IiwiYWRkUG9rZW1vbiIsImN1cnNvciIsImZpbHRlciIsImFkZENob3NlblBva2Vtb24iLCJwbGF5ZXJMYXN0UG9rZW1vbk5hbWUiLCJjcmVhdGVQb2tlYmFsbHMiLCJvbmNlIiwiY3JlYXRlUG9rZW1vbnMiLCJfaW5kZXhPZkFjdGl2ZVBva2Vtb24iLCJfaGFzTWFuZ28iLCJudW1PZkFjdGl2ZVBva2Vtb24iLCJhY3RpdmF0ZVN0YXJ0IiwibmFtZTFJbnB1dCIsIm5hbWUySW5wdXQiLCJzdGFydEJ1dHRvbiIsInZhbHVlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJzdGFydGluZ1BhZ2UiLCJwbGF5ZXIxTmFtZUlucHV0IiwicGxheWVyMk5hbWVJbnB1dCIsInNjcmVlblRvRGlzcGxheSIsImV4aXRCdXR0b24iLCJob3dUb1BsYXlCdXR0b24iLCJpbmZvTW9kYWwiLCJyZW5kZXJIb3dUb1BsYXlNb2RhbCIsImRpc3BsYXkiLCJwbGF5QnV0dG9uIiwiY2hvb3NlUG9rZW1vblNjcmVlbiIsIlBsYXllciIsInJlbmRlckNob29zZVBva2Vtb25TY3JlZW4iXSwibWFwcGluZ3MiOiJtQkFBTyxJQ0VNQSxFQUF5QixTQUFDQyxHQUNyQyxJQUFJQyxFQUF3QkMsU0FBU0MsY0FBYyx3QkFDbEIsSUFBakNILEVBQWFJLFNBQVNDLE9BQ2pCSixFQUFzQkssWUFBYyxnQ0FDcENMLEVBQXNCSyxZQUFpQk4sRUFBYU8sS0FBSSxzQkNTL0QsYUFXRSxXQUFZQSxFQUFjQyxFQUFlQyxFQUFlQyxFQUN0REMsRUFBdUJDLEVBQXNCQyxHQUU3Q0MsS0FBS0MsTUFBUVIsRUFDYk8sS0FBS0UsT0FBU1IsRUFDZE0sS0FBS0csT0FBU1IsRUFD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T3hCLFVBQVkyRCxFQUFhM0QsVUFFTCxTQUFDd0IsR0FDNUIsSUFBTXlDLEVBQVk1TSxTQUFTQyxjQUN6Qix3QkFFRmtLLEVBQU94QixXQUFhaUUsRUFBVWpFLFVBNkM5QmtFLENBQXFCN0MsR0E3QmZ1QyxFQUFtQnZNLFNBQVNDLGNBQWMsdUJBQzFDdU0sRUFBbUJ4TSxTQUFTQyxjQUFjLHVCQUMxQ2lNLEVBQWNsTSxTQUFTQyxjQUFjLHNCQUMzQ3NNLEVBQWlCOUYsaUJBQWlCLFNBQVMsV0FDdkNzRixFQUFjUSxFQUFrQkMsRUFBa0JOLE1BRXRETSxFQUFpQi9GLGlCQUFpQixTQUFTLFdBQ3ZDc0YsRUFBY1EsRUFBa0JDLEVBQWtCTixNQXBCaERTLEVBQWtCM00sU0FBU0MsY0FDL0IsdUJBRUkyTSxFQUFZNU0sU0FBU0MsY0FDekIsc0JBRUYwTSxFQUFnQmxHLGlCQUFpQixTQUFTLFdBQzlCbUcsRXJCckJJdEgsTUFBTXdILFFxQnFCQyxVckJoQnZCSixPQURNQSxHQURrQkQsRXFCb0JkRyxHckJuQnlCM00sY0FBYyxpQkFDakR5TSxFQUFZakcsaUJBQWlCLFNBQVMsV0FDcENnRyxFQUFnQm5ILE1BQU13SCxRQUFVLFVxQmdDRixTQUFDM0MsR0FDakMsSUFBTTRDLEVBQWEvTSxTQUFTQyxjQUMxQixzQkFFRjhNLFdBQVl0RyxpQkFBaUIsU0FBUyxXQUNwQyxJQUFNOEYsRUFBb0J2TSxTQUFTQyxjQUFjLHVCQUE0Q2tNLE1BQ3ZGSyxFQUFvQnhNLFNBQVNDLGNBQWMsdUJBQTRDa00sTUFDdkZhLEVBQXNCaE4sU0FBU0MsY0FDbkMseUJBRUZrSyxFQUFPeEIsVUFBWXFFLEVBQW9CckUsVUFDdkM4QixFQUFpQixJQUFJd0MsRUFBT1YsRUFBa0IsSUFBSyxJQUFJVSxFQUFPVCxFQUFrQixRQVVsRlUsQ0FBMEJsRCxLQUdOLE0iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2hvd01vZGFsID0gKFxyXG4gIHNjcmVlblRvRGlzcGxheTogSFRNTERpdkVsZW1lbnQsXHJcbiAgc3RhcnRpbmdQb3NpdGlvbjogc3RyaW5nXHJcbikgPT4ge1xyXG4gIHNjcmVlblRvRGlzcGxheS5zdHlsZS5kaXNwbGF5ID0gc3RhcnRpbmdQb3NpdGlvbjtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBoaWRlTW9kYWwgPSAoc2NyZWVuVG9EaXNwbGF5OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGV4aXRCdXR0b24gPSBzY3JlZW5Ub0Rpc3BsYXkucXVlcnlTZWxlY3RvcihcIi5leGl0QnV0dG9uXCIpO1xyXG4gIGV4aXRCdXR0b24/LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzY3JlZW5Ub0Rpc3BsYXkuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lID0gKGFjdGl2ZVBsYXllcjogUGxheWVyKSA9PiB7XHJcbiAgbGV0IHdob0Nob29zZXNQb2tlbW9uVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjd2hvQ2hvb3Nlc1BhcmFncmFwaFwiKSE7XHJcbiAgYWN0aXZlUGxheWVyLnBva2Vtb25zLmxlbmd0aCA9PT0gM1xyXG4gICAgPyAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gXCJXYWl0IGZvciB0aGUgZ2FtZSB0byBzdGFydC4uLlwiKVxyXG4gICAgOiAod2hvQ2hvb3Nlc1Bva2Vtb25UZXh0LnRleHRDb250ZW50ID0gYCR7YWN0aXZlUGxheWVyLm5hbWV9IGNob29zZXMgMSBwb2tlbW9uYCk7XHJcbn07XHJcbiIsImV4cG9ydCB0eXBlIFBva2Vtb25UeXBlID1cclxuICB8IFwiZ3Jhc3NcIlxyXG4gIHwgXCJwb2lzb25cIlxyXG4gIHwgXCJmaXJlXCJcclxuICB8IFwid2F0ZXJcIlxyXG4gIHwgXCJidWdcIlxyXG4gIHwgXCJub3JtYWxcIlxyXG4gIHwgXCJmbHlpbmdcIlxyXG4gIHwgXCJlbGVjdHJpY1wiXHJcbiAgfCBcImdyb3VuZFwiXHJcbiAgfCBcImZhaXJ5XCJcclxuICB8IFwicHN5Y2hpY1wiXHJcbiAgfCBcImZpZ2h0aW5nXCJcclxuICB8IFwicm9ja1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBva2Vtb24ge1xyXG5cclxuICByZWFkb25seSBfbmFtZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9pbWFnZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IF9tYXhIUDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2N1cnJlbnRIUDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF9hdHRhY2tQb2ludHM6IG51bWJlcjtcclxuICByZWFkb25seSBfZGVmZW5zZVBvaW50czogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IF90eXBlczogUG9rZW1vblR5cGVbXTtcclxuICByZWFkb25seSBfbW92ZXM6IHsgbW92ZU5hbWU6IHN0cmluZzsgbW92ZVR5cGU6IFBva2Vtb25UeXBlIH1bXTtcclxuXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBpbWFnZTogc3RyaW5nLCBtYXhIUDogbnVtYmVyLCBhdHRhY2tQb2ludHM6IG51bWJlcixcclxuICAgIGRlZmVuc2VQb2ludHM6IG51bWJlciwgdHlwZXM6IFBva2Vtb25UeXBlW10sIG1vdmVzOiB7IG1vdmVOYW1lOiBzdHJpbmc7IG1vdmVUeXBlOiBQb2tlbW9uVHlwZSB9W10pIHtcclxuXHJcbiAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgIHRoaXMuX2ltYWdlID0gaW1hZ2U7XHJcbiAgICB0aGlzLl9tYXhIUCA9IG1heEhQO1xyXG4gICAgdGhpcy5fY3VycmVudEhQID0gbWF4SFA7XHJcbiAgICB0aGlzLl9hdHRhY2tQb2ludHMgPSBhdHRhY2tQb2ludHM7XHJcbiAgICB0aGlzLl9kZWZlbnNlUG9pbnRzID0gZGVmZW5zZVBvaW50cztcclxuICAgIHRoaXMuX3R5cGVzID0gdHlwZXM7XHJcbiAgICB0aGlzLl9tb3ZlcyA9IG1vdmVzO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBuYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaW1hZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faW1hZ2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudEhQKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRIUDtcclxuICB9XHJcblxyXG4gIGdldCBtYXhIUCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIHN1YnRyYWN0SFAocG9pbnRzVG9TdWJ0cmFjdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXdIUCA9IHRoaXMuX2N1cnJlbnRIUCAtIHBvaW50c1RvU3VidHJhY3Q7XHJcbiAgICBpZiAobmV3SFAgPCAwKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRIUCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSBuZXdIUDtcclxuICB9XHJcblxyXG4gIGhlYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdXJyZW50SFAgPSB0aGlzLl9tYXhIUDtcclxuICB9XHJcblxyXG4gIGdldCBhdHRhY2tQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXR0YWNrUG9pbnRzO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmVuc2VQb2ludHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmZW5zZVBvaW50cztcclxuICB9XHJcblxyXG4gIGdldCB0eXBlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlcztcclxuICB9XHJcblxyXG4gIGdldCBtb3ZlcygpIHtcclxuICAgIHJldHVybiB0aGlzLl9tb3ZlcztcclxuICB9XHJcblxyXG4gIGlzQWxpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEhQID4gMDtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiXHJcbmltcG9ydCB7IFBva2Vtb25UeXBlIH0gZnJvbSBcIi4vcG9rZW1vbkNsYXNzXCJcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgUG9rZW1vbkZhY3Rvcnkge1xyXG4gICAgcmVhZG9ubHkgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocG9rZURhdGE6IHtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7IHR5cGVzOiBzdHJpbmdbXTtcclxuICAgICAgICBzdGF0czogeyBocDogbnVtYmVyOyBhdHRhY2s6IG51bWJlcjsgZGVmZW5zZTogbnVtYmVyOyB9O1xyXG4gICAgICAgIG1vdmVzOiB7IG5hbWU6IHN0cmluZzsgYWNjdXJhY3k6IG51bWJlcjsgcG93ZXI6IG51bWJlcjsgdHlwZTogc3RyaW5nOyB9W11cclxuICAgIH1bXSkge1xyXG4gICAgICAgIHRoaXMuX3Bva2Vtb25zID0gW107XHJcblxyXG4gICAgICAgIGZvciAobGV0IHBva2Vtb24gb2YgcG9rZURhdGEpIHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VJbWcgPSBcIi4uL2Fzc2V0cy9cIiArIHBva2Vtb24ubmFtZSArIFwiLnBuZ1wiXHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb2tlTW92ZXMgPSBwb2tlbW9uLm1vdmVzLnJlZHVjZSggKHRhYiwgbW92ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGFiLnB1c2goe21vdmVOYW1lOiBtb3ZlLm5hbWUsIG1vdmVUeXBlOiBtb3ZlLnR5cGUgYXMgUG9rZW1vblR5cGV9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhYlxyXG4gICAgICAgICAgICAgICAgfSwgW10gYXMge21vdmVOYW1lOiBzdHJpbmcsIG1vdmVUeXBlOiBQb2tlbW9uVHlwZX1bXSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2VUeXBlczogUG9rZW1vblR5cGVbXSA9IHBva2Vtb24udHlwZXMubWFwKHYgPT4gdiBhcyBQb2tlbW9uVHlwZSlcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHBva2Vtb25PYmplY3QgPSBuZXcgUG9rZW1vbih0aGlzLl9jYXBpdGFsaXplKHBva2Vtb24ubmFtZSksIHBva2VJbWcsIFxyXG4gICAgICAgICAgICAgICAgcG9rZW1vbi5zdGF0cy5ocCwgcG9rZW1vbi5zdGF0cy5hdHRhY2ssIHBva2Vtb24uc3RhdHMuZGVmZW5zZSxcclxuICAgICAgICAgICAgICAgIHBva2VUeXBlcywgcG9rZU1vdmVzKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fcG9rZW1vbnMucHVzaChwb2tlbW9uT2JqZWN0KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgcG9rZW1vbnMoKTogUG9rZW1vbltdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnNcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb2tlbW9uQnlOYW1lKG5hbWU6IHN0cmluZyk6IFBva2Vtb24ge1xyXG4gICAgICAgIGNvbnN0IHBva2Vtb24gPSB0aGlzLl9wb2tlbW9ucy5maW5kKCBwb2tlbW9uID0+IHBva2Vtb24ubmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIGlmIChwb2tlbW9uID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQb2tlbW9uICR7bmFtZX0gaXMgbm90IGZvdW5kIGluIHRoZSBwb2tlbW9uIGZhY3RvcnlgKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcG9rZW1vblxyXG4gICAgfVxyXG5cclxuICAgIF9jYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG4gICAgICB9XHJcbn1cclxuXHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aXZlUG9rZW1vbiA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uSW1hZ2VBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24taW1hZ2UtcGxheWVyMVwiXHJcbiAgKSBhcyBIVE1MSW1hZ2VFbGVtZW50O1xyXG4gIGNvbnN0IHBsYXllclR3b0FjdGl2ZVBva2Vtb25JbWFnZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1pbWFnZS1wbGF5ZXIyXCJcclxuICApIGFzIEhUTUxJbWFnZUVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyT25lQWN0aXZlUG9rZW1vbk5hbWVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI3Bva2Vtb24tbmFtZS1wbGF5ZXIxXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uTmFtZUFyZWEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjcG9rZW1vbi1uYW1lLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTEhlYWRpbmdFbGVtZW50O1xyXG4gIGNvbnN0IGNyZWF0ZVBva2Vtb24gPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIGltYWdlQXJlYTogSFRNTEltYWdlRWxlbWVudCxcclxuICAgIG5hbWVBcmVhOiBIVE1MSGVhZGluZ0VsZW1lbnRcclxuICApID0+IHtcclxuICAgIGNvbnN0IHBva2Vtb25OYW1lID0gcGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubmFtZTtcclxuICAgIGltYWdlQXJlYS5zZXRBdHRyaWJ1dGUoXCJzcmNcIiwgYC4vYXNzZXRzLyR7cG9rZW1vbk5hbWUudG9Mb3dlckNhc2UoKX0ucG5nYCk7XHJcbiAgICBuYW1lQXJlYS50ZXh0Q29udGVudCA9IHBva2Vtb25OYW1lO1xyXG4gIH07XHJcbiAgY3JlYXRlUG9rZW1vbihcclxuICAgIGdhbWVIYW5kbGVyLnBsYXllck9uZSxcclxuICAgIHBsYXllck9uZUFjdGl2ZVBva2Vtb25JbWFnZUFyZWEsXHJcbiAgICBwbGF5ZXJPbmVBY3RpdmVQb2tlbW9uTmFtZUFyZWFcclxuICApO1xyXG4gIGNyZWF0ZVBva2Vtb24oXHJcbiAgICBnYW1lSGFuZGxlci5wbGF5ZXJUd28sXHJcbiAgICBwbGF5ZXJUd29BY3RpdmVQb2tlbW9uSW1hZ2VBcmVhLFxyXG4gICAgcGxheWVyVHdvQWN0aXZlUG9rZW1vbk5hbWVBcmVhXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGl2ZVBsYXllciA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBhY3RpdmVQbGF5ZXJBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2FjdGl2ZS1wbGF5ZXItaW5mb1wiXHJcbiAgKSBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBhY3RpdmVQbGF5ZXJBcmVhLnRleHRDb250ZW50ID0gYCR7Z2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lfSBub3cgaXMgeW91ciB0dXJuLiBHZXQgdGhlIHJldmVuZ2UhYDtcclxuICBjb25zdCBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNmaWdodC1wYWdlLXBsYXllcjFcIik7XHJcbiAgY29uc3QgcGxheWVyVHdvVW5kZXJsaW5lQXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjZmlnaHQtcGFnZS1wbGF5ZXIyXCIpO1xyXG4gIGlmIChnYW1lSGFuZGxlci5jdXJyZW50UGxheWVyID09PSBnYW1lSGFuZGxlci5wbGF5ZXJPbmUpIHtcclxuICAgIHBsYXllclR3b1VuZGVybGluZUFyZWE/LmNsYXNzTGlzdC5yZW1vdmUoXCJhY3RpdmVQbGF5ZXJcIik7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QuYWRkKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBwbGF5ZXJPbmVVbmRlcmxpbmVBcmVhPy5jbGFzc0xpc3QucmVtb3ZlKFwiYWN0aXZlUGxheWVyXCIpO1xyXG4gICAgcGxheWVyVHdvVW5kZXJsaW5lQXJlYT8uY2xhc3NMaXN0LmFkZChcImFjdGl2ZVBsYXllclwiKTtcclxuICB9XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUhQQmFycyA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBjcmVhdGVCYXIgPSAocGxheWVyOiBQbGF5ZXIsIEhQQmFyOiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbWF4SFAgPSBwbGF5ZXIuZ2V0QWN0aXZlUG9rZW1vbi5tYXhIUDtcclxuICAgIGNvbnN0IGN1cnJlbnRIUCA9IHBsYXllci5nZXRBY3RpdmVQb2tlbW9uLmN1cnJlbnRIUDtcclxuICAgIGNvbnN0IEhQSW5QZXJjZW50ID0gKGN1cnJlbnRIUCAvIG1heEhQKSAqIDEwMDtcclxuICAgIGNvbnNvbGUubG9nKEhQSW5QZXJjZW50KTtcclxuICAgIEhQQmFyLnN0eWxlLndpZHRoID0gYCR7SFBJblBlcmNlbnR9JWA7XHJcbiAgICBsZXQgSFBDbGFzc0xpc3QgPSBIUEJhci5jbGFzc0xpc3Q7XHJcbiAgICBpZiAoSFBJblBlcmNlbnQgPCAyMCkge1xyXG4gICAgICBIUENsYXNzTGlzdC5yZW1vdmUoXCJocEJhckhpZ2hMZXZlbFwiKTtcclxuICAgICAgSFBDbGFzc0xpc3QuYWRkKFwiaHBCYXJMb3dMZXZlbFwiKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LnJlbW92ZShcImhwQmFyTG93TGV2ZWxcIik7XHJcbiAgICAgIEhQQ2xhc3NMaXN0LmFkZChcImhwQmFySGlnaExldmVsXCIpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29uc3QgcGxheWVyT25lSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjFcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgcGxheWVyVHdvSFBCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaHAtYmFyLXBsYXllcjJcIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlQmFyKHBsYXllck9uZSwgcGxheWVyT25lSFBCYXIpO1xyXG4gIGNyZWF0ZUJhcihwbGF5ZXJUd28sIHBsYXllclR3b0hQQmFyKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgY2hhbmdlQ2xhc3NPZkRpc2FibGVkUG9rZW1vbnMgPSAoXHJcbiAgICBwbGF5ZXI6IFBsYXllcixcclxuICAgIHBsYXllclBva2ViYWxsczogSFRNTEltYWdlRWxlbWVudFtdXHJcbiAgKSA9PiB7XHJcbiAgICBmb3IgKGxldCBpID0gMjsgaSA+IHBsYXllci5hbGl2ZVBva2Vtb25zLmxlbmd0aCAtIDE7IGktLSkge1xyXG4gICAgICBwbGF5ZXJQb2tlYmFsbHNbaV0uY2xhc3NMaXN0LmFkZChcImRpc2FibGVkUG9rZW1vblwiKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHBsYXllck9uZVBva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMSAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNvbnN0IHBsYXllclR3b1Bva2ViYWxscyA9IEFycmF5LmZyb20oXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMiAucG9rZWJhbGxXaXRoUG9rZW1vblwiKVxyXG4gICkgYXMgSFRNTEltYWdlRWxlbWVudFtdO1xyXG4gIGNoYW5nZUNsYXNzT2ZEaXNhYmxlZFBva2Vtb25zKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgcGxheWVyT25lUG9rZWJhbGxzKTtcclxuICBjaGFuZ2VDbGFzc09mRGlzYWJsZWRQb2tlbW9ucyhnYW1lSGFuZGxlci5wbGF5ZXJUd28sIHBsYXllclR3b1Bva2ViYWxscyk7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBHYW1lSGFuZGxlciB9IGZyb20gXCIuLi9nYW1lSGFuZGxlckNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBva2Vtb24gfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQb2tlbW9uXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUFjdGl2ZVBsYXllciB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllclwiO1xyXG5pbXBvcnQgeyBjcmVhdGVIUEJhcnMgfSBmcm9tIFwiLi9jcmVhdGVIUEJhcnNcIjtcclxuaW1wb3J0IHsgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzIH0gZnJvbSBcIi4vY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzXCI7XHJcbmltcG9ydCB7IHVwZGF0ZU1vdmVzTGlzdCB9IGZyb20gXCIuL3VwZGF0ZU1vdmVzTGlzdFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyID0gKFxyXG4gIC8vcGxheWVyOiBQbGF5ZXIsXHJcbiAgZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgXCJiYXR0bGVCdXR0b25cIlxyXG4gICkhIGFzIEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+O1xyXG4gIGNvbnN0IGF0dGFja0J1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhdHRhY2tCdXR0b25cIlxyXG4gICkhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHN3aXRjaEJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzd2l0Y2hCdXR0b25cIlxyXG4gICkhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IG1hbmdvQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNtYW5nb0J1dHRvblwiKSEgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgY29uc3QgbWFuZ28gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuXHJcbiAgYW5pbWF0aW9uQnV0dG9uc0VudHJ5KGJhdHRsZUJ1dHRvbnMpO1xyXG5cclxuICBhdHRhY2tCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGFuaW1hdGlvbkJ1dHRvbnNFeGl0KGJhdHRsZUJ1dHRvbnMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlQXR0YWNrQnV0dG9ucygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgfSk7XHJcbiAgc3dpdGNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBhbmltYXRpb25CdXR0b25zRXhpdChiYXR0bGVCdXR0b25zKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZVN3aXRjaEJ1dHRvbnMoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH0pO1xyXG5cclxuICBpZiAoZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5oYXNNYW5nbykge1xyXG4gICAgbWFnaWNGdW5jdGlvbihtYW5nb0J1dHRvbiwgYmF0dGxlQnV0dG9ucywgZ2FtZUhhbmRsZXIsIGVhdE1hbmdvKTtcclxuICB9IGVsc2Uge1xyXG4gICAgbWFuZ28uaW5uZXJIVE1MID0gXCIwXCI7XHJcbiAgICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGF0dGFja3NCdXR0b25FdmVudExpc3RlbmVyID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IGF0dGFja0J1dHRvbk9uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhdHRhY2tCdXR0b25PbmVcIlxyXG4gICkhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGF0dGFja0J1dHRvblR3byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNhdHRhY2tCdXR0b25Ud29cIlxyXG4gICkhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgXCJiYXR0bGVCdXR0b25cIlxyXG4gICkhIGFzIEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+O1xyXG4gIGNvbnN0IGJhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2JhY2tCdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcbiAgbWFnaWNGdW5jdGlvbihhdHRhY2tCdXR0b25PbmUsIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBhdHRhY2spO1xyXG4gIG1hZ2ljRnVuY3Rpb24oYXR0YWNrQnV0dG9uVHdvLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgYXR0YWNrKTtcclxuICBtYWdpY0Z1bmN0aW9uKGJhY2tCdXR0b24sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzd2l0Y2hCdXR0b25FdmVudExpc3RlbmVyID0gKGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlcikgPT4ge1xyXG4gIGNvbnN0IHN3aXRjaEJ1dHRvbk9uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzd2l0Y2hCdXR0b25PbmVcIlxyXG4gICkhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IHN3aXRjaEJ1dHRvblR3byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzd2l0Y2hCdXR0b25Ud29cIlxyXG4gICkhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnN0IGJhdHRsZUJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgXCJiYXR0bGVCdXR0b25cIlxyXG4gICkhIGFzIEhUTUxDb2xsZWN0aW9uT2Y8SFRNTEVsZW1lbnQ+O1xyXG4gIGNvbnN0IGJhY2tCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2JhY2tCdXR0b25cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICBhbmltYXRpb25CdXR0b25zRW50cnkoYmF0dGxlQnV0dG9ucyk7XHJcblxyXG4gIG1hZ2ljRnVuY3Rpb24oc3dpdGNoQnV0dG9uT25lLCBiYXR0bGVCdXR0b25zLCBnYW1lSGFuZGxlciwgc3dpdGNoUG9rZSk7XHJcbiAgbWFnaWNGdW5jdGlvbihzd2l0Y2hCdXR0b25Ud28sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyLCBzd2l0Y2hQb2tlKTtcclxuICBtYWdpY0Z1bmN0aW9uKGJhY2tCdXR0b24sIGJhdHRsZUJ1dHRvbnMsIGdhbWVIYW5kbGVyKTtcclxufTtcclxuXHJcbmNvbnN0IG1hZ2ljRnVuY3Rpb24gPSAoXHJcbiAgYnV0dG9uOiBIVE1MRGl2RWxlbWVudCxcclxuICBidXR0b25zOiBIVE1MQ29sbGVjdGlvbk9mPEhUTUxFbGVtZW50PixcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsXHJcbiAgZnVuY3Rpb25Ub0NhbGw/OiBhbnlcclxuKSA9PiB7XHJcbiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoZSkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coYCR7YnV0dG9uLmlubmVyVGV4dH0gdXNlZCFgKTtcclxuICAgIGlmIChmdW5jdGlvblRvQ2FsbCkge1xyXG4gICAgICBmdW5jdGlvblRvQ2FsbChnYW1lSGFuZGxlciwgZSk7XHJcbiAgICAgIHVwZGF0ZU1vdmVzTGlzdChnYW1lSGFuZGxlciwgZnVuY3Rpb25Ub0NhbGwsIGUpO1xyXG4gICAgICBjcmVhdGVBY3RpdmVQb2tlbW9uKGdhbWVIYW5kbGVyKTtcclxuICAgICAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICAgICAgY3JlYXRlRmlnaHRQYWdlUG9rZWJhbGxzKGdhbWVIYW5kbGVyKTtcclxuICAgICAgZ2FtZUhhbmRsZXIuc3dpdGNoUGxheWVyKCk7XHJcbiAgICAgIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgICB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgZ2FtZUhhbmRsZXIuZ2VuZXJhdGVBdHRhY2tCdXR0b25zKCk7XHJcbiAgICAgIGdhbWVIYW5kbGVyLmdlbmVyYXRlU3dpdGNoQnV0dG9ucygpO1xyXG4gICAgICBnYW1lSGFuZGxlci5nZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTtcclxuICAgIH0sIDEwMDApO1xyXG4gICAgYW5pbWF0aW9uQnV0dG9uc0V4aXQoYnV0dG9ucyk7XHJcbiAgfSk7XHJcbn07XHJcblxyXG5jb25zdCBhbmltYXRpb25CdXR0b25zRW50cnkgPSAoYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pID0+IHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uID1cclxuICAgICAgXCJzY2FsZS1pbi1ob3ItY2VudGVyIDAuNXMgY3ViaWMtYmV6aWVyKDAuMjUwLCAwLjQ2MCwgMC40NTAsIDAuOTQwKSBib3RoXCI7XHJcbiAgICBidXR0b25zW2ldLnN0eWxlLmFuaW1hdGlvbkRlbGF5ID0gYCR7aSAqIDAuMTV9c2A7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgYW5pbWF0aW9uQnV0dG9uc0V4aXQgPSAoYnV0dG9uczogSFRNTENvbGxlY3Rpb25PZjxIVE1MRWxlbWVudD4pID0+IHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1dHRvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgIGJ1dHRvbnNbaV0uc3R5bGUuYW5pbWF0aW9uID1cclxuICAgICAgXCJzY2FsZS1vdXQtaG9yaXpvbnRhbCAwLjVzIGN1YmljLWJlemllcigwLjU1MCwgMC4wODUsIDAuNjgwLCAwLjUzMCkgYm90aFwiO1xyXG4gICAgYnV0dG9uc1tpXS5zdHlsZS5hbmltYXRpb25EZWxheSA9IGAke2kgKiAwLjE1fXNgO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBhdHRhY2sgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc29sZS5sb2coXCJidW0gYnVtIGJhY2ghXCIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHN3aXRjaFBva2UgPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyLCBldmVudDogRXZlbnQpID0+IHtcclxuICBjb25zdCBuYW1lT2ZDaG9zZW5Qb2tlbW9uID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQpXHJcbiAgICAudGV4dENvbnRlbnQ7XHJcbiAgZ2FtZUhhbmRsZXIuc3dpdGNoUG9rZW1vbihuYW1lT2ZDaG9zZW5Qb2tlbW9uISk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZWF0TWFuZ28gPSAoZ2FtZUhhbmRsZXI6IEdhbWVIYW5kbGVyKSA9PiB7XHJcbiAgY29uc3QgbWFuZ29CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI21hbmdvQnV0dG9uXCIpISBhcyBIVE1MRGl2RWxlbWVudDtcclxuICBjb25zdCBtYW5nbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWFuZ29cIikhIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIGdhbWVIYW5kbGVyLmN1cnJlbnRQbGF5ZXIudXNlTWFuZ28oKTtcclxuICBtYW5nby5pbm5lckhUTUwgPSBcIjBcIjtcclxuICBtYW5nb0J1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZGlzYWJsZWRCdXR0b25cIik7XHJcbn07XHJcbiIsImltcG9ydCB7IEdhbWVIYW5kbGVyIH0gZnJvbSBcIi4uL2dhbWVIYW5kbGVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgYXR0YWNrLCBzd2l0Y2hQb2tlLCBlYXRNYW5nbyB9IGZyb20gXCIuL2J1dHRvbnNFdmVudExpc3RlbmVyc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHVwZGF0ZU1vdmVzTGlzdCA9IChcclxuICBnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIsXHJcbiAgY2FsbGVkRnVuY3Rpb246IGFueSxcclxuICBldmVudDogRXZlbnRcclxuKSA9PiB7XHJcbiAgY29uc3QgbW92ZUxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmdhbWVMb2dzXCIpITtcclxuICBjb25zdCBuZXdNb3ZlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIik7XHJcbiAgbGV0IG5ld01vdmVUZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJObyBtb3ZlIGZvdW5kXCIpO1xyXG4gIGNvbnN0IHBva2Vtb25OYW1lID0gZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5nZXRBY3RpdmVQb2tlbW9uLm5hbWU7XHJcbiAgY29uc3QgYnV0dG9uQ29udGVudCA9IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50KS50ZXh0Q29udGVudDtcclxuICBjb25zdCBwbGF5ZXJOYW1lID0gZ2FtZUhhbmRsZXIuY3VycmVudFBsYXllci5uYW1lO1xyXG4gIGNvbnNvbGUubG9nKCk7XHJcbiAgc3dpdGNoIChjYWxsZWRGdW5jdGlvbikge1xyXG4gICAgY2FzZSBhdHRhY2s6XHJcbiAgICAgIG5ld01vdmVUZXh0Lm5vZGVWYWx1ZSA9IGAke3BsYXllck5hbWV9OiAke3Bva2Vtb25OYW1lfSB1c2VkICR7YnV0dG9uQ29udGVudH0hYDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIHN3aXRjaFBva2U6XHJcbiAgICAgIG5ld01vdmVUZXh0Lm5vZGVWYWx1ZSA9IGAke3BsYXllck5hbWV9IGNoYW5nZWQgUG9rZW1vbjogJHtwb2tlbW9uTmFtZX0gY29tZXMgaW50byBwbGF5IWA7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBlYXRNYW5nbzpcclxuICAgICAgbmV3TW92ZVRleHQubm9kZVZhbHVlID0gYCR7cGxheWVyTmFtZX0gdXNlZCBtYW5nbzogJHtwb2tlbW9uTmFtZX0gaXMgaGVhbGVkIWA7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgY29uc29sZS5sb2coXCJObyBtb3ZlIGZvdW5kXCIpO1xyXG4gIH1cclxuICBjb25zb2xlLmxvZyhuZXdNb3ZlKTtcclxuICBuZXdNb3ZlLmFwcGVuZChuZXdNb3ZlVGV4dCk7XHJcbiAgbW92ZUxpc3QuaW5zZXJ0QmVmb3JlKG5ld01vdmUsIG1vdmVMaXN0LmZpcnN0Q2hpbGQpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi9wbGF5ZXJDbGFzc1wiO1xyXG5pbXBvcnQge1xyXG4gIGFjdGlvbnNCdXR0b25FdmVudExpc3RlbmVyLFxyXG4gIGF0dGFja3NCdXR0b25FdmVudExpc3RlbmVyLFxyXG4gIHN3aXRjaEJ1dHRvbkV2ZW50TGlzdGVuZXIsXHJcbn0gZnJvbSBcIi4vZmlnaHRQYWdlL2J1dHRvbnNFdmVudExpc3RlbmVyc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdhbWVIYW5kbGVyIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXllck9uZTogUGxheWVyLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcGxheWVyVHdvOiBQbGF5ZXJcclxuICApIHt9XHJcblxyXG4gIHByaXZhdGUgX2N1cnJlbnRQbGF5ZXI6IFBsYXllciA9IHRoaXMuX3BsYXllck9uZTtcclxuXHJcbiAgZ2V0IHBsYXllck9uZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBnZXQgcGxheWVyVHdvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW50UGxheWVyKCk6IFBsYXllciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudFBsYXllcjtcclxuICB9XHJcblxyXG4gIGdldCBvcHBvbmVudFBsYXllcigpOiBQbGF5ZXIge1xyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5ZXIgPT09IHRoaXMuX3BsYXllck9uZSkgcmV0dXJuIHRoaXMuX3BsYXllclR3bztcclxuICAgIHJldHVybiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpZFBsYXllckxvb3NlKHBsYXllcjogUGxheWVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcGxheWVyLmFsaXZlUG9rZW1vbnMubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgaXNHYW1lRmluaXNoZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmRpZFBsYXllckxvb3NlKHRoaXMuX3BsYXllck9uZSkgfHxcclxuICAgICAgdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJUd28pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2lubmVyKCk6IFBsYXllciB8IEVycm9yIHtcclxuICAgIGlmICghdGhpcy5pc0dhbWVGaW5pc2hlZCgpKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgY2Fubm90IGdldCB0aGUgd2lubmVyLiBUaGUgZ2FtZSBpcyBub3Qgb3Zlci5cIik7XHJcbiAgICByZXR1cm4gdGhpcy5kaWRQbGF5ZXJMb29zZSh0aGlzLl9wbGF5ZXJPbmUpID09PSB0cnVlXHJcbiAgICAgID8gdGhpcy5fcGxheWVyVHdvXHJcbiAgICAgIDogdGhpcy5fcGxheWVyT25lO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoUGxheWVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY3VycmVudFBsYXllciA9XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIgPT09IHRoaXMuX3BsYXllck9uZVxyXG4gICAgICAgID8gdGhpcy5fcGxheWVyVHdvXHJcbiAgICAgICAgOiB0aGlzLl9wbGF5ZXJPbmU7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2hQb2tlbW9uKHBva2Vtb25OYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQbGF5ZXIuaW5kZXhPZkFjdGl2ZVBva2Vtb24gPSB0aGlzLl9jdXJyZW50UGxheWVyLnBva2Vtb25zLmZpbmRJbmRleChcclxuICAgICAgKHBva2Vtb24pID0+IHBva2Vtb24ubmFtZSA9PT0gcG9rZW1vbk5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUFjdGlvbkJ1dHRvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwbGF5ZXIgPSB0aGlzLmN1cnJlbnRQbGF5ZXI7XHJcbiAgICBjb25zb2xlLmxvZyhcIlN0YXJ0IC0gYWN0aW9uIG1vZGFsXCIpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYXR0YWNrQnV0dG9uXCI+YXR0YWNrPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cInN3aXRjaEJ1dHRvblwiPnN3aXRjaDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24gYmF0dGxlQnV0dG9uXCIgaWQ9XCJtYW5nb0J1dHRvblwiPnVzZSBtYW5nbyAoPHNwYW4gaWQ9XCJtYW5nb1wiPjE8L3NwYW4+KTwvZGl2PmA7XHJcbiAgICBhY3Rpb25zQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQXR0YWNrQnV0dG9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBsYXllciA9IHRoaXMuY3VycmVudFBsYXllcjtcclxuICAgIGNvbnNvbGUubG9nKFwiQXR0YWNrIGNob29zZSBtb2RhbFwiKTtcclxuICAgIGNvbnN0IGFjdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYWN0aW9uTW9kYWxzXCIpITtcclxuICAgIGFjdGlvbkNvbnRhaW5lci5pbm5lckhUTUwgPSBgXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvbk9uZVwiPiR7cGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubW92ZXNbMF0ubW92ZU5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImF0dGFja0J1dHRvblR3b1wiPiR7cGxheWVyLmdldEFjdGl2ZVBva2Vtb24ubW92ZXNbMV0ubW92ZU5hbWV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbiBiYXR0bGVCdXR0b25cIiBpZD1cImJhY2tCdXR0b25cIj5iYWNrPC9kaXY+YDtcclxuICAgIGF0dGFja3NCdXR0b25FdmVudExpc3RlbmVyKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVTd2l0Y2hCdXR0b25zKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGxheWVyID0gdGhpcy5jdXJyZW50UGxheWVyO1xyXG4gICAgY29uc29sZS5sb2coXCJTd2l0Y2ggY2hvb3NlIG1vZGFsXCIpO1xyXG4gICAgY29uc3QgYWN0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhY3Rpb25Nb2RhbHNcIikhO1xyXG4gICAgYWN0aW9uQ29udGFpbmVyLmlubmVySFRNTCA9IGBcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uT25lXCI+JHtwbGF5ZXIubm90QWN0aXZlUG9rZW1vbnNbMF0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwic3dpdGNoQnV0dG9uVHdvXCI+JHtwbGF5ZXIubm90QWN0aXZlUG9rZW1vbnNbMV0ubmFtZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uIGJhdHRsZUJ1dHRvblwiIGlkPVwiYmFja0J1dHRvblwiPmJhY2s8L2Rpdj5gO1xyXG4gICAgc3dpdGNoQnV0dG9uRXZlbnRMaXN0ZW5lcih0aGlzKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IHN0YXJ0QmF0dGxlIH0gZnJvbSBcIi4uL2ZpZ2h0UGFnZS9zdGFydEJhdHRsZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEdhbWVJZlJlYWR5ID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGlmIChwbGF5ZXJPbmUucG9rZW1vbnMubGVuZ3RoIDwgMyB8fCBwbGF5ZXJUd28ucG9rZW1vbnMubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gIGNvbnN0IGFwcCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjYXBwXCIpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gIHN0YXJ0QmF0dGxlKHBsYXllck9uZSwgcGxheWVyVHdvLCBhcHApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVGaWdodFBhZ2UgfSBmcm9tIFwiLi9yZW5kZXJGaWdodFBhZ2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzdGFydEJhdHRsZSA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhcHA6IEhUTUxEaXZFbGVtZW50XHJcbikgPT4ge1xyXG4gIGNvbnN0IGdhbWUgPSBuZXcgR2FtZUhhbmRsZXIocGxheWVyT25lLCBwbGF5ZXJUd28pO1xyXG4gIHNldFRpbWVvdXQoKCkgPT4gY3JlYXRlRmlnaHRQYWdlKGFwcCwgZ2FtZSksIDIwMDApO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgR2FtZUhhbmRsZXIgfSBmcm9tIFwiLi4vZ2FtZUhhbmRsZXJDbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQb2tlbW9uIH0gZnJvbSBcIi4vY3JlYXRlQWN0aXZlUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVBY3RpdmVQbGF5ZXIgfSBmcm9tIFwiLi9jcmVhdGVBY3RpdmVQbGF5ZXJcIjtcclxuaW1wb3J0IHsgY3JlYXRlSFBCYXJzIH0gZnJvbSBcIi4vY3JlYXRlSFBCYXJzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUZpZ2h0UGFnZVBva2ViYWxscyB9IGZyb20gXCIuL2NyZWF0ZUZpZ2h0UGFnZVBva2ViYWxsc1wiO1xyXG5cclxuY29uc3QgY3JlYXRlUGxheWVyRmlnaHROYW1lcyA9IChnYW1lSGFuZGxlcjogR2FtZUhhbmRsZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJPbmVOYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMS1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXJUd29OYW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgIFwiI2ZpZ2h0LXBhZ2UtcGxheWVyMi1uYW1lXCJcclxuICApIGFzIEhUTUxIZWFkaW5nRWxlbWVudDtcclxuICBwbGF5ZXJPbmVOYW1lLnRleHRDb250ZW50ID0gZ2FtZUhhbmRsZXIucGxheWVyT25lLm5hbWU7XHJcbiAgcGxheWVyVHdvTmFtZS50ZXh0Q29udGVudCA9IGdhbWVIYW5kbGVyLnBsYXllclR3by5uYW1lO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZUZpZ2h0UGFnZSA9IChcclxuICBhcHBEaXY6IEhUTUxEaXZFbGVtZW50LFxyXG4gIGdhbWVIYW5kbGVyOiBHYW1lSGFuZGxlclxyXG4pID0+IHtcclxuICBjb25zdCBmaWdodFBhZ2UgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjZmlnaHQtcGFnZS10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgPSBmaWdodFBhZ2UuaW5uZXJIVE1MO1xyXG4gIGNyZWF0ZVBsYXllckZpZ2h0TmFtZXMoZ2FtZUhhbmRsZXIpO1xyXG4gIGNyZWF0ZUFjdGl2ZVBsYXllcihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlQWN0aXZlUG9rZW1vbihnYW1lSGFuZGxlcik7XHJcbiAgY3JlYXRlSFBCYXJzKGdhbWVIYW5kbGVyLnBsYXllck9uZSwgZ2FtZUhhbmRsZXIucGxheWVyVHdvKTtcclxuICBjcmVhdGVGaWdodFBhZ2VQb2tlYmFsbHMoZ2FtZUhhbmRsZXIpO1xyXG4gIC8vIGdlbmVyYXRlIGNob29zZSBhY3Rpb24gYnV0dG9uc1xyXG4gIGdhbWVIYW5kbGVyLmdlbmVyYXRlQWN0aW9uQnV0dG9ucygpO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBQbGF5ZXIgfSBmcm9tIFwiLi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuaW1wb3J0IHsgY3JlYXRlUGxheWVyTmFtZXMgfSBmcm9tIFwiLi9jcmVhdGVQbGF5ZXJOYW1lc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlbW9ucyB9IGZyb20gXCIuL2NyZWF0ZVBva2Vtb25zXCI7XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlQ2hvb3NlUGFnZSA9IChwbGF5ZXJPbmU6IFBsYXllciwgcGxheWVyVHdvOiBQbGF5ZXIpID0+IHtcclxuICBsZXQgYWN0aXZlUGxheWVyID0gcGxheWVyT25lO1xyXG4gIGNyZWF0ZVBsYXllck5hbWVzKHBsYXllck9uZSwgcGxheWVyVHdvKTtcclxuICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgY3JlYXRlUG9rZW1vbnMocGxheWVyT25lLCBwbGF5ZXJUd28sIGFjdGl2ZVBsYXllcik7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBsYXllck5hbWVzID0gKHBsYXllck9uZTogUGxheWVyLCBwbGF5ZXJUd286IFBsYXllcikgPT4ge1xyXG4gIGxldCBwbGF5ZXJPbmVOYW1lQXJlYVRleHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2Nob29zZVBhZ2VQbGF5ZXIxTmFtZVwiKSE7XHJcbiAgcGxheWVyT25lTmFtZUFyZWFUZXh0LnRleHRDb250ZW50ID0gcGxheWVyT25lLm5hbWU7XHJcbiAgbGV0IHBsYXllclR3b05hbWVBcmVhVGV4dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjY2hvb3NlUGFnZVBsYXllcjJOYW1lXCIpITtcclxuICBwbGF5ZXJUd29OYW1lQXJlYVRleHQudGV4dENvbnRlbnQgPSBwbGF5ZXJUd28ubmFtZTtcclxufTtcclxuIiwiaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcbmltcG9ydCB7IFBva2Vtb25GYWN0b3J5IH0gZnJvbSBcIi4uL3Bva2Vtb25GYWN0b3J5XCI7XHJcbmltcG9ydCAqIGFzIGRhdGEgZnJvbSBcIi4uLy4uL2Fzc2V0cy9wb2tlX2RhdGEuanNvblwiO1xyXG5pbXBvcnQgeyBzdGFydEdhbWVJZlJlYWR5IH0gZnJvbSBcIi4vc3RhcnRHYW1lSWZSZWFkeVwiO1xyXG5pbXBvcnQgeyBhZGRDaG9zZW5Qb2tlbW9uIH0gZnJvbSBcIi4vYWRkQ2hvc2VuUG9rZW1vblwiO1xyXG5pbXBvcnQgeyBjcmVhdGVQb2tlYmFsbHMgfSBmcm9tIFwiLi9jcmVhdGVQb2tlYmFsbHNcIjtcclxuaW1wb3J0IHsgY3JlYXRlQWN0aXZlUGxheWVyTmFtZSB9IGZyb20gXCIuL2NyZWF0ZUFjdGl2ZVBsYXllck5hbWVcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVQb2tlbW9ucyA9IChcclxuICBwbGF5ZXJPbmU6IFBsYXllcixcclxuICBwbGF5ZXJUd286IFBsYXllcixcclxuICBhY3RpdmVQbGF5ZXI6IFBsYXllclxyXG4pID0+IHtcclxuICBjb25zdCBwb2tlRGF0YSA9IGRhdGEucG9rZW1vbnM7XHJcbiAgY29uc3QgcG9rZW1vbkZhY3RvcnkgPSBuZXcgUG9rZW1vbkZhY3RvcnkocG9rZURhdGEpO1xyXG4gIGNvbnN0IHBva2Vtb25JbWFnZXMgPSBBcnJheS5mcm9tKFxyXG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNwb2tlbW9uTGlzdCBpbWdcIilcclxuICApIGFzIFtIVE1MSW1hZ2VFbGVtZW50XTtcclxuXHJcbiAgcG9rZW1vbkltYWdlcy5mb3JFYWNoKChwb2tlbW9uSW1hZ2UpID0+XHJcbiAgICBwb2tlbW9uSW1hZ2UuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgXCJjbGlja1wiLFxyXG4gICAgICAoZSkgPT4ge1xyXG4gICAgICAgIGlmIChhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoID09PSAzKSByZXR1cm47XHJcbiAgICAgICAgYWRkQ2hvc2VuUG9rZW1vbihlLCBwb2tlbW9uRmFjdG9yeSwgYWN0aXZlUGxheWVyKTtcclxuICAgICAgICBjcmVhdGVQb2tlYmFsbHMocGxheWVyT25lLCBhY3RpdmVQbGF5ZXIpO1xyXG4gICAgICAgIC8vIGNoYW5nZSBwbGF5ZXJcclxuICAgICAgICBhY3RpdmVQbGF5ZXIgPSBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZSA/IHBsYXllclR3byA6IHBsYXllck9uZTtcclxuICAgICAgICBjcmVhdGVBY3RpdmVQbGF5ZXJOYW1lKGFjdGl2ZVBsYXllcik7XHJcbiAgICAgICAgc3RhcnRHYW1lSWZSZWFkeShwbGF5ZXJPbmUsIHBsYXllclR3byk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHsgb25jZTogdHJ1ZSB9XHJcbiAgICApXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuLi9wb2tlbW9uQ2xhc3NcIjtcclxuaW1wb3J0IHsgUG9rZW1vbkZhY3RvcnkgfSBmcm9tIFwiLi4vcG9rZW1vbkZhY3RvcnlcIjtcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4uL3BsYXllckNsYXNzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgYWRkQ2hvc2VuUG9rZW1vbiA9IChcclxuICBldmVudDogRXZlbnQsXHJcbiAgZmFjdG9yeTogUG9rZW1vbkZhY3RvcnksXHJcbiAgYWN0aXZlUGxheWVyOiBQbGF5ZXJcclxuKSA9PiB7XHJcbiAgY29uc3QgY2xpY2tlZFBva2Vtb24gPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcclxuICBjb25zdCBwb2tlbW9uTmFtZSA9IGNsaWNrZWRQb2tlbW9uLmlkO1xyXG4gIGNvbnN0IG5ld1Bva2Vtb25PYmplY3Q6IFBva2Vtb24gPSBmYWN0b3J5LmdldFBva2Vtb25CeU5hbWUocG9rZW1vbk5hbWUpO1xyXG4gIGFjdGl2ZVBsYXllci5hZGRQb2tlbW9uKG5ld1Bva2Vtb25PYmplY3QpO1xyXG4gIGNsaWNrZWRQb2tlbW9uLnN0eWxlLmN1cnNvciA9IFwiZGVmYXVsdFwiO1xyXG4gIGNsaWNrZWRQb2tlbW9uLnN0eWxlLmZpbHRlciA9IFwiZ3JheXNjYWxlKDEwMCUpXCI7XHJcbn07XHJcbiIsImltcG9ydCB7IFBsYXllciB9IGZyb20gXCIuLi9wbGF5ZXJDbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBva2ViYWxscyA9IChwbGF5ZXJPbmU6IFBsYXllciwgYWN0aXZlUGxheWVyOiBQbGF5ZXIpID0+IHtcclxuICBjb25zdCBwbGF5ZXJQb2tlYmFsbHM6IEhUTUxJbWFnZUVsZW1lbnRbXSA9XHJcbiAgICBhY3RpdmVQbGF5ZXIgPT09IHBsYXllck9uZVxyXG4gICAgICA/IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIiNjaG9vc2VQYWdlUGxheWVyMSBpbWdcIikpXHJcbiAgICAgIDogQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiI2Nob29zZVBhZ2VQbGF5ZXIyIGltZ1wiKSk7XHJcbiAgY29uc3QgcGxheWVyTGFzdFBva2Vtb25OYW1lOiBzdHJpbmcgPSBhY3RpdmVQbGF5ZXIucG9rZW1vbnNbXHJcbiAgICBhY3RpdmVQbGF5ZXIucG9rZW1vbnMubGVuZ3RoIC0gMVxyXG4gIF0ubmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gIGNvbnN0IG51bWJlck9mTGFzdFBva2Vtb246IG51bWJlciA9IGFjdGl2ZVBsYXllci5wb2tlbW9ucy5sZW5ndGggLSAxO1xyXG4gIHBsYXllclBva2ViYWxsc1tudW1iZXJPZkxhc3RQb2tlbW9uXS5zZXRBdHRyaWJ1dGUoXHJcbiAgICBcInNyY1wiLFxyXG4gICAgYC4vYXNzZXRzLyR7cGxheWVyTGFzdFBva2Vtb25OYW1lfS5wbmdgXHJcbiAgKTtcclxufTtcclxuIiwiaW1wb3J0IHsgUG9rZW1vbiB9IGZyb20gXCIuL3Bva2Vtb25DbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBsYXllciB7XHJcbiAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xyXG4gIHByaXZhdGUgX3Bva2Vtb25zOiBQb2tlbW9uW107XHJcbiAgcHJpdmF0ZSBfaW5kZXhPZkFjdGl2ZVBva2Vtb246IG51bWJlcjtcclxuICBwcml2YXRlIF9oYXNNYW5nbzogQm9vbGVhbjtcclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHBva2Vtb25zOiBQb2tlbW9uW10pIHtcclxuICAgIGlmIChuYW1lLmxlbmd0aCA+IDgpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVG9vIGxvbmcgbmFtZVwiKTtcclxuICAgIH1cclxuICAgIGlmIChwb2tlbW9ucy5sZW5ndGggPiAzKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIG51bWJlciBvZiBwb2tlbW9uc1wiKTtcclxuICAgIH1cclxuICAgIHRoaXMuX25hbWUgPSBuYW1lO1xyXG4gICAgdGhpcy5fcG9rZW1vbnMgPSBwb2tlbW9ucztcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gMDtcclxuICAgIHRoaXMuX2hhc01hbmdvID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcclxuICB9XHJcbiAgZ2V0IHBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcG9rZW1vbnM7XHJcbiAgfVxyXG5cclxuICBzZXQgaW5kZXhPZkFjdGl2ZVBva2Vtb24obnVtT2ZBY3RpdmVQb2tlbW9uOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2luZGV4T2ZBY3RpdmVQb2tlbW9uID0gbnVtT2ZBY3RpdmVQb2tlbW9uO1xyXG4gIH1cclxuICBnZXQgZ2V0QWN0aXZlUG9rZW1vbigpOiBQb2tlbW9uIHtcclxuICAgIHJldHVybiB0aGlzLl9wb2tlbW9uc1t0aGlzLl9pbmRleE9mQWN0aXZlUG9rZW1vbl07XHJcbiAgfVxyXG5cclxuICBnZXQgYWxpdmVQb2tlbW9ucygpOiBQb2tlbW9uW10ge1xyXG4gICAgY29uc3QgYWxpdmVQb2tlbW9uc1RhYjogUG9rZW1vbltdID0gdGhpcy5wb2tlbW9ucy5maWx0ZXIoKHBva2Vtb24pID0+XHJcbiAgICAgIHBva2Vtb24uaXNBbGl2ZSgpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGFsaXZlUG9rZW1vbnNUYWI7XHJcbiAgfVxyXG5cclxuICB1c2VNYW5nbygpOiB2b2lkIHwgRXJyb3Ige1xyXG4gICAgaWYgKCF0aGlzLl9oYXNNYW5nbylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCB1c2UgbWFuZ28uIFlvdSB1c2UgYWxsIG1hbmdvc1wiKTtcclxuICAgIHRoaXMuX2hhc01hbmdvID0gZmFsc2U7XHJcbiAgICB0aGlzLmdldEFjdGl2ZVBva2Vtb24uaGVhbCgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc01hbmdvKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhc01hbmdvO1xyXG4gIH1cclxuXHJcbiAgYWRkUG9rZW1vbihwb2tlbW9uOiBQb2tlbW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb2tlbW9ucy5wdXNoKHBva2Vtb24pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG5vdEFjdGl2ZVBva2Vtb25zKCk6IFBva2Vtb25bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5wb2tlbW9ucy5maWx0ZXIoXHJcbiAgICAgIChwb2tlbW9uKSA9PiBwb2tlbW9uLm5hbWUgIT09IHRoaXMuZ2V0QWN0aXZlUG9rZW1vbi5uYW1lXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCJleHBvcnQgY29uc3QgYWN0aXZhdGVTdGFydCA9IChuYW1lMUlucHV0OiBIVE1MSW5wdXRFbGVtZW50LCBuYW1lMklucHV0OiBIVE1MSW5wdXRFbGVtZW50LCBzdGFydEJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQpID0+IHtcclxuICAgIGlmIChuYW1lMUlucHV0LnZhbHVlLmxlbmd0aCA+IDAgJiYgbmFtZTJJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIG5hbWUxSW5wdXQudmFsdWUubGVuZ3RoIDw9IDggJiYgbmFtZTJJbnB1dC52YWx1ZS5sZW5ndGggPD0gOCkge1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmNsYXNzTmFtZSA9ICdidXR0b24tZW5hYmxlZCdcclxuICAgICAgICBzdGFydEJ1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBzdGFydEJ1dHRvbi5jbGFzc05hbWUgPSAnYnV0dG9uLWRpc2FibGVkJ1xyXG4gICAgICAgIHN0YXJ0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIH1cclxufVxyXG5cclxuIiwiaW1wb3J0IHsgc2hvd01vZGFsLCBoaWRlTW9kYWwgfSBmcm9tIFwiLi9tb2RhbFBvcFVwRnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUNob29zZVBhZ2UgfSBmcm9tIFwiLi9jaG9vc2VQb2tlbW9uc1BhZ2UvY2hvb3NlUG9rZW1vbnNQYWdlXCJcclxuaW1wb3J0IHsgUGxheWVyIH0gZnJvbSBcIi4vcGxheWVyQ2xhc3NcIjtcclxuaW1wb3J0IHsgYWN0aXZhdGVTdGFydCB9IGZyb20gJy4vYWN0aXZhdGVTdGFydCc7XHJcblxyXG5jb25zdCByZW5kZXJTdGFydGluZ1BhZ2UgPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IHN0YXJ0aW5nUGFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNzdGFydGluZy1wYWdlLXRlbXBsYXRlXCJcclxuICApIGFzIEhUTUxUZW1wbGF0ZUVsZW1lbnQ7XHJcbiAgYXBwRGl2LmlubmVySFRNTCA9IHN0YXJ0aW5nUGFnZS5pbm5lckhUTUw7XHJcbn07XHJcbmNvbnN0IHJlbmRlckhvd1RvUGxheU1vZGFsID0gKGFwcERpdjogSFRNTERpdkVsZW1lbnQpID0+IHtcclxuICBjb25zdCBpbmZvTW9kYWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaW5mby1tb2RhbC10ZW1wbGF0ZVwiXHJcbiAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gIGFwcERpdi5pbm5lckhUTUwgKz0gaW5mb01vZGFsLmlubmVySFRNTDtcclxufTtcclxuY29uc3QgY3JlYXRlSG93VG9QbGF5QnV0dG9uID0gKCkgPT4ge1xyXG4gIGNvbnN0IGhvd1RvUGxheUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICBcIiNob3ctdG8tcGxheS1idXR0b25cIlxyXG4gICkgYXMgSFRNTFVMaXN0RWxlbWVudDtcclxuICBjb25zdCBpbmZvTW9kYWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjaW5mby1tb2RhbC1zY3JlZW5cIlxyXG4gICkgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgaG93VG9QbGF5QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB7XHJcbiAgICBzaG93TW9kYWwoaW5mb01vZGFsLCBcImZsZXhcIik7XHJcbiAgfSk7XHJcbiAgaGlkZU1vZGFsKGluZm9Nb2RhbCk7XHJcbn07XHJcblxyXG5jb25zdCBhY3RpdmF0ZVN0YXJ0QnV0dG9uID0gKCkgPT4ge1xyXG4gIGNvbnN0IHBsYXllcjFOYW1lSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMS1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICBjb25zdCBwbGF5ZXIyTmFtZUlucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjItbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgY29uc3Qgc3RhcnRCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI3N0YXJ0LWdhbWUtYnV0dG9uXCIpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xyXG4gIHBsYXllcjFOYW1lSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsICgpID0+IHtcclxuICAgICAgYWN0aXZhdGVTdGFydChwbGF5ZXIxTmFtZUlucHV0LCBwbGF5ZXIyTmFtZUlucHV0LCBzdGFydEJ1dHRvbilcclxuICB9KVxyXG4gIHBsYXllcjJOYW1lSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihcImtleXVwXCIsICgpID0+IHtcclxuICAgICAgYWN0aXZhdGVTdGFydChwbGF5ZXIxTmFtZUlucHV0LCBwbGF5ZXIyTmFtZUlucHV0LCBzdGFydEJ1dHRvbilcclxuICB9KTtcclxufTtcclxuXHJcbmNvbnN0IHJlbmRlckNob29zZVBva2Vtb25TY3JlZW4gPSAoYXBwRGl2OiBIVE1MRGl2RWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IHBsYXlCdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgXCIjc3RhcnQtZ2FtZS1idXR0b25cIlxyXG4gICkgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcbiAgcGxheUJ1dHRvbj8uYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsICgpID0+IHtcclxuICAgIGNvbnN0IHBsYXllcjFOYW1lSW5wdXQgPSAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VudGVyLXBsYXllcjEtbmFtZScpIGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgY29uc3QgcGxheWVyMk5hbWVJbnB1dCA9IChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZW50ZXItcGxheWVyMi1uYW1lJykgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XHJcbiAgICBjb25zdCBjaG9vc2VQb2tlbW9uU2NyZWVuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgXCIjY2hvb3NlLXBhZ2UtdGVtcGxhdGVcIlxyXG4gICAgKSBhcyBIVE1MVGVtcGxhdGVFbGVtZW50O1xyXG4gICAgYXBwRGl2LmlubmVySFRNTCA9IGNob29zZVBva2Vtb25TY3JlZW4uaW5uZXJIVE1MO1xyXG4gICAgY3JlYXRlQ2hvb3NlUGFnZShuZXcgUGxheWVyKHBsYXllcjFOYW1lSW5wdXQsIFtdKSwgbmV3IFBsYXllcihwbGF5ZXIyTmFtZUlucHV0LCBbXSkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5jb25zdCByZW5kZXJBcHAgPSAoKSA9PiB7XHJcbiAgY29uc3QgYXBwID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHBcIikgYXMgSFRNTERpdkVsZW1lbnQ7XHJcbiAgcmVuZGVyU3RhcnRpbmdQYWdlKGFwcCk7XHJcbiAgcmVuZGVySG93VG9QbGF5TW9kYWwoYXBwKTtcclxuICBhY3RpdmF0ZVN0YXJ0QnV0dG9uKCk7XHJcbiAgY3JlYXRlSG93VG9QbGF5QnV0dG9uKCk7XHJcbiAgcmVuZGVyQ2hvb3NlUG9rZW1vblNjcmVlbihhcHApO1xyXG59O1xyXG5cclxuc2V0VGltZW91dChyZW5kZXJBcHAsIDIwMDApO1xyXG5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/index.html b/index.html index e0827b4..cf6cc49 100644 --- a/index.html +++ b/index.html @@ -141,22 +141,7 @@

HP:

-
-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-

Pikachu used Thunder Shock!

-

Bulbasaur used Mango

-
+
diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index 1f4ac0c..4ec2b56 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -243,15 +243,13 @@ align-items: center; border-radius: 25px; width: 80vw; - max-height: 15em; + max-height: fit-content; min-height: 12em; position: absolute; left: 50%; - bottom: 50%; - margin-left: -40vw; - margin-bottom: -20vh; - padding-top: 5vh; - padding-bottom: 5vh; + top: 50%; + transform: translate(-50%, -50%); + padding: 5vh 15px; z-index: 2; .exitButton, .modalHeader, .modalPlayAgainButton { @@ -270,14 +268,15 @@ .modalHeader { @include textshadow; - font-size: 1.6em; + font-size: 3rem; line-height: 1; color: $color-primary; + text-align: center; } .modalParagraph { line-height: 1.8; - font-size: 2em; + font-size: 1.4rem; color: $color-text; text-align: center; margin: 1em; diff --git a/styles/SASS/_responsive.scss b/styles/SASS/_responsive.scss index c47366c..7f2f5ad 100644 --- a/styles/SASS/_responsive.scss +++ b/styles/SASS/_responsive.scss @@ -165,8 +165,7 @@ .popupScreenResult { width: 50vw; - margin-left: -25vw; - max-height: 18em; + max-height: fit-content; min-height: 12em; .modalHeader { diff --git a/styles/app.css b/styles/app.css index cdf8fce..44bea9c 100644 --- a/styles/app.css +++ b/styles/app.css @@ -643,15 +643,13 @@ html { align-items: center; border-radius: 25px; width: 80vw; - max-height: 15em; + max-height: fit-content; min-height: 12em; position: absolute; left: 50%; - bottom: 50%; - margin-left: -40vw; - margin-bottom: -20vh; - padding-top: 5vh; - padding-bottom: 5vh; + top: 50%; + transform: translate(-50%, -50%); + padding: 5vh 15px; z-index: 2; } @@ -671,14 +669,15 @@ html { .popupScreenResult .modalHeader { text-shadow: 1px 1px 3px #020402ff; - font-size: 1.6em; + font-size: 3rem; line-height: 1; color: #9b1d20ff; + text-align: center; } .popupScreenResult .modalParagraph { line-height: 1.8; - font-size: 2em; + font-size: 1.4rem; color: #020402ff; text-align: center; margin: 1em; @@ -1360,8 +1359,7 @@ html { } .popupScreenResult { width: 50vw; - margin-left: -25vw; - max-height: 18em; + max-height: fit-content; min-height: 12em; } .popupScreenResult .modalHeader { diff --git a/styles/app.css.map b/styles/app.css.map index 5041e66..6728eb4 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss", From 701e4d8cecc34998cd733ab7b2c1ac722904bc7f Mon Sep 17 00:00:00 2001 From: AgataLudwiczynska <74932979+AgataLudwiczynska@users.noreply.github.com> Date: Mon, 15 Feb 2021 11:51:00 +0100 Subject: [PATCH 72/76] MNG-115 add interface to gameHandler and Player class (#40) --- src/gameHandlerClass.ts | 13 ++++++++++++- src/playerClass.ts | 11 ++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/gameHandlerClass.ts b/src/gameHandlerClass.ts index 694a7d0..7b690fd 100644 --- a/src/gameHandlerClass.ts +++ b/src/gameHandlerClass.ts @@ -5,7 +5,18 @@ import { switchButtonEventListener, } from "./fightPage/buttonsEventListeners"; -export class GameHandler { +interface IGameHandler{ + currentPlayer: Player; + isGameFinished(): boolean; + getWinner(): Player | Error; + switchPlayer(): void; + switchPokemon(pokemonName: string):void; + generateActionButtons(): void; + generateAttackButtons(): void; + generateSwitchButtons(): void; +} + +export class GameHandler implements IGameHandler{ constructor( private readonly _playerOne: Player, private readonly _playerTwo: Player diff --git a/src/playerClass.ts b/src/playerClass.ts index 469c910..2ccfa7e 100644 --- a/src/playerClass.ts +++ b/src/playerClass.ts @@ -1,6 +1,15 @@ import { Pokemon } from "./pokemonClass"; -export class Player { +interface IPlayer{ + name: string; + pokemons: Pokemon[]; + indexOfActivePokemon: number; + hasMango: Boolean; + useMango(): void | Error; + addPokemon(pokemon: Pokemon): void; +} + +export class Player implements IPlayer { private _name: string; private _pokemons: Pokemon[]; private _indexOfActivePokemon: number; From a0544902fc333c6ed2f5afff9ac840260e9ebdf4 Mon Sep 17 00:00:00 2001 From: mariusz-sm <74978639+mariusz-sm@users.noreply.github.com> Date: Mon, 15 Feb 2021 17:17:10 +0100 Subject: [PATCH 73/76] MNG-119 Add_player_class_tests (#41) * Add test for too long name * Add test for too many pokemons * Add test for useMango * Add test for addPokemon function --- src/__tests__/playerClass.spec.ts | 81 +++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/__tests__/playerClass.spec.ts diff --git a/src/__tests__/playerClass.spec.ts b/src/__tests__/playerClass.spec.ts new file mode 100644 index 0000000..c665c0f --- /dev/null +++ b/src/__tests__/playerClass.spec.ts @@ -0,0 +1,81 @@ +import { Player } from "../playerClass"; +import { Pokemon } from "../pokemonClass"; +import { PokemonFactory } from "../pokemonFactory"; +import * as data from "../../assets/poke_data.json"; + +describe("Test Player class", () => { + const pokeData = data.pokemons; + const factory = new PokemonFactory(pokeData); + + const player = (name: string, pokemons: Pokemon[]) => { + return new Player(name, pokemons) + }; + + it("Should throw error when player name is longer than 8", () => { + // Given + const name = "Elizabeth" + const pokemonList = [ + factory.getPokemonByName("bulbasaur"), + factory.getPokemonByName("charmander"), + factory.getPokemonByName("pikachu"), + ] + + // When + const playerWithTooLongName = () => player(name, pokemonList) + + // Then + expect(playerWithTooLongName).toThrow("Too long name") + }); + + it("Should throw error when list of pokemons is longer than 3", () => { + // Given + const name = "Mark" + const pokemonList = [ + factory.getPokemonByName("bulbasaur"), + factory.getPokemonByName("charmander"), + factory.getPokemonByName("pikachu"), + factory.getPokemonByName("squirtle") + ] + + // When + const playerWithTooMuchPokemens = () => player(name, pokemonList) + + // Then + expect(playerWithTooMuchPokemens).toThrow("Wrong number of pokemons") + }); + + it("Should throw error when player has not mango", () => { + // Given + const name = "Mark" + const pokemonList = [ + factory.getPokemonByName("bulbasaur"), + factory.getPokemonByName("charmander"), + factory.getPokemonByName("pikachu"), + ] + + // When + const playerOne = player(name, pokemonList) + const useMango = () => playerOne.useMango() + useMango() + + // Then + expect(useMango).toThrow("You cannot use mango. You use all mangos") + }); + + it("Checks if addPokemon function works", () => { + // Given + const name = "Mark" + const pokemonList = [ + factory.getPokemonByName("bulbasaur"), + factory.getPokemonByName("charmander") + ] + + // When + const playerOne = player(name, pokemonList) + playerOne.addPokemon(factory.getPokemonByName("squirtle")) + const numberOfPokemons = playerOne.pokemons.length + + // Then + expect(numberOfPokemons).toEqual(3) + }); +}); \ No newline at end of file From ecd73fffc8de8de3999c7880021b8b3069318153 Mon Sep 17 00:00:00 2001 From: AleksandraCyp <73715885+AleksandraCyp@users.noreply.github.com> Date: Mon, 15 Feb 2021 17:17:50 +0100 Subject: [PATCH 74/76] MNG-128 MNG-129 Change some English text, delete console.logs (#44) --- index.html | 4 ++-- src/fightPage/buttonsEventListeners.ts | 4 ---- src/fightPage/createHPBars.ts | 1 - 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index ab052ee..4691d17 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,7 @@
- +
@@ -83,7 +83,7 @@ @@ -191,7 +192,7 @@

HP:

diff --git a/styles/SASS/_animations.scss b/styles/SASS/_animations.scss index 535130c..515fab5 100644 --- a/styles/SASS/_animations.scss +++ b/styles/SASS/_animations.scss @@ -1,5 +1,3 @@ -// Placeholder for animations (keyframes) - //Buttons EXIT @-webkit-keyframes scale-out-horizontal { @@ -27,7 +25,6 @@ } } - // Buttons ENTRY @-webkit-keyframes scale-in-hor-center { @@ -55,7 +52,7 @@ } } -// ENTRY animation: scale-in-center 0.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both; +// ENTRY animation @-webkit-keyframes scale-in-center { 0% { @@ -83,7 +80,7 @@ } -// Pokemon ENTRY animation: bounce-in-fwd 1.1s both; +// Pokemon ENTRY @-webkit-keyframes bounce-in-fwd { 0% { @@ -190,7 +187,7 @@ } } -// Choosing POKEMON animation: heartbeat 1.5s ease-in-out both; +// Choosing POKEMON @-webkit-keyframes heartbeat { from { @@ -261,7 +258,7 @@ } } -/// Pokemon EXIT animation: bounce-out-bck 1.5s both; +/// Pokemon EXIT @-webkit-keyframes bounce-out-bck { 0% { @@ -373,7 +370,7 @@ } -// Pokemon animation: jello-horizontal 0.9s both; +// Pokemon hit @-webkit-keyframes jello-horizontal { 0% { @@ -436,7 +433,7 @@ } } -/// FIGHT +// FIGHT @keyframes c1{ 0%{transform:scale(1,1);} diff --git a/styles/SASS/_config.scss b/styles/SASS/_config.scss index d3025f2..69760be 100644 --- a/styles/SASS/_config.scss +++ b/styles/SASS/_config.scss @@ -9,7 +9,6 @@ $color-disable: #4D4D4D; $mobile: 768px; @import url('https://fonts.googleapis.com/css2?family=Bellota+Text:wght@400;700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Ranchers&display=swap'); @font-face { font-family: "Pokemon Solid"; diff --git a/styles/SASS/_fight-view.scss b/styles/SASS/_fight-view.scss index 4ec2b56..edfcab9 100644 --- a/styles/SASS/_fight-view.scss +++ b/styles/SASS/_fight-view.scss @@ -7,6 +7,7 @@ flex-flow: column nowrap; justify-content: center; align-items: center; + overflow: hidden; .playersContainer { width: 100%; @@ -280,6 +281,10 @@ color: $color-text; text-align: center; margin: 1em; + + span { + font-weight: bold; + } } .modalPlayAgainButton { diff --git a/styles/SASS/_start-view.scss b/styles/SASS/_start-view.scss index cb1a206..9ace478 100644 --- a/styles/SASS/_start-view.scss +++ b/styles/SASS/_start-view.scss @@ -205,6 +205,10 @@ padding: 2rem; font-size: 2rem; text-align: center; + + span { + font-weight: bold; + } } } diff --git a/styles/app.css b/styles/app.css index 0767a02..e3f7218 100644 --- a/styles/app.css +++ b/styles/app.css @@ -1,17 +1,18 @@ @import url("https://fonts.googleapis.com/css2?family=Bellota+Text:wght@400;700&display=swap"); -@import url("https://fonts.googleapis.com/css2?family=Ranchers&display=swap"); * { margin: 0; padding: 0; } html { - box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; font-size: 10px; } *, *:before, *:after { - box-sizing: inherit; + -webkit-box-sizing: inherit; + box-sizing: inherit; } @font-face { @@ -25,10 +26,20 @@ html { margin: auto; padding: 10vw; background-color: #e8f1f2ff; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } @@ -36,11 +47,15 @@ html { max-width: 400px; text-align: center; margin-bottom: 1em; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #loading-view img { + width: -webkit-fit-content; + width: -moz-fit-content; width: fit-content; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } @@ -53,10 +68,19 @@ html { width: 100%; height: 100vh; margin: auto; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #header-with-enter-name-manu { @@ -65,17 +89,30 @@ html { padding-right: 10vw; width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: center; - align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #header-with-enter-name-manu .headerWrapper { max-width: 500px; height: 300px; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: space-evenly; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; padding-bottom: 100px; color: #e8f1f2ff; } @@ -109,8 +146,11 @@ html { } #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area { + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-around; + -ms-flex-pack: distribute; + justify-content: space-around; } #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput { @@ -118,6 +158,18 @@ html { border-radius: 50px; } +#starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput::-webkit-input-placeholder { + color: #020402ff; +} + +#starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput:-ms-input-placeholder { + color: #020402ff; +} + +#starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput::-ms-input-placeholder { + color: #020402ff; +} + #starting-page #header-with-enter-name-manu .headerWrapper #enter-name-area .playerNameInput::placeholder { color: #020402ff; } @@ -134,7 +186,8 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; background-color: #020402ff; width: 160px; @@ -145,7 +198,8 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; background-color: #e8f1f2ff; width: 130px; @@ -156,9 +210,11 @@ html { position: relative; left: 50%; top: 50%; - transform: translateX(-50%) translateY(-50%); + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); border-radius: 50%; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; width: 110px; height: 110px; text-align: center; @@ -168,7 +224,8 @@ html { } #starting-page #start-game-border #start-game-bg1 #start-game-bg2 #start-game-button:hover { - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); } #starting-page #start-game-border #start-game-bg1 #start-game-bg2 .button-enabled { @@ -187,18 +244,33 @@ html { padding-right: 10vw; width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #starting-page #info-menu #select-info-menu { width: 240px; height: 30vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: space-around; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -ms-flex-pack: distribute; + justify-content: space-around; margin-top: 80px; } @@ -214,24 +286,36 @@ html { } #starting-page #info-menu #select-info-menu .start-page-button:hover { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #9b1d20ff; } .popupScreen { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #e8f1f2ff; display: none; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; border-radius: 25px; width: 80vw; + height: -webkit-fit-content; + height: -moz-fit-content; height: fit-content; position: absolute; left: 50%; top: 50%; - transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); padding: 15px; z-index: 2; } @@ -243,10 +327,14 @@ html { } .popupScreen .exitButton { - align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; line-height: 1; color: #9b1d20ff; - user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; cursor: pointer; } @@ -262,13 +350,25 @@ html { text-align: center; } +.popupScreen .modalParagraph span { + font-weight: bold; +} + #choose-page { width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - align-items: center; - justify-content: space-around; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: distribute; + justify-content: space-around; line-height: 1.2; padding: 2vh; } @@ -289,9 +389,13 @@ html { } #choose-page .choosePagePlayers { + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: repeat(6, 1fr); + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: center; } @@ -303,12 +407,15 @@ html { #choose-page .choosePagePlayers img { max-width: 7vh; padding: 0 0.8vh; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); } #choose-page #pokemonList { + display: -ms-grid; display: grid; - grid-template-columns: repeat(4, 1fr); + -ms-grid-columns: repeat(4, 1fr); + grid-template-columns: repeat(4, 1fr); justify-items: center; } @@ -319,35 +426,56 @@ html { } #choose-page #pokemonList img:hover { - transform: scale(1.25); + -webkit-transform: scale(1.25); + transform: scale(1.25); } #choose-page #pokemonList #disabledImg { - filter: grayscale(100%); + -webkit-filter: grayscale(100%); + filter: grayscale(100%); cursor: not-allowed; - transform: scale(0.85); + -webkit-transform: scale(0.85); + transform: scale(0.85); } #fight-page { width: 100%; height: 100vh; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column nowrap; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + overflow: hidden; } #fight-page .playersContainer { width: 100%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-evenly; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; } #fight-page .playersContainer .playerDetails { position: relative; + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: repeat(6, 1fr); + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: center; } @@ -360,12 +488,14 @@ html { #fight-page .playersContainer .playerDetails .pokeballWithPokemon { width: 20px; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); margin: 0 2px; } #fight-page .playersContainer .playerDetails .disabledPokemon { - filter: grayscale(100%); + -webkit-filter: grayscale(100%); + filter: grayscale(100%); } #fight-page .playersContainer .playerDetails #underline1, #fight-page .playersContainer .playerDetails #underline2 { @@ -406,25 +536,37 @@ html { position: relative; width: 100%; min-height: 115px; + display: -webkit-box; + display: -ms-flexbox; display: flex; - justify-content: space-between; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } #fight-page .battleArea .pokemonDetails img { + width: -webkit-fit-content; + width: -moz-fit-content; width: fit-content; - object-fit: contain; - animation: scale-in-center 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; + -o-object-fit: contain; + object-fit: contain; + -webkit-animation: scale-in-center 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; + animation: scale-in-center 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } #fight-page .battleArea .pokemonDetails #pokemon-image-player2 { - order: 2; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } #fight-page .battleArea .pokemonDetails .animation-div-player1, #fight-page .battleArea .pokemonDetails .animation-div-player2 { display: none; position: absolute; - filter: drop-shadow(1px 1px 3px #020402ff); + -webkit-filter: drop-shadow(1px 1px 3px #020402ff); + filter: drop-shadow(1px 1px 3px #020402ff); top: 0; width: 48.6px; height: 64.4px; @@ -447,8 +589,30 @@ html { background: #fff; position: absolute; margin: auto; - box-shadow: 0px -9px 0 #000, 50px 10px 0 -6px #fff, 55px 5px 0 -6px #000, 60px 60px 0 -4px #fff, 66px 64px 0 -4px #000, -3px 65px 0 5px #fff, -4px 72px 0 5px #000, -50px 10px 0 -10px #fff, -54px 5px 0 -10px #000, -50px 50px 0 -15px #fff, -54px 53px 0 -15px #000; - animation: c1 .3s infinite; + -webkit-box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + -webkit-animation: c1 .3s infinite; + animation: c1 .3s infinite; top: 0; left: 10px; } @@ -463,23 +627,52 @@ html { left: 10px; top: 75px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c2 .6s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c2 .6s infinite; + animation: c2 .6s infinite; } #fight-page .battleArea .pokemonDetails .boom-player1:after { content: ''; width: 50px; height: 50px; - transform: rotate(180deg); + -webkit-transform: rotate(180deg); + transform: rotate(180deg); border-radius: 50%; background: #fff; position: absolute; left: 80px; top: -5px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c3 .5s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c3 .5s infinite; + animation: c3 .5s infinite; } #fight-page .battleArea .pokemonDetails .boom-player2 { @@ -491,8 +684,30 @@ html { background: #fff; position: absolute; margin: auto; - box-shadow: 0px -9px 0 #000, 50px 10px 0 -6px #fff, 55px 5px 0 -6px #000, 60px 60px 0 -4px #fff, 66px 64px 0 -4px #000, -3px 65px 0 5px #fff, -4px 72px 0 5px #000, -50px 10px 0 -10px #fff, -54px 5px 0 -10px #000, -50px 50px 0 -15px #fff, -54px 53px 0 -15px #000; - animation: c1 .3s infinite; + -webkit-box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + -webkit-animation: c1 .3s infinite; + animation: c1 .3s infinite; bottom: 0; right: 10px; } @@ -507,31 +722,69 @@ html { left: 10px; top: 75px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c2 .6s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c2 .6s infinite; + animation: c2 .6s infinite; } #fight-page .battleArea .pokemonDetails .boom-player2:after { content: ''; width: 50px; height: 50px; - transform: rotate(180deg); + -webkit-transform: rotate(180deg); + transform: rotate(180deg); border-radius: 50%; background: #fff; position: absolute; left: 80px; top: -5px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c3 .5s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c3 .5s infinite; + animation: c3 .5s infinite; } #fight-page .battleArea .pokemonDetails .pokemonInfo { width: 70%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column; - justify-content: center; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .battleArea .pokemonDetails .pokemonInfo h2 { @@ -546,9 +799,13 @@ html { #fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar { width: 70%; + display: -ms-grid; display: grid; - grid-template-columns: repeat(6, 1fr); - align-items: center; + -ms-grid-columns: repeat(6, 1fr); + grid-template-columns: repeat(6, 1fr); + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; justify-items: first; } @@ -558,7 +815,8 @@ html { grid-column: span 5; width: 100%; height: 1.8rem; - transform-origin: left center; + -webkit-transform-origin: left center; + transform-origin: left center; border-radius: 10px; margin-top: 1rem; } @@ -566,9 +824,12 @@ html { #fight-page .battleArea .pokemonDetails .pokemonInfo .hpProgressBar .hpBar { width: 100%; height: 1.8rem; - box-shadow: 1px 1px 3px #020402ff; - transform-origin: left center; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; + -webkit-transform-origin: left center; + transform-origin: left center; border-radius: 10px; + -webkit-transition: width 0.8s ease-out; transition: width 0.8s ease-out; } @@ -583,16 +844,24 @@ html { #fight-page .gameActions { width: 90%; max-height: 50%; + display: -webkit-box; + display: -ms-flexbox; display: flex; - flex-flow: column; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; margin-top: 25px; } #fight-page .gameActions .gameLogs { height: 10vh; width: 100%; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; border-radius: 5px; padding: 5px; font-size: 1.6rem; @@ -615,7 +884,8 @@ html { } #fight-page .gameActions .gameLogs::-webkit-scrollbar-track { - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); border-radius: 5px; background-color: transparent; } @@ -627,7 +897,8 @@ html { #fight-page .gameActions .gameLogs::-webkit-scrollbar-thumb { border-radius: 5px; - box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); background-color: #020402ff; } @@ -637,20 +908,31 @@ html { } .popupScreenResult { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; background-color: #e8f1f2ff; display: none; - flex-flow: column nowrap; - justify-content: space-between; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; border-radius: 25px; width: 80vw; + max-height: -webkit-fit-content; + max-height: -moz-fit-content; max-height: fit-content; min-height: 12em; position: absolute; left: 50%; top: 50%; - transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); padding: 5vh 15px; z-index: 2; } @@ -661,11 +943,15 @@ html { } .popupScreenResult .exitButton { - align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; line-height: 1; margin: 2vh; color: #020402ff; - user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; cursor: pointer; } @@ -685,8 +971,13 @@ html { margin: 1em; } +.popupScreenResult .modalParagraph span { + font-weight: bold; +} + .popupScreenResult .modalPlayAgainButton { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; line-height: 1.8; font-size: 0.7em; background-color: #020402ff; @@ -1124,30 +1415,77 @@ html { } } +@-webkit-keyframes c1 { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 20% { + -webkit-transform: scale(1.5, 1.5); + transform: scale(1.5, 1.5); + } + 80% { + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); + } + 100% { + -webkit-transform: scale(-1.5, -1.5); + transform: scale(-1.5, -1.5); + } +} + @keyframes c1 { 0% { - transform: scale(1, 1); + -webkit-transform: scale(1, 1); + transform: scale(1, 1); } 20% { - transform: scale(1.5, 1.5); + -webkit-transform: scale(1.5, 1.5); + transform: scale(1.5, 1.5); } 80% { - transform: scale(-1, -1); + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); } 100% { - transform: scale(-1.5, -1.5); + -webkit-transform: scale(-1.5, -1.5); + transform: scale(-1.5, -1.5); + } +} + +@-webkit-keyframes c2 { + 0% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 5% { + -webkit-transform: scale(2, 2); + transform: scale(2, 2); + } + 49% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 80% { + opacity: 0; + } + 100% { + opacity: 1; } } @keyframes c2 { 0% { - transform: scale(1, 1); + -webkit-transform: scale(1, 1); + transform: scale(1, 1); } 5% { - transform: scale(2, 2); + -webkit-transform: scale(2, 2); + transform: scale(2, 2); } 49% { - transform: scale(1, 1); + -webkit-transform: scale(1, 1); + transform: scale(1, 1); } 80% { opacity: 0; @@ -1157,15 +1495,36 @@ html { } } +@-webkit-keyframes c3 { + 0% { + -webkit-transform: scale(1.5, 1.5); + transform: scale(1.5, 1.5); + } + 50% { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 75% { + -webkit-transform: scale(-2, -2); + transform: scale(-2, -2); + } + 100% { + opacity: 0; + } +} + @keyframes c3 { 0% { - transform: scale(1.5, 1.5); + -webkit-transform: scale(1.5, 1.5); + transform: scale(1.5, 1.5); } 50% { - transform: scale(1, 1); + -webkit-transform: scale(1, 1); + transform: scale(1, 1); } 75% { - transform: scale(-2, -2); + -webkit-transform: scale(-2, -2); + transform: scale(-2, -2); } 100% { opacity: 0; @@ -1227,14 +1586,16 @@ html { font-size: 24px; } #choose-page .choosePagePlayers { - grid-template-columns: repeat(6, 1fr); + -ms-grid-columns: repeat(6, 1fr); + grid-template-columns: repeat(6, 1fr); } #choose-page .choosePagePlayers img { max-width: 8vh; margin: 2vh; } #choose-page #pokemonList { - grid-template-columns: repeat(6, 1fr); + -ms-grid-columns: repeat(6, 1fr); + grid-template-columns: repeat(6, 1fr); } #choose-page #pokemonList img { max-height: 10vh; @@ -1250,15 +1611,24 @@ html { font-size: 2.4rem; } #fight-page .battleArea { + display: -webkit-box; + display: -ms-flexbox; display: flex; } #fight-page .battleArea .pokemonDetails { min-height: 160px; - flex-flow: column; - align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } #fight-page .battleArea .pokemonDetails #pokemon-image-player2 { - order: 0; + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; } #fight-page .battleArea .pokemonDetails .boom-player1 { z-index: 99; @@ -1269,8 +1639,30 @@ html { background: #fff; position: absolute; margin: auto; - box-shadow: 0px -9px 0 #000, 50px 10px 0 -6px #fff, 55px 5px 0 -6px #000, 60px 60px 0 -4px #fff, 66px 64px 0 -4px #000, -3px 65px 0 5px #fff, -4px 72px 0 5px #000, -50px 10px 0 -10px #fff, -54px 5px 0 -10px #000, -50px 50px 0 -15px #fff, -54px 53px 0 -15px #000; - animation: c1 .3s infinite; + -webkit-box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + -webkit-animation: c1 .3s infinite; + animation: c1 .3s infinite; top: 0; left: 0; bottom: 0; @@ -1286,22 +1678,51 @@ html { left: 10px; top: 75px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c2 .6s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c2 .6s infinite; + animation: c2 .6s infinite; } #fight-page .battleArea .pokemonDetails .boom-player1:after { content: ''; width: 50px; height: 50px; - transform: rotate(180deg); + -webkit-transform: rotate(180deg); + transform: rotate(180deg); border-radius: 50%; background: #fff; position: absolute; left: 80px; top: -5px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c3 .5s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c3 .5s infinite; + animation: c3 .5s infinite; } #fight-page .battleArea .pokemonDetails .boom-player2 { z-index: 99; @@ -1312,8 +1733,30 @@ html { background: #fff; position: absolute; margin: auto; - box-shadow: 0px -9px 0 #000, 50px 10px 0 -6px #fff, 55px 5px 0 -6px #000, 60px 60px 0 -4px #fff, 66px 64px 0 -4px #000, -3px 65px 0 5px #fff, -4px 72px 0 5px #000, -50px 10px 0 -10px #fff, -54px 5px 0 -10px #000, -50px 50px 0 -15px #fff, -54px 53px 0 -15px #000; - animation: c1 .3s infinite; + -webkit-box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + box-shadow: 0px -9px 0 #000, + 50px 10px 0 -6px #fff, + 55px 5px 0 -6px #000, + 60px 60px 0 -4px #fff, + 66px 64px 0 -4px #000, + -3px 65px 0 5px #fff, + -4px 72px 0 5px #000, + -50px 10px 0 -10px #fff, + -54px 5px 0 -10px #000, + -50px 50px 0 -15px #fff, + -54px 53px 0 -15px #000; + -webkit-animation: c1 .3s infinite; + animation: c1 .3s infinite; top: 0; left: 0; bottom: 0; @@ -1329,37 +1772,75 @@ html { left: 10px; top: 75px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c2 .6s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c2 .6s infinite; + animation: c2 .6s infinite; } #fight-page .battleArea .pokemonDetails .boom-player2:after { content: ''; width: 50px; height: 50px; - transform: rotate(180deg); + -webkit-transform: rotate(180deg); + transform: rotate(180deg); border-radius: 50%; background: #fff; position: absolute; left: 80px; top: -5px; margin: auto; - box-shadow: -4px -5px 0 #000, 20px -8px 0 -2px #fff, 22px -13px 0 -2px #000, 28px 10px 0 -4px #fff, 32px 12px 0 -4px #000, 5px 20px 0 2px #fff, 2px 24px 0 2px #000; - animation: c3 .5s infinite; + -webkit-box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + box-shadow: -4px -5px 0 #000, + 20px -8px 0 -2px #fff, + 22px -13px 0 -2px #000, + 28px 10px 0 -4px #fff, + 32px 12px 0 -4px #000, + 5px 20px 0 2px #fff, + 2px 24px 0 2px #000; + -webkit-animation: c3 .5s infinite; + animation: c3 .5s infinite; } #fight-page .gameActions { - flex-flow: row; - justify-content: space-evenly; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row; + flex-flow: row; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; } #fight-page .gameActions .gameLogs { height: 30vh; width: 45%; - order: 2; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; } #fight-page .gameActions .buttonsContainer { width: 45%; } .popupScreenResult { width: 50vw; + max-height: -webkit-fit-content; + max-height: -moz-fit-content; max-height: fit-content; min-height: 12em; } @@ -1377,7 +1858,8 @@ html { margin: 1.4em; } .popupScreenResult .modalPlayAgainButton { - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; line-height: 1.8; font-size: 0.7em; background-color: #020402ff; @@ -1419,8 +1901,10 @@ footer { position: fixed; top: 50%; margin-left: .5em; - transform: rotate(-90deg) translate(-50%); - transform-origin: top left; + -webkit-transform: rotate(-90deg) translate(-50%); + transform: rotate(-90deg) translate(-50%); + -webkit-transform-origin: top left; + transform-origin: top left; white-space: nowrap; } @@ -1432,7 +1916,8 @@ footer { margin: 0.5em; border-radius: 1em; font-size: 0.9em; - box-shadow: 1px 1px 3px #020402ff; + -webkit-box-shadow: 1px 1px 3px #020402ff; + box-shadow: 1px 1px 3px #020402ff; text-transform: uppercase; cursor: pointer; } @@ -1444,6 +1929,7 @@ footer { .battleButton { background-color: #e8f1f2ff; color: #020402ff; + -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } diff --git a/styles/app.css.map b/styles/app.css.map index 3b28151..509257b 100644 --- a/styles/app.css.map +++ b/styles/app.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "SASS/app.scss", "SASS/_resets.scss",