From 9742bcb6c6bff90555375a8ad1c999a78aca0215 Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Tue, 25 Jan 2022 12:07:01 +0300 Subject: [PATCH 001/284] EPMRPP-72469 || upgrade to webpack 5 (#2981) --- .github/workflows/build.yml | 2 +- app/.babelrc | 2 + app/package-lock.json | 13200 +++++++++++----- app/package.json | 72 +- .../grid/gridHeader/headerCell/headerCell.jsx | 2 +- app/webpack.config.js | 2 +- app/webpack/base.config.js | 15 +- app/webpack/dev.config.js | 14 +- app/webpack/prod.config.js | 56 +- 9 files changed, 9455 insertions(+), 3910 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1167681a17..919c77daec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,7 +23,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node: [11, 12] + node: [12] steps: - name: Get Date diff --git a/app/.babelrc b/app/.babelrc index 0a3738d690..59d89e45bc 100644 --- a/app/.babelrc +++ b/app/.babelrc @@ -14,6 +14,8 @@ "@babel/plugin-transform-runtime", ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-proposal-class-properties", { "loose": true }], + ["@babel/plugin-proposal-private-methods", { "loose": true }], + ["@babel/plugin-proposal-private-property-in-object", { "loose": true }], [ "react-intl", { diff --git a/app/package-lock.json b/app/package-lock.json index ce204da9dc..19bc4232b0 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -13,35 +13,219 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/compat-data": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", + "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", + "dev": true + }, "@babel/core": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.3.tgz", - "integrity": "sha512-QfQ5jTBgXLzJuo7Mo8bZK/ePywmgNRgk/UQykiKwEtZPiFIn8ZqE6jB+AnD1hbB1S2xQyL4//it5vuAUOVAMTw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.3", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.3", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.3", - "@babel/types": "^7.6.3", - "convert-source-map": "^1.1.0", + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.7.tgz", + "integrity": "sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.7", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.6.1" + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helpers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", + "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" + } + }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" } }, "ms": { @@ -49,6 +233,24 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true + }, + "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 + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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 } } }, @@ -112,6 +314,26 @@ "@babel/types": "^7.4.4" } }, + "@babel/helper-compilation-targets": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", + "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "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 + } + } + }, "@babel/helper-create-class-features-plugin": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.6.0.tgz", @@ -126,102 +348,417 @@ "@babel/helper-split-export-declaration": "^7.4.4" } }, - "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", - "dev": true, - "requires": { - "@babel/types": "^7.5.5" - } - }, - "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", + "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^4.7.1" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "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": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.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.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + } } }, - "@babel/helper-module-transforms": { + "@babel/helper-define-map": { "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", + "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", "@babel/types": "^7.5.5", "lodash": "^4.17.13" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", - "dev": true + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "resolve": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.1.tgz", + "integrity": "sha512-lfEImVbnolPuaSZuLQ52cAxPBHeI77sPwCOWRdy12UG/CNa8an7oBHH1R+Fp1/mUqSJi4c8TIP6FOIPSZAUrEQ==", + "dev": true, + "requires": { + "is-core-module": "^2.8.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + }, + "dependencies": { + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", + "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", + "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", + "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "dev": true, + "requires": { + "@babel/types": "^7.5.5" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", + "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/types": "^7.5.5", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", + "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true }, "@babel/helper-regex": { "version": "7.5.5", @@ -267,6 +804,27 @@ "@babel/types": "^7.0.0" } }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + }, + "dependencies": { + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, "@babel/helper-split-export-declaration": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", @@ -276,6 +834,18 @@ "@babel/types": "^7.4.4" } }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, "@babel/helper-wrap-function": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", @@ -311,24 +881,35 @@ } }, "@babel/node": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.7.0.tgz", - "integrity": "sha512-CZFTjfCGysChOJ90ksndqct5bXkByzV5Ef8YgYS3A513MhyFQgsXJMRu2QyGOlfoP3hBZ3AmDd37ARyv/L1Zvw==", + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/node/-/node-7.16.8.tgz", + "integrity": "sha512-V2dopEtPUL4LD+e8UtMIZB6BbsmMsS/7E1ZAvWNINzBfi7Cf3X9MLCpzHVZT4HeeF1lQl72IRtqqVt2RUImwyA==", "dev": true, "requires": { - "@babel/register": "^7.7.0", - "commander": "^2.8.1", - "core-js": "^3.2.1", - "lodash": "^4.17.13", + "@babel/register": "^7.16.8", + "commander": "^4.0.1", + "core-js": "^3.20.2", "node-environment-flags": "^1.0.5", - "regenerator-runtime": "^0.13.3", + "regenerator-runtime": "^0.13.4", "v8flags": "^3.1.1" }, "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, "core-js": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.1.tgz", - "integrity": "sha512-KX/dnuY/J8FtEwbnrzmAjUYgLqtk+cxM86hfG60LGiW3MmltIc2yAmDgBgEkfm0blZhUrdr1Zd84J2Y14mLxzg==", + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", + "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", "dev": true } } @@ -339,554 +920,1558 @@ "integrity": "sha512-D8RHPW5qd0Vbyo3qb+YjO5nvUVRTXFLQ/FsDxJU2Nqz4uB5EnUN0ZQSEYpvTIbRuttig1XbHWU5oMeQwQSAA+A==", "dev": true }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz", - "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.5.5", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-proposal-decorators": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz", - "integrity": "sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg==", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.6.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-decorators": "^7.2.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", + "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" + "@babel/helper-remap-async-to-generator": "^7.1.0", + "@babel/plugin-syntax-async-generators": "^7.2.0" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", - "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-decorators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz", - "integrity": "sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-flow": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", - "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "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/plugin-syntax-jsx": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", - "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", + "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "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/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "@babel/plugin-proposal-decorators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz", + "integrity": "sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", - "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-decorators": "^7.16.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "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/plugin-transform-async-to-generator": { + "@babel/plugin-proposal-dynamic-import": { "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", + "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "@babel/plugin-syntax-dynamic-import": "^7.2.0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", - "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", + "@babel/plugin-proposal-json-strings": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", + "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" + "@babel/plugin-syntax-json-strings": "^7.2.0" } }, - "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-dotall-regex": { + "@babel/plugin-proposal-object-rest-spread": { "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", - "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", + "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", - "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/plugin-syntax-object-rest-spread": "^7.2.0" } }, - "@babel/plugin-transform-exponentiation-operator": { + "@babel/plugin-proposal-optional-catch-binding": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz", - "integrity": "sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", - "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", - "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "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/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", + "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "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 + }, + "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/plugin-proposal-unicode-property-regex": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", + "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" } }, - "@babel/plugin-transform-modules-umd": { + "@babel/plugin-syntax-async-generators": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", + "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", - "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { - "regexpu-core": "^4.6.0" + "@babel/helper-plugin-utils": "^7.12.13" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "@babel/plugin-syntax-decorators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz", + "integrity": "sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", "dev": true, "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "@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.0.0" + "@babel/helper-plugin-utils": "^7.8.3" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz", - "integrity": "sha512-1/YogSSU7Tby9rq2VCmhuRg+6pxsHy2rI7w/oo8RKoBt6uBUFG+mk6x13kK+FY1/ggN92HAfg7ADd1v1+NCOKg==", + "@babel/plugin-syntax-flow": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.2.0.tgz", + "integrity": "sha512-r6YMuZDWLtLlu0kqIim5o/3TNRAlWb073HwT3e2nKf9I8IIvOggPrnILYPsrrKilmn/mYEMCf/Z07w3yQJF6dg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-react-display-name": { + "@babel/plugin-syntax-json-strings": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", - "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", + "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", - "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "@babel/plugin-syntax-jsx": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz", + "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==", "dev": true, "requires": { - "@babel/helper-builder-react-jsx": "^7.3.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-react-jsx-self": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", - "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", + "@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.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-react-jsx-source": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz", - "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==", + "@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.0.0", - "@babel/plugin-syntax-jsx": "^7.2.0" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "@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": { - "regenerator-transform": "^0.14.0" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } } }, - "@babel/plugin-transform-reserved-words": { + "@babel/plugin-syntax-object-rest-spread": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-runtime": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.6.2.tgz", - "integrity": "sha512-cqULw/QB4yl73cS5Y0TZlQSjDvNkzDbu0FurTZyHlJpWE5T3PCMdnyV+xXoH1opr1ldyHODe3QAX3OMAii5NxA==", + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", + "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "resolve": "^1.8.1", - "semver": "^5.5.1" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "@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" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", + "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "@babel/plugin-transform-arrow-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", + "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-sticky-regex": { + "@babel/plugin-transform-async-to-generator": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", + "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-remap-async-to-generator": "^7.1.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.3.tgz", + "integrity": "sha512-7hvrg75dubcO3ZI2rjYTzUrEuh1E9IyDEhhB6qfcooxhDA33xx2MasuLVgdxzcP6R/lipAC6n9ub9maNW6RKdw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "lodash": "^4.17.13" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "@babel/plugin-transform-classes": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", + "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-define-map": "^7.5.5", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-optimise-call-expression": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5", + "@babel/helper-split-export-declaration": "^7.4.4", + "globals": "^11.1.0" } }, - "@babel/plugin-transform-typeof-symbol": { + "@babel/plugin-transform-computed-properties": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", + "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-typescript": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz", - "integrity": "sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ==", + "@babel/plugin-transform-destructuring": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", + "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.6.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-typescript": "^7.2.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-transform-unicode-regex": { + "@babel/plugin-transform-dotall-regex": { "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", - "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", + "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -894,80 +2479,1334 @@ "regexpu-core": "^4.6.0" } }, - "@babel/polyfill": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.6.0.tgz", - "integrity": "sha512-q5BZJI0n/B10VaQQvln1IlDK3BTBJFbADx7tv+oXDPIDZuTo37H5Adb9jhlXm/fEN4Y7/64qD9mnrJJG7rmaTw==", + "@babel/plugin-transform-duplicate-keys": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", + "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", "dev": true, "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" - }, - "dependencies": { - "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", - "dev": true - } + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/preset-env": { + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", + "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-flow-strip-types": { "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.3.tgz", - "integrity": "sha512-CWQkn7EVnwzlOdR5NOm2+pfgSNEZmvGjOhlCHBDq0J8/EStr+G+FvPEiz9B56dR6MoiUFjXhfE4hjLoAKKJtIQ==", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.6.3.tgz", + "integrity": "sha512-l0ETkyEofkqFJ9LS6HChNIKtVJw2ylKbhYMlJ5C6df+ldxxaLIyXY4yOdDQQspfFpV8/vDiaWoJlvflstlYNxg==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.3", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.3", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.3", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" + "@babel/plugin-syntax-flow": "^7.2.0" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", + "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", + "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", + "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", + "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", + "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", + "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.1.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", + "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", + "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.1.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.3.tgz", + "integrity": "sha512-jTkk7/uE6H2s5w6VlMHeWuH+Pcy2lmdwFoeWCVnvIrDUnB5gQqTVI8WfmEAhF2CDEarGrknZcmSFg1+bkfCoSw==", + "dev": true, + "requires": { + "regexpu-core": "^4.6.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", + "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", + "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.5.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", + "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.4.4", + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", + "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.6.3.tgz", + "integrity": "sha512-1/YogSSU7Tby9rq2VCmhuRg+6pxsHy2rI7w/oo8RKoBt6uBUFG+mk6x13kK+FY1/ggN92HAfg7ADd1v1+NCOKg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.2.0.tgz", + "integrity": "sha512-Htf/tPa5haZvRMiNSQSFifK12gtr/8vwfr+A9y69uF0QcU77AVu4K7MiHEkTxF7lQoHOL0F9ErqgfNEAKgXj7A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.3.0.tgz", + "integrity": "sha512-a/+aRb7R06WcKvQLOu4/TpjKOdvVEKRLWFpKcNuHhiREPgGRB4TQJxq07+EZLS8LFVYpfq1a5lDUnuMdcCpBKg==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.3.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", + "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.2.0.tgz", + "integrity": "sha512-v6S5L/myicZEy+jr6ielB0OR8h+EH/1QFx/YJ7c7Ua+7lqsjj/vW6fD5FR9hB/6y7mGbfT4vAURn3xqBxsUcdg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.5.0.tgz", + "integrity": "sha512-58Q+Jsy4IDCZx7kqEZuSDdam/1oW8OdDX8f+Loo6xyxdfg1yF0GE2XNJQSTZCaMol93+FBzpWiPEwtbMloAcPg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.2.0" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", + "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", + "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", + "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.8.tgz", + "integrity": "sha512-6Kg2XHPFnIarNweZxmzbgYnnWsXxkx9WQUVk2sksBRL80lBC1RAQV3wQagWxdCHiYHqPN+oenwNIuttlYgIbQQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", + "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", + "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", + "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.0.0" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", + "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", + "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.6.3.tgz", + "integrity": "sha512-aiWINBrPMSC3xTXRNM/dfmyYuPNKY/aexYqBgh0HBI5Y+WO5oRAqW/oROYeYHrF4Zw12r9rK4fMk/ZlAmqx/FQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.6.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.2.0" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + } + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", + "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" + } + }, + "@babel/polyfill": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.12.1.tgz", + "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==", + "dev": true, + "requires": { + "core-js": "^2.6.5", + "regenerator-runtime": "^0.13.4" + }, + "dependencies": { + "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 + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + } + } + }, + "@babel/preset-env": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.8.tgz", + "integrity": "sha512-9rNKgVCdwHb3z1IlbMyft6yIXIeP3xz6vWvGaLHrJThuEIqWfHb0DNBH9VuTgnDfdbUDhkmkvMZS/YMCtP7Elg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.7", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@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-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", + "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.8", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", + "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", + "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", + "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", + "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", + "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", + "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", + "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@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-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-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-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-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", + "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", + "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", + "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", + "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/runtime": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz", + "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", + "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.16.8", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.16.10", + "@babel/types": "^7.16.8", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.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" + } + }, + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001301", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz", + "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==", + "dev": true + }, + "core-js-compat": { + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "dev": true, + "requires": { + "browserslist": "^4.19.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 + } + } + }, + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "electron-to-chromium": { + "version": "1.4.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.49.tgz", + "integrity": "sha512-k/0t1TRfonHIp8TJKfjBu2cKj8MqYTiEpOhci+q7CVEE5xnCQnx1pTa+V8b/sdhe4S3PR4p4iceEQWhGrKQORQ==", + "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 + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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/preset-flow": { @@ -980,17 +3819,98 @@ "@babel/plugin-transform-flow-strip-types": "^7.0.0" } }, - "@babel/preset-react": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.6.3.tgz", - "integrity": "sha512-07yQhmkZmRAfwREYIQgW0HEwMY9GBJVuPY4Q12UC72AbfaawuupVWa8zQs2tlL+yun45Nv/1KreII/0PLfEsgA==", + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^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/preset-react": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", + "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + }, + "dependencies": { + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/plugin-syntax-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", + "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", + "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-jsx": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/types": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", + "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + } } }, "@babel/preset-typescript": { @@ -1004,18 +3924,29 @@ } }, "@babel/register": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.7.0.tgz", - "integrity": "sha512-HV3GJzTvSoyOMWGYn2TAh6uL6g+gqKTgEZ99Q3+X9UURT1VPT/WcU46R61XftIc5rXytcOHZ4Z0doDlsjPomIg==", + "version": "7.16.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.9.tgz", + "integrity": "sha512-jJ72wcghdRIlENfvALcyODhNoGE5j75cYHdC+aQMh6cU/P86tiiXTp9XYZct1UxUMo/4+BgQRyNZEGx0KWGS+g==", "dev": true, "requires": { + "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", - "lodash": "^4.17.13", "make-dir": "^2.1.0", "pirates": "^4.0.0", "source-map-support": "^0.5.16" }, "dependencies": { + "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" + } + }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -1027,10 +3958,25 @@ "pkg-dir": "^3.0.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 + }, + "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" + } + }, "source-map-support": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", - "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -1145,6 +4091,12 @@ "minimist": "^1.2.0" } }, + "@discoveryjs/json-ext": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.6.tgz", + "integrity": "sha512-ws57AidsDvREKrZKYffXddNkyaF14iHNHm8VQnZH6t99E8gczjNN0GpvcGny0imC80yQ0tHz1xVUKk/KFQSUyA==", + "dev": true + }, "@emotion/cache": { "version": "10.0.19", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.19.tgz", @@ -2287,6 +5239,64 @@ "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", "dev": true }, + "css-loader": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz", + "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "dependencies": { + "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 + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "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 + }, "file-loader": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", @@ -2320,6 +5330,46 @@ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "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 + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "qs": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.0.tgz", @@ -2358,6 +5408,36 @@ "schema-utils": "^1.0.0" } }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + } + } + }, "webpack": { "version": "4.43.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", @@ -2652,6 +5732,17 @@ "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", "dev": true }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, "mini-css-extract-plugin": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.7.0.tgz", @@ -2705,6 +5796,25 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.1", "webpack-sources": "^1.4.1" + }, + "dependencies": { + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } } } } @@ -2993,6 +6103,12 @@ "loader-utils": "^1.2.3" } }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, "@types/babel__core": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.3.tgz", @@ -3034,12 +6150,99 @@ "@babel/types": "^7.3.0" } }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.0.tgz", + "integrity": "sha512-JUYa/5JwoqikCy7O7jKtuNe9Z4ZZt615G+1EKfaDGSNEpzaA2OwbV/G1v08Oa7fd1XzlFoSCvt9ePl9/6FyAug==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", "dev": true }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, "@types/glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", @@ -3077,6 +6280,15 @@ "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", "dev": true }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/invariant": { "version": "2.2.30", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.30.tgz", @@ -3113,6 +6325,18 @@ "@types/istanbul-lib-report": "*" } }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -3131,6 +6355,12 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", "dev": true }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, "@types/prop-types": { "version": "15.7.3", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", @@ -3142,6 +6372,18 @@ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, "@types/reach__router": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.2.6.tgz", @@ -3170,6 +6412,40 @@ "@types/react": "*" } }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/source-list-map": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", @@ -3287,6 +6563,15 @@ } } }, + "@types/ws": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", + "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/yargs": { "version": "13.0.3", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.3.tgz", @@ -3368,181 +6653,172 @@ } }, "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, - "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, - "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, - "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" + "envinfo": "^7.7.3" } }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true + }, "@xmldom/xmldom": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz", @@ -3598,6 +6874,12 @@ "acorn-walk": "^6.0.1" } }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, "acorn-jsx": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", @@ -3732,12 +7014,53 @@ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", "dev": true }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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 + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, "ajv-keywords": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "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 + }, "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -3805,10 +7128,10 @@ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { @@ -4253,6 +7576,24 @@ "num2fraction": "^1.2.2", "postcss": "^7.0.18", "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, "aws-sign2": { @@ -4424,27 +7765,146 @@ } }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^3.3.1", + "loader-utils": "^1.4.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, "dependencies": { + "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 + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "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 + }, "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "requires": { "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "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" + } + }, + "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" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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 + }, + "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" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -4621,6 +8081,93 @@ "integrity": "sha512-S6d+tEzc5Af1tKIMbsf2QirCcPdQ+mKUCY2H1nJj1DyA1ShwpsoxEOAwbWsG5gcXNV/olpvQd9vrUWRx4bnhpw==", "dev": true }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "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 + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", + "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.20.0" + }, + "dependencies": { + "browserslist": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", + "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001286", + "electron-to-chromium": "^1.4.17", + "escalade": "^3.1.1", + "node-releases": "^2.0.1", + "picocolors": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001301", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz", + "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==", + "dev": true + }, + "core-js-compat": { + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", + "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + } + }, + "electron-to-chromium": { + "version": "1.4.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.49.tgz", + "integrity": "sha512-k/0t1TRfonHIp8TJKfjBu2cKj8MqYTiEpOhci+q7CVEE5xnCQnx1pTa+V8b/sdhe4S3PR4p4iceEQWhGrKQORQ==", + "dev": true + }, + "node-releases": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", + "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "dev": true + }, + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, "babel-plugin-react-docgen": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-react-docgen/-/babel-plugin-react-docgen-3.1.0.tgz", @@ -4824,6 +8371,27 @@ "source-map": "^0.5.0" } }, + "@babel/plugin-proposal-class-properties": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.5.5.tgz", + "integrity": "sha512-AF79FsnWFxjlaosgdi421vmYG6/jg79bVD0dpD44QdgobzHKuLZ6S3vl8la9qIeSwGi8i1fS0O1mfuDAAdo1/A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.5.5", + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.6.0.tgz", + "integrity": "sha512-ZSyYw9trQI50sES6YxREXKu+4b7MAg6Qx2cvyDDYjP2Hpzd3FleOUwC9cqn1+za8d0A2ZU8SHujxFao956efUg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.6.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-decorators": "^7.2.0" + } + }, "@babel/plugin-proposal-object-rest-spread": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz", @@ -5500,9 +9068,9 @@ } }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -5660,6 +9228,18 @@ "integrity": "sha1-IsxKNKCrxDlQ9CxkEQJKP2NmtFo=", "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.30000999", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000999.tgz", @@ -6018,9 +9598,9 @@ } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { @@ -6049,9 +9629,9 @@ } }, "circular-dependency-plugin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", - "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", "dev": true }, "class-utils": { @@ -6365,6 +9945,18 @@ "simple-swizzle": "^0.2.2" } }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -6431,9 +10023,9 @@ }, "dependencies": { "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", "dev": true } } @@ -6462,55 +10054,68 @@ } }, "compression-webpack-plugin": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-3.0.0.tgz", - "integrity": "sha512-ls+oKw4eRbvaSv/hj9NmctihhBcR26j76JxV0bLRLcWhrUBdQFgd06z/Kgg7exyQvtWWP484wZxs0gIUX3NO0Q==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz", + "integrity": "sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw==", "dev": true, "requires": { - "cacache": "^11.2.0", - "find-cache-dir": "^3.0.0", - "neo-async": "^2.5.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.4.0", - "webpack-sources": "^1.0.1" + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "dependencies": { - "cacache": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", - "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", "dev": true, "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "requires": { - "yallist": "^3.0.2" + "fast-deep-equal": "^3.1.3" } }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "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 + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } } } }, @@ -6891,6 +10496,17 @@ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, "webpack": { "version": "4.43.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", @@ -6920,6 +10536,25 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.1", "webpack-sources": "^1.4.1" + }, + "dependencies": { + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } } } } @@ -7008,180 +10643,439 @@ } }, "cross-env": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-6.0.3.tgz", - "integrity": "sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0" + "cross-spawn": "^7.0.1" }, "dependencies": { "cross-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", - "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "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" + } + }, + "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 + }, + "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 + }, + "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" + } + } + } + }, + "cross-fetch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz", + "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==", + "requires": { + "node-fetch": "2.6.1" + }, + "dependencies": { + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "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" + } + }, + "css-animation": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz", + "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==", + "requires": { + "babel-runtime": "6.x", + "component-classes": "^1.2.5" + } + }, + "css-declaration-sorter": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.1.4.tgz", + "integrity": "sha512-lpfkqS0fctcmZotJGhnxkIyJWvBXgpyi2wsFd4J8VB7wzyrT6Ch/3Q+FMNJpjK4gu1+GN5khOnpU2ZVKrLbhCw==", + "dev": true, + "requires": { + "timsort": "^0.3.0" + } + }, + "css-hot-loader": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/css-hot-loader/-/css-hot-loader-1.4.4.tgz", + "integrity": "sha512-J/qXHz+r7FOT92qMIJfxUk0LC9fecQNZVr0MswQ4FOpKLyOCBjofVMfc6R268bh/5ktkTShrweMr0wWqerC92g==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "lodash": "^4.17.5", + "normalize-url": "^1.9.1" + } + }, + "css-in-js-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", + "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", + "dev": true, + "requires": { + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "css-loader": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.5.1.tgz", + "integrity": "sha512-gEy2w9AnJNnD9Kuo4XAP9VflW/ujKoS9c/syO+uWMlm5igc7LysKzPXaDoR2vroROkSwsTS2tGr1yGGEbZOYZQ==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "semver": "^7.3.5" + }, + "dependencies": { + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "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" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "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 + }, + "jest-worker": { + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "css-select": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.2.1.tgz", + "integrity": "sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^5.1.0", + "domhandler": "^4.3.0", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" } }, - "path-key": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.0.tgz", - "integrity": "sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==", + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, - "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==", + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "requires": { - "shebang-regex": "^3.0.0" + "domelementtype": "^2.2.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==", + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { - "isexe": "^2.0.0" + "boolbase": "^1.0.0" } } } }, - "cross-fetch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz", - "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==", - "requires": { - "node-fetch": "2.6.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - } - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "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 }, - "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" - } - }, - "css-animation": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/css-animation/-/css-animation-1.6.1.tgz", - "integrity": "sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==", - "requires": { - "babel-runtime": "6.x", - "component-classes": "^1.2.5" - } - }, - "css-hot-loader": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/css-hot-loader/-/css-hot-loader-1.4.4.tgz", - "integrity": "sha512-J/qXHz+r7FOT92qMIJfxUk0LC9fecQNZVr0MswQ4FOpKLyOCBjofVMfc6R268bh/5ktkTShrweMr0wWqerC92g==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "lodash": "^4.17.5", - "normalize-url": "^1.9.1" - } - }, - "css-in-js-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz", - "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==", - "dev": true, - "requires": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "css-loader": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.2.0.tgz", - "integrity": "sha512-QTF3Ud5H7DaZotgdcJjGMvyDj5F3Pn1j/sC6VBEOVp94cbwqyIBdcs/quzj4MC1BKQSrTpQznegH/5giYbhnCQ==", + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, "requires": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.17", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.0.0", - "schema-utils": "^2.0.0" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" }, "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "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 - }, - "schema-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", - "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } } } }, - "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==", + "css-what": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", + "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", "dev": true }, "css.escape": { @@ -7213,6 +11107,69 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "cssnano": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.0.15.tgz", + "integrity": "sha512-ppZsS7oPpi2sfiyV5+i+NbB/3GtQ+ab2Vs1azrZaXWujUSN4o+WdTxlCZIMcT9yLW3VO/5yX3vpyDaQ1nIn8CQ==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.1.10", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.1.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.1.10.tgz", + "integrity": "sha512-BcpSzUVygHMOnp9uG5rfPzTOCb0GAHQkqtUQx8j1oMNF9A1Q8hziOOhiM4bdICpmrBIU85BE64RD5XGYsVQZNA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.0.3", + "cssnano-utils": "^3.0.0", + "postcss-calc": "^8.2.0", + "postcss-colormin": "^5.2.3", + "postcss-convert-values": "^5.0.2", + "postcss-discard-comments": "^5.0.1", + "postcss-discard-duplicates": "^5.0.1", + "postcss-discard-empty": "^5.0.1", + "postcss-discard-overridden": "^5.0.2", + "postcss-merge-longhand": "^5.0.4", + "postcss-merge-rules": "^5.0.4", + "postcss-minify-font-values": "^5.0.2", + "postcss-minify-gradients": "^5.0.4", + "postcss-minify-params": "^5.0.3", + "postcss-minify-selectors": "^5.1.1", + "postcss-normalize-charset": "^5.0.1", + "postcss-normalize-display-values": "^5.0.2", + "postcss-normalize-positions": "^5.0.2", + "postcss-normalize-repeat-style": "^5.0.2", + "postcss-normalize-string": "^5.0.2", + "postcss-normalize-timing-functions": "^5.0.2", + "postcss-normalize-unicode": "^5.0.2", + "postcss-normalize-url": "^5.0.4", + "postcss-normalize-whitespace": "^5.0.2", + "postcss-ordered-values": "^5.0.3", + "postcss-reduce-initial": "^5.0.2", + "postcss-reduce-transforms": "^5.0.2", + "postcss-svgo": "^5.0.3", + "postcss-unique-selectors": "^5.0.2" + } + }, + "cssnano-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.0.0.tgz", + "integrity": "sha512-Pzs7/BZ6OgT+tXXuF12DKR8SmSbzUeVYCtMBbS8lI0uAm3mrYmkyqCXXPsQESI6kmLfEVBppbdVY/el3hg3nAA==", + "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" + } + }, "cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", @@ -7651,50 +11608,112 @@ "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "^5.0.0" }, "dependencies": { "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "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" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "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" + "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" } }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "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 + }, + "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": { - "pump": "^3.0.0" + "path-key": "^3.0.0" + } + }, + "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" + } + }, + "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 + }, + "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 + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", + "dev": true + }, + "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" } } } @@ -7708,6 +11727,12 @@ "strip-bom": "^3.0.0" } }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -7817,12 +11842,6 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -7830,9 +11849,9 @@ "dev": true }, "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, "detect-port": { @@ -8285,6 +12304,12 @@ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, "enzyme": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.10.0.tgz", @@ -8416,6 +12441,12 @@ "string.prototype.trimright": "^2.1.0" } }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, "es-to-primitive": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", @@ -9247,15 +13278,6 @@ } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "expect": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", @@ -9538,6 +13560,12 @@ "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 + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -9562,9 +13590,9 @@ } }, "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -9585,9 +13613,9 @@ "integrity": "sha1-nrnlhboIqvcAVjU40Xu+u81aPbI=" }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, "figures": { @@ -9608,28 +13636,6 @@ "flat-cache": "^2.0.1" } }, - "file-loader": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.2.0.tgz", - "integrity": "sha512-+xZnaK5R8kBJrHK0/6HRlrKNamvVS5rjyuju+rnyxRGuwUJwpAMsVzUl5dz6rK8brkzjV6JpcFNjp6NqV0g1OQ==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", - "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - } - } - }, "file-system-cache": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.0.5.tgz", @@ -9796,18 +13802,6 @@ "locate-path": "^3.0.0" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -9999,6 +13993,12 @@ } } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -10637,6 +14637,12 @@ "globule": "^1.0.0" } }, + "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", @@ -11208,9 +15214,9 @@ } }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, "html-escaper": { @@ -11367,82 +15373,213 @@ "dev": true }, "html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", "dev": true, "requires": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "clean-css": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", "dev": true, "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" } }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", "dev": true }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "domhandler": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.0.tgz", + "integrity": "sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g==", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" + "domelementtype": "^2.2.0" } }, - "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, "requires": { - "commander": "~2.19.0", - "source-map": "~0.6.1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "requires": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + } + }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "requires": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, "dependencies": { "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "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 + }, + "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 } } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -11518,15 +15655,73 @@ } }, "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", + "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "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" + } + }, + "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" + } + }, + "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-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "http-signature": { @@ -11573,6 +15768,12 @@ } } }, + "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 + }, "husky": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.8.tgz", @@ -11737,6 +15938,24 @@ "dev": true, "requires": { "postcss": "^7.0.14" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, "identity-obj-proxy": { @@ -11980,16 +16199,6 @@ } } }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - } - }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -12039,22 +16248,10 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "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 - }, "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, "is-accessor-descriptor": { @@ -12133,6 +16330,15 @@ "ci-info": "^2.0.0" } }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "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", @@ -13205,6 +17411,12 @@ "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", @@ -13301,12 +17513,6 @@ "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==" }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -13331,6 +17537,12 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, "known-css-properties": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.15.0.tgz", @@ -13392,6 +17604,12 @@ "type-check": "~0.3.2" } }, + "lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", + "dev": true + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -13998,6 +18216,12 @@ "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "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 + }, "lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", @@ -14067,406 +18291,762 @@ } } }, - "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", - "dev": true - }, - "longest-streak": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", - "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "longest-streak": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.3.tgz", + "integrity": "sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lowlight": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.11.0.tgz", + "integrity": "sha512-xrGGN6XLL7MbTMdPD6NfWPwY43SNkjf/d0mecSx/CW36fUZTjRHEq0/Cdug3TWKtRXLWi7iMl1eP0olYxj/a4A==", + "requires": { + "fault": "^1.0.2", + "highlight.js": "~9.13.0" + }, + "dependencies": { + "highlight.js": { + "version": "9.13.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", + "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==" + } + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", + "requires": { + "es5-ext": "~0.10.2" + } + }, + "m3u8-parser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.0.tgz", + "integrity": "sha512-48l/OwRyjBm+QhNNigEEcRcgbRvnUjL7rxs597HmW9QSNbyNvt+RcZ9T/d9vxi9A9z7EZrB1POtZYhdRlwYQkQ==", + "requires": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.0", + "global": "^4.4.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "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-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-or-similar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", + "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "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" + } + }, + "markdown-escapes": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", + "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", + "dev": true + }, + "markdown-loader": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/markdown-loader/-/markdown-loader-5.1.0.tgz", + "integrity": "sha512-xtQNozLEL+55ZSPTNwro8epZqf1h7HjAZd/69zNe8lbckDiGVHeLQm849bXzocln2pwRK2A/GrW/7MAmwjcFog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "marked": "^0.7.0" + } + }, + "markdown-table": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", + "dev": true + }, + "markdown-to-jsx": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", + "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "dev": true, + "requires": { + "prop-types": "^15.6.2", + "unquote": "^1.1.0" + } + }, + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" + }, + "material-colors": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" + }, + "mathml-tag-names": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", + "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", + "dev": true + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "dev": true, + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "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": { - "js-tokens": "^3.0.0 || ^4.0.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "mdast-util-compact": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", + "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", "dev": true, "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "unist-util-visit": "^1.1.0" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "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 }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "lowlight": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.11.0.tgz", - "integrity": "sha512-xrGGN6XLL7MbTMdPD6NfWPwY43SNkjf/d0mecSx/CW36fUZTjRHEq0/Cdug3TWKtRXLWi7iMl1eP0olYxj/a4A==", + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, "requires": { - "fault": "^1.0.2", - "highlight.js": "~9.13.0" + "fs-monkey": "1.0.3" + } + }, + "memoizee": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", + "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.53", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" }, "dependencies": { - "highlight.js": { - "version": "9.13.1", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.13.1.tgz", - "integrity": "sha512-Sc28JNQNDzaH6PORtRLMvif9RSn1mYuOoX3omVjnb0+HbpPygU2ALBI0R/wsiqCb4/fcp07Gdo8g+fhtFrQl6A==" + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" } } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "memoizerific": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", + "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=", - "requires": { - "es5-ext": "~0.10.2" + "map-or-similar": "^1.5.0" } }, - "m3u8-parser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.0.tgz", - "integrity": "sha512-48l/OwRyjBm+QhNNigEEcRcgbRvnUjL7rxs597HmW9QSNbyNvt+RcZ9T/d9vxi9A9z7EZrB1POtZYhdRlwYQkQ==", + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, "requires": { - "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.0", - "global": "^4.4.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - } + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" } }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "merge-deep": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", + "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", "dev": true, "requires": { - "tmpl": "1.0.x" + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", "dev": true, "requires": { - "p-defer": "^1.0.0" + "source-map": "^0.6.1" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "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 }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", "dev": true }, - "map-or-similar": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha1-beJlMXSt+12e3DPGnT6Sobdvrwg=", + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "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=", + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "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" + }, + "dependencies": { + "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 + } + } + }, + "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": { - "object-visit": "^1.0.0" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" } }, - "markdown-escapes": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.3.tgz", - "integrity": "sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==", + "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 }, - "markdown-loader": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/markdown-loader/-/markdown-loader-5.1.0.tgz", - "integrity": "sha512-xtQNozLEL+55ZSPTNwro8epZqf1h7HjAZd/69zNe8lbckDiGVHeLQm849bXzocln2pwRK2A/GrW/7MAmwjcFog==", - "dev": true, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", "requires": { - "loader-utils": "^1.2.3", - "marked": "^0.7.0" + "dom-walk": "^0.1.0" } }, - "markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true - }, - "markdown-to-jsx": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz", - "integrity": "sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==", + "mini-css-extract-plugin": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.5.2.tgz", + "integrity": "sha512-Lwgq9qLNyBK6yNLgzssXnq4r2+mB9Mz3cJWlM8kseysHIvTicFhDNimFgY94jjqlwhNzLPsq8wv4X+vOHtMdYA==", "dev": true, "requires": { - "prop-types": "^15.6.2", - "unquote": "^1.1.0" + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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 + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } } }, - "marked": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" - }, - "material-colors": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", - "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, - "mathml-tag-names": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.1.tgz", - "integrity": "sha512-pWB896KPGSGkp1XtyzRBftpTzwSOL0Gfk0wLvxt4f2mgzjY19o0LxJ3U25vNWTzsh7da+KTbuXQoQ3lOJZ8WHw==", + "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 }, - "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "brace-expansion": "^1.1.7" } }, - "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==", + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" } }, - "mdast-util-compact": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.3.tgz", - "integrity": "sha512-nRiU5GpNy62rZppDKbLwhhtw5DXoFMqw9UNZFmlPsNaQCZ//WLjGKUwWMdJrUH+Se7UvtO2gXtAMe0g/N+eI5w==", + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, "requires": { - "unist-util-visit": "^1.1.0" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" } }, - "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", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "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": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { - "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 + "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" + } } } }, - "memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" }, "dependencies": { - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true } } }, - "memoizerific": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", - "integrity": "sha1-fIekZGREwy11Q4VwkF8tvRsagFo=", - "dev": true, - "requires": { - "map-or-similar": "^1.5.0" - } + "mkdir-p": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mkdir-p/-/mkdir-p-0.0.7.tgz", + "integrity": "sha1-JMXb4m2jqZ7xWKHu+aXC3Z3laDw=", + "dev": true }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "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": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "minimist": "^1.2.5" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "moment": { + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.3.tgz", + "integrity": "sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==" + }, + "moo": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", + "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", "dev": true, "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" } }, - "merge-deep": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.3.tgz", - "integrity": "sha512-qtmzAS6t6grwEkNrunqTBdn0qKwFgNWvlxUbAV8es9M7Ot1EbyApytCnvE0jALPa46ZpKDUo527kKiaWplmlFA==", - "dev": true, + "mpd-parser": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.19.2.tgz", + "integrity": "sha512-M5tAIdtBM2TN+OSTz/37T7V+h9ZLvhyNqq4TNIdtjAQ/Hg8UnMRf5nJQDjffcXag3POXi31yUJQEKOXdcAM/nw==", "requires": { - "arr-union": "^3.1.0", - "clone-deep": "^0.2.4", - "kind-of": "^3.0.2" + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.2", + "@xmldom/xmldom": "^0.7.2", + "global": "^4.4.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, "requires": { - "source-map": "^0.6.1" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" } }, - "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==", + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, - "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "mux.js": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.14.1.tgz", + "integrity": "sha512-38kA/xjWRDzMbcpHQfhKbJAME8eTZVsb9U2Puk890oGvGqnyu8B/AkKdICKPHkigfqYX9MY20vje88TP14nhog==", + "requires": { + "@babel/runtime": "^7.11.2" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "dev": true, + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "dev": true, + "optional": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true }, - "microevent.ts": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", - "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "nanoid": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "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", - "braces": "^2.3.1", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", "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": "^3.0.1" }, "dependencies": { "kind-of": { @@ -14477,1662 +19057,1780 @@ } } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "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 + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "dev": true, + "optional": true + }, + "nearley": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.0.tgz", + "integrity": "sha512-2v52FTw7RPqieZr3Gth1luAXZR7Je6q3KaDHY5bjl/paDUdMu35fZ8ICNgiYJRr3tf3NMvIQQR1r27AvEr9CRA==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "commander": "^2.19.0", + "moo": "^0.4.3", + "railroad-diagrams": "^1.0.0", + "randexp": "0.4.6", + "semver": "^5.4.1" } }, - "mime": { + "needle": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "resolved": "https://registry.npmjs.org/needle/-/needle-1.6.0.tgz", + "integrity": "sha1-9SpYWJchIWGOAC+OY4TK2sItYk8=", + "dev": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, "requires": { - "mime-db": "1.40.0" + "lower-case": "^1.1.1" } }, - "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 + "node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", + "dev": true, + "requires": { + "minimatch": "^3.0.2" + } }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dev": true, + "requires": { + "lodash.toarray": "^4.4.0" + } + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, "requires": { - "dom-walk": "^0.1.0" + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" } }, - "mini-css-extract-plugin": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", - "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "node-forge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", + "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", "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=", + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "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 }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "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": { - "brace-expansion": "^1.1.7" + "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 + } } }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "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 }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", "dev": true, "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" } }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "node-releases": { + "version": "1.1.35", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz", + "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==", "dev": true, "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.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 + } } }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", "dev": true, "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" }, "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==", + "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": { - "is-plain-object": "^2.0.4" + "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" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" } + }, + "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 } } }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", - "dev": true - } + "abbrev": "1" } }, - "mkdir-p": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mkdir-p/-/mkdir-p-0.0.7.tgz", - "integrity": "sha1-JMXb4m2jqZ7xWKHu+aXC3Z3laDw=", + "nopt-usage": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/nopt-usage/-/nopt-usage-0.1.0.tgz", + "integrity": "sha1-sYuMGD4YEEfKnmO3zefPxwLMpXk=", "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==", + "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" + } + }, + "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": { - "minimist": "^1.2.5" + "remove-trailing-separator": "^1.0.1" } }, - "moment": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.3.tgz", - "integrity": "sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==" + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true }, - "moo": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/moo/-/moo-0.4.3.tgz", - "integrity": "sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==", + "normalize-selector": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", + "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", "dev": true }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", "dev": true, "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" } }, - "mpd-parser": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.19.2.tgz", - "integrity": "sha512-M5tAIdtBM2TN+OSTz/37T7V+h9ZLvhyNqq4TNIdtjAQ/Hg8UnMRf5nJQDjffcXag3POXi31yUJQEKOXdcAM/nw==", + "npm-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-name/-/npm-name-3.0.0.tgz", + "integrity": "sha1-9y5AR5k6C/kyp9jbeAur/3e6cj8=", + "dev": true, "requires": { - "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.2", - "@xmldom/xmldom": "^0.7.2", - "global": "^4.4.0" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - } + "got": "^6.3.0", + "lodash.zip": "^4.0.0", + "registry-url": "^3.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "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" + } }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "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" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "mux.js": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-5.14.1.tgz", - "integrity": "sha512-38kA/xjWRDzMbcpHQfhKbJAME8eTZVsb9U2Puk890oGvGqnyu8B/AkKdICKPHkigfqYX9MY20vje88TP14nhog==", - "requires": { - "@babel/runtime": "^7.11.2" - }, - "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - } - } + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "dev": true }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "nyc": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", + "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", "dev": true, - "optional": true, "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" + "archy": "^1.0.0", + "caching-transform": "^3.0.2", + "convert-source-map": "^1.6.0", + "cp-file": "^6.2.0", + "find-cache-dir": "^2.1.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "merge-source-map": "^1.1.0", + "resolve-from": "^4.0.0", + "rimraf": "^2.6.3", + "signal-exit": "^3.0.2", + "spawn-wrap": "^1.4.2", + "test-exclude": "^5.2.3", + "uuid": "^3.3.2", + "yargs": "^13.2.2", + "yargs-parser": "^13.0.0" }, "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, - "optional": true, "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" } }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", - "dev": true, - "optional": true, - "requires": { - "glob": "^6.0.1" - } - } - } - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "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" - }, - "dependencies": { - "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==", + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true } } }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "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 }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", - "dev": true, - "optional": true - }, - "nearley": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.19.0.tgz", - "integrity": "sha512-2v52FTw7RPqieZr3Gth1luAXZR7Je6q3KaDHY5bjl/paDUdMu35fZ8ICNgiYJRr3tf3NMvIQQR1r27AvEr9CRA==", - "dev": true, - "requires": { - "commander": "^2.19.0", - "moo": "^0.4.3", - "railroad-diagrams": "^1.0.0", - "randexp": "0.4.6", - "semver": "^5.4.1" - } + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "needle": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-1.6.0.tgz", - "integrity": "sha1-9SpYWJchIWGOAC+OY4TK2sItYk8=", + "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": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4" + "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" + } + } } }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", "dev": true }, - "nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", "dev": true }, - "next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=" }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "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": { - "lower-case": "^1.1.1" + "isobject": "^3.0.0" } }, - "node-dir": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", - "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=", - "dev": true, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { - "minimatch": "^3.0.2" + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" } }, - "node-emoji": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", - "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", "dev": true, "requires": { - "lodash.toarray": "^4.4.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "object.fromentries": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", "dev": true, "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" } }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-gyp": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", - "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "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": { - "fstream": "^1.0.0", - "glob": "^7.0.3", - "graceful-fs": "^4.1.2", - "mkdirp": "^0.5.0", - "nopt": "2 || 3", - "npmlog": "0 || 1 || 2 || 3 || 4", - "osenv": "0", - "request": "^2.87.0", - "rimraf": "2", - "semver": "~5.3.0", - "tar": "^2.0.0", - "which": "1" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } + "isobject": "^3.0.1" } }, - "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-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, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", "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" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" }, "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "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==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } } } }, - "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=", + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true }, - "node-notifier": { - "version": "5.4.3", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", - "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "dev": true, "requires": { - "growly": "^1.3.0", - "is-wsl": "^1.1.0", - "semver": "^5.5.0", - "shellwords": "^0.1.1", - "which": "^1.3.0" + "ee-first": "1.1.1" } }, - "node-releases": { - "version": "1.1.35", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.35.tgz", - "integrity": "sha512-JGcM/wndCN/2elJlU0IGdVEJQQnJwsLbgPCFd2pY7V0mxf17bZ0Gb/lgOtL29ZQhvEX5shnVhxQyZz3ex94N8w==", + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "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 - } + "wrappy": "1" } }, - "node-sass": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", - "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "async-foreach": "^0.1.3", - "chalk": "^1.1.1", - "cross-spawn": "^3.0.0", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "in-publish": "^2.0.0", - "lodash": "^4.17.15", - "meow": "^3.7.0", - "mkdirp": "^0.5.1", - "nan": "^2.13.2", - "node-gyp": "^3.8.0", - "npmlog": "^4.0.0", - "request": "^2.88.0", - "sass-graph": "2.2.5", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "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" - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "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 - } + "mimic-fn": "^1.0.0" } }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "dev": true, "requires": { - "abbrev": "1" + "is-wsl": "^1.1.0" } }, - "nopt-usage": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/nopt-usage/-/nopt-usage-0.1.0.tgz", - "integrity": "sha1-sYuMGD4YEEfKnmO3zefPxwLMpXk=", + "opencollective-postinstall": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", "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==", + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "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" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", "dev": true, "requires": { - "remove-trailing-separator": "^1.0.1" + "url-parse": "^1.4.3" } }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "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 }, - "normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "^4.0.1", - "prepend-http": "^1.0.0", - "query-string": "^4.1.0", - "sort-keys": "^1.0.0" - } + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, - "npm-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-name/-/npm-name-3.0.0.tgz", - "integrity": "sha1-9y5AR5k6C/kyp9jbeAur/3e6cj8=", + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "requires": { - "got": "^6.3.0", - "lodash.zip": "^4.0.0", - "registry-url": "^3.0.0" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "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=", + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { - "path-key": "^2.0.0" + "p-reduce": "^1.0.0" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "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": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "p-try": "^2.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==", + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "boolbase": "~1.0.0" + "p-limit": "^2.0.0" } }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, - "nyc": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", - "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, "requires": { - "archy": "^1.0.0", - "caching-transform": "^3.0.2", - "convert-source-map": "^1.6.0", - "cp-file": "^6.2.0", - "find-cache-dir": "^2.1.0", - "find-up": "^3.0.0", - "foreground-child": "^1.5.6", - "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "merge-source-map": "^1.1.0", - "resolve-from": "^4.0.0", - "rimraf": "^2.6.3", - "signal-exit": "^3.0.2", - "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.3", - "uuid": "^3.3.2", - "yargs": "^13.2.2", - "yargs-parser": "^13.0.0" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } + "@types/retry": "^0.12.0", + "retry": "^0.13.1" } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "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 }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "package-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", + "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", "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" - } - } + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" } }, - "object-hash": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true - }, - "object-inspect": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", - "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", "dev": true }, - "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, "requires": { - "isobject": "^3.0.0" + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "no-case": "^2.2.0" } }, - "object.entries": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", - "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.12.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } } }, - "object.fromentries": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", - "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.15.0", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "parse-diff": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.3.2.tgz", + "integrity": "sha1-QH1sHmzKs4e8aU6KWN38iJiamhs=", + "dev": true + }, + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "error-ex": "^1.2.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "dev": true, "requires": { - "isobject": "^3.0.1" + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } } }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "no-case": "^3.0.4", + "tslib": "^2.0.3" }, "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "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==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, "requires": { - "has": "^1.0.3" + "tslib": "^2.0.3" } }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==" - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } + "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 }, - "on-headers": { + "path-dirname": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "wrappy": "1" + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "perf-cascade": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/perf-cascade/-/perf-cascade-2.5.4.tgz", + "integrity": "sha512-Q3KwPeUsxm4CsePQiCN26T2AYTOy0QyDw3FOEegPsAFgvcLpmxCkmgjaFk2VhuYmgjS7Ng/lCK6JF9lBNIzJwg==", + "requires": { + "@types/har-format": "^1.2.3" } }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", + "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", + "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": { - "is-wsl": "^1.1.0" + "pinkie": "^2.0.0" } }, - "opencollective-postinstall": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", - "dev": true - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "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": { - "is-wsl": "^1.1.0" + "node-modules-regexp": "^1.0.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, + "pkcs7": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz", + "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "@babel/runtime": "^7.5.5" } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { - "url-parse": "^1.4.3" + "find-up": "^3.0.0" } }, - "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 - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "dev": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "find-up": "^2.1.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + } } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "pkginfo": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", + "integrity": "sha1-NJ27f/04CB/K3AhT32h/DHdEzWU=", "dev": true }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, "requires": { - "p-reduce": "^1.0.0" + "semver-compare": "^1.0.0" } }, - "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-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "pnp-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-ExrNwuFH3DudHwWY2uRMqyiCOBEDdhQYHIAsqW/CM6hIZlSgXC/ma/p08FoNOUhVyh9hl1NGnMpR94T5i3SHaQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "ts-pnp": "^1.1.2" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "polished": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.1.tgz", + "integrity": "sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "@babel/runtime": "^7.4.5" } }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } + "polyfill-array-includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/polyfill-array-includes/-/polyfill-array-includes-2.0.0.tgz", + "integrity": "sha512-HTrB0xYCN3TgOQvk5Tc7ehhl0vC73DARlhNMIDF8xCdPwPOELAYEZkgqJp0vbUGnM3FvcaXgxrwLw+bzKepI2A==" }, - "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 + "popper.js": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", + "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" }, - "package-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "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": { - "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" + "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" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } } }, - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "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 }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "postcss": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", + "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", "dev": true, "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.1" } }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "postcss-calc": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.2.tgz", + "integrity": "sha512-B5R0UeB4zLJvxNt1FVCaDZULdzsKLPc6FhjFJ+xwFiq7VG4i9cuaJLxVjNtExNK8ocm3n2o4unXXLiVX1SCqxA==", "dev": true, "requires": { - "no-case": "^2.2.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.2.3.tgz", + "integrity": "sha512-dra4xoAjub2wha6RUXAgadHEn2lGxbj8drhFcIGLOMn914Eu7DkPUurugDXgstwttCYkJtZ/+PkWRWdp3UHRIA==", "dev": true, "requires": { - "callsites": "^3.0.0" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" }, "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true } } }, - "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "postcss-convert-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.0.2.tgz", + "integrity": "sha512-KQ04E2yadmfa1LqXm7UIDwW1ftxU/QWZmz6NKnHnUvJ3LEYbbcX6i329f/ig+WnEByHegulocXrECaZGLpL8Zg==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "parse-diff": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/parse-diff/-/parse-diff-0.3.2.tgz", - "integrity": "sha1-QH1sHmzKs4e8aU6KWN38iJiamhs=", + "postcss-discard-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.0.1.tgz", + "integrity": "sha512-lgZBPTDvWrbAYY1v5GYEv8fEO/WhKOu/hmZqmCYfrpD6eyDWWzAOsl2rF29lpvziKO02Gc5GJQtlpkTmakwOWg==", "dev": true }, - "parse-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", - "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "postcss-discard-duplicates": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.0.1.tgz", + "integrity": "sha512-svx747PWHKOGpAXXQkCc4k/DsWo+6bc5LsVrAsw+OU+Ibi7klFZCyX54gjYzX4TH+f2uzXjRviLARxkMurA2bA==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.0.1.tgz", + "integrity": "sha512-vfU8CxAQ6YpMxV2SvMcMIyF2LX1ZzWpy0lqHDsOdaKKLQVQGVP1pzhrI9JlsO65s66uQTfkQBKBD/A5gp9STFw==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.0.2.tgz", + "integrity": "sha512-+56BLP6NSSUuWUXjRgAQuho1p5xs/hU5Sw7+xt9S3JSg+7R6+WMGnJW7Hre/6tTuZ2xiXMB42ObkiZJ2hy/Pew==", + "dev": true + }, + "postcss-flexbugs-fixes": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", + "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", + "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "postcss-html": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", + "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", "dev": true, "requires": { - "error-ex": "^1.2.0" + "htmlparser2": "^3.10.0" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "postcss-jsx": { + "version": "0.36.3", + "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.3.tgz", + "integrity": "sha512-yV8Ndo6KzU8eho5mCn7LoLUGPkXrRXRjhMpX4AaYJ9wLJPv099xbtpbRQ8FrPnzVxb/cuMebbPR7LweSt+hTfA==", + "dev": true, + "requires": { + "@babel/core": ">=7.2.2" + } }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "postcss-less": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", + "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", "dev": true, "requires": { - "parse5": "^6.0.1" + "postcss": "^7.0.14" }, "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } } } }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", "dev": true, "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" }, "dependencies": { - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "requires": { - "tslib": "^2.0.3" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" } }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" } }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "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" + } + }, + "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" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "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": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "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": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "postcss-markdown": { + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", + "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "dev": true, + "requires": { + "remark": "^10.0.1", + "unist-util-find-all-after": "^1.0.2" + } }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", "dev": true }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "postcss-merge-longhand": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.0.4.tgz", + "integrity": "sha512-2lZrOVD+d81aoYkZDpWu6+3dTAAGkCKbV5DoRhnIR7KOULVrI/R7bcMjhrH9KTRy6iiHKqmtG+n/MMj1WmqHFw==", + "dev": true, "requires": { - "isarray": "0.0.1" + "postcss-value-parser": "^4.1.0", + "stylehacks": "^5.0.1" }, "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true } } }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "postcss-merge-rules": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.0.4.tgz", + "integrity": "sha512-yOj7bW3NxlQxaERBB0lEY1sH5y+RzevjbdH4DBJurjKERNpknRByFNdNe+V72i5pIZL12woM9uGdS5xbSB+kDQ==", "dev": true, "requires": { - "pify": "^3.0.0" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.0.0", + "postcss-selector-parser": "^6.0.5" }, "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } } } }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "postcss-minify-font-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.0.2.tgz", + "integrity": "sha512-R6MJZryq28Cw0AmnyhXrM7naqJZZLoa1paBltIzh2wM7yb4D45TLur+eubTQ4jCmZU9SGeZdWsc5KcSoqTMeTg==", "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" - } - }, - "perf-cascade": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/perf-cascade/-/perf-cascade-2.5.4.tgz", - "integrity": "sha512-Q3KwPeUsxm4CsePQiCN26T2AYTOy0QyDw3FOEegPsAFgvcLpmxCkmgjaFk2VhuYmgjS7Ng/lCK6JF9lBNIzJwg==", - "requires": { - "@types/har-format": "^1.2.3" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz", - "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==", - "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=", + "postcss-minify-gradients": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.0.4.tgz", + "integrity": "sha512-RVwZA7NC4R4J76u8X0Q0j+J7ItKUWAeBUJ8oEEZWmtv3Xoh19uNJaJwzNpsydQjk6PkuhRrK+YwwMf+c+68EYg==", "dev": true, "requires": { - "pinkie": "^2.0.0" + "colord": "^2.9.1", + "cssnano-utils": "^3.0.0", + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "postcss-minify-params": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.0.3.tgz", + "integrity": "sha512-NY92FUikE+wralaiVexFd5gwb7oJTIDhgTNeIw89i1Ymsgt4RWiPXfz3bg7hDy4NL6gepcThJwOYNtZO/eNi7Q==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkcs7": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz", - "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", - "requires": { - "@babel/runtime": "^7.5.5" + "alphanum-sort": "^1.0.2", + "browserslist": "^4.16.6", + "cssnano-utils": "^3.0.0", + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "postcss-minify-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.1.1.tgz", + "integrity": "sha512-TOzqOPXt91O2luJInaVPiivh90a2SIK5Nf1Ea7yEIM/5w+XA5BGrZGUSW8aEx9pJ/oNj7ZJBhjvigSiBV+bC1Q==", "dev": true, "requires": { - "find-up": "^3.0.0" + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } } }, - "pkg-up": { + "postcss-modules-extract-imports": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", "dev": true, "requires": { - "find-up": "^2.1.0" + "postcss": "^7.0.5" }, "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "p-try": "^1.0.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } + } + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true } } }, - "pkginfo": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", - "integrity": "sha1-NJ27f/04CB/K3AhT32h/DHdEzWU=", - "dev": true - }, - "please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", - "dev": true, - "requires": { - "semver-compare": "^1.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 - }, - "pnp-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-ExrNwuFH3DudHwWY2uRMqyiCOBEDdhQYHIAsqW/CM6hIZlSgXC/ma/p08FoNOUhVyh9hl1NGnMpR94T5i3SHaQ==", - "dev": true, - "requires": { - "ts-pnp": "^1.1.2" - } - }, - "polished": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/polished/-/polished-3.4.1.tgz", - "integrity": "sha512-GflTnlP5rrpDoigjczEkS6Ye7NDA4sFvAnlr5hSDrEvjiVj97Xzev3hZlLi3UB27fpxyTS9rWU64VzVLWkG+mg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.4.5" - } - }, - "polyfill-array-includes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/polyfill-array-includes/-/polyfill-array-includes-2.0.0.tgz", - "integrity": "sha512-HTrB0xYCN3TgOQvk5Tc7ehhl0vC73DARlhNMIDF8xCdPwPOELAYEZkgqJp0vbUGnM3FvcaXgxrwLw+bzKepI2A==" - }, - "popper.js": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.15.0.tgz", - "integrity": "sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA==" - }, - "portfinder": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", - "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", "dev": true, "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.1" + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" }, "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", "dev": true, "requires": { - "ms": "^2.1.1" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" } - }, - "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 } } }, - "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.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "dev": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" }, "dependencies": { "picocolors": { @@ -16140,122 +20838,212 @@ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } } } }, - "postcss-flexbugs-fixes": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", - "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", + "postcss-normalize-charset": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.0.1.tgz", + "integrity": "sha512-6J40l6LNYnBdPSk+BHZ8SF+HAkS4q2twe5jnocgd+xWpz/mx/5Sa32m3W1AA8uE8XaXN+eg8trIlfu8V9x61eg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.0.2.tgz", + "integrity": "sha512-RxXoJPUR0shSjkMMzgEZDjGPrgXUVYyWA/YwQRicb48H15OClPuaDR7tYokLAlGZ2tCSENEN5WxjgxSD5m4cUw==", "dev": true, "requires": { - "postcss": "^7.0.0" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "postcss-normalize-positions": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.0.2.tgz", + "integrity": "sha512-tqghWFVDp2btqFg1gYob1etPNxXLNh3uVeWgZE2AQGh6b2F8AK2Gj36v5Vhyh+APwIzNjmt6jwZ9pTBP+/OM8g==", "dev": true, "requires": { - "htmlparser2": "^3.10.0" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-jsx": { - "version": "0.36.3", - "resolved": "https://registry.npmjs.org/postcss-jsx/-/postcss-jsx-0.36.3.tgz", - "integrity": "sha512-yV8Ndo6KzU8eho5mCn7LoLUGPkXrRXRjhMpX4AaYJ9wLJPv099xbtpbRQ8FrPnzVxb/cuMebbPR7LweSt+hTfA==", + "postcss-normalize-repeat-style": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.0.2.tgz", + "integrity": "sha512-/rIZn8X9bBzC7KvY4iKUhXUGW3MmbXwfPF23jC9wT9xTi7kAvgj8sEgwxjixBmoL6MVa4WOgxNz2hAR6wTK8tw==", "dev": true, "requires": { - "@babel/core": ">=7.2.2" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", + "postcss-normalize-string": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.0.2.tgz", + "integrity": "sha512-zaI1yzwL+a/FkIzUWMQoH25YwCYxi917J4pYm1nRXtdgiCdnlTkx5eRzqWEC64HtRa06WCJ9TIutpb6GmW4gFw==", "dev": true, "requires": { - "postcss": "^7.0.14" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "postcss-normalize-timing-functions": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.0.2.tgz", + "integrity": "sha512-Ao0PP6MoYsRU1LxeVUW740ioknvdIUmfr6uAA3xWlQJ9s69/Tupy8qwhuKG3xWfl+KvLMAP9p2WXF9cwuk/7Bg==", "dev": true, "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", - "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "postcss-normalize-unicode": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.0.2.tgz", + "integrity": "sha512-3y/V+vjZ19HNcTizeqwrbZSUsE69ZMRHfiiyLAJb7C7hJtYmM4Gsbajy7gKagu97E8q5rlS9k8FhojA8cpGhWw==", "dev": true, "requires": { - "loader-utils": "^1.1.0", - "postcss": "^7.0.0", - "postcss-load-config": "^2.0.0", - "schema-utils": "^1.0.0" + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-markdown": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-markdown/-/postcss-markdown-0.36.0.tgz", - "integrity": "sha512-rl7fs1r/LNSB2bWRhyZ+lM/0bwKv9fhl38/06gF6mKMo/NPnp55+K1dSTosSVjFZc0e1ppBlu+WT91ba0PMBfQ==", + "postcss-normalize-url": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.0.4.tgz", + "integrity": "sha512-cNj3RzK2pgQQyNp7dzq0dqpUpQ/wYtdDZM3DepPmFjCmYIfceuD9VIAcOdvrNetjIU65g1B4uwdP/Krf6AFdXg==", "dev": true, "requires": { - "remark": "^10.0.1", - "unist-util-find-all-after": "^1.0.2" + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "postcss-normalize-whitespace": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.0.2.tgz", + "integrity": "sha512-CXBx+9fVlzSgbk0IXA/dcZn9lXixnQRndnsPC5ht3HxlQ1bVh77KQDL1GffJx1LTzzfae8ftMulsjYmO2yegxA==", "dev": true, "requires": { - "postcss": "^7.0.5" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-modules-local-by-default": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", - "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "postcss-ordered-values": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.0.3.tgz", + "integrity": "sha512-T9pDS+P9bWeFvqivXd5ACzQmrCmHjv3ZP+djn8E1UZY7iK79pFSm7i3WbKw2VSmFmdbMm8sQ12OPcNpzBo3Z2w==", "dev": true, "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.16", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.0" + "cssnano-utils": "^3.0.0", + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, - "postcss-modules-scope": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz", - "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==", + "postcss-reduce-initial": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.0.2.tgz", + "integrity": "sha512-v/kbAAQ+S1V5v9TJvbGkV98V2ERPdU6XvMcKMjqAlYiJ2NtsHGlKYLPjWWcXlaTKNxooId7BGxeraK8qXvzKtw==", "dev": true, "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" } }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "postcss-reduce-transforms": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.0.2.tgz", + "integrity": "sha512-25HeDeFsgiPSUx69jJXZn8I06tMxLQJJNF5h7i9gsUg8iP4KOOJ8EX8fj3seeoLt3SLU2YDD6UPnDYVGUO7DEA==", "dev": true, "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" + "postcss-value-parser": "^4.2.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + } } }, "postcss-reporter": { @@ -16278,6 +21066,22 @@ "requires": { "chalk": "^2.0.1" } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } } } }, @@ -16294,6 +21098,24 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, "postcss-sass": { @@ -16331,6 +21153,24 @@ "dev": true, "requires": { "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, "postcss-selector-parser": { @@ -16344,12 +21184,73 @@ "uniq": "^1.0.1" } }, + "postcss-svgo": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.0.3.tgz", + "integrity": "sha512-41XZUA1wNDAZrQ3XgWREL/M2zSw8LJPvb5ZWivljBsUQAGoEKMYm6okHsTjJxKYI4M75RQEH4KYlEM52VwdXVA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.1.0", + "svgo": "^2.7.0" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + } + } + }, "postcss-syntax": { "version": "0.36.2", "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", "dev": true }, + "postcss-unique-selectors": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.0.2.tgz", + "integrity": "sha512-w3zBVlrtZm7loQWRPVC0yjUwwpty7OM6DnEHkxcSQXO1bMS3RJ+JUS5LFMSDZHJcvGsRwhZinCWVqn8Kej4EDA==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "postcss-selector-parser": "^6.0.5" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } + } + }, "postcss-value-parser": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", @@ -18417,6 +23318,12 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -18469,42 +23376,6 @@ } } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - } - } - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -18539,9 +23410,9 @@ "dev": true }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, "reusify": { @@ -18812,98 +23683,123 @@ } }, "sass-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", - "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.4.0.tgz", + "integrity": "sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==", "dev": true, "requires": { - "clone-deep": "^4.0.1", - "loader-utils": "^1.2.3", - "neo-async": "^2.6.1", - "schema-utils": "^2.1.0", - "semver": "^6.3.0" + "klona": "^2.0.4", + "neo-async": "^2.6.2" }, "dependencies": { - "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==", + "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 + } + } + }, + "sass-resources-loader": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-resources-loader/-/sass-resources-loader-2.2.4.tgz", + "integrity": "sha512-hIQhBygYky+rLf+4cuoGYONZ623CEH4Swo1fs1WRJkukbqdvN1VIu2KCL59du6vX92bNELzNkGPLx+NorN73xA==", + "dev": true, + "requires": { + "async": "^3.2.0", + "chalk": "^4.1.0", + "glob": "^7.1.6", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "color-convert": "^2.0.1" } }, - "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==", + "async": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "dev": true }, - "schema-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", - "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "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==", + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { - "kind-of": "^6.0.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } - } - } - }, - "sass-resources-loader": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sass-resources-loader/-/sass-resources-loader-2.0.1.tgz", - "integrity": "sha512-UsjQWm01xglINC1kPidYwKOBBzOElVupm9RwtOkRlY0hPA4GKi2KFsn4BZypRD1kudaXgUnGnfbiVOE7c+ybAg==", - "dev": true, - "requires": { - "async": "^2.1.4", - "chalk": "^1.1.3", - "glob": "^7.1.1", - "loader-utils": "^1.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + }, + "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 }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "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" + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } }, "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 + "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" + } } } }, @@ -18967,12 +23863,12 @@ "dev": true }, "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", + "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", "dev": true, "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1.2.0" } }, "semver": { @@ -19029,10 +23925,13 @@ "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=" }, "serialize-javascript": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", - "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } }, "serve-favicon": { "version": "2.5.0", @@ -19729,28 +24628,36 @@ } }, "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.4.0", - "websocket-driver": "0.6.5" + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" }, "dependencies": { + "http-parser-js": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", + "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==", + "dev": true + }, "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } } @@ -19816,6 +24723,12 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", @@ -19925,12 +24838,12 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -19956,12 +24869,12 @@ }, "dependencies": { "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "ms": { @@ -20198,9 +25111,9 @@ } }, "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, "strict-uri-encode": { @@ -20409,26 +25322,10 @@ "dev": true }, "style-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", - "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", - "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.1" - }, - "dependencies": { - "schema-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", - "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - } - } + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true }, "style-search": { "version": "0.1.0", @@ -20452,6 +25349,28 @@ "inline-style-parser": "0.1.1" } }, + "stylehacks": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.0.1.tgz", + "integrity": "sha512-Es0rVnHIqbWzveU1b24kbw92HsebBepxfcqe5iix7t9j0PQqhs0IxXVXv0pY2Bxa08CgMkzD6OWql7kbGOuEdA==", + "dev": true, + "requires": { + "browserslist": "^4.16.0", + "postcss-selector-parser": "^6.0.4" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", + "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + } + } + }, "stylelint": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-11.0.0.tgz", @@ -20745,6 +25664,22 @@ "json-parse-better-errors": "^1.0.1" } }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, "postcss-selector-parser": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", @@ -20923,6 +25858,24 @@ "dev": true, "requires": { "postcss": "^7.0.2" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } } }, "supports-color": { @@ -20934,41 +25887,21 @@ "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "svg-inline-loader": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/svg-inline-loader/-/svg-inline-loader-0.8.0.tgz", - "integrity": "sha512-rynplY2eXFrdNomL1FvyTFQlP+dx0WqbzHglmNtA9M4IHRC3no2aPAl3ny9lUpJzFzFMZfWRK5YIclNU+FRePA==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/svg-inline-loader/-/svg-inline-loader-0.8.2.tgz", + "integrity": "sha512-kbrcEh5n5JkypaSC152eGfGcnT4lkR0eSfvefaUJkLqgGjRQJyKDvvEE/CCv5aTSdfXuc+N98w16iAojhShI3g==", "dev": true, "requires": { - "loader-utils": "^0.2.11", + "loader-utils": "^1.1.0", "object-assign": "^4.0.1", "simple-html-tokenizer": "^0.1.1" - }, - "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } } }, "svg-parser": { @@ -21351,9 +26284,9 @@ } }, "terser": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.3.8.tgz", - "integrity": "sha512-otmIRlRVmLChAWsnSFNO0Bfk6YySuBp6G9qrHiJwlLDd4mxe2ta4sjI7TzIR+W1nBMjilzrMcPOz9pSusgx3hQ==", + "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", @@ -21362,41 +26295,116 @@ } }, "terser-webpack-plugin": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", - "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.0.tgz", + "integrity": "sha512-LPIisi3Ol4chwAaPP8toUJ3L4qCM1G0wao7L3qNv57Drezxj6+VEyySpPw4B1HSO2Eg/hDY/MNF5XihCAoqnsQ==", "dev": true, "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^3.1.0", + "jest-worker": "^27.4.1", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "terser": "^5.7.2" }, "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "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 + }, + "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 + }, + "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 + }, + "jest-worker": { + "version": "27.4.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", + "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } }, "serialize-javascript": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", - "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", "dev": true, "requires": { "randombytes": "^2.1.0" } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "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 + } + } } } }, @@ -21533,6 +26541,12 @@ "next-tick": "1" } }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -21634,1263 +26648,1718 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, - "toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", - "dev": true - }, "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" + "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" + } + }, + "traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-trailing-lines": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", + "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", + "dev": true + }, + "trough": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", + "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "ts-pnp": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.4.tgz", + "integrity": "sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw==", + "dev": true + }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + }, + "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", + "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": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "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-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.8.tgz", + "integrity": "sha512-5NkbXZUlmCE73Fs7gvkp1XXJWHYetPkg60QnQ2NXQmBYNFxbBr2zA8GCtaH4K2s2WhOmSlgiSTmrjrcm5tnM5g==", + "dev": true + }, + "typed-styles": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", + "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typo-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.0.3.tgz", + "integrity": "sha1-VNjrx5SfGngQkItgAsaEFSbJnVo=" + }, + "ua-parser-js": { + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", + "dev": true + }, + "unfetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", + "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", + "dev": true + }, + "unherit": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", + "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "xtend": "^4.0.1" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "unified": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", + "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "@types/vfile": "^3.0.0", + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^3.0.0", + "x-is-string": "^0.1.0" + } + }, + "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" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" } }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { - "punycode": "^2.1.0" + "imurmurhash": "^0.1.4" } }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" + "unist-util-find-all-after": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz", + "integrity": "sha512-CaxvMjTd+yF93BKLJvZnEfqdM7fgEACsIpQqz8vIj9CJnUb9VpyymFS3tg6TCtgrF7vfCJBF5jbT2Ox9CBRYRQ==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } }, - "trim": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", - "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=", + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", "dev": true }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true + "unist-util-remove-position": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz", + "integrity": "sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==", + "dev": true, + "requires": { + "unist-util-visit": "^1.1.0" + } }, - "trim-trailing-lines": { + "unist-util-stringify-position": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz", - "integrity": "sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", + "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", "dev": true }, - "trough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", - "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", - "dev": true + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", "dev": true, "requires": { - "glob": "^7.1.2" + "unist-util-is": "^3.0.0" } }, - "ts-pnp": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.4.tgz", - "integrity": "sha512-1J/vefLC+BWSo+qe8OnJQfWTYRS6ingxjwqmHMqaMxXMj7kFtKLgAaYW3JeX3mktjgUL+etlU8/B4VUAUI9QGw==", + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "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=", + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "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": { - "safe-buffer": "^5.0.1" + "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 + } } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", "dev": true }, - "type": { + "upath": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "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" - } + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "punycode": "^2.1.0" } }, - "typed-styles": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/typed-styles/-/typed-styles-0.0.7.tgz", - "integrity": "sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==" - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typo-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typo-js/-/typo-js-1.0.3.tgz", - "integrity": "sha1-VNjrx5SfGngQkItgAsaEFSbJnVo=" - }, - "ua-parser-js": { - "version": "0.7.20", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", - "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, - "unfetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.1.0.tgz", - "integrity": "sha512-crP/n3eAPUJxZXM9T80/yv0YhkTEx2K1D3h7D1AJM6fzsWZrxdyRuLN0JH/dkZh1LNH8LxCnBzoPFCPbb2iGpg==", - "dev": true + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } }, - "unherit": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz", - "integrity": "sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==", + "url-loader": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", + "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "xtend": "^4.0.1" + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.4.1" + }, + "dependencies": { + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, + "schema-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", + "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } } }, - "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 + "url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, - "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==", + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" + "prepend-http": "^1.0.1" } }, - "unicode-match-property-value-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", - "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", - "dev": true + "url-toolkit": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.3.tgz", + "integrity": "sha512-Da75SQoxsZ+2wXS56CZBrj2nukQ4nlGUZUP/dqUBG5E1su5GKThgT94Q00x81eVII7AyS1Pn+CtTTZ4Z0pLUtQ==" }, - "unicode-property-aliases-ecmascript": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", - "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "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 }, - "unified": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", - "integrity": "sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==", + "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": { - "@types/unist": "^2.0.0", - "@types/vfile": "^3.0.0", - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^1.1.0", - "trough": "^1.0.0", - "vfile": "^3.0.0", - "x-is-string": "^0.1.0" + "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 + } } }, - "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==", + "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.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, - "uniq": { + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true }, - "unist-util-find-all-after": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-1.0.4.tgz", - "integrity": "sha512-CaxvMjTd+yF93BKLJvZnEfqdM7fgEACsIpQqz8vIj9CJnUb9VpyymFS3tg6TCtgrF7vfCJBF5jbT2Ox9CBRYRQ==", + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "homedir-polyfill": "^1.0.1" } }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", - "dev": true - }, - "unist-util-remove-position": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.3.tgz", - "integrity": "sha512-CtszTlOjP2sBGYc2zcKA/CvNdTdEs3ozbiJ63IPBxh8iZg42SCCb8m04f8z2+V1aSk5a7BxbZKEdoDjadmBkWA==", + "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": { - "unist-util-visit": "^1.1.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "unist-util-stringify-position": { + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, + "vary": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", - "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "dev": true }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "unist-util-visit-parents": "^2.0.0" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "version-exists": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/version-exists/-/version-exists-0.0.3.tgz", + "integrity": "sha1-Lub+LIpTy9X5F6hSHpiyDs9668k=", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "args": "2.6.1", + "chalk": "1.1.3", + "node-fetch": "1.6.3", + "npm-name": "3.0.0" + }, + "dependencies": { + "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" + } + }, + "node-fetch": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", + "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "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 + } } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true + "vfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", + "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", + "dev": true, + "requires": { + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true + } + } }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "vfile-location": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz", + "integrity": "sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==", "dev": true }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "vfile-message": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", + "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", "dev": true, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" + "unist-util-stringify-position": "^1.1.1" + } + }, + "video.js": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.17.0.tgz", + "integrity": "sha512-8RbLu9+Pdpep9OTPncUHIvZXFgn/7hKdPnSTE/lGSnlFSucXtTUBp41R7NDwncscMLQ0WgazUbmFlvr4MNWMbA==", + "requires": { + "@babel/runtime": "^7.12.5", + "@videojs/http-streaming": "2.12.0", + "@videojs/vhs-utils": "^3.0.3", + "@videojs/xhr": "2.6.0", + "aes-decrypter": "3.1.2", + "global": "^4.4.0", + "keycode": "^2.2.0", + "m3u8-parser": "4.7.0", + "mpd-parser": "0.19.2", + "mux.js": "5.14.1", + "safe-json-parse": "4.0.0", + "videojs-font": "3.2.0", + "videojs-vtt.js": "^0.15.3" }, "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, + "@babel/runtime": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", + "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", "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" - } - } + "regenerator-runtime": "^0.13.4" } }, - "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 + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true + "videojs-font": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz", + "integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==" }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "videojs-vtt.js": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.3.tgz", + "integrity": "sha512-5FvVsICuMRx6Hd7H/Y9s9GDeEtYcXQWzGMS+sl4UX3t/zoHp3y+isSfIPRochnTH7h+Bh1ILyC639xy9Z6kPag==", + "requires": { + "global": "^4.3.1" + } + }, + "vm-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", "dev": true }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "vuex": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz", + "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==", "dev": true }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { - "punycode": "^2.1.0" + "browser-process-hrtime": "^0.1.2" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "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" + } }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } + "loose-envify": "^1.0.0" } }, - "url-loader": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.2.0.tgz", - "integrity": "sha512-G8nk3np8ZAnwhHXas1JxJEwJyQdqFXAKJehfgZ/XrC48volFBRtO+FIKtF2u0Ma3bw+4vnDVjHPAQYlF9p2vsw==", + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", "dev": true, "requires": { - "loader-utils": "^1.2.3", - "mime": "^2.4.4", - "schema-utils": "^2.4.1" + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" }, "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", + "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "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, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "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, + "optional": 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, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + } + } }, - "schema-utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.4.1.tgz", - "integrity": "sha512-RqYLpkPZX5Oc3fw/kHHHyP56fg5Y+XBpIpV8nCg0znIALfq3OH+Ea9Hfeac9BAMwG5IICltiZ0vxFvJQONfA5w==", + "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, + "optional": true, "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" + "is-number": "^7.0.0" } } } }, - "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "chokidar": "^2.1.8" } }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "requires": { - "prepend-http": "^1.0.1" + "minimalistic-assert": "^1.0.0" } }, - "url-toolkit": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.3.tgz", - "integrity": "sha512-Da75SQoxsZ+2wXS56CZBrj2nukQ4nlGUZUP/dqUBG5E1su5GKThgT94Q00x81eVII7AyS1Pn+CtTTZ4Z0pLUtQ==" - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "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 }, - "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" + "webpack": { + "version": "5.66.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.66.0.tgz", + "integrity": "sha512-NJNtGT7IKpGzdW7Iwpn/09OXz9inIkeIQ/ibY6B+MdV1x6+uReqz/5z1L89ezWnpPDWpXF0TY5PCYKQdWVn8Vg==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.2" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "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 + }, + "enhanced-resolve": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", + "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "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" + } + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "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 + }, + "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 + }, + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "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 + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dev": true, + "requires": { + "mime-db": "1.51.0" + } + }, + "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 + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "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.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, - "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" - } - }, - "value-equal": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", - "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "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" - } - }, - "version-exists": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/version-exists/-/version-exists-0.0.3.tgz", - "integrity": "sha1-Lub+LIpTy9X5F6hSHpiyDs9668k=", + "webpack-cli": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.1.tgz", + "integrity": "sha512-JYRFVuyFpzDxMDB+v/nanUdQYcZtqFPGzmlW4s+UkPMFhSpfRNmf1z4AwYcHJVdvEFAM7FFCQdNTpsBYhDLusQ==", "dev": true, "requires": { - "args": "2.6.1", - "chalk": "1.1.3", - "node-fetch": "1.6.3", - "npm-name": "3.0.0" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "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" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "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" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "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" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" } }, - "node-fetch": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz", - "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=", + "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 + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "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": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" + "p-locate": "^4.1.0" } }, - "supports-color": { + "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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "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-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 + }, + "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" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "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" + } + }, + "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "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 - } - } - }, - "vfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", - "integrity": "sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==", - "dev": true, - "requires": { - "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^1.0.0", - "vfile-message": "^1.0.0" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + }, + "signal-exit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", + "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true + }, + "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" + } } } }, - "vfile-location": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.5.tgz", - "integrity": "sha512-Pa1ey0OzYBkLPxPZI3d9E+S4BmvfVwNAAXrrqGbwTVXWaX2p9kM1zZ+n35UtVM06shmWKH4RPRN8KI80qE3wNQ==", - "dev": true - }, - "vfile-message": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.1.1.tgz", - "integrity": "sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==", + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", "dev": true, "requires": { - "unist-util-stringify-position": "^1.1.1" - } - }, - "video.js": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.17.0.tgz", - "integrity": "sha512-8RbLu9+Pdpep9OTPncUHIvZXFgn/7hKdPnSTE/lGSnlFSucXtTUBp41R7NDwncscMLQ0WgazUbmFlvr4MNWMbA==", - "requires": { - "@babel/runtime": "^7.12.5", - "@videojs/http-streaming": "2.12.0", - "@videojs/vhs-utils": "^3.0.3", - "@videojs/xhr": "2.6.0", - "aes-decrypter": "3.1.2", - "global": "^4.4.0", - "keycode": "^2.2.0", - "m3u8-parser": "4.7.0", - "mpd-parser": "0.19.2", - "mux.js": "5.14.1", - "safe-json-parse": "4.0.0", - "videojs-font": "3.2.0", - "videojs-vtt.js": "^0.15.3" + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" }, "dependencies": { - "@babel/runtime": { - "version": "7.16.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz", - "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true } } }, - "videojs-font": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz", - "integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==" - }, - "videojs-vtt.js": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.3.tgz", - "integrity": "sha512-5FvVsICuMRx6Hd7H/Y9s9GDeEtYcXQWzGMS+sl4UX3t/zoHp3y+isSfIPRochnTH7h+Bh1ILyC639xy9Z6kPag==", - "requires": { - "global": "^4.3.1" - } - }, - "vm-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", - "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", - "dev": true - }, - "vuex": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz", - "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "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" - } - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "^1.0.0" - } - }, - "watchpack": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", - "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "webpack-dev-server": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.7.3.tgz", + "integrity": "sha512-mlxq2AsIw2ag016nixkzUkdyOE8ST2GTy34uKSABp1c4nhjZvH90D5ZRR+UOLSsG4Z3TFahAi72a3ymRtfRm+Q==", "dev": true, "requires": { - "chokidar": "^3.4.0", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.2.2", + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.2", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "webpack-dev-middleware": "^5.3.0", + "ws": "^8.1.0" }, "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "optional": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, - "binary-extensions": { + "array-union": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "dev": true, - "optional": true + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "optional": true, "requires": { "fill-range": "^7.0.1" } }, "chokidar": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.1.tgz", - "integrity": "sha512-TQTJyr2stihpC4Sya9hs2Xh+O2wf+igjL36Y75xx2WdHuiICcn/XJza46Jwt0eT5hVpQOzo3FpY3cj3RVYLX0g==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "optional": true, "requires": { - "anymatch": "~3.1.1", + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.2", - "glob-parent": "~5.1.0", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.6.0" } }, - "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==", + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, - "optional": true, "requires": { - "to-regex-range": "^5.0.1" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "optional": true, "requires": { - "binary-extensions": "^2.0.0" + "path-type": "^4.0.0" } }, - "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, - "optional": 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, - "optional": 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 }, - "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", "dev": true, - "optional": true, "requires": { - "picomatch": "^2.2.1" - }, - "dependencies": { - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "optional": true - } + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" } }, - "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==", + "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, - "optional": true, "requires": { - "is-number": "^7.0.0" + "to-regex-range": "^5.0.1" } - } - } - }, - "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "requires": { - "minimalistic-assert": "^1.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 - }, - "webpack": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.0.tgz", - "integrity": "sha512-yNV98U4r7wX1VJAj5kyMsu36T8RPPQntcb5fJLOsMz/pt/WrKC0Vp1bAlqPLkA1LegSwQwf6P+kAbyhRKVQ72g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.1", - "watchpack": "^1.6.0", - "webpack-sources": "^1.4.1" - } - }, - "webpack-cli": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.9.tgz", - "integrity": "sha512-xwnSxWl8nZtBl/AFJCOn9pG7s5CYUYdZxmmukv+fAHLcBIHM36dImfpQg3WfShZXeArkWlf6QRw24Klcsv8a5A==", - "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } + "optional": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "is-glob": "^4.0.1" } }, - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "graceful-fs": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "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" + "binary-extensions": "^2.0.0" } }, - "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==", + "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 }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "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, "requires": { - "pump": "^3.0.0" + "is-docker": "^2.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "requires": { - "invert-kv": "^2.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } } }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "dev": true + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "mime-db": "1.51.0" } }, - "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==", + "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 }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "aggregate-error": "^3.0.0" } }, - "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + } } }, - "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "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": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "glob": "^7.1.3" } - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "requires": { - "ms": "^2.1.1" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" } }, - "html-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", - "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "ansi-regex": "^6.0.1" } }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "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": { - "async-limiter": "~1.0.0" + "is-number": "^7.0.0" } }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "webpack-dev-middleware": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz", + "integrity": "sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==", "dev": true, "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.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": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" } + }, + "ws": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.2.tgz", + "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", + "dev": true } } }, "webpack-hot-middleware": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz", - "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==", + "version": "2.25.1", + "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz", + "integrity": "sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==", "dev": true, "requires": { - "ansi-html": "0.0.7", - "html-entities": "^1.2.0", + "ansi-html-community": "0.0.8", + "html-entities": "^2.1.0", "querystring": "^0.2.0", - "strip-ansi": "^3.0.0" + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "webpack-log": { @@ -22904,18 +28373,47 @@ } }, "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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" + } + } } }, "webpack-notifier": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.14.1.tgz", - "integrity": "sha512-OVOoiOyKHS3z9pN1nLdPY2Pf/R3wiBsN0KiPc3K6ApwMBfHbyUomQc2Mr0naeKxfqXyCBPHfQuqpL9yoL0rgkA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", "dev": true, "requires": { "node-notifier": "^9.0.0", @@ -23012,12 +28510,12 @@ } }, "webpack-subresource-integrity": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.2.tgz", - "integrity": "sha512-GBWYBoyalbo5YClwWop9qe6Zclp8CIXYGIz12OPclJhIrSplDxs1Ls1JDMH8xBPPrg1T6ISaTW9Y6zOrwEiAzw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", "dev": true, "requires": { - "webpack-sources": "^1.3.0" + "typed-assert": "^1.0.8" } }, "websocket-driver": { @@ -23145,6 +28643,12 @@ } } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -23292,6 +28796,12 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, "yargs": { "version": "13.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", diff --git a/app/package.json b/app/package.json index 230046ed49..0202dfd225 100644 --- a/app/package.json +++ b/app/package.json @@ -10,14 +10,14 @@ "format:js": "npm run eslint -- --fix", "format:scss": "npm run stylelint -- --fix", "format": "npm run format:js && npm run format:scss && prettier --write */**/*.md", - "dev": "cross-env NODE_ENV=development webpack-dev-server --port 3000", - "build": "webpack -p", + "dev": "cross-env NODE_ENV=development webpack server --port 3000", + "build": "webpack", "sealights": "cross-env NODE_ENV=sealights webpack", "test": "jest --notify", "test:watch": "jest --watch", "test:coverage": "jest --coverage", - "manage:translations": "cross-env NODE_ENV=development webpack --display none && babel-node ./localization/translatorRunner.js", - "manage:translations:test": "cross-env NODE_ENV=development webpack --display none && babel-node ./localization/translatorRunnerCheck.js", + "manage:translations": "cross-env NODE_ENV=development webpack --no-stats && npx babel-node ./localization/translatorRunner.js", + "manage:translations:test": "cross-env NODE_ENV=development webpack --no-stats && babel-node ./localization/translatorRunnerCheck.js", "precommit": "lint-staged", "postcommit": "git update-index --again", "storybook": "cross-env NODE_ENV=development start-storybook -p 9001 -c .storybook", @@ -93,14 +93,14 @@ "video.js": "7.17.0" }, "devDependencies": { - "@babel/core": "7.6.3", - "@babel/node": "7.7.0", - "@babel/plugin-proposal-class-properties": "7.5.5", - "@babel/plugin-proposal-decorators": "7.6.0", - "@babel/plugin-transform-runtime": "7.6.2", - "@babel/polyfill": "7.6.0", - "@babel/preset-env": "7.6.3", - "@babel/preset-react": "7.6.3", + "@babel/core": "7.16.7", + "@babel/node": "7.16.8", + "@babel/plugin-proposal-class-properties": "7.16.7", + "@babel/plugin-proposal-decorators": "7.16.7", + "@babel/plugin-transform-runtime": "7.16.8", + "@babel/polyfill": "7.12.1", + "@babel/preset-env": "7.16.8", + "@babel/preset-react": "7.16.7", "@storybook/addon-actions": "5.2.3", "@storybook/addon-links": "5.2.3", "@storybook/addon-viewport": "5.2.3", @@ -109,14 +109,15 @@ "@storybook/theming": "5.2.3", "axios-mock-adapter": "1.17.0", "babel-eslint": "10.0.3", - "babel-loader": "8.0.6", + "babel-loader": "8.2.3", "babel-plugin-react-intl": "4.1.20", - "circular-dependency-plugin": "5.2.0", + "circular-dependency-plugin": "5.2.2", "clean-webpack-plugin": "2.0.2", - "compression-webpack-plugin": "3.0.0", - "cross-env": "6.0.3", + "compression-webpack-plugin": "9.2.0", + "cross-env": "7.0.3", "css-hot-loader": "1.4.4", - "css-loader": "3.2.0", + "css-loader": "6.5.1", + "css-minimizer-webpack-plugin": "3.4.1", "enzyme": "3.10.0", "enzyme-adapter-react-16": "1.15.0", "enzyme-to-json": "3.4.2", @@ -130,42 +131,42 @@ "eslint-plugin-jsx-a11y": "6.2.3", "eslint-plugin-prettier": "3.1.1", "eslint-plugin-react": "7.16.0", - "file-loader": "4.2.0", - "html-webpack-plugin": "3.2.0", + "html-webpack-plugin": "5.5.0", "husky": "3.0.8", "identity-obj-proxy": "3.0.0", "jest": "24.9.0", "jest-junit": "9.0.0", "lint-staged": "9.4.2", - "mini-css-extract-plugin": "0.8.0", + "mini-css-extract-plugin": "2.5.2", "node-sass": "4.14.1", - "postcss-loader": "3.0.0", + "postcss": "^8.4.5", + "postcss-loader": "6.2.1", "prettier": "1.19.1", "raw-loader": "3.1.0", "react-addons-test-utils": "15.6.2", "react-intl-translations-manager": "5.0.3", "regenerator-runtime": "0.13.3", - "sass-loader": "8.0.0", - "sass-resources-loader": "2.0.1", + "sass-loader": "12.4.0", + "sass-resources-loader": "2.2.4", "slnodejs": "^4.0.294", "storybook-addon-intl": "2.4.1", "storybook-host": "5.1.0", "storybook-readme": "5.0.8", - "style-loader": "1.0.0", + "style-loader": "3.3.1", "stylelint": "11.0.0", "stylelint-config-recommended-scss": "4.0.0", "stylelint-declaration-use-variable": "^1.7.3", "stylelint-prettier": "1.1.1", "stylelint-scss": "3.11.1", - "svg-inline-loader": "0.8.0", - "url-loader": "2.2.0", - "webpack": "4.41.0", - "webpack-cli": "3.3.9", - "webpack-dev-server": "3.11.0", - "webpack-hot-middleware": "2.25.0", - "webpack-merge": "4.2.2", - "webpack-notifier": "^1.14.1", - "webpack-subresource-integrity": "1.5.2", + "svg-inline-loader": "0.8.2", + "terser-webpack-plugin": "5.3.0", + "webpack": "5.66.0", + "webpack-cli": "4.9.1", + "webpack-dev-server": "4.7.3", + "webpack-hot-middleware": "2.25.1", + "webpack-merge": "5.8.0", + "webpack-notifier": "^1.15.0", + "webpack-subresource-integrity": "5.1.0", "why-did-you-update": "1.0.6" }, "lint-staged": { @@ -181,8 +182,5 @@ "prettier --write", "git add" ] - }, - "browserslist": [ - "ie 11" - ] + } } diff --git a/app/src/components/main/grid/gridHeader/headerCell/headerCell.jsx b/app/src/components/main/grid/gridHeader/headerCell/headerCell.jsx index 2f352b5c81..c0fe7ed94f 100644 --- a/app/src/components/main/grid/gridHeader/headerCell/headerCell.jsx +++ b/app/src/components/main/grid/gridHeader/headerCell/headerCell.jsx @@ -19,8 +19,8 @@ import track from 'react-tracking'; import classNames from 'classnames/bind'; import Parser from 'html-react-parser'; import { columnPropTypes } from 'components/main/grid/propTypes'; -import { ALIGN_LEFT } from 'components/main/grid'; import { SORTING_ASC } from 'controllers/sorting'; +import { ALIGN_LEFT } from '../../constants'; import ArrowIcon from './img/arrow-down-inline.svg'; import FilterIcon from './img/icon-filter-inline.svg'; import styles from './headerCell.scss'; diff --git a/app/webpack.config.js b/app/webpack.config.js index cf00abd275..6d9689b49b 100644 --- a/app/webpack.config.js +++ b/app/webpack.config.js @@ -1,4 +1,4 @@ -const merge = require('webpack-merge'); +const { merge } = require('webpack-merge'); const baseConfig = require('./webpack/base.config'); const prodConfig = require('./webpack/prod.config'); const devConfig = require('./webpack/dev.config'); diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index ac8a446a7c..b77dfe6a96 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -28,8 +28,10 @@ module.exports = { }, output: { path: path.resolve(__dirname, '../build'), - filename: '[name].app.[hash:6].js', + filename: '[name].app.[contenthash:6].js', publicPath: '', + assetModuleFilename: 'media/[name].[ext]', + clean: true, }, resolve: { extensions: ['.js', '.jsx', '.sass', '.scss', '.css'], @@ -60,11 +62,12 @@ module.exports = { }, { test: /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/, - loader: 'url-loader', exclude: /\/*-inline.svg/, - options: { - limit: 1000, - name: 'media/[name].[ext]', + type: 'asset', + parser: { + dataUrlCondition: { + maxSize: 1000, + }, }, }, { @@ -75,7 +78,7 @@ module.exports = { }, plugins: [ new CleanWebpackPlugin({ - cleanOnceBeforeBuildPatterns: ['**/*', path.resolve(__dirname, '../localization/messages')], + cleanOnceBeforeBuildPatterns: [path.resolve(__dirname, '../localization/messages')], }), new WebpackNotifierPlugin({ skipFirstNotification: true }), new HtmlWebpackPlugin({ diff --git a/app/webpack/dev.config.js b/app/webpack/dev.config.js index 01919b41b2..41ad2aecf0 100644 --- a/app/webpack/dev.config.js +++ b/app/webpack/dev.config.js @@ -26,7 +26,7 @@ module.exports = () => { process.exit(1); } return { - devtool: 'eval-sourcemap', + devtool: 'eval-source-map', mode: 'development', module: { rules: [ @@ -49,7 +49,7 @@ module.exports = () => { loader: 'css-loader', options: { modules: { - localIdentName: '[name]__[local]--[hash:base64:5]', + localIdentName: '[name]__[local]--[contenthash:base64:5]', }, importLoaders: 1, }, @@ -65,9 +65,15 @@ module.exports = () => { }, ], }, - plugins: [new webpack.HotModuleReplacementPlugin()], + plugins: [ + new webpack.ProvidePlugin({ + process: 'process/browser', + }), + ], devServer: { - contentBase: path.resolve(__dirname, '../build'), + static: { + directory: path.resolve(__dirname, '../build'), + }, hot: true, historyApiFallback: true, https: false, diff --git a/app/webpack/prod.config.js b/app/webpack/prod.config.js index 73c9700861..6189912eca 100644 --- a/app/webpack/prod.config.js +++ b/app/webpack/prod.config.js @@ -17,7 +17,9 @@ const path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); -const SriPlugin = require('webpack-subresource-integrity'); +const { SubresourceIntegrityPlugin } = require('webpack-subresource-integrity'); +const TerserPlugin = require('terser-webpack-plugin'); +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); module.exports = { mode: 'production', @@ -40,7 +42,7 @@ module.exports = { loader: 'css-loader', options: { modules: { - localIdentName: '[name]__[local]--[hash:base64:5]', + localIdentName: '[name]__[local]--[contenthash:base64:5]', }, importLoaders: 1, }, @@ -57,7 +59,41 @@ module.exports = { }, ], }, + plugins: [ + new MiniCssExtractPlugin({ + filename: '[name].[contenthash:6].css', + }), + new CompressionPlugin({ + algorithm: 'gzip', + threshold: 10240, + minRatio: 0.8, + }), + new SubresourceIntegrityPlugin({ + hashFuncNames: ['sha256', 'sha384'], + }), + ], optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + terserOptions: { + format: { + comments: false, + }, + }, + extractComments: false, + }), + new CssMinimizerPlugin({ + minimizerOptions: { + preset: [ + 'default', + { + discardComments: { removeAll: true }, + }, + ], + }, + }), + ], splitChunks: { cacheGroups: { styles: { @@ -69,17 +105,7 @@ module.exports = { }, }, }, - plugins: [ - new MiniCssExtractPlugin({ - filename: '[name].[hash:6].css', - }), - new CompressionPlugin({ - algorithm: 'gzip', - threshold: 10240, - minRatio: 0.8, - }), - new SriPlugin({ - hashFuncNames: ['sha256', 'sha384'], - }), - ], + performance: { + hints: false, + }, }; From 9578c36e7c1370be278d2dbb1e3ed8ef0dcfb7ff Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Tue, 25 Jan 2022 16:01:20 +0300 Subject: [PATCH 002/284] hotfix webpack build (#2987) --- app/webpack/base.config.js | 3 +++ app/webpack/dev.config.js | 6 ------ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index b77dfe6a96..7ea3a9f4a1 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -90,6 +90,9 @@ module.exports = { React: 'react', Utils: 'common/utils', }), + new webpack.ProvidePlugin({ + process: 'process/browser', + }), // new CircularDependencyPlugin({ // exclude: /a\.js|node_modules/, // failOnError: false, diff --git a/app/webpack/dev.config.js b/app/webpack/dev.config.js index 41ad2aecf0..a28f7080cb 100644 --- a/app/webpack/dev.config.js +++ b/app/webpack/dev.config.js @@ -15,7 +15,6 @@ */ const path = require('path'); -const webpack = require('webpack'); const dotenv = require('dotenv'); dotenv.config(); @@ -65,11 +64,6 @@ module.exports = () => { }, ], }, - plugins: [ - new webpack.ProvidePlugin({ - process: 'process/browser', - }), - ], devServer: { static: { directory: path.resolve(__dirname, '../build'), From 12ec35988ce997f93c49b17a34a42e79721a2894 Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Mon, 31 Jan 2022 19:19:10 +0300 Subject: [PATCH 003/284] EPMRPP-74158 || fix api page error (#2996) --- app/package-lock.json | 453 ++++++++++++++++++++++++------------- app/package.json | 2 +- app/webpack/base.config.js | 3 +- 3 files changed, 299 insertions(+), 159 deletions(-) diff --git a/app/package-lock.json b/app/package-lock.json index 19bc4232b0..7a22d30c5e 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -3993,24 +3993,24 @@ "regenerator-runtime": "^0.13.2" } }, - "@babel/runtime-corejs2": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.13.10.tgz", - "integrity": "sha512-rZw5P1ZewO6XZTDxtXuAuAFUqfNXyM8HO/9WiaDd34Anka0uFTpo0RvBLeV775AEE/zKw3LQB+poZw/O9lrZBg==", + "@babel/runtime-corejs3": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.8.tgz", + "integrity": "sha512-3fKhuICS1lMz0plI5ktOE/yEtBRMVxplzRkdn6mJQ197XiY0JnrzYV0+Mxozq3JZ8SBV9Ecurmw1XsGbwOf+Sg==", "requires": { - "core-js": "^2.6.5", + "core-js-pure": "^3.20.2", "regenerator-runtime": "^0.13.4" }, "dependencies": { - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + "core-js-pure": { + "version": "3.20.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.3.tgz", + "integrity": "sha512-Q2H6tQ5MtPtcC7f3HxJ48i4Q7T9ybPKgvWyuH7JXIoNa2pm0KuBnycsET/qw1SLLZYfbsbrZQNMeIOClb+6WIA==" }, "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==" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" } } }, @@ -4077,9 +4077,9 @@ "dev": true }, "@braintree/sanitize-url": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-4.1.1.tgz", - "integrity": "sha512-epVksusKVEpwBs2vRg3SWssxn9KXs9CxEYNOcgeSRLRjq070ABj5bLPxkmtQpVeSPCHj8kfAE9J6z2WsLr4wZg==" + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz", + "integrity": "sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw==" }, "@cnakazawa/watch": { "version": "1.0.3", @@ -6259,6 +6259,14 @@ "resolved": "https://registry.npmjs.org/@types/har-format/-/har-format-1.2.4.tgz", "integrity": "sha512-iUxzm1meBm3stxUMzRqgOVHjj4Kgpgu5w9fm4X7kPRfSgVRzythsucEN7/jtOo8SQzm+HfcxWWzJS0mJDH/3DQ==" }, + "@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "requires": { + "@types/unist": "*" + } + }, "@types/history": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.3.tgz", @@ -6482,8 +6490,7 @@ "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", - "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", - "dev": true + "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" }, "@types/vfile": { "version": "3.0.2", @@ -7539,7 +7546,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "atob": { "version": "2.1.2", @@ -8619,7 +8627,8 @@ "base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true }, "batch": { "version": "0.6.1", @@ -9968,6 +9977,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -10642,6 +10652,15 @@ "sha.js": "^2.4.8" } }, + "create-react-class": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.7.0.tgz", + "integrity": "sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==", + "requires": { + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" + } + }, "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -10695,17 +10714,39 @@ } }, "cross-fetch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz", - "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "requires": { - "node-fetch": "2.6.1" + "node-fetch": "2.6.7" }, "dependencies": { "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } } } }, @@ -11806,7 +11847,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "delegate": { "version": "3.2.0", @@ -13129,7 +13171,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { "version": "1.0.1", @@ -13357,11 +13400,11 @@ } }, "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", "requires": { - "type": "^2.0.0" + "type": "^2.5.0" }, "dependencies": { "type": { @@ -13541,12 +13584,9 @@ } }, "fast-json-patch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-2.2.1.tgz", - "integrity": "sha512-4j5uBaTnsYAV5ebkidvxiLUYOwjQ+JSFljeqfTxCrH9bDmlCQaOJFS84oDJ2rAXZq2yskmk3ORfoP9DCwqFNig==", - "requires": { - "fast-deep-equal": "^2.0.1" - } + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz", + "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -13929,17 +13969,32 @@ "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" } }, + "form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, "format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=" }, + "formdata-node": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.3.2.tgz", + "integrity": "sha512-k7lYJyzDOSL6h917favP8j1L0/wNyylzU+x+1w4p5haGVHNlP58dbpdJhiCUsDbWsa9HwEtLp89obQgXl2e0qg==", + "requires": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.1" + } + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -15970,7 +16025,8 @@ "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true }, "iferr": { "version": "0.1.5", @@ -16693,14 +16749,6 @@ "whatwg-fetch": ">=0.10.0" } }, - "isomorphic-form-data": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-form-data/-/isomorphic-form-data-2.0.0.tgz", - "integrity": "sha512-TYgVnXWeESVmQSg4GLVbalmQ+B4NPi/H4eWxqALKj63KsUrcu301YDjBqaOw3h+cbak7Na4Xyps3BiptHtxTfg==", - "requires": { - "form-data": "^2.3.2" - } - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -17340,6 +17388,7 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -18689,12 +18738,14 @@ "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, "requires": { "mime-db": "1.40.0" } @@ -19140,6 +19191,11 @@ "minimatch": "^3.0.2" } }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + }, "node-emoji": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", @@ -21574,11 +21630,6 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "querystring-browser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/querystring-browser/-/querystring-browser-1.0.4.tgz", - "integrity": "sha1-8uNYgYQKgZvHsb9Zf68JeeZiLcY=" - }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", @@ -21897,9 +21948,9 @@ } }, "react-debounce-input": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.2.3.tgz", - "integrity": "sha512-7Bfjm9sxrtgB+IsSrdXoo4CVqKg7CbWC68dNhr8q7ZmY6C0AqtR524//SenHQWT+eeSG9DmSLWNWCUFSyaaWSQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/react-debounce-input/-/react-debounce-input-3.2.5.tgz", + "integrity": "sha512-WDc9nvZ8E/cT4nW1RlD/r+Nsc5Z5+Jmj2v9HT9RzsPtxkwRTQUBCKJvdt1fCYy5ME/nQPoqVYmWUWSv7whGmig==", "requires": { "lodash.debounce": "^4", "prop-types": "^15.7.2" @@ -22258,9 +22309,12 @@ } }, "react-immutable-proptypes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz", - "integrity": "sha1-Aj1vObsVyXwHHp5g0A0TbqxfoLQ=" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz", + "integrity": "sha512-Vf4gBsePlwdGvSZoLSBfd4HAP93HDauMY4fDjXhreg/vg6F3Fj/MXDNyTbltPC/xZKmZc+cjLu3598DdYK6sgQ==", + "requires": { + "invariant": "^2.2.2" + } }, "react-immutable-pure-component": { "version": "1.2.4", @@ -23920,9 +23974,19 @@ } }, "serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=" + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", + "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", + "requires": { + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + } + } }, "serialize-javascript": { "version": "4.0.0", @@ -24151,9 +24215,9 @@ }, "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==" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" } } }, @@ -25995,53 +26059,58 @@ } }, "swagger-client": { - "version": "3.10.12", - "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.10.12.tgz", - "integrity": "sha512-h2o7axvFViMc5sxwTjjza84Rhfz+C52wgMKPOT0P05jODjZhldBK7y9EvGt4zvqgzBJHS+FDQBmOT/dGf9SWdw==", + "version": "3.18.3", + "resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.3.tgz", + "integrity": "sha512-IA2kiEe0ek2r1lwIyj73zcsaZ6aIOyGm00OB+VEgCAaTBz1AOTIbTQL2HCfqvEtMThGcvxVv+e1UJhHODOx3Ew==", "requires": { - "@babel/runtime-corejs2": "^7.10.4", + "@babel/runtime-corejs3": "^7.11.2", "btoa": "^1.2.1", - "buffer": "^5.6.0", "cookie": "~0.4.1", - "cross-fetch": "^3.0.5", - "deep-extend": "~0.6.0", - "fast-json-patch": "^2.2.1", - "isomorphic-form-data": "~2.0.0", - "js-yaml": "^3.14.0", - "lodash": "^4.17.19", - "qs": "^6.9.4", - "querystring-browser": "^1.0.4", + "cross-fetch": "^3.1.5", + "deepmerge": "~4.2.2", + "fast-json-patch": "^3.0.0-1", + "form-data-encoder": "^1.4.3", + "formdata-node": "^4.0.0", + "is-plain-object": "^5.0.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "qs": "^6.10.2", "traverse": "~0.6.6", "url": "~0.11.0" }, "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", "requires": { "side-channel": "^1.0.4" } @@ -26049,70 +26118,126 @@ } }, "swagger-ui-react": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-3.32.1.tgz", - "integrity": "sha512-5LJxqX5tNcyTZEVuMDLHU+wAPJ+/1L92w5uNvhG86g6ACWNuptj4vuQHE2SFOJjEFHKFiRjhu7qYYYZgwVNC1w==", + "version": "3.52.5", + "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-3.52.5.tgz", + "integrity": "sha512-V2fidbSGCb6SmC1AyTXv6T8znWcLAjfVBs2CPTXUS7m7s//SqiRx3hXXPUNvGxKTEK76h+yvcBZf2GLD7kr63w==", "requires": { - "@babel/runtime-corejs2": "^7.10.4", - "@braintree/sanitize-url": "^4.0.0", + "@babel/runtime-corejs3": "^7.14.7", + "@braintree/sanitize-url": "^5.0.2", "@kyleshockey/object-assign-deep": "^0.4.2", "@kyleshockey/xml": "^1.0.2", - "base64-js": "^1.2.0", - "classnames": "^2.2.6", - "core-js": "^2.6.11", + "base64-js": "^1.5.1", + "classnames": "^2.3.1", "css.escape": "1.5.1", "deep-extend": "0.6.0", - "dompurify": "^2.0.7", - "ieee754": "^1.1.13", + "dompurify": "^2.2.9", + "ieee754": "^1.2.1", "immutable": "^3.x.x", - "js-file-download": "^0.4.1", - "js-yaml": "^3.13.1", - "lodash": "^4.17.19", - "memoizee": "^0.4.12", + "js-file-download": "^0.4.12", + "js-yaml": "=4.1.0", + "lodash": "^4.17.21", + "memoizee": "^0.4.15", "prop-types": "^15.7.2", "randombytes": "^2.1.0", - "react-copy-to-clipboard": "5.0.1", - "react-debounce-input": "^3.2.0", - "react-immutable-proptypes": "2.1.0", + "react-copy-to-clipboard": "5.0.3", + "react-debounce-input": "^3.2.3", + "react-immutable-proptypes": "2.2.0", "react-immutable-pure-component": "^1.1.1", "react-inspector": "^2.3.0", "react-motion": "^0.5.2", - "react-redux": "^5.1.2", - "react-syntax-highlighter": "=12.2.1", - "redux": "^4.0.5", + "react-redux": "=4.4.10", + "react-syntax-highlighter": "^15.4.4", + "redux": "=3.7.2", "redux-immutable": "3.1.0", "remarkable": "^2.0.1", "reselect": "^4.0.0", - "serialize-error": "^2.1.0", + "serialize-error": "^8.1.0", "sha.js": "^2.4.11", - "swagger-client": "=3.10.12", - "url-parse": "^1.4.7", + "swagger-client": "^3.17.0", + "url-parse": "^1.5.2", "xml-but-prettier": "^1.0.1", "zenscroll": "^4.0.2" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, "classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, - "core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" + "dompurify": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz", + "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==" + }, + "hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + } }, "highlight.js": { - "version": "9.15.10", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", - "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==" + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } }, "lowlight": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.12.1.tgz", - "integrity": "sha512-OqaVxMGIESnawn+TU/QMV5BJLbUghUfjDWPAtFqDYDmDtr4FnB+op8xM+pR7nKlauHNUHXGt0VgWatFB8voS5w==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz", + "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==", "requires": { - "fault": "^1.0.2", - "highlight.js": "~9.15.0" + "fault": "^1.0.0", + "highlight.js": "~10.7.0" + } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "react-copy-to-clipboard": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.0.3.tgz", + "integrity": "sha512-9S3j+m+UxDZOM0Qb8mhnT/rMR0NGSrj9A/073yz2DSxPMYhmYFBMYIdI2X4o8AjOjyFsSNxDRnCX6s/gRxpriw==", + "requires": { + "copy-to-clipboard": "^3", + "prop-types": "^15.5.8" } }, "react-inspector": { @@ -26126,44 +26251,55 @@ } }, "react-redux": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.1.2.tgz", - "integrity": "sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.10.tgz", + "integrity": "sha512-tjL0Bmpkj75Td0k+lXlF8Fc8a9GuXFv/3ahUOCXExWs/jhsKiQeTffdH0j5byejCGCRL4tvGFYlrwBF1X/Aujg==", "requires": { - "@babel/runtime": "^7.1.2", + "create-react-class": "^15.5.1", "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.2.4", - "loose-envify": "^1.1.0", - "prop-types": "^15.6.1", - "react-is": "^16.6.0", - "react-lifecycles-compat": "^3.0.0" + "invariant": "^2.0.0", + "lodash": "^4.17.11", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2" } }, "react-syntax-highlighter": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-12.2.1.tgz", - "integrity": "sha512-CTsp0ZWijwKRYFg9xhkWD4DSpQqE4vb2NKVMdPAkomnILSmsNBHE0n5GuI5zB+PU3ySVvXvdt9jo+ViD9XibCA==", + "version": "15.4.5", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz", + "integrity": "sha512-RC90KQTxZ/b7+9iE6s9nmiFLFjWswUcfULi4GwVzdFVKVMQySkJWBuOmJFfjwjMVCo0IUUuJrWebNKyviKpwLQ==", "requires": { "@babel/runtime": "^7.3.1", - "highlight.js": "~9.15.1", - "lowlight": "1.12.1", - "prismjs": "^1.8.4", - "refractor": "^2.4.1" + "highlight.js": "^10.4.1", + "lowlight": "^1.17.0", + "prismjs": "^1.25.0", + "refractor": "^3.2.0" } }, "redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.5.tgz", - "integrity": "sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", + "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", "requires": { - "loose-envify": "^1.4.0", - "symbol-observable": "^1.2.0" + "lodash": "^4.2.1", + "lodash-es": "^4.2.1", + "loose-envify": "^1.1.0", + "symbol-observable": "^1.0.3" + } + }, + "refractor": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.5.0.tgz", + "integrity": "sha512-QwPJd3ferTZ4cSPPjdP5bsYHMytwWYnAN5EEnLtGvkqp/FCCnGsBgxrm9EuIDnjUC3Uc/kETtvVi7fSIVC74Dg==", + "requires": { + "hastscript": "^6.0.0", + "parse-entities": "^2.0.0", + "prismjs": "~1.25.0" } }, "reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.5.tgz", + "integrity": "sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ==" } } }, @@ -27520,6 +27656,11 @@ "minimalistic-assert": "^1.0.0" } }, + "web-streams-polyfill": { + "version": "4.0.0-beta.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz", + "integrity": "sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ==" + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", diff --git a/app/package.json b/app/package.json index 0202dfd225..da07a1f554 100644 --- a/app/package.json +++ b/app/package.json @@ -89,7 +89,7 @@ "reset-css": "2.2.1", "semver-diff": "2.1.0", "simplemde": "1.11.2", - "swagger-ui-react": "3.32.1", + "swagger-ui-react": "3.52.5", "video.js": "7.17.0" }, "devDependencies": { diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index 7ea3a9f4a1..870a72d300 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -89,9 +89,8 @@ module.exports = { new webpack.ProvidePlugin({ React: 'react', Utils: 'common/utils', - }), - new webpack.ProvidePlugin({ process: 'process/browser', + Buffer: ['buffer', 'Buffer'], }), // new CircularDependencyPlugin({ // exclude: /a\.js|node_modules/, From db3c956e508500083ef1998e6a325a78a1195fd3 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Mon, 31 Jan 2022 19:21:12 +0300 Subject: [PATCH 004/284] EPMRPP-74136 || Dashboards can not be opened with disable GA (#2993) Co-authored-by: Aleksandr Zyabrev --- app/src/controllers/dashboard/sagas.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/app/src/controllers/dashboard/sagas.js b/app/src/controllers/dashboard/sagas.js index 2707d6f63d..a21e8eeabd 100644 --- a/app/src/controllers/dashboard/sagas.js +++ b/app/src/controllers/dashboard/sagas.js @@ -34,6 +34,7 @@ import { } from 'controllers/pages'; import { provideEcGA } from 'components/main/analytics/utils'; import { formatEcDashboardData } from 'components/main/analytics/events/common/widgetPages/utils'; +import { analyticsEnabledSelector } from 'controllers/appInfo'; import { ADD_DASHBOARD, CHANGE_VISIBILITY_TYPE, @@ -77,6 +78,8 @@ function* fetchDashboard() { const activeProject = yield select(activeProjectSelector); const activeDashboardId = yield select(activeDashboardIdSelector); const dashboardItems = yield select(dashboardItemsSelector); + const isAnalyticsEnabled = yield select(analyticsEnabledSelector); + let dashboard; if (dashboardItems.length === 0) { yield call(fetchDashboards, { payload: {} }); @@ -84,16 +87,8 @@ function* fetchDashboard() { } try { - const dashboard = yield call(fetch, URLS.dashboard(activeProject, activeDashboardId)); + dashboard = yield call(fetch, URLS.dashboard(activeProject, activeDashboardId)); yield put(updateDashboardItemSuccessAction(dashboard)); - - if (dashboard.widgets.length) { - provideEcGA({ - name: 'addImpression', - data: formatEcDashboardData(dashboard), - action: 'impression', - }); - } } catch (error) { const projectId = yield select(projectIdSelector); yield put( @@ -103,6 +98,14 @@ function* fetchDashboard() { }), ); } + + if (isAnalyticsEnabled && dashboard && dashboard.widgets.length) { + provideEcGA({ + name: 'addImpression', + data: formatEcDashboardData(dashboard), + action: 'impression', + }); + } } function* addDashboard({ payload: dashboard }) { From 669cdb910f8e69c19bcbddb5fbec5ef1c815c6c5 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Mon, 31 Jan 2022 19:25:57 +0300 Subject: [PATCH 005/284] EPMRPP-67804 || Fix vulnerability (#2995) Co-authored-by: Aleksandr Zyabrev --- .../loginPage/socialSection/newsBlock/postBlock/postBlock.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/pages/outside/loginPage/socialSection/newsBlock/postBlock/postBlock.jsx b/app/src/pages/outside/loginPage/socialSection/newsBlock/postBlock/postBlock.jsx index 317dbb7ba7..3ea0632364 100644 --- a/app/src/pages/outside/loginPage/socialSection/newsBlock/postBlock/postBlock.jsx +++ b/app/src/pages/outside/loginPage/socialSection/newsBlock/postBlock/postBlock.jsx @@ -18,6 +18,7 @@ import classNames from 'classnames/bind'; import PropTypes from 'prop-types'; import Parser from 'html-react-parser'; import { LOGIN_PAGE_EVENTS } from 'components/main/analytics/events'; +import DOMPurify from 'dompurify'; import styles from './postBlock.scss'; const cx = classNames.bind(styles); @@ -104,7 +105,7 @@ const handleClick = (e, tracking) => { export const PostBlock = ({ tweetData, tracking }) => (
handleClick(e, tracking)}> - {Parser(getPostContent(tweetData.text, tweetData.entities))} + {Parser(DOMPurify.sanitize(getPostContent(tweetData.text, tweetData.entities)))}
); From 5eb3ed6fabe9ea97749c5526a8ecc4de317817b7 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Tue, 1 Feb 2022 11:26:37 +0300 Subject: [PATCH 006/284] EPMRPP-74025 || Provide projectIdSelector to plugins (#2997) Co-authored-by: Aleksandr Zyabrev --- app/src/controllers/plugins/uiExtensions/createImportProps.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/controllers/plugins/uiExtensions/createImportProps.js b/app/src/controllers/plugins/uiExtensions/createImportProps.js index af1ea70550..a55528870c 100644 --- a/app/src/controllers/plugins/uiExtensions/createImportProps.js +++ b/app/src/controllers/plugins/uiExtensions/createImportProps.js @@ -65,6 +65,7 @@ import { pluginRouteSelector, updatePagePropertiesAction, pagePropertiesSelector, + projectIdSelector, } from 'controllers/pages'; import { attributesArray, isNotEmptyArray } from 'common/utils/validation/validate'; import { @@ -274,6 +275,7 @@ export const createImportProps = (pluginName) => ({ selectors: { pluginRouteSelector, activeProjectSelector, + projectIdSelector, globalIntegrationsSelector: createGlobalNamedIntegrationsSelector(pluginName), projectMembersSelector, projectInfoSelector, From 232714fc87f226c00e17f4aaab4ffa238cd4e0ff Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Tue, 1 Feb 2022 12:34:22 +0300 Subject: [PATCH 007/284] EPMRPP-74112 || fix wrong result for unique errors filter if all errors are new (#2994) * EPMRPP-74112 || fix wrong result for unique errors filter if all errors are new * EPMRPP-74112 || code review fixes - 1 --- app/src/controllers/uniqueErrors/sagas.js | 3 +- .../uniqueErrorsGrid/uniqueErrorsGrid.jsx | 38 +++++++++++++------ 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/src/controllers/uniqueErrors/sagas.js b/app/src/controllers/uniqueErrors/sagas.js index edef83976e..cb49a7d71d 100644 --- a/app/src/controllers/uniqueErrors/sagas.js +++ b/app/src/controllers/uniqueErrors/sagas.js @@ -65,6 +65,7 @@ function* getIntegration() { item.integrationType.details.metadata.supportedFeatures && item.integrationType.details.metadata.supportedFeatures.includes('uniqueErrorsClusters'), ); + if (!supportedIntegration) return null; let plugins = yield select(pluginsSelector); if (!plugins.length) { @@ -101,7 +102,7 @@ function* fetchClusters(payload = {}) { let url; const requestParams = {}; - const integration = yield getIntegration(); + const integration = yield call(getIntegration); if (integration) { url = URLS.projectIntegrationByIdCommand(project, integration.id, COMMAND_GET_CLUSTERS); requestParams.method = 'PUT'; diff --git a/app/src/pages/inside/uniqueErrorsPage/uniqueErrorsGrid/uniqueErrorsGrid.jsx b/app/src/pages/inside/uniqueErrorsPage/uniqueErrorsGrid/uniqueErrorsGrid.jsx index 430b794b2e..b81341adab 100644 --- a/app/src/pages/inside/uniqueErrorsPage/uniqueErrorsGrid/uniqueErrorsGrid.jsx +++ b/app/src/pages/inside/uniqueErrorsPage/uniqueErrorsGrid/uniqueErrorsGrid.jsx @@ -20,6 +20,12 @@ import classNames from 'classnames/bind'; import { Grid } from 'components/main/grid'; import { useSelector } from 'react-redux'; import { uniqueErrorGridHeaderCellComponentSelector } from 'controllers/plugins/uiExtensions/selectors'; +import { NoItemMessage } from 'components/main/noItemMessage'; +import { COMMON_LOCALE_KEYS } from 'common/constants/localization'; +import { useIntl } from 'react-intl'; +import { extractNamespacedQuery } from 'common/utils/routingUtils'; +import { NAMESPACE } from 'controllers/uniqueErrors'; +import { querySelector } from 'controllers/pages'; import { EmptyUniqueErrors } from '../emptyUniqueErrors'; import { ClusterItemsGridRow } from './clusterItemsGridRow'; import styles from './uniqueErrorsGrid.scss'; @@ -27,6 +33,9 @@ import styles from './uniqueErrorsGrid.scss'; const cx = classNames.bind(styles); export const UniqueErrorsGrid = ({ parentLaunch, data, loading, events, ...rest }) => { + const { formatMessage } = useIntl(); + const query = useSelector(querySelector); + const hasNamespacedQuery = Object.keys(extractNamespacedQuery(query, NAMESPACE)).length; const extensions = useSelector(uniqueErrorGridHeaderCellComponentSelector); const columns = [ { @@ -62,18 +71,23 @@ export const UniqueErrorsGrid = ({ parentLaunch, data, loading, events, ...rest return ( <> - {data.length > 0 ? ( - ({ - ...item, - hasContent: true, - }))} - loading={loading} - nestedGridRow={ClusterItemsGridRow} - nestedView - {...rest} - /> + {data.length > 0 || hasNamespacedQuery ? ( + <> + ({ + ...item, + hasContent: true, + }))} + loading={loading} + nestedGridRow={ClusterItemsGridRow} + nestedView + {...rest} + /> + {!loading && !data.length && ( + + )} + ) : ( )} From 1d3ed21c71cea8fc424eb05cf6847b40bf986df0 Mon Sep 17 00:00:00 2001 From: Vadim73i <55870906+Vadim73i@users.noreply.github.com> Date: Wed, 2 Feb 2022 12:32:15 +0300 Subject: [PATCH 008/284] EPMRPP-74075 || Make decision modal. Scroll is displayed near "Comment" section for empty comment (#3004) --- .../markdownEditor/markdownEditor.scss | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/src/components/main/markdown/markdownEditor/markdownEditor.scss b/app/src/components/main/markdown/markdownEditor/markdownEditor.scss index bc0e74624b..feaebf7352 100644 --- a/app/src/components/main/markdown/markdownEditor/markdownEditor.scss +++ b/app/src/components/main/markdown/markdownEditor/markdownEditor.scss @@ -214,9 +214,28 @@ .CodeMirror-cursor { border-left: 1px solid $COLOR--gray-light; } + + .CodeMirror-vscrollbar { + min-height: 40px; + overflow: auto; + height: auto; + + div { + min-height: 40px; + height: auto; + overflow: auto; + } + } + .CodeMirror-scroll { max-height: 145px; min-height: 30px; + height: auto; + overflow: auto !important; + + div { + height: auto !important; + } } .CodeMirror-wrap { padding: 0; From 68c0cf3cdeae919b17a410c3e09ec21721d7c170 Mon Sep 17 00:00:00 2001 From: Vadim73i <55870906+Vadim73i@users.noreply.github.com> Date: Thu, 3 Feb 2022 12:18:42 +0300 Subject: [PATCH 009/284] EPMRPP-74075 || text selection fix (#3007) --- .../main/markdown/markdownEditor/markdownEditor.scss | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/components/main/markdown/markdownEditor/markdownEditor.scss b/app/src/components/main/markdown/markdownEditor/markdownEditor.scss index feaebf7352..07ff58ee08 100644 --- a/app/src/components/main/markdown/markdownEditor/markdownEditor.scss +++ b/app/src/components/main/markdown/markdownEditor/markdownEditor.scss @@ -232,11 +232,13 @@ min-height: 30px; height: auto; overflow: auto !important; + } - div { - height: auto !important; - } + .CodeMirror-scroll > div:nth-child(2) { + height: auto !important; + min-height: 30px; } + .CodeMirror-wrap { padding: 0; } From 366a867e78967e290ff7a9cb0c2286307d94f629 Mon Sep 17 00:00:00 2001 From: Vadzim Hvazdovich Date: Mon, 7 Feb 2022 12:42:56 +0300 Subject: [PATCH 010/284] EPMRPP-72585 || Extra red borders are displayed on item's logs --- app/src/components/main/grid/gridBody/gridRow/gridRow.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/components/main/grid/gridBody/gridRow/gridRow.scss b/app/src/components/main/grid/gridBody/gridRow/gridRow.scss index 53dfa7db14..7c23ade245 100644 --- a/app/src/components/main/grid/gridBody/gridRow/gridRow.scss +++ b/app/src/components/main/grid/gridBody/gridRow/gridRow.scss @@ -257,6 +257,13 @@ $LEVEL_OFFSET_STEP: 20px; } } + .grid-row > div { + background: $COLOR--white-two; + &:first-child { + background: none; + } + } + &:hover { background-color: $COLOR--white-two; .accordion-block { From b5514ad81501502535614ddecdb28085124a0fb1 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Tue, 8 Feb 2022 10:37:18 +0300 Subject: [PATCH 011/284] EPMRPP-67803 || fix vulnerabilities (#3011) Co-authored-by: Aleksandr Zyabrev --- .../inside/logsPage/modals/attachments/har/PerfCascade.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/pages/inside/logsPage/modals/attachments/har/PerfCascade.jsx b/app/src/pages/inside/logsPage/modals/attachments/har/PerfCascade.jsx index aa0bf7cce2..fff66e212f 100644 --- a/app/src/pages/inside/logsPage/modals/attachments/har/PerfCascade.jsx +++ b/app/src/pages/inside/logsPage/modals/attachments/har/PerfCascade.jsx @@ -19,6 +19,7 @@ import PropTypes from 'prop-types'; import { fromHar } from 'perf-cascade/dist/perf-cascade'; // exports ES6 from main import 'perf-cascade/dist/perf-cascade.css'; import { NoItemMessage } from 'components/main/noItemMessage'; +import DOMPurify from 'dompurify'; export class PerfCascade extends Component { static propTypes = { @@ -37,7 +38,7 @@ export class PerfCascade extends Component { componentDidMount() { let perfCascadeSvg; try { - perfCascadeSvg = fromHar(this.props.harData); + perfCascadeSvg = fromHar(DOMPurify.sanitize(this.props.harData)); this.myRef.current.appendChild(perfCascadeSvg); } catch (e) { this.showErrorMessage(); From 7b6c367ad754db8e3bb2e555301497a114bf1762 Mon Sep 17 00:00:00 2001 From: Vadim73i <55870906+Vadim73i@users.noreply.github.com> Date: Tue, 8 Feb 2022 11:10:12 +0300 Subject: [PATCH 012/284] EPMRPP-72585 || Extra red borders are displayed on item's logs (#3013) --- app/src/pages/inside/logsPage/logsGrid/logsGrid.jsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/pages/inside/logsPage/logsGrid/logsGrid.jsx b/app/src/pages/inside/logsPage/logsGrid/logsGrid.jsx index 020d36c2c8..22db8236b6 100644 --- a/app/src/pages/inside/logsPage/logsGrid/logsGrid.jsx +++ b/app/src/pages/inside/logsPage/logsGrid/logsGrid.jsx @@ -93,6 +93,11 @@ AttachmentColumn.defaultProps = { value: {}, }; +const StatusColumn = ({ className }) =>
; +StatusColumn.propTypes = { + className: PropTypes.string.isRequired, +}; + const TimeColumn = ({ className, value, customProps: { mobile } }) => (
{dateFormat(value.time)}
); @@ -202,7 +207,7 @@ export class LogsGrid extends Component { }, }, sortable: true, - component: () =>
, + component: StatusColumn, }; const columns = [ { From 426d747d6641542cc04adc6cf00ec6996a5f18ec Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Thu, 10 Feb 2022 12:29:45 +0300 Subject: [PATCH 013/284] EPMRPP-74049 || Remove beta label (#3017) Co-authored-by: Aleksandr Zyabrev --- app/src/pages/common/settingsPage/settingsPage.jsx | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/src/pages/common/settingsPage/settingsPage.jsx b/app/src/pages/common/settingsPage/settingsPage.jsx index fabdd2922b..1bfc7d9581 100644 --- a/app/src/pages/common/settingsPage/settingsPage.jsx +++ b/app/src/pages/common/settingsPage/settingsPage.jsx @@ -34,7 +34,6 @@ import { settingsTabSelector } from 'controllers/pages'; import { activeProjectRoleSelector, userAccountRoleSelector } from 'controllers/user'; import { uiExtensionSettingsTabsSelector } from 'controllers/plugins'; import { SETTINGS_PAGE, SETTINGS_PAGE_EVENTS } from 'components/main/analytics/events'; -import { BetaBadge } from 'pages/inside/common/betaBadge'; import { NavigationTabs } from 'components/main/navigationTabs'; import { GeneralTab } from './generalTab'; import { AutoAnalysisTab } from './autoAnalysisTab'; @@ -138,12 +137,7 @@ export class SettingsPage extends Component { mobileDisabled: true, }, [INTEGRATIONS]: { - name: ( - - {this.props.intl.formatMessage(messages.integrations)} - - - ), + name: this.props.intl.formatMessage(messages.integrations), link: this.props.createTabLink(INTEGRATIONS), component: , eventInfo: SETTINGS_PAGE_EVENTS.INTEGRATIONS_TAB, From eb8010481a9e3eac0450dec1fcb72f42078e9596 Mon Sep 17 00:00:00 2001 From: Vadim73i <55870906+Vadim73i@users.noreply.github.com> Date: Mon, 14 Feb 2022 11:30:21 +0300 Subject: [PATCH 014/284] EPMRPP-74318 || jira cloud and azure dev ops plugin icons are missing (#3021) * EPMRPP-74318 || JIRA Cloud and Azure DevOps plugin icons are missing * EPMRPP-74318 || code review fixes - 1 --- app/src/components/main/image/image.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/components/main/image/image.jsx b/app/src/components/main/image/image.jsx index 73b36c893d..ab607ecf57 100644 --- a/app/src/components/main/image/image.jsx +++ b/app/src/components/main/image/image.jsx @@ -97,7 +97,7 @@ export class Image extends Component { }; normalizeFileTypeForSvg = (file) => { - if (file.type === 'text/xml') { + if (file.type.includes('text/xml')) { return new Blob([file], { type: 'image/svg+xml' }); } From 858455930d209e7133673b65988b6a9d34c5fced Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Tue, 15 Feb 2022 18:07:14 +0300 Subject: [PATCH 015/284] EPMRPP-72586 || Tooltips does not apply styles (#3016) Co-authored-by: Aleksandr Zyabrev --- .../main/tooltips/markdownTooltip/index.js | 17 ++++++++++++ .../markdownTooltip/markdownTooltip.jsx | 27 +++++++++++++++++++ .../filterDescriptionTooltipIcon.jsx | 4 +-- .../historyTable/historyItem/historyItem.jsx | 2 +- .../historyItem/messageBadge/messageBadge.jsx | 5 ++-- 5 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 app/src/components/main/tooltips/markdownTooltip/index.js create mode 100644 app/src/components/main/tooltips/markdownTooltip/markdownTooltip.jsx diff --git a/app/src/components/main/tooltips/markdownTooltip/index.js b/app/src/components/main/tooltips/markdownTooltip/index.js new file mode 100644 index 0000000000..12b28d7644 --- /dev/null +++ b/app/src/components/main/tooltips/markdownTooltip/index.js @@ -0,0 +1,17 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { MarkdownTooltip } from './markdownTooltip'; diff --git a/app/src/components/main/tooltips/markdownTooltip/markdownTooltip.jsx b/app/src/components/main/tooltips/markdownTooltip/markdownTooltip.jsx new file mode 100644 index 0000000000..dfde9e1398 --- /dev/null +++ b/app/src/components/main/tooltips/markdownTooltip/markdownTooltip.jsx @@ -0,0 +1,27 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import PropTypes from 'prop-types'; +import { MarkdownViewer } from 'components/main/markdown'; + +export const MarkdownTooltip = ({ tooltipContent }) => ; + +MarkdownTooltip.propTypes = { + tooltipContent: PropTypes.any, +}; +MarkdownTooltip.defaultProps = { + tooltipContent: '', +}; diff --git a/app/src/pages/inside/common/launchFiltersToolbar/filterList/filterItem/filterDescriptionTooltipIcon/filterDescriptionTooltipIcon.jsx b/app/src/pages/inside/common/launchFiltersToolbar/filterList/filterItem/filterDescriptionTooltipIcon/filterDescriptionTooltipIcon.jsx index e5568f7031..1bc4d3dbde 100644 --- a/app/src/pages/inside/common/launchFiltersToolbar/filterList/filterItem/filterDescriptionTooltipIcon/filterDescriptionTooltipIcon.jsx +++ b/app/src/pages/inside/common/launchFiltersToolbar/filterList/filterItem/filterDescriptionTooltipIcon/filterDescriptionTooltipIcon.jsx @@ -18,14 +18,14 @@ import classNames from 'classnames/bind'; import Parser from 'html-react-parser'; import { ALIGN_LEFT } from 'components/main/tooltips/constants'; import { withTooltip } from 'components/main/tooltips/tooltip'; -import { TextTooltip } from 'components/main/tooltips/textTooltip'; import TooltipIcon from 'common/img/tooltip-icon-inline.svg'; +import { MarkdownTooltip } from 'components/main/tooltips/markdownTooltip'; import styles from './filterDescriptionTooltipIcon.scss'; const cx = classNames.bind(styles); export const FilterDescriptionTooltipIcon = withTooltip({ - TooltipComponent: TextTooltip, + TooltipComponent: MarkdownTooltip, data: { align: ALIGN_LEFT, leftOffset: -50, diff --git a/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/historyItem.jsx b/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/historyItem.jsx index e0fed6602b..b54cbd29da 100644 --- a/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/historyItem.jsx +++ b/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/historyItem.jsx @@ -130,7 +130,7 @@ export class HistoryItem extends Component {
)} {statusesWithDefect.indexOf(status) !== -1 && this.mapDefectsToBadges()} - {issue.comment && } + {issue.comment && } {issue.externalSystemIssues && issue.externalSystemIssues.length > 0 && ( )} diff --git a/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/messageBadge/messageBadge.jsx b/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/messageBadge/messageBadge.jsx index 13d9697286..a4532ae2cf 100644 --- a/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/messageBadge/messageBadge.jsx +++ b/app/src/pages/inside/historyPage/historyView/historyTable/historyItem/messageBadge/messageBadge.jsx @@ -19,6 +19,7 @@ import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; import { withTooltip } from 'components/main/tooltips/tooltip'; import Parser from 'html-react-parser'; +import { MarkdownViewer } from 'components/main/markdown'; import styles from './messageBadge.scss'; const cx = classNames.bind(styles); @@ -26,8 +27,8 @@ const cx = classNames.bind(styles); const MessageBadgeToolTip = ({ data }) => (
{data.map((item) => ( -
- {item.ticketId} +
+
))}
From b5d2ebb4979703333bd5e81d2f2f1dc394c8cbce Mon Sep 17 00:00:00 2001 From: Ilya Date: Tue, 22 Feb 2022 10:52:03 +0300 Subject: [PATCH 016/284] EPMRPP-46935 || Launches page. Tooltip for launches with long name goes out of borders (#3025) Co-authored-by: Vadzim Hvazdovich --- .../components/main/tooltips/tooltip/withTooltip.jsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/components/main/tooltips/tooltip/withTooltip.jsx b/app/src/components/main/tooltips/tooltip/withTooltip.jsx index d62bd6ec44..1f602a300a 100644 --- a/app/src/components/main/tooltips/tooltip/withTooltip.jsx +++ b/app/src/components/main/tooltips/tooltip/withTooltip.jsx @@ -50,6 +50,8 @@ export const withTooltip = ({ TooltipComponent, data = {} }) => (WrappedComponen const styleWidth = data.dynamicWidth ? null : { width: data.width || DEFAULT_TOOLTIP_WIDTH }; const topOffset = data.topOffset || 0; const leftOffset = data.leftOffset || 0; + const clientWidth = document.documentElement.clientWidth; + const maxWidth = clientWidth - 100; return ( @@ -86,7 +88,13 @@ export const withTooltip = ({ TooltipComponent, data = {} }) => (WrappedComponen onMouseEnter={data.hoverable ? this.showTooltip : null} onMouseLeave={data.hoverable ? this.hideTooltip : null} > -
+
{!data.noArrow && (
Date: Fri, 25 Feb 2022 17:05:46 +0300 Subject: [PATCH 017/284] EPMRPP-64446 || fix keep logs, keep attachments dropdown on settings page (#3026) --- .../settingsPage/generalTab/generalTab.jsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/pages/common/settingsPage/generalTab/generalTab.jsx b/app/src/pages/common/settingsPage/generalTab/generalTab.jsx index 6bc141f4ce..308b269b6e 100644 --- a/app/src/pages/common/settingsPage/generalTab/generalTab.jsx +++ b/app/src/pages/common/settingsPage/generalTab/generalTab.jsx @@ -60,7 +60,7 @@ const selector = formValueSelector('generalForm'); @connect( (state) => ({ projectId: projectIdSelector(state), - isLoaging: projectInfoLoadingSelector(state), + isLoading: projectInfoLoadingSelector(state), jobConfig: jobAttributesSelector(state), accountRole: userAccountRoleSelector(state), userRole: activeProjectRoleSelector(state), @@ -97,7 +97,7 @@ export class GeneralTab extends Component { lang: PropTypes.string, retention: PropTypes.number, formValues: PropTypes.object, - isLoaging: PropTypes.bool, + isLoading: PropTypes.bool, }; static defaultProps = { @@ -105,7 +105,7 @@ export class GeneralTab extends Component { fetchProjectAction: () => {}, lang: 'en', retention: null, - isLoaging: false, + isLoading: false, }; componentDidMount() { @@ -258,6 +258,9 @@ export class GeneralTab extends Component { title: this.props.intl.formatMessage(Messages.keepLogsTooltip), }; }); + if (newOptions.every((v) => v.hidden)) { + newOptions.push(this.formatRetention(inputValues.keepLogs)); + } return newOptions; }; @@ -270,6 +273,9 @@ export class GeneralTab extends Component { const hidden = inputValues.keepLogs === Infinity ? false : isHidden; return { ...elem, hidden }; }); + if (newOptions.every((v) => v.hidden)) { + newOptions.push(this.formatRetention(inputValues.keepScreenshots)); + } return newOptions; }; @@ -281,8 +287,8 @@ export class GeneralTab extends Component { formatInterruptJobTimes = this.createValueFormatter(this.interruptJobTime); render() { - const { intl, accountRole, userRole, isLoaging } = this.props; - return isLoaging ? ( + const { intl, accountRole, userRole, isLoading } = this.props; + return isLoading ? ( ) : (
From c742aee91f408451935c4428bf2316089a22e591 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Fri, 25 Feb 2022 21:09:15 +0300 Subject: [PATCH 018/284] EPMRPP-75465 || Anonymize GA (#3027) Co-authored-by: Aleksandr Zyabrev --- app/src/components/main/analytics/AnalyticsWrapper.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/components/main/analytics/AnalyticsWrapper.jsx b/app/src/components/main/analytics/AnalyticsWrapper.jsx index 9d7dbd4d94..7351c494c7 100644 --- a/app/src/components/main/analytics/AnalyticsWrapper.jsx +++ b/app/src/components/main/analytics/AnalyticsWrapper.jsx @@ -99,6 +99,7 @@ export class AnalyticsWrapper extends Component { dimension5: normalizeDimensionValue(isAutoAnalyzerEnabled), dimension6: normalizeDimensionValue(isPatternAnalyzerEnabled), dimension7: isAdmin ? undefined : projectId, + anonymizeIp: true, }); ReactGA.ga()('require', 'ec'); } From 0ad15d9fd8b363ebc8c109bac0d9c276ea0d4ef0 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Fri, 25 Feb 2022 21:10:20 +0300 Subject: [PATCH 019/284] EPMRPP-74452 || Update text for empty unique err page (#3028) Co-authored-by: Aleksandr Zyabrev --- app/localization/translated/be.json | 5 +++-- app/localization/translated/ru.json | 5 +++-- app/localization/translated/uk.json | 5 +++-- .../emptyUniqueErrors/emptyUniqueErrors.jsx | 4 +++- app/src/pages/inside/uniqueErrorsPage/messages.js | 8 ++++++-- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index a95cd676d3..69ef9b83b9 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -504,9 +504,10 @@ "EmptyHistoryItem.emptyItemTooltip": "Тэставы сцэнар не запушчаны", "EmptyUniqueErr.button": "Запусціць аналіз унікальных памылак", "EmptyUniqueErr.disableButtonTooltip": "Гэтую аперацыю нельга выканаць для запускаў у працэсе", - "EmptyUniqueErr.headline": "Няма унікальных памылак", "EmptyUniqueErr.inProgressAnalysisText": "Ідзе аналіз унікальных памылак. Каб убачыць унікальную памылку гэтага запуску, абновіце старонку", "EmptyUniqueErr.inProgressUniqueErrBtn": "У працэсе...", + "EmptyUniqueErr.noUniqueErrHeadline": "Няма унікальных памылак", + "EmptyUniqueErr.noUniqueErrRunHeadline": "Аналіз унікальных памылак не праводзіўся", "EmptyUniqueErr.rerunAnalysisText": "Логаў з памылкамі ў запуску не выяўлена. Але калі запуск быў зменены, вы можаце перазапусціць аналіз яшчэ раз", "EmptyUniqueErr.text": "Унікальны аналіз памылак яшчэ не праводзіўся. Каб убачыць унікальную памылку для гэтага запуску, запусціце аналіз уручную", "EmptyUniqueErrsAnalyzeModal.excludeNumbers": "Выключыць лічбы з часопісаў", @@ -1095,7 +1096,6 @@ "MakeDecisionModal.defectIncludeInAa": "дэфект будзе ўключаны ў Аўта-Аналіз", "MakeDecisionModal.defectReplaceWith": "Тып дэфекту будзе зменены на", "MakeDecisionModal.executionToChange": "Выкананне для змен", - "MakeDecisionModal.machineLearningSuggestions": "Выкананне з {value}% падабенствам дэфекту", "MakeDecisionModal.filter": "Аналагічныя ”To Investigate” элементы ў фільтры {filterName} і бягучы элемент", "MakeDecisionModal.followingResult": "Наступныя вынікі будуць ужытыя да {items}", "MakeDecisionModal.history": "Гісторыя", @@ -1109,6 +1109,7 @@ "MakeDecisionModal.linkIssueNote": "Пасля адпраўкі тыпу дэфекту вы зможаце выбраць параметры для прывязкі новай памылкі", "MakeDecisionModal.linkRemovedOnNextStep": "Спасылка на сістэму адсочвання дэфектаў будзе выдалена на наступным кроку", "MakeDecisionModal.linkReplacedWith": "Спасылка на сістэму адсочвання памылак будзе заменена на", + "MakeDecisionModal.machineLearningSuggestions": "Выкананне з {value}% падабенствам дэфекту", "MakeDecisionModal.manual": "Уручную", "MakeDecisionModal.modalNote": "Вы павінны захаваць змены альбо адмяніць іх перад закрыццём акна", "MakeDecisionModal.noItems": "Няма Элементаў", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index 91f2a17251..efbca02067 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -504,9 +504,10 @@ "EmptyHistoryItem.emptyItemTooltip": "Тестовый сценарий не запускался", "EmptyUniqueErr.button": "Запустить анализ уникальных ошибок", "EmptyUniqueErr.disableButtonTooltip": "Эту операцию нельзя выполнить для запусков в процессе", - "EmptyUniqueErr.headline": "Нет уникальных ошибок", "EmptyUniqueErr.inProgressAnalysisText": "Идет анализ уникальных ошибок. Чтобы увидеть уникальную ошибку этого запуска, обновите страницу", "EmptyUniqueErr.inProgressUniqueErrBtn": "В процессе...", + "EmptyUniqueErr.noUniqueErrHeadline": "Нет уникальных ошибок", + "EmptyUniqueErr.noUniqueErrRunHeadline": "Анализ уникальных ошибок не проводился", "EmptyUniqueErr.rerunAnalysisText": "Логов с ошибками в запуске не обнаружено. Но если запуск был изменен, вы можете перезапустить анализ еще раз", "EmptyUniqueErr.text": "Уникальный анализ ошибок еще не проводился. Чтобы увидеть уникальную ошибку для этого запуска, запустите анализ вручную", "EmptyUniqueErrsAnalyzeModal.excludeNumbers": "Исключить цифры из журнала", @@ -1095,7 +1096,6 @@ "MakeDecisionModal.defectIncludeInAa": "дефект будет включен в Авто-Анализ", "MakeDecisionModal.defectReplaceWith": "Тип дефекта будет изменен на", "MakeDecisionModal.executionToChange": "Исполнение для изменения", - "MakeDecisionModal.machineLearningSuggestions": "Исполнение с {value}% подобием дефекта", "MakeDecisionModal.filter": "Аналогичные ”To Investigate” элементы в фильтре {filterName} и текущий элемент", "MakeDecisionModal.followingResult": "Следующие результаты будут применены к {items}", "MakeDecisionModal.history": "История", @@ -1109,6 +1109,7 @@ "MakeDecisionModal.linkIssueNote": "После отправки типа дефекта вы сможете выбрать параметры для привязки новой ошибки", "MakeDecisionModal.linkRemovedOnNextStep": "Ссылка на систему отслеживания дефектов будет удалена на следующем шаге", "MakeDecisionModal.linkReplacedWith": "Ссылка на систему отслеживания ошибок будет заменена на", + "MakeDecisionModal.machineLearningSuggestions": "Исполнение с {value}% подобием дефекта", "MakeDecisionModal.manual": "Вручную", "MakeDecisionModal.modalNote": "Вы должны сохранить изменения или отменить их перед закрытием окна", "MakeDecisionModal.noItems": "Нет Элементов", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index 1fdcc76f2d..01cd0e4247 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -504,9 +504,10 @@ "EmptyHistoryItem.emptyItemTooltip": "Тестовий сценарій не запускався", "EmptyUniqueErr.button": "Запустити аналіз унікальних помилок", "EmptyUniqueErr.disableButtonTooltip": "Цю операцію не можна виконати для запусків у процесі", - "EmptyUniqueErr.headline": "Немає унікальних помилок", "EmptyUniqueErr.inProgressAnalysisText": "Йде аналіз унікальних помилок. Щоб побачити унікальну помилку цього запуску, оновіть сторінку", "EmptyUniqueErr.inProgressUniqueErrBtn": "В процесі...", + "EmptyUniqueErr.noUniqueErrHeadline": "Немає унікальних помилок", + "EmptyUniqueErr.noUniqueErrRunHeadline": "Аналіз унікальних помилок не проводився", "EmptyUniqueErr.rerunAnalysisText": "Логів з помилками у запуску не виявлено. Але якщо запуск було змінено, ви можете повторно запустити аналіз", "EmptyUniqueErr.text": "Унікальний аналіз помилок не проводився. Щоб побачити унікальну помилку для цього запуску, запустіть аналіз вручну", "EmptyUniqueErrsAnalyzeModal.excludeNumbers": "Виключити цифри із журналів", @@ -1095,7 +1096,6 @@ "MakeDecisionModal.defectIncludeInAa": "дефект буде включено в Авто-Аналіз", "MakeDecisionModal.defectReplaceWith": "Тип дефекту буде змінено на", "MakeDecisionModal.executionToChange": "Виконання для змін", - "MakeDecisionModal.machineLearningSuggestions": "Виконання з {value}% подібністю до дефекту", "MakeDecisionModal.filter": "Аналогічні ”To Investigate” елементи у фільтрі {filterName} та поточний елемент", "MakeDecisionModal.followingResult": "Наступні результати будуть застосовані до {items}", "MakeDecisionModal.history": "Iсторія", @@ -1109,6 +1109,7 @@ "MakeDecisionModal.linkIssueNote": "Після відправки типу дефекту ви зможете вибрати параметри для прив'язки нової помилки", "MakeDecisionModal.linkRemovedOnNextStep": "Посилання на систему відстеження дефектів буде видалено на наступному кроці", "MakeDecisionModal.linkReplacedWith": "Посилання на систему відстеження помилок буде замінено на", + "MakeDecisionModal.machineLearningSuggestions": "Виконання з {value}% подібністю до дефекту", "MakeDecisionModal.manual": "Вручну", "MakeDecisionModal.modalNote": "Перш ніж закривати вікно, потрібно зберегти зміни або скасувати їх", "MakeDecisionModal.noItems": "Немає Елементів", diff --git a/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx b/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx index 509ffb1555..3fabb450bd 100644 --- a/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx +++ b/app/src/pages/inside/uniqueErrorsPage/emptyUniqueErrors/emptyUniqueErrors.jsx @@ -118,7 +118,9 @@ export class EmptyUniqueErrors extends Component { return ( <>

- {formatMessage(messages.emptyUniqueErrHeadline)} + {lastRunAnalysis + ? formatMessage(messages.noUniqueErrHeadline) + : formatMessage(messages.noUniqueErrRunHeadline)}

diff --git a/app/src/pages/inside/uniqueErrorsPage/messages.js b/app/src/pages/inside/uniqueErrorsPage/messages.js index 0b88873e48..0f6621956b 100644 --- a/app/src/pages/inside/uniqueErrorsPage/messages.js +++ b/app/src/pages/inside/uniqueErrorsPage/messages.js @@ -29,10 +29,14 @@ export const messages = defineMessages({ id: 'EmptyUniqueErr.button', defaultMessage: 'Run Unique Error Analysis', }, - emptyUniqueErrHeadline: { - id: 'EmptyUniqueErr.headline', + noUniqueErrHeadline: { + id: 'EmptyUniqueErr.noUniqueErrHeadline', defaultMessage: 'No Unique Errors', }, + noUniqueErrRunHeadline: { + id: 'EmptyUniqueErr.noUniqueErrRunHeadline', + defaultMessage: 'No unique error analysis was run', + }, emptyUniqueErrText: { id: 'EmptyUniqueErr.text', defaultMessage: From 13cfd67902a5805deeb7dbdadf4f8891152a8156 Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich Date: Mon, 28 Feb 2022 14:42:10 +0300 Subject: [PATCH 020/284] EPMRPP-42344 || disable inputs, add tooltip if analyzer off --- app/localization/translated/be.json | 3 +-- app/localization/translated/ru.json | 3 +-- app/localization/translated/uk.json | 3 +-- app/src/common/constants/localization.js | 4 +++ .../buttons/bigButton/bigButton.jsx | 12 ++++++++- .../buttons/toggleButton/toggleButton.jsx | 14 ++++++++-- .../inputs/inputDropdown/inputDropdown.jsx | 5 +++- .../accuracyFormBlock/accuracyFormBlock.jsx | 27 ++++++++++++++----- .../analysisForm/analysisForm.jsx | 18 ++++++++++--- .../strategyBlock/strategyBlock.jsx | 22 ++++++++------- .../autoAnalysisTab/autoAnalysisTab.jsx | 1 + .../indexActionsBlock/indexActionsBlock.jsx | 7 ++--- 12 files changed, 86 insertions(+), 33 deletions(-) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index 69ef9b83b9..6bad776f2b 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -200,6 +200,7 @@ "CommandItem.responseTitle": "Адказ", "Common.actions": "Дзеянні", "Common.add": "Дадаць", + "Common.analyzerDisabled": "Сэрвiс analyzer не запушчаны", "Common.back": "Назад", "Common.cancel": "Адмяніць", "Common.clone": "Кланаваць", @@ -791,7 +792,6 @@ "IncludeInAAModal.textMultiple": "Вы ўпэўненыя, што жадаеце ўключыць элементы ў Аўта-Аналіз?", "IncludeInAAModal.title": "Уключыць элемент у Аўта-Аналіз", "IncludeInAAModal.titleMultiple": "Уключыць элементы у Аўта-Аналіз", - "IndexActionsBlock.analyzerDisabledButtonTitle": "Сэрвiс ANALYZER не запушчаны", "IndexActionsBlock.generateIndexButtonCaption": "Згенераваць Iндэкс", "IndexActionsBlock.generateIndexButtonProgressCaption": "У прагрэсе...", "IndexActionsBlock.generateIndexDescription": "Уся інфармацыя будзе выдалена з ElasticSearch і згенэравана зноў, на падставе прааналізаваных дадзеных на Вашым праекце з улікам дзеючых налад Аўта-Аналізу. Вы зможаце запусціць Аўта-Аналіз пасля заканчэння працэсу, аб якім будзеце апавешчаны лістом па электроннай пошце", @@ -1698,7 +1698,6 @@ "StrategyBlock.autoAnalysisSwitcherTitle": "Аўтаматычны аналіз", "StrategyBlock.sameNameLaunchesCaption": "Запускі з аднолькавымі імёнамі", "StrategyBlock.sameNameLaunchesInfo": "Тэставыя элементы будуць прааналізаваны на аснове раней прааналізаваных дадзеных у запусках з аднолькавымі імёнамі", - "StrategyBlock.serviceAnalyzerDisabledTooltip": "Сэрвіс аналізу не запушчаны", "StrategyBlock.strategySelectorTitle": "Стратэгія Аўта-Аналізу", "StrategyBlock.uniqueErrorAutoAnalysisStatusInfo": "Пры ВКЛ аналіз пачынаецца, як толькі заканчваецца любы запуск
Пры ВЫКЛ не пачнецца аўтаматычна, але можна выклікаць ўручную", "StrategyBlock.uniqueErrorAutoAnalysisSwitcherTitle": "Аўтаматычны аналіз унікальных памылак", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index efbca02067..ce49022d10 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -200,6 +200,7 @@ "CommandItem.responseTitle": "Ответ", "Common.actions": "Действия", "Common.add": "Добавить", + "Common.analyzerDisabled": "Сервис analyzer не запущен", "Common.back": "Назад", "Common.cancel": "Отменить", "Common.clone": "Клонировать", @@ -791,7 +792,6 @@ "IncludeInAAModal.textMultiple": "Вы уверены, что хотите включить элементы в Авто-Анализ?", "IncludeInAAModal.title": "Включить элемент в Авто-Анализ", "IncludeInAAModal.titleMultiple": "Включить элементы в Авто-Анализ", - "IndexActionsBlock.analyzerDisabledButtonTitle": "Сервис ANALYZER не запущен", "IndexActionsBlock.generateIndexButtonCaption": "Сгенерировать Индекс", "IndexActionsBlock.generateIndexButtonProgressCaption": "В прогрессе...", "IndexActionsBlock.generateIndexDescription": "Вся информация будет удалена из ElasticSearch и сгенерирована заново, на основании проанализированных данных на Вашем проекте с учетом действующих настроек Авто-Анализа. Вы сможете запустить Авто-Анализ после окончания процесса, о котором будете уведомлены письмом по электронной почте", @@ -1698,7 +1698,6 @@ "StrategyBlock.autoAnalysisSwitcherTitle": "Автоматический анализ", "StrategyBlock.sameNameLaunchesCaption": "Запуски с одинаковыми именами", "StrategyBlock.sameNameLaunchesInfo": "Тестовые элементы будут проанализированы на основе ранее проанализированных данных в запусках с одинаковыми именами", - "StrategyBlock.serviceAnalyzerDisabledTooltip": "Сервис анализа не запущен", "StrategyBlock.strategySelectorTitle": "Стратегия Авто-Анализа", "StrategyBlock.uniqueErrorAutoAnalysisStatusInfo": "При ВКЛ анализ начинается, как только заканчивается любой запуск
При ВЫКЛ не начнется автоматически, но можно вызвать вручную", "StrategyBlock.uniqueErrorAutoAnalysisSwitcherTitle": "Автоматический анализ уникальных ошибок", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index 01cd0e4247..44eeec6b8f 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -200,6 +200,7 @@ "CommandItem.responseTitle": "Відповідь", "Common.actions": "Дії", "Common.add": "Додати", + "Common.analyzerDisabled": "Сервіс analyzer не запущений", "Common.back": "Тому", "Common.cancel": "Скасувати", "Common.clone": "Клонувати", @@ -791,7 +792,6 @@ "IncludeInAAModal.textMultiple": "Ви впевнені, що хочете включити елементи в Авто-Аналіз?", "IncludeInAAModal.title": "Включити елемент Авто-Аналіз", "IncludeInAAModal.titleMultiple": "Включити елементи Авто-Аналіз", - "IndexActionsBlock.analyzerDisabledButtonTitle": "Аналізатор запущений Сервіс не", "IndexActionsBlock.generateIndexButtonCaption": "Індекс Згенерувати", "IndexActionsBlock.generateIndexButtonProgressCaption": "В прогресі...", "IndexActionsBlock.generateIndexDescription": "Вся інформація буде видалена з Elasticsearch та згенерована заново, на підставі проаналізованих даних на Вашому проекті з урахуванням діючих налаштувань Авто-Аналізу. Ви зможете запустити Авто-Аналіз після закінчення процесу, про який буде повідомлено листом по електронній пошті", @@ -1698,7 +1698,6 @@ "StrategyBlock.autoAnalysisSwitcherTitle": "Автоматичний аналіз", "StrategyBlock.sameNameLaunchesCaption": "Запуски з однаковими іменами", "StrategyBlock.sameNameLaunchesInfo": "Тестові елементи будуть проаналізовані на основі раніше проаналізованих даних в запусках з однаковими іменами", - "StrategyBlock.serviceAnalyzerDisabledTooltip": "Cервіс аналізу не запущено", "StrategyBlock.strategySelectorTitle": "Авто-Стратегія Аналізу", "StrategyBlock.uniqueErrorAutoAnalysisStatusInfo": "При ВКЛ аналіз починається, як тільки закінчується будь-який запуск
а При ВИКЛ не розпочнеться автоматично, але можна викликати вручну", "StrategyBlock.uniqueErrorAutoAnalysisSwitcherTitle": "Автоматичний аналіз унікальних помилок", diff --git a/app/src/common/constants/localization.js b/app/src/common/constants/localization.js index d4248c8268..21fad6bfb1 100644 --- a/app/src/common/constants/localization.js +++ b/app/src/common/constants/localization.js @@ -161,4 +161,8 @@ export const COMMON_LOCALE_KEYS = defineMessages({ id: 'Common.openInNewTab', defaultMessage: 'Open in new tab', }, + ANALYZER_DISABLED: { + id: 'Common.analyzerDisabled', + defaultMessage: 'Service analyzer is not running', + }, }); diff --git a/app/src/components/buttons/bigButton/bigButton.jsx b/app/src/components/buttons/bigButton/bigButton.jsx index e7cdb40eb0..bfb00cd3ce 100644 --- a/app/src/components/buttons/bigButton/bigButton.jsx +++ b/app/src/components/buttons/bigButton/bigButton.jsx @@ -30,6 +30,7 @@ export const BigButton = ({ roundedCorners, onClick, form, + title, }) => { const classes = cx('big-button', className, { 'rounded-corners': roundedCorners, @@ -39,7 +40,14 @@ export const BigButton = ({ }); return ( - ); @@ -55,6 +63,7 @@ BigButton.propTypes = { roundedCorners: PropTypes.bool, onClick: PropTypes.func, form: PropTypes.string, + title: PropTypes.string, }; BigButton.defaultProps = { @@ -67,4 +76,5 @@ BigButton.defaultProps = { roundedCorners: false, onClick: () => {}, form: null, + title: '', }; diff --git a/app/src/components/buttons/toggleButton/toggleButton.jsx b/app/src/components/buttons/toggleButton/toggleButton.jsx index a01e3db7f8..aab99268f8 100644 --- a/app/src/components/buttons/toggleButton/toggleButton.jsx +++ b/app/src/components/buttons/toggleButton/toggleButton.jsx @@ -20,8 +20,16 @@ import styles from './toggleButton.scss'; const cx = classNames.bind(styles); -export const ToggleButton = ({ items, value, separated, onChange, mobileDisabled, disabled }) => ( -

+export const ToggleButton = ({ + items, + value, + separated, + onChange, + mobileDisabled, + disabled, + title, +}) => ( +
{items.map((item) => (
{}, + title: '', }; diff --git a/app/src/components/inputs/inputDropdown/inputDropdown.jsx b/app/src/components/inputs/inputDropdown/inputDropdown.jsx index 309ccf63ca..ca9fb6ad93 100644 --- a/app/src/components/inputs/inputDropdown/inputDropdown.jsx +++ b/app/src/components/inputs/inputDropdown/inputDropdown.jsx @@ -44,6 +44,7 @@ export class InputDropdown extends Component { mobileDisabled: PropTypes.bool, independentGroupSelection: PropTypes.bool, customClasses: PropTypes.object, + title: PropTypes.string, }; static defaultProps = { @@ -68,6 +69,7 @@ export class InputDropdown extends Component { dropdownOption: '', opened: '', }, + title: '', }; state = { opened: false, @@ -212,10 +214,11 @@ export class InputDropdown extends Component { multiple, selectAll, customClasses, + title, } = this.props; return ( -
+
{({ ref }) => (
{}, + isAnalyzerServiceAvailable: true, }; constructor(props) { @@ -112,7 +115,11 @@ export class AccuracyFormBlock extends Component { normalizeValue = (value) => value && `${value}`.replace(/^0(?=[0-9])|\D+/g, ''); render() { - const { intl, disabled } = this.props; + const { intl, disabled, isAnalyzerServiceAvailable } = this.props; + const analyzerIsNotRunningTooltip = isAnalyzerServiceAvailable + ? '' + : intl.formatMessage(COMMON_LOCALE_KEYS.ANALYZER_DISABLED); + return ( {intl.formatMessage(messages.numberOfLogLinesDescription)}

, }} - disabled={disabled} + disabled={disabled || !isAnalyzerServiceAvailable} + title={analyzerIsNotRunningTooltip} >
@@ -140,7 +148,8 @@ export class AccuracyFormBlock extends Component { customBlock={{ node:

{intl.formatMessage(messages.allMessagesShouldMatchDescription)}

, }} - disabled={disabled} + disabled={disabled || !isAnalyzerServiceAvailable} + title={analyzerIsNotRunningTooltip} > @@ -155,7 +164,8 @@ export class AccuracyFormBlock extends Component { customBlock={{ node:

{intl.formatMessage(messages.minimumShouldMatchDescription)}

, }} - disabled={disabled} + disabled={disabled || !isAnalyzerServiceAvailable} + title={analyzerIsNotRunningTooltip} > {intl.formatMessage(messages.searchLogsMinShouldMatchDescription)}

, }} - disabled={disabled} + disabled={disabled || !isAnalyzerServiceAvailable} + title={analyzerIsNotRunningTooltip} >
- + {intl.formatMessage(messages.submitButtonText)} diff --git a/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/analysisForm.jsx b/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/analysisForm.jsx index 403c836672..60a19ee36c 100644 --- a/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/analysisForm.jsx +++ b/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/analysisForm.jsx @@ -27,6 +27,7 @@ import { SETTINGS_PAGE_EVENTS, getAutoAnalysisMinimumShouldMatchSubmitEvent, } from 'components/main/analytics/events'; +import { COMMON_LOCALE_KEYS } from 'common/constants/localization'; import { AccuracyFormBlock } from './accuracyFormBlock'; import { NUMBER_OF_LOG_LINES, @@ -116,6 +117,7 @@ export class AnalysisForm extends Component { change: PropTypes.func, handleSubmit: PropTypes.func, onFormSubmit: PropTypes.func, + isAnalyzerServiceAvailable: PropTypes.bool, }; static defaultProps = { @@ -126,6 +128,7 @@ export class AnalysisForm extends Component { change: () => {}, handleSubmit: () => {}, onFormSubmit: () => {}, + isAnalyzerServiceAvailable: true, }; state = { @@ -216,7 +219,7 @@ export class AnalysisForm extends Component { }; render() { - const { intl, handleSubmit, disabled } = this.props; + const { intl, handleSubmit, disabled, isAnalyzerServiceAvailable } = this.props; return (
@@ -226,15 +229,24 @@ export class AnalysisForm extends Component {
- + ); } diff --git a/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/strategyBlock/strategyBlock.jsx b/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/strategyBlock/strategyBlock.jsx index 5677c0d1f4..6a0f676563 100644 --- a/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/strategyBlock/strategyBlock.jsx +++ b/app/src/pages/common/settingsPage/autoAnalysisTab/analysisForm/strategyBlock/strategyBlock.jsx @@ -26,6 +26,7 @@ import { FormField } from 'components/fields/formField'; import { InputDropdown } from 'components/inputs/inputDropdown'; import { SETTINGS_PAGE_EVENTS } from 'components/main/analytics/events'; import { messages as importMessages } from 'pages/inside/uniqueErrorsPage'; +import { COMMON_LOCALE_KEYS } from 'common/constants/localization'; import { ANALYZER_ENABLED, ANALYZER_MODE, @@ -77,10 +78,6 @@ const messages = defineMessages({ defaultMessage: 'If ON - analysis starts as soon as any launch finished
If OFF - not automatic, but can be invoked manually', }, - serviceAnalyzerDisabledTooltip: { - id: 'StrategyBlock.serviceAnalyzerDisabledTooltip', - defaultMessage: 'Service analyzer is not running', - }, unAssignTitleNoPermission: { id: 'UnassignButton.unAssignTitleNoPermission', defaultMessage: 'You have no enough permission', @@ -161,7 +158,7 @@ export class StrategyBlock extends Component { } = this.props; if (!isAnalyzerServiceAvailable) { - return formatMessage(messages.serviceAnalyzerDisabledTooltip); + return formatMessage(COMMON_LOCALE_KEYS.ANALYZER_DISABLED); } else if (disabled) { return formatMessage(messages.unAssignTitleNoPermission); } else { @@ -183,6 +180,9 @@ export class StrategyBlock extends Component { { label: formatMessage(importMessages.uniqueErrAnalyzeModalIncludeNumbers), value: false }, { label: formatMessage(importMessages.uniqueErrAnalyzeModalExcludeNumbers), value: true }, ]; + const analyzerIsNotRunningTooltip = isAnalyzerServiceAvailable + ? '' + : formatMessage(COMMON_LOCALE_KEYS.ANALYZER_DISABLED); return (
@@ -197,8 +197,9 @@ export class StrategyBlock extends Component { @@ -217,8 +218,9 @@ export class StrategyBlock extends Component { value={data[ANALYZER_MODE]} onChange={this.changeAnalyzerMode} name="aa-strategy" - disabled={disabled} + disabled={disabled || !isAnalyzerServiceAvailable} mobileDisabled + title={analyzerIsNotRunningTooltip} > {formatMessage(messages.sameNameLaunchesCaption)} @@ -241,8 +243,9 @@ export class StrategyBlock extends Component { value={data[ANALYZER_MODE]} onChange={this.changeAnalyzerMode} name="aa-strategy" - disabled={disabled} + disabled={disabled || !isAnalyzerServiceAvailable} mobileDisabled + title={analyzerIsNotRunningTooltip} > {formatMessage(messages.allLaunchesCaption)} @@ -275,8 +278,9 @@ export class StrategyBlock extends Component {
diff --git a/app/src/pages/common/settingsPage/autoAnalysisTab/autoAnalysisTab.jsx b/app/src/pages/common/settingsPage/autoAnalysisTab/autoAnalysisTab.jsx index 8249ab9933..189141515b 100644 --- a/app/src/pages/common/settingsPage/autoAnalysisTab/autoAnalysisTab.jsx +++ b/app/src/pages/common/settingsPage/autoAnalysisTab/autoAnalysisTab.jsx @@ -215,6 +215,7 @@ export class AutoAnalysisTab extends Component { initialValues={this.getAnalysisFormValues()} analysisBaseSettings={analysisBaseSettings} onFormSubmit={this.updateProjectConfig} + isAnalyzerServiceAvailable={isAnalyzerServiceAvailable} /> Date: Thu, 10 Mar 2022 17:20:01 +0300 Subject: [PATCH 021/284] EPMRPP-75543 || ldap appear manage password field as password (#3033) --- .../ldapIntegration/ldapFormFields/ldapFormFields.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/components/integrations/integrationProviders/ldapIntegration/ldapFormFields/ldapFormFields.jsx b/app/src/components/integrations/integrationProviders/ldapIntegration/ldapFormFields/ldapFormFields.jsx index 50354a9f42..e9da9d11a0 100644 --- a/app/src/components/integrations/integrationProviders/ldapIntegration/ldapFormFields/ldapFormFields.jsx +++ b/app/src/components/integrations/integrationProviders/ldapIntegration/ldapFormFields/ldapFormFields.jsx @@ -195,6 +195,7 @@ export class LdapFormFields extends Component { { fieldProps: { name: MANAGER_PASSWORD_KEY, + type: 'password', }, label: messages.managerPasswordLabel, children: defaultField, From 397749a13a92702094bb48278b3faaf5f4ed1f2a Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Fri, 11 Mar 2022 12:31:29 +0300 Subject: [PATCH 022/284] EPMRPP-72440 || hide action button for tablet & mobile screens (#3034) --- .../common/suiteTestToolbar/actionPanel/actionPanel.scss | 2 +- .../launchesPage/LaunchToolbar/actionPanel/actionPanel.jsx | 2 +- .../launchesPage/LaunchToolbar/actionPanel/actionPanel.scss | 6 ++++++ .../uniqueErrorsToolbar/actionPanel/actionPanel.scss | 6 ++++++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/src/pages/inside/common/suiteTestToolbar/actionPanel/actionPanel.scss b/app/src/pages/inside/common/suiteTestToolbar/actionPanel/actionPanel.scss index 9962472c7c..2291cc83a1 100644 --- a/app/src/pages/inside/common/suiteTestToolbar/actionPanel/actionPanel.scss +++ b/app/src/pages/inside/common/suiteTestToolbar/actionPanel/actionPanel.scss @@ -34,7 +34,7 @@ } .mobile-hidden { - @media (max-width: $SCREEN_XS_MAX) { + @media (max-width: $SCREEN_SM_MAX) { display: none; } } diff --git a/app/src/pages/inside/launchesPage/LaunchToolbar/actionPanel/actionPanel.jsx b/app/src/pages/inside/launchesPage/LaunchToolbar/actionPanel/actionPanel.jsx index 29f69fa622..5b33eebb14 100644 --- a/app/src/pages/inside/launchesPage/LaunchToolbar/actionPanel/actionPanel.jsx +++ b/app/src/pages/inside/launchesPage/LaunchToolbar/actionPanel/actionPanel.jsx @@ -237,7 +237,7 @@ export class ActionPanel extends Component {
)} -
+
Date: Mon, 7 Feb 2022 23:15:19 +0300 Subject: [PATCH 023/284] EPMRPP-74085 || Prefetch plugin metadata and load extensions on first render --- app/.eslintrc | 6 +- app/package-lock.json | 6 ++ app/package.json | 1 + .../extensionLoader/extensionLoader.jsx | 99 +++++++++++++++++++ .../extensionLoader/extensionTypes.js | 20 ++++ app/src/components/extensionLoader/index.js | 2 + .../integrationSettingsContainer.jsx | 14 +-- .../elements/pluginIcon/pluginIcon.jsx | 5 +- .../addIntegrationModal.jsx | 13 +-- .../plugins/uiExtensions/actions.js | 11 ++- .../plugins/uiExtensions/constants.js | 4 + .../plugins/uiExtensions/createImportProps.js | 2 + .../plugins/uiExtensions/reducer.js | 16 ++- .../controllers/plugins/uiExtensions/sagas.js | 68 ++++++++++++- .../plugins/uiExtensions/selectors.js | 52 ++++++---- .../plugins/uiExtensions/selectors.test.js | 31 ------ .../common/settingsPage/settingsPage.jsx | 22 ++--- 17 files changed, 286 insertions(+), 86 deletions(-) create mode 100644 app/src/components/extensionLoader/extensionLoader.jsx create mode 100644 app/src/components/extensionLoader/extensionTypes.js create mode 100644 app/src/components/extensionLoader/index.js delete mode 100644 app/src/controllers/plugins/uiExtensions/selectors.test.js diff --git a/app/.eslintrc b/app/.eslintrc index e30ee41e19..ced00066cd 100644 --- a/app/.eslintrc +++ b/app/.eslintrc @@ -6,7 +6,7 @@ "plugin:prettier/recommended", "prettier/react" ], - "plugins": ["react", "jsx-a11y", "prettier", "babel"], + "plugins": ["react", "react-hooks", "jsx-a11y", "prettier", "babel"], "settings": { "import/resolver": { "webpack": { @@ -59,7 +59,9 @@ "react/sort-comp": 0, "import/no-useless-path-segments": 0, "no-invalid-this": 0, - "prefer-object-spread": 0 + "prefer-object-spread": 0, + "react-hooks/rules-of-hooks": 2, + "react-hooks/exhaustive-deps": 1 }, "parserOptions": { "ecmaFeatures": { diff --git a/app/package-lock.json b/app/package-lock.json index 7a22d30c5e..09ed51526a 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -13118,6 +13118,12 @@ } } }, + "eslint-plugin-react-hooks": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", + "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", + "dev": true + }, "eslint-rule-composer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", diff --git a/app/package.json b/app/package.json index da07a1f554..7fd033557e 100644 --- a/app/package.json +++ b/app/package.json @@ -131,6 +131,7 @@ "eslint-plugin-jsx-a11y": "6.2.3", "eslint-plugin-prettier": "3.1.1", "eslint-plugin-react": "7.16.0", + "eslint-plugin-react-hooks": "^4.3.0", "html-webpack-plugin": "5.5.0", "husky": "3.0.8", "identity-obj-proxy": "3.0.0", diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx new file mode 100644 index 0000000000..45adc9656d --- /dev/null +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -0,0 +1,99 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import PropTypes from 'prop-types'; +import { fetch } from 'common/utils'; +import { URLS } from 'common/urls'; +import { activeProjectSelector } from 'controllers/user'; +import { COMMAND_GET_FILE } from 'controllers/plugins/uiExtensions/constants'; +import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; +import { createImportProps } from 'controllers/plugins/uiExtensions/createImportProps'; +import { extensionType, uiExtensionType } from './extensionTypes'; + +const EXTENSION_PROPS = 'extensionProps'; + +const useDynamicScript = (extension, loaded) => { + const { pluginName, fileKey } = extension; + const activeProject = useSelector(activeProjectSelector); + const [ready, setReady] = React.useState(loaded); + const [failed, setFailed] = React.useState(false); + + React.useEffect(() => { + if (!fileKey || loaded) { + return; + } + + fetch(URLS.pluginCommandCommon(activeProject, pluginName, COMMAND_GET_FILE), { + method: 'PUT', + data: { fileKey }, + }) + .then((fileData) => { + const element = document.createElement('script'); + + element.type = 'text/javascript'; + element.async = true; + element.innerText = fileData; + + document.head.appendChild(element); + + setReady(true); + setFailed(false); + }) + .catch((e) => { + setReady(false); + setFailed(true); + console.error(e); + }); + }, [fileKey, loaded]); + + return { + ready, + failed, + }; +}; + +// TODO: Create a special error boundary for extension components +// TODO: Remove components from global scope when their sharing will be implemented based on WMF +function ExtensionLoader({ extension, ...componentProps }) { + const { library, fileKey, componentName, pluginName } = extension; + const loaded = !!(window[library] && window[library][componentName]); + const { ready, failed } = useDynamicScript(extension, loaded); + + if (!ready) { + return ; + } + + if (failed) { + return

Failed to load extension: {fileKey}

; + } + + const Component = window[library][componentName]; + let extensionImportProps; + if (window[library][EXTENSION_PROPS]) { + extensionImportProps = window[library][EXTENSION_PROPS]; + } else { + extensionImportProps = createImportProps(pluginName); + window[library][EXTENSION_PROPS] = extensionImportProps; + } + + return ; +} +ExtensionLoader.propTypes = { + extension: PropTypes.oneOfType([extensionType, uiExtensionType]), +}; +ExtensionLoader.defaultProps = { + extension: {}, +}; + +export function ExtensionLoaderWrapper({ extension, ...componentProps }) { + return extension.component ? ( + + ) : ( + + ); +} +ExtensionLoaderWrapper.propTypes = { + extension: PropTypes.oneOfType([extensionType, uiExtensionType]), +}; +ExtensionLoaderWrapper.defaultProps = { + extension: {}, +}; diff --git a/app/src/components/extensionLoader/extensionTypes.js b/app/src/components/extensionLoader/extensionTypes.js new file mode 100644 index 0000000000..60346f9ca4 --- /dev/null +++ b/app/src/components/extensionLoader/extensionTypes.js @@ -0,0 +1,20 @@ +import PropTypes from 'prop-types'; + +export const uiExtensionType = PropTypes.shape({ + name: PropTypes.string.isRequired, + type: PropTypes.string.isRequired, + title: PropTypes.string, + component: PropTypes.func.isRequired, +}); + +/* New plugins mechanism related code below */ + +export const extensionType = PropTypes.shape({ + name: PropTypes.string.isRequired, + pluginName: PropTypes.string.isRequired, + type: PropTypes.string.isRequired, + title: PropTypes.string, + fileKey: PropTypes.string, + library: PropTypes.string, + componentName: PropTypes.string, +}); diff --git a/app/src/components/extensionLoader/index.js b/app/src/components/extensionLoader/index.js new file mode 100644 index 0000000000..9b3a407ca8 --- /dev/null +++ b/app/src/components/extensionLoader/index.js @@ -0,0 +1,2 @@ +export { ExtensionLoaderWrapper as ExtensionLoader } from './extensionLoader'; +export { extensionType, uiExtensionType } from './extensionTypes'; diff --git a/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx b/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx index cd3a93ee0c..699a306136 100644 --- a/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx +++ b/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx @@ -22,6 +22,7 @@ import { updateIntegrationAction } from 'controllers/plugins'; import { uiExtensionIntegrationSettingsSelector } from 'controllers/plugins/uiExtensions/selectors'; import { INTEGRATIONS_SETTINGS_COMPONENTS_MAP } from 'components/integrations/settingsComponentsMap'; import { PluginIcon } from 'components/integrations/elements/pluginIcon'; +import { ExtensionLoader, extensionType, uiExtensionType } from 'components/extensionLoader'; import styles from './integrationSettingsContainer.scss'; const cx = classNames.bind(styles); @@ -38,14 +39,7 @@ export class IntegrationSettingsContainer extends Component { static propTypes = { goToPreviousPage: PropTypes.func.isRequired, updateIntegrationAction: PropTypes.func.isRequired, - settingsExtensions: PropTypes.arrayOf( - PropTypes.shape({ - name: PropTypes.string.isRequired, - pluginName: PropTypes.string.isRequired, - title: PropTypes.string, - component: PropTypes.func.isRequired, - }), - ), + settingsExtensions: PropTypes.arrayOf(PropTypes.oneOfType([extensionType, uiExtensionType])), data: PropTypes.object, isGlobal: PropTypes.bool, }; @@ -101,7 +95,8 @@ export class IntegrationSettingsContainer extends Component { ); const IntegrationSettingsComponent = INTEGRATIONS_SETTINGS_COMPONENTS_MAP[instanceType] || - (integrationSettingsExtension && integrationSettingsExtension.component); + (integrationSettingsExtension && ExtensionLoader); + const updatedData = { ...data, name: updatedParameters.name || data.name, @@ -122,6 +117,7 @@ export class IntegrationSettingsContainer extends Component { onUpdate={this.updateIntegration} goToPreviousPage={goToPreviousPage} isGlobal={isGlobal} + extension={integrationSettingsExtension} />
); diff --git a/app/src/components/integrations/elements/pluginIcon/pluginIcon.jsx b/app/src/components/integrations/elements/pluginIcon/pluginIcon.jsx index 5dc99e2c7e..031920b9ce 100644 --- a/app/src/components/integrations/elements/pluginIcon/pluginIcon.jsx +++ b/app/src/components/integrations/elements/pluginIcon/pluginIcon.jsx @@ -28,12 +28,11 @@ import { Image } from 'components/main/image'; export const PluginIcon = ({ pluginData, className, ...rest }) => { const { details, name } = pluginData; const isDynamicIconAvailable = details && details.binaryData && details.binaryData.icon; + const projectId = useSelector(activeProjectSelector); + const globalIntegrations = useSelector(globalIntegrationsSelector); const calculateIconSrc = () => { if (isDynamicIconAvailable) { - const projectId = useSelector(activeProjectSelector); - const globalIntegrations = useSelector(globalIntegrationsSelector); - const isCommonCommandSupported = isPluginSupportsCommonCommand(pluginData, COMMAND_GET_FILE); if (isCommonCommandSupported) { diff --git a/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx b/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx index 4f13fae8cc..e483a2b4c2 100644 --- a/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx +++ b/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx @@ -25,6 +25,7 @@ import { INTEGRATION_FORM } from 'components/integrations/elements/integrationSe import { PLUGINS_PAGE_EVENTS } from 'components/main/analytics/events'; import { connect } from 'react-redux'; import { uiExtensionIntegrationFormFieldsSelector } from 'controllers/plugins/uiExtensions/selectors'; +import { ExtensionLoader, extensionType, uiExtensionType } from 'components/extensionLoader'; import { INTEGRATIONS_FORM_FIELDS_COMPONENTS_MAP } from '../../formFieldComponentsMap'; const messages = defineMessages({ @@ -58,14 +59,7 @@ export class AddIntegrationModal extends Component { initialize: PropTypes.func.isRequired, change: PropTypes.func.isRequired, dirty: PropTypes.bool.isRequired, - fieldsExtensions: PropTypes.arrayOf( - PropTypes.shape({ - name: PropTypes.string.isRequired, - pluginName: PropTypes.string.isRequired, - title: PropTypes.string, - component: PropTypes.func.isRequired, - }), - ), + fieldsExtensions: PropTypes.arrayOf(PropTypes.oneOfType([extensionType, uiExtensionType])), data: PropTypes.object, tracking: PropTypes.shape({ trackEvent: PropTypes.func, @@ -125,7 +119,7 @@ export class AddIntegrationModal extends Component { ); const FieldsComponent = INTEGRATIONS_FORM_FIELDS_COMPONENTS_MAP[instanceType] || - (integrationFieldsExtension && integrationFieldsExtension.component); + (integrationFieldsExtension && ExtensionLoader); return ( ); diff --git a/app/src/controllers/plugins/uiExtensions/actions.js b/app/src/controllers/plugins/uiExtensions/actions.js index 173e96cc72..69ec591ba7 100644 --- a/app/src/controllers/plugins/uiExtensions/actions.js +++ b/app/src/controllers/plugins/uiExtensions/actions.js @@ -14,7 +14,11 @@ * limitations under the License. */ -import { EXTENSION_LOAD_FINISH, EXTENSION_LOAD_START } from './constants'; +import { + EXTENSION_LOAD_FINISH, + EXTENSION_LOAD_START, + FETCH_EXTENSIONS_METADATA_SUCCESS, +} from './constants'; export const extensionLoadStartAction = () => ({ type: EXTENSION_LOAD_START, @@ -22,3 +26,8 @@ export const extensionLoadStartAction = () => ({ export const extensionLoadFinishAction = () => ({ type: EXTENSION_LOAD_FINISH, }); + +export const fetchExtensionsMetadataSuccessAction = (extensionsMetadata) => ({ + type: FETCH_EXTENSIONS_METADATA_SUCCESS, + payload: extensionsMetadata, +}); diff --git a/app/src/controllers/plugins/uiExtensions/constants.js b/app/src/controllers/plugins/uiExtensions/constants.js index a139f80212..3e40c9dfe8 100644 --- a/app/src/controllers/plugins/uiExtensions/constants.js +++ b/app/src/controllers/plugins/uiExtensions/constants.js @@ -21,3 +21,7 @@ export const COMMAND_GET_CLUSTERS = 'getClusters'; export const EXTENSION_LOAD_START = 'extensionLoadStart'; export const EXTENSION_LOAD_FINISH = 'extensionLoadFinish'; + +/* New plugins mechanism related code below */ + +export const FETCH_EXTENSIONS_METADATA_SUCCESS = 'fetchExtensionsMetadataSuccess'; diff --git a/app/src/controllers/plugins/uiExtensions/createImportProps.js b/app/src/controllers/plugins/uiExtensions/createImportProps.js index a55528870c..8c6037014f 100644 --- a/app/src/controllers/plugins/uiExtensions/createImportProps.js +++ b/app/src/controllers/plugins/uiExtensions/createImportProps.js @@ -191,6 +191,7 @@ const INPUTS = { WithAsyncLoading, }; +// TODO: in the future these components and other stuff will be shared via WMF export const createImportProps = (pluginName) => ({ lib: { React, @@ -276,6 +277,7 @@ export const createImportProps = (pluginName) => ({ pluginRouteSelector, activeProjectSelector, projectIdSelector, + // TODO: must be removed when the common plugin commands will be used globalIntegrationsSelector: createGlobalNamedIntegrationsSelector(pluginName), projectMembersSelector, projectInfoSelector, diff --git a/app/src/controllers/plugins/uiExtensions/reducer.js b/app/src/controllers/plugins/uiExtensions/reducer.js index 2918c56448..3c834248cb 100644 --- a/app/src/controllers/plugins/uiExtensions/reducer.js +++ b/app/src/controllers/plugins/uiExtensions/reducer.js @@ -15,7 +15,11 @@ */ import { combineReducers } from 'redux'; -import { EXTENSION_LOAD_FINISH, EXTENSION_LOAD_START } from './constants'; +import { + EXTENSION_LOAD_FINISH, + EXTENSION_LOAD_START, + FETCH_EXTENSIONS_METADATA_SUCCESS, +} from './constants'; const extensionsLoadedReducer = (state = false, { type }) => { switch (type) { @@ -28,6 +32,16 @@ const extensionsLoadedReducer = (state = false, { type }) => { } }; +const extensionsMetadataReducer = (state = [], { type, payload }) => { + switch (type) { + case FETCH_EXTENSIONS_METADATA_SUCCESS: + return payload; + default: + return state; + } +}; + export const uiExtensionsReducer = combineReducers({ uiExtensionsLoaded: extensionsLoadedReducer, + extensionsMetadata: extensionsMetadataReducer, }); diff --git a/app/src/controllers/plugins/uiExtensions/sagas.js b/app/src/controllers/plugins/uiExtensions/sagas.js index df7b7b20f3..c6ec9758a5 100644 --- a/app/src/controllers/plugins/uiExtensions/sagas.js +++ b/app/src/controllers/plugins/uiExtensions/sagas.js @@ -5,7 +5,69 @@ import { activeProjectSelector } from 'controllers/user'; import { COMMAND_GET_FILE } from './constants'; import { pluginsSelector, globalIntegrationsSelector } from '../selectors'; import { filterIntegrationsByName, isPluginSupportsCommonCommand } from '../utils'; -import { extensionLoadFinishAction, extensionLoadStartAction } from './actions'; +import { + extensionLoadFinishAction, + extensionLoadStartAction, + fetchExtensionsMetadataSuccessAction, +} from './actions'; + +const METADATA_FILE_KEY = 'metadata'; +const MAIN_FILE_KEY = 'main'; + +function* fetchExtensionsMetadata(integrations) { + const plugins = yield select(pluginsSelector); + const uiExtensionPlugins = plugins.filter( + (plugin) => + plugin.enabled && + plugin.details && + plugin.details.binaryData && + plugin.details.binaryData[METADATA_FILE_KEY] && + (isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE) || + plugin.details.allowedCommands.includes(COMMAND_GET_FILE)), + ); + + if (!uiExtensionPlugins.length) { + return; + } + + const activeProject = yield select(activeProjectSelector); + + // TODO: discuss with BE whether we can fetch plugins metadata via single API call + const calls = uiExtensionPlugins + .map((plugin) => { + const isCommonCommandSupported = isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE); + let url; + + if (isCommonCommandSupported) { + url = URLS.pluginCommandCommon(activeProject, plugin.name, COMMAND_GET_FILE); + } else { + const integration = filterIntegrationsByName(integrations, plugin.name)[0]; + if (!integration) { + return null; + } + url = URLS.projectIntegrationByIdCommand(activeProject, integration.id, COMMAND_GET_FILE); + } + + return call(fetch, url, { + method: 'PUT', + data: { fileKey: METADATA_FILE_KEY }, + }); + }) + .filter(Boolean); + + if (calls.length === 0) { + return; + } + + try { + const results = yield all(calls); + const metadataArray = results.filter(Boolean); + + yield put(fetchExtensionsMetadataSuccessAction(metadataArray)); + } catch (err) { + console.error('Plugins metadata load error'); // eslint-disable-line no-console + } +} export function* fetchUiExtensions() { // TODO: In the future plugins with js parts should not depend on integrations, only on plugins. @@ -14,12 +76,16 @@ export function* fetchUiExtensions() { if (!globalIntegrations.length) { return; } + + yield call(fetchExtensionsMetadata, globalIntegrations); + const plugins = yield select(pluginsSelector); const uiExtensionPlugins = plugins.filter( (plugin) => plugin.enabled && plugin.details && plugin.details.binaryData && + plugin.details.binaryData[MAIN_FILE_KEY] && (isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE) || plugin.details.allowedCommands.includes(COMMAND_GET_FILE)), ); diff --git a/app/src/controllers/plugins/uiExtensions/selectors.js b/app/src/controllers/plugins/uiExtensions/selectors.js index 7b6b79b488..1afbd75119 100644 --- a/app/src/controllers/plugins/uiExtensions/selectors.js +++ b/app/src/controllers/plugins/uiExtensions/selectors.js @@ -17,40 +17,58 @@ import { uiExtensionMap } from './uiExtensionStorage'; export const extensionsLoadedSelector = (state) => domainSelector(state).uiExtensions.uiExtensionsLoaded; -export const createUiExtensionSelectorByType = (type) => - createSelector(enabledPluginNamesSelector, extensionsLoadedSelector, (pluginNames) => - Array.from(uiExtensionMap.entries()) - .filter(([name]) => pluginNames.includes(name)) - .map(([, extensions]) => extensions) - .reduce((acc, val) => acc.concat(val), []) - .filter((extension) => extension.type === type), +const extensionsMetadataSelector = (state) => + domainSelector(state).uiExtensions.extensionsMetadata || []; + +export const createExtensionSelectorByType = (type) => + createSelector( + enabledPluginNamesSelector, + extensionsMetadataSelector, + extensionsLoadedSelector, + (pluginNames, extensionsMetadata) => { + // TODO: omit it when legacy uiExtensions support will be removed + const uiExtensions = Array.from(uiExtensionMap.entries()) + .filter(([name]) => pluginNames.includes(name)) + .map(([, extensions]) => extensions); + + const newExtensions = extensionsMetadata + .filter(({ pluginName }) => pluginNames.includes(pluginName)) + .map(({ pluginName, library, extensions }) => + extensions.map((ext) => ({ ...ext, pluginName, library })), + ); + + return uiExtensions + .concat(newExtensions) + .reduce((acc, val) => acc.concat(val), []) + .filter((extension) => extension.type === type); + }, ); -export const uiExtensionSettingsTabsSelector = createUiExtensionSelectorByType( +export const uiExtensionSettingsTabsSelector = createExtensionSelectorByType( EXTENSION_TYPE_SETTINGS_TAB, ); -export const uiExtensionAdminPagesSelector = createUiExtensionSelectorByType( +export const uiExtensionAdminPagesSelector = createExtensionSelectorByType( EXTENSION_TYPE_ADMIN_PAGE, ); -export const uiExtensionPagesSelector = createUiExtensionSelectorByType(EXTENSION_TYPE_PAGE); -export const uiExtensionSidebarComponentsSelector = createUiExtensionSelectorByType( +export const uiExtensionPagesSelector = createExtensionSelectorByType(EXTENSION_TYPE_PAGE); +export const uiExtensionSidebarComponentsSelector = createExtensionSelectorByType( EXTENSION_TYPE_SIDEBAR_COMPONENT, ); -export const uiExtensionLaunchItemComponentsSelector = createUiExtensionSelectorByType( +export const uiExtensionLaunchItemComponentsSelector = createExtensionSelectorByType( EXTENSION_TYPE_LAUNCH_ITEM_COMPONENT, ); -export const uiExtensionIntegrationFormFieldsSelector = createUiExtensionSelectorByType( +export const uiExtensionIntegrationFormFieldsSelector = createExtensionSelectorByType( EXTENSION_TYPE_INTEGRATION_FORM_FIELDS, ); -export const uiExtensionIntegrationSettingsSelector = createUiExtensionSelectorByType( +export const uiExtensionIntegrationSettingsSelector = createExtensionSelectorByType( EXTENSION_TYPE_INTEGRATION_SETTINGS, ); -export const uiExtensionPostIssueFormSelector = createUiExtensionSelectorByType( +export const uiExtensionPostIssueFormSelector = createExtensionSelectorByType( EXTENSION_TYPE_POST_ISSUE_FORM, ); -export const uniqueErrorGridCellComponentSelector = createUiExtensionSelectorByType( +export const uniqueErrorGridCellComponentSelector = createExtensionSelectorByType( EXTENSION_TYPE_UNIQUE_ERROR_GRID_CELL_COMPONENT, ); -export const uniqueErrorGridHeaderCellComponentSelector = createUiExtensionSelectorByType( +export const uniqueErrorGridHeaderCellComponentSelector = createExtensionSelectorByType( EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT, ); diff --git a/app/src/controllers/plugins/uiExtensions/selectors.test.js b/app/src/controllers/plugins/uiExtensions/selectors.test.js deleted file mode 100644 index 48a997cc32..0000000000 --- a/app/src/controllers/plugins/uiExtensions/selectors.test.js +++ /dev/null @@ -1,31 +0,0 @@ -import { createUiExtensionSelectorByType } from './selectors'; -import { uiExtensionMap } from './uiExtensionStorage'; - -describe('plugins/uiExtension/selectors', () => { - beforeEach(() => { - uiExtensionMap.clear(); - }); - - describe('createUiExtensionSelectorByType', () => { - test('should return a function', () => { - expect(createUiExtensionSelectorByType('page')).toBeInstanceOf(Function); - }); - - test('created selector should return an empty array in case of no items found', () => { - const selector = createUiExtensionSelectorByType('tab').resultFunc; - expect(selector(['name'])).toEqual([]); - uiExtensionMap.set('name', [{ type: 'tab' }]); - expect(selector([])).toEqual([]); - }); - - test('created selector should return all enabled extensions filtered by type', () => { - uiExtensionMap.set('name', [{ type: 'tab' }, { type: 'page' }, { type: 'tab' }]); - const selector = createUiExtensionSelectorByType('tab').resultFunc; - expect(selector(['name'])).toEqual([{ type: 'tab' }, { type: 'tab' }]); - }); - }); - - afterAll(() => { - uiExtensionMap.clear(); - }); -}); diff --git a/app/src/pages/common/settingsPage/settingsPage.jsx b/app/src/pages/common/settingsPage/settingsPage.jsx index 1bfc7d9581..757a0c5f11 100644 --- a/app/src/pages/common/settingsPage/settingsPage.jsx +++ b/app/src/pages/common/settingsPage/settingsPage.jsx @@ -35,6 +35,7 @@ import { activeProjectRoleSelector, userAccountRoleSelector } from 'controllers/ import { uiExtensionSettingsTabsSelector } from 'controllers/plugins'; import { SETTINGS_PAGE, SETTINGS_PAGE_EVENTS } from 'components/main/analytics/events'; import { NavigationTabs } from 'components/main/navigationTabs'; +import { ExtensionLoader, uiExtensionType, extensionType } from 'components/extensionLoader'; import { GeneralTab } from './generalTab'; import { AutoAnalysisTab } from './autoAnalysisTab'; import { NotificationsTab } from './notificationsTab'; @@ -81,7 +82,7 @@ const messages = defineMessages({ activeTab: settingsTabSelector(state), accountRole: userAccountRoleSelector(state), userRole: activeProjectRoleSelector(state), - tabExtensions: uiExtensionSettingsTabsSelector(state), + extensions: uiExtensionSettingsTabsSelector(state), }), { onChangeTab: (linkAction) => linkAction, @@ -98,33 +99,30 @@ export class SettingsPage extends Component { activeTab: PropTypes.string, accountRole: PropTypes.string.isRequired, userRole: PropTypes.string.isRequired, - tabExtensions: PropTypes.arrayOf( - PropTypes.shape({ - name: PropTypes.string.isRequired, - title: PropTypes.string, - component: PropTypes.func.isRequired, - }), - ), + extensions: PropTypes.arrayOf(PropTypes.oneOfType([extensionType, uiExtensionType])), }; static defaultProps = { activeTab: GENERAL, - tabExtensions: [], + extensions: [], }; - createExtensionTabs = () => - this.props.tabExtensions.reduce( + createExtensionTabs = () => { + const { extensions } = this.props; + + return extensions.reduce( (acc, extension) => ({ ...acc, [extension.name]: { name: extension.title || extension.name, link: this.props.createTabLink(extension.name), - component: , + component: , mobileDisabled: true, eventInfo: SETTINGS_PAGE_EVENTS.extensionTabClick(extension.title || extension.name), }, }), {}, ); + }; createTabsConfig = () => { const extensionTabs = this.createExtensionTabs(); From b5dd0eab3b6b6234dba6bbb0814e9eda90d5e1eb Mon Sep 17 00:00:00 2001 From: Ilya Date: Fri, 25 Mar 2022 11:29:51 +0300 Subject: [PATCH 024/284] Update Dockerfile-full with fixed alpine version --- Dockerfile-full | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-full b/Dockerfile-full index da9aad0415..587d09439c 100644 --- a/Dockerfile-full +++ b/Dockerfile-full @@ -1,4 +1,4 @@ -FROM alpine:latest as generate-build-info +FROM alpine:3.10.9 as generate-build-info RUN apk add git RUN apk add make RUN mkdir -p /usr/src/app/build From 65578af6e594cfe60640dbfefd1e4c100e0c40e6 Mon Sep 17 00:00:00 2001 From: Ilya Date: Fri, 25 Mar 2022 11:47:01 +0300 Subject: [PATCH 025/284] Update Dockerfile-full alpine version to 3.15.2 --- Dockerfile-full | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-full b/Dockerfile-full index 587d09439c..c1eb4227b9 100644 --- a/Dockerfile-full +++ b/Dockerfile-full @@ -1,4 +1,4 @@ -FROM alpine:3.10.9 as generate-build-info +FROM alpine:3.15.2 as generate-build-info RUN apk add git RUN apk add make RUN mkdir -p /usr/src/app/build From 77bce06fc27d47bb1673474d5b9ce9d46109c4be Mon Sep 17 00:00:00 2001 From: Hleb Kanonik <50049166+Cyberglamdring@users.noreply.github.com> Date: Fri, 25 Mar 2022 11:56:19 +0300 Subject: [PATCH 026/284] Update Dockerfile-full --- Dockerfile-full | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-full b/Dockerfile-full index c1eb4227b9..9661bb7211 100644 --- a/Dockerfile-full +++ b/Dockerfile-full @@ -1,4 +1,4 @@ -FROM alpine:3.15.2 as generate-build-info +FROM alpine:3.15 as generate-build-info RUN apk add git RUN apk add make RUN mkdir -p /usr/src/app/build From ece31ed2f60bfb1f82ceaa4e69e36b0d4a082b51 Mon Sep 17 00:00:00 2001 From: Hleb Kanonik <50049166+Cyberglamdring@users.noreply.github.com> Date: Fri, 25 Mar 2022 12:25:42 +0300 Subject: [PATCH 027/284] Update Dockerfile-full (#3043) * Update Dockerfile-full * Update Dockerfile-full * Update Dockerfile-full --- Dockerfile-full | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-full b/Dockerfile-full index 9661bb7211..8d57c01f11 100644 --- a/Dockerfile-full +++ b/Dockerfile-full @@ -1,4 +1,4 @@ -FROM alpine:3.15 as generate-build-info +FROM alpine:3.14.4 as generate-build-info RUN apk add git RUN apk add make RUN mkdir -p /usr/src/app/build From ace54dced896f7d7935074cfb795996e93719bb9 Mon Sep 17 00:00:00 2001 From: Hleb Kanonik <50049166+Cyberglamdring@users.noreply.github.com> Date: Fri, 25 Mar 2022 12:40:40 +0300 Subject: [PATCH 028/284] Update Dockerfile-full (#3044) --- Dockerfile-full | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile-full b/Dockerfile-full index 8d57c01f11..587d09439c 100644 --- a/Dockerfile-full +++ b/Dockerfile-full @@ -1,4 +1,4 @@ -FROM alpine:3.14.4 as generate-build-info +FROM alpine:3.10.9 as generate-build-info RUN apk add git RUN apk add make RUN mkdir -p /usr/src/app/build From 249779277c63a733b5e79ea787e9e5a7509c934e Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Fri, 25 Mar 2022 12:08:16 +0200 Subject: [PATCH 029/284] EPMRPP-69185 || fix bts issue type dropdown (#3040) --- .../bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx b/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx index b5a8cd1921..94a9cd432e 100644 --- a/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx +++ b/app/src/components/integrations/elements/bts/btsPropertiesForIssueForm/btsPropertiesForIssueForm.jsx @@ -401,6 +401,7 @@ export class BtsPropertiesForIssueForm extends Component { onChange={this.handleIssueTypeChange} mobileDisabled options={this.issueTypeDropdownOptions} + disabled={loading} />

From 9ae0f9ae2c0d7ece9f74fd34bb330c7fcac50307 Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Thu, 24 Mar 2022 22:08:17 +0300 Subject: [PATCH 030/284] EPMRPP-75825 || Add Webpack Modules Federation config. Update modules loading --- app/package-lock.json | 20 ++-- app/package.json | 4 +- app/src/common/urls.js | 3 + .../extensionLoader/extensionLoader.jsx | 91 +++++-------------- .../extensionLoader/extensionTypes.js | 16 ++-- app/src/components/extensionLoader/hooks.js | 59 ++++++++++++ app/src/components/extensionLoader/index.js | 2 +- .../extensionLoader/loadComponent.js | 16 ++++ .../integrationSettingsContainer.jsx | 4 +- .../addIntegrationModal.jsx | 6 +- .../plugins/uiExtensions/actions.js | 6 ++ .../plugins/uiExtensions/constants.js | 1 + .../plugins/uiExtensions/registerPlugin.jsx | 1 + .../controllers/plugins/uiExtensions/sagas.js | 41 +++------ .../plugins/uiExtensions/selectors.js | 6 +- .../uiExtensions/uiExtensionStorage.js | 1 + app/src/init.js | 1 + .../common/settingsPage/settingsPage.jsx | 4 +- app/webpack/base.config.js | 23 ++++- 19 files changed, 179 insertions(+), 126 deletions(-) create mode 100644 app/src/components/extensionLoader/hooks.js create mode 100644 app/src/components/extensionLoader/loadComponent.js create mode 100644 app/src/init.js diff --git a/app/package-lock.json b/app/package-lock.json index 09ed51526a..fb4498c029 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -21875,9 +21875,9 @@ } }, "react": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz", - "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -22158,14 +22158,14 @@ } }, "react-dom": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.12.0.tgz", - "integrity": "sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.18.0" + "scheduler": "^0.19.1" } }, "react-draggable": { @@ -23870,9 +23870,9 @@ "dev": true }, "scheduler": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz", - "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" diff --git a/app/package.json b/app/package.json index 7fd033557e..8838d6cfef 100644 --- a/app/package.json +++ b/app/package.json @@ -59,12 +59,12 @@ "qhistory": "1.0.0", "qs": "6.5.2", "rc-slider": "8.6.3", - "react": "16.12.0", + "react": "16.13.1", "react-color": "2.17.0", "react-copy-to-clipboard": "5.0.1", "react-custom-scrollbars": "4.2.1", "react-datepicker": "1.4.1", - "react-dom": "16.12.0", + "react-dom": "16.13.1", "react-dropzone": "4.2.9", "react-event-observer": "0.5.11", "react-ga": "2.5.3", diff --git a/app/src/common/urls.js b/app/src/common/urls.js index dd8a05771e..fe1f78daff 100644 --- a/app/src/common/urls.js +++ b/app/src/common/urls.js @@ -270,6 +270,9 @@ export const URLS = { plugin: () => `${urlBase}plugin`, pluginUpdate: (pluginId) => `${urlBase}plugin/${pluginId}`, + pluginFile: (pluginName, fileKey) => `${urlBase}plugin/${pluginName}/file/${fileKey}`, + pluginPublicFile: (pluginName, fileKey) => + `${urlBase}plugin/public/${pluginName}/file/${fileKey}`, pluginCommandCommon: (projectId, pluginName, command) => `${urlBase}plugin/${projectId}/${pluginName}/common/${command}`, globalIntegrationsByPluginName: (pluginName = '') => diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx index 45adc9656d..692f4d31a1 100644 --- a/app/src/components/extensionLoader/extensionLoader.jsx +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -1,84 +1,41 @@ import React from 'react'; -import { useSelector } from 'react-redux'; -import PropTypes from 'prop-types'; -import { fetch } from 'common/utils'; import { URLS } from 'common/urls'; -import { activeProjectSelector } from 'controllers/user'; -import { COMMAND_GET_FILE } from 'controllers/plugins/uiExtensions/constants'; import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; import { createImportProps } from 'controllers/plugins/uiExtensions/createImportProps'; -import { extensionType, uiExtensionType } from './extensionTypes'; +import { extensionType } from './extensionTypes'; +import { useFederatedComponent } from './hooks'; -const EXTENSION_PROPS = 'extensionProps'; - -const useDynamicScript = (extension, loaded) => { - const { pluginName, fileKey } = extension; - const activeProject = useSelector(activeProjectSelector); - const [ready, setReady] = React.useState(loaded); - const [failed, setFailed] = React.useState(false); - - React.useEffect(() => { - if (!fileKey || loaded) { - return; - } - - fetch(URLS.pluginCommandCommon(activeProject, pluginName, COMMAND_GET_FILE), { - method: 'PUT', - data: { fileKey }, - }) - .then((fileData) => { - const element = document.createElement('script'); - - element.type = 'text/javascript'; - element.async = true; - element.innerText = fileData; - - document.head.appendChild(element); - - setReady(true); - setFailed(false); - }) - .catch((e) => { - setReady(false); - setFailed(true); - console.error(e); - }); - }, [fileKey, loaded]); - - return { - ready, - failed, - }; -}; +const DEFAULT_EXTENSION_FILE_NAME = 'remoteEntity.js'; // TODO: Create a special error boundary for extension components -// TODO: Remove components from global scope when their sharing will be implemented based on WMF function ExtensionLoader({ extension, ...componentProps }) { - const { library, fileKey, componentName, pluginName } = extension; - const loaded = !!(window[library] && window[library][componentName]); - const { ready, failed } = useDynamicScript(extension, loaded); + const { moduleName, scope, pluginName } = extension; + // TODO: use public/private endpoint to get files based on extension preferences + const url = URLS.pluginFile(pluginName, DEFAULT_EXTENSION_FILE_NAME); - if (!ready) { - return ; - } + const { failed, Component } = useFederatedComponent(scope, moduleName, url); if (failed) { - return

Failed to load extension: {fileKey}

; + return

Failed to load extension: {moduleName}

; } - const Component = window[library][componentName]; - let extensionImportProps; - if (window[library][EXTENSION_PROPS]) { - extensionImportProps = window[library][EXTENSION_PROPS]; - } else { - extensionImportProps = createImportProps(pluginName); - window[library][EXTENSION_PROPS] = extensionImportProps; - } - - return ; + // TODO: remove legacy extensions when all existing plugins will be migrated to the new engine + const extensionImportProps = createImportProps(pluginName); + + return ( + }> + {Component ? ( + + ) : null} + + ); } ExtensionLoader.propTypes = { - extension: PropTypes.oneOfType([extensionType, uiExtensionType]), + extension: extensionType, }; ExtensionLoader.defaultProps = { extension: {}, @@ -92,7 +49,7 @@ export function ExtensionLoaderWrapper({ extension, ...componentProps }) { ); } ExtensionLoaderWrapper.propTypes = { - extension: PropTypes.oneOfType([extensionType, uiExtensionType]), + extension: extensionType, }; ExtensionLoaderWrapper.defaultProps = { extension: {}, diff --git a/app/src/components/extensionLoader/extensionTypes.js b/app/src/components/extensionLoader/extensionTypes.js index 60346f9ca4..a60aac4f68 100644 --- a/app/src/components/extensionLoader/extensionTypes.js +++ b/app/src/components/extensionLoader/extensionTypes.js @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; -export const uiExtensionType = PropTypes.shape({ +// TODO: remove legacy extensions when all existing plugins will be migrated to the new engine +const oldExtensionType = PropTypes.shape({ name: PropTypes.string.isRequired, type: PropTypes.string.isRequired, title: PropTypes.string, @@ -9,12 +10,13 @@ export const uiExtensionType = PropTypes.shape({ /* New plugins mechanism related code below */ -export const extensionType = PropTypes.shape({ +const newExtensionType = PropTypes.shape({ name: PropTypes.string.isRequired, - pluginName: PropTypes.string.isRequired, - type: PropTypes.string.isRequired, title: PropTypes.string, - fileKey: PropTypes.string, - library: PropTypes.string, - componentName: PropTypes.string, + type: PropTypes.string.isRequired, + moduleName: PropTypes.string, + scope: PropTypes.string, + pluginName: PropTypes.string.isRequired, }); + +export const extensionType = PropTypes.oneOfType([oldExtensionType, newExtensionType]); diff --git a/app/src/components/extensionLoader/hooks.js b/app/src/components/extensionLoader/hooks.js new file mode 100644 index 0000000000..06b493bc51 --- /dev/null +++ b/app/src/components/extensionLoader/hooks.js @@ -0,0 +1,59 @@ +import React from 'react'; +import { loadComponent } from './loadComponent'; + +const useDynamicScript = (scope, url) => { + const loaded = !!window[scope]; + const [ready, setReady] = React.useState(loaded); + const [failed, setFailed] = React.useState(false); + + React.useEffect(() => { + if (loaded) { + return; + } + + setReady(false); + setFailed(false); + + const element = document.createElement('script'); + + element.src = url; + element.type = 'text/javascript'; + element.async = true; + + element.onload = () => { + setReady(true); + }; + + element.onerror = () => { + setReady(false); + setFailed(true); + }; + + document.head.appendChild(element); + }, [url, loaded]); + + return { + ready, + failed, + }; +}; + +export const useFederatedComponent = (scope, moduleName, url) => { + const key = `${scope}-${moduleName}`; + const [Component, setComponent] = React.useState(null); + const { ready, failed } = useDynamicScript(scope, url); + React.useEffect(() => { + if (Component) { + setComponent(null); + } + }, [key]); + + React.useEffect(() => { + if (ready && !Component) { + const LoadedComponent = React.lazy(loadComponent(scope, moduleName)); + setComponent(LoadedComponent); + } + }, [Component, ready, key]); + + return { failed, Component }; +}; diff --git a/app/src/components/extensionLoader/index.js b/app/src/components/extensionLoader/index.js index 9b3a407ca8..2df9e7f4cb 100644 --- a/app/src/components/extensionLoader/index.js +++ b/app/src/components/extensionLoader/index.js @@ -1,2 +1,2 @@ export { ExtensionLoaderWrapper as ExtensionLoader } from './extensionLoader'; -export { extensionType, uiExtensionType } from './extensionTypes'; +export { extensionType } from './extensionTypes'; diff --git a/app/src/components/extensionLoader/loadComponent.js b/app/src/components/extensionLoader/loadComponent.js new file mode 100644 index 0000000000..97dc4ba799 --- /dev/null +++ b/app/src/components/extensionLoader/loadComponent.js @@ -0,0 +1,16 @@ +// https://webpack.js.org/concepts/module-federation/#dynamic-remote-containers +export function loadComponent(scope, moduleName) { + return async () => { + // Initializes the share scope. This fills it with known provided modules from this build and all remotes + // eslint-disable-next-line + await __webpack_init_sharing__("default"); + + const container = window[scope]; // or get the container somewhere else + // Initialize the container, it may provide shared modules + // eslint-disable-next-line + await container.init(__webpack_share_scopes__.default); + const factory = await window[scope].get(moduleName); + const Module = factory(); + return Module; + }; +} diff --git a/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx b/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx index 699a306136..1aea35bef3 100644 --- a/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx +++ b/app/src/components/integrations/containers/integrationSettingsContainer/integrationSettingsContainer.jsx @@ -22,7 +22,7 @@ import { updateIntegrationAction } from 'controllers/plugins'; import { uiExtensionIntegrationSettingsSelector } from 'controllers/plugins/uiExtensions/selectors'; import { INTEGRATIONS_SETTINGS_COMPONENTS_MAP } from 'components/integrations/settingsComponentsMap'; import { PluginIcon } from 'components/integrations/elements/pluginIcon'; -import { ExtensionLoader, extensionType, uiExtensionType } from 'components/extensionLoader'; +import { ExtensionLoader, extensionType } from 'components/extensionLoader'; import styles from './integrationSettingsContainer.scss'; const cx = classNames.bind(styles); @@ -39,7 +39,7 @@ export class IntegrationSettingsContainer extends Component { static propTypes = { goToPreviousPage: PropTypes.func.isRequired, updateIntegrationAction: PropTypes.func.isRequired, - settingsExtensions: PropTypes.arrayOf(PropTypes.oneOfType([extensionType, uiExtensionType])), + settingsExtensions: PropTypes.arrayOf(extensionType), data: PropTypes.object, isGlobal: PropTypes.bool, }; diff --git a/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx b/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx index e483a2b4c2..07f6537459 100644 --- a/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx +++ b/app/src/components/integrations/modals/addIntegrationModal/addIntegrationModal.jsx @@ -18,14 +18,14 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import { reduxForm } from 'redux-form'; +import { connect } from 'react-redux'; import track from 'react-tracking'; import { COMMON_LOCALE_KEYS } from 'common/constants/localization'; import { ModalLayout, withModal } from 'components/main/modal'; import { INTEGRATION_FORM } from 'components/integrations/elements/integrationSettings'; import { PLUGINS_PAGE_EVENTS } from 'components/main/analytics/events'; -import { connect } from 'react-redux'; import { uiExtensionIntegrationFormFieldsSelector } from 'controllers/plugins/uiExtensions/selectors'; -import { ExtensionLoader, extensionType, uiExtensionType } from 'components/extensionLoader'; +import { ExtensionLoader, extensionType } from 'components/extensionLoader'; import { INTEGRATIONS_FORM_FIELDS_COMPONENTS_MAP } from '../../formFieldComponentsMap'; const messages = defineMessages({ @@ -59,7 +59,7 @@ export class AddIntegrationModal extends Component { initialize: PropTypes.func.isRequired, change: PropTypes.func.isRequired, dirty: PropTypes.bool.isRequired, - fieldsExtensions: PropTypes.arrayOf(PropTypes.oneOfType([extensionType, uiExtensionType])), + fieldsExtensions: PropTypes.arrayOf(extensionType), data: PropTypes.object, tracking: PropTypes.shape({ trackEvent: PropTypes.func, diff --git a/app/src/controllers/plugins/uiExtensions/actions.js b/app/src/controllers/plugins/uiExtensions/actions.js index 69ec591ba7..e70c896cf3 100644 --- a/app/src/controllers/plugins/uiExtensions/actions.js +++ b/app/src/controllers/plugins/uiExtensions/actions.js @@ -18,6 +18,7 @@ import { EXTENSION_LOAD_FINISH, EXTENSION_LOAD_START, FETCH_EXTENSIONS_METADATA_SUCCESS, + UPDATE_EXTENSION_METADATA, } from './constants'; export const extensionLoadStartAction = () => ({ @@ -31,3 +32,8 @@ export const fetchExtensionsMetadataSuccessAction = (extensionsMetadata) => ({ type: FETCH_EXTENSIONS_METADATA_SUCCESS, payload: extensionsMetadata, }); + +export const updateExtensionMetadataAction = (extension) => ({ + type: UPDATE_EXTENSION_METADATA, + payload: extension, +}); diff --git a/app/src/controllers/plugins/uiExtensions/constants.js b/app/src/controllers/plugins/uiExtensions/constants.js index 3e40c9dfe8..239f0f0369 100644 --- a/app/src/controllers/plugins/uiExtensions/constants.js +++ b/app/src/controllers/plugins/uiExtensions/constants.js @@ -25,3 +25,4 @@ export const EXTENSION_LOAD_FINISH = 'extensionLoadFinish'; /* New plugins mechanism related code below */ export const FETCH_EXTENSIONS_METADATA_SUCCESS = 'fetchExtensionsMetadataSuccess'; +export const UPDATE_EXTENSION_METADATA = 'updateExtensionMetadata'; diff --git a/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx b/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx index 09c660895a..6079c07e9b 100644 --- a/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx +++ b/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx @@ -5,6 +5,7 @@ import { EXTENSION_TYPE_MODAL } from './constants'; window.RP = {}; +// TODO: remove legacy extensions when all existing plugins will be migrated to the new engine // TODO: store will be used later to add new routes // eslint-disable-next-line no-unused-vars const createPluginRegistrationFunction = (store) => (plugin) => { diff --git a/app/src/controllers/plugins/uiExtensions/sagas.js b/app/src/controllers/plugins/uiExtensions/sagas.js index c6ec9758a5..3145dfffce 100644 --- a/app/src/controllers/plugins/uiExtensions/sagas.js +++ b/app/src/controllers/plugins/uiExtensions/sagas.js @@ -11,46 +11,31 @@ import { fetchExtensionsMetadataSuccessAction, } from './actions'; -const METADATA_FILE_KEY = 'metadata'; +const METADATA_FILE_KEY = 'metadata.json'; const MAIN_FILE_KEY = 'main'; -function* fetchExtensionsMetadata(integrations) { +function* fetchExtensionsMetadata() { const plugins = yield select(pluginsSelector); const uiExtensionPlugins = plugins.filter( - (plugin) => - plugin.enabled && - plugin.details && - plugin.details.binaryData && - plugin.details.binaryData[METADATA_FILE_KEY] && - (isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE) || - plugin.details.allowedCommands.includes(COMMAND_GET_FILE)), + (plugin) => plugin.name === 'example', + // plugin.enabled && + // plugin.details && + // plugin.details.binaryData && + // plugin.details.binaryData[METADATA_FILE_KEY] && + // (isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE) || + // plugin.details.allowedCommands.includes(COMMAND_GET_FILE)), ); if (!uiExtensionPlugins.length) { return; } - const activeProject = yield select(activeProjectSelector); - // TODO: discuss with BE whether we can fetch plugins metadata via single API call const calls = uiExtensionPlugins .map((plugin) => { - const isCommonCommandSupported = isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE); - let url; - - if (isCommonCommandSupported) { - url = URLS.pluginCommandCommon(activeProject, plugin.name, COMMAND_GET_FILE); - } else { - const integration = filterIntegrationsByName(integrations, plugin.name)[0]; - if (!integration) { - return null; - } - url = URLS.projectIntegrationByIdCommand(activeProject, integration.id, COMMAND_GET_FILE); - } - - return call(fetch, url, { - method: 'PUT', - data: { fileKey: METADATA_FILE_KEY }, + // TODO: use public/private endpoint to get files + return call(fetch, URLS.pluginFile(plugin.name, METADATA_FILE_KEY), { + contentType: 'application/json', }); }) .filter(Boolean); @@ -61,6 +46,7 @@ function* fetchExtensionsMetadata(integrations) { try { const results = yield all(calls); + // TODO: inject pluginName to extension metadata here const metadataArray = results.filter(Boolean); yield put(fetchExtensionsMetadataSuccessAction(metadataArray)); @@ -69,6 +55,7 @@ function* fetchExtensionsMetadata(integrations) { } } +// TODO: remove legacy extensions when all existing plugins will be migrated to the new engine export function* fetchUiExtensions() { // TODO: In the future plugins with js parts should not depend on integrations, only on plugins. // TODO: This should be removed when common getFile plugin command will be presented in all plugins with js files. diff --git a/app/src/controllers/plugins/uiExtensions/selectors.js b/app/src/controllers/plugins/uiExtensions/selectors.js index 1afbd75119..d830863f54 100644 --- a/app/src/controllers/plugins/uiExtensions/selectors.js +++ b/app/src/controllers/plugins/uiExtensions/selectors.js @@ -26,15 +26,15 @@ export const createExtensionSelectorByType = (type) => extensionsMetadataSelector, extensionsLoadedSelector, (pluginNames, extensionsMetadata) => { - // TODO: omit it when legacy uiExtensions support will be removed + // TODO: remove legacy extensions when all existing plugins will be migrated to the new engine const uiExtensions = Array.from(uiExtensionMap.entries()) .filter(([name]) => pluginNames.includes(name)) .map(([, extensions]) => extensions); const newExtensions = extensionsMetadata .filter(({ pluginName }) => pluginNames.includes(pluginName)) - .map(({ pluginName, library, extensions }) => - extensions.map((ext) => ({ ...ext, pluginName, library })), + .map(({ pluginName, scope, extensions }) => + extensions.map((ext) => ({ ...ext, pluginName, scope })), ); return uiExtensions diff --git a/app/src/controllers/plugins/uiExtensions/uiExtensionStorage.js b/app/src/controllers/plugins/uiExtensions/uiExtensionStorage.js index 7d02e4815c..7d601bd661 100644 --- a/app/src/controllers/plugins/uiExtensions/uiExtensionStorage.js +++ b/app/src/controllers/plugins/uiExtensions/uiExtensionStorage.js @@ -1 +1,2 @@ +// TODO: remove legacy extensions when all existing plugins will be migrated to the new engine export const uiExtensionMap = new Map(); diff --git a/app/src/init.js b/app/src/init.js new file mode 100644 index 0000000000..0c053e86cf --- /dev/null +++ b/app/src/init.js @@ -0,0 +1 @@ +import('./index.jsx'); diff --git a/app/src/pages/common/settingsPage/settingsPage.jsx b/app/src/pages/common/settingsPage/settingsPage.jsx index 757a0c5f11..2086ffdab9 100644 --- a/app/src/pages/common/settingsPage/settingsPage.jsx +++ b/app/src/pages/common/settingsPage/settingsPage.jsx @@ -35,7 +35,7 @@ import { activeProjectRoleSelector, userAccountRoleSelector } from 'controllers/ import { uiExtensionSettingsTabsSelector } from 'controllers/plugins'; import { SETTINGS_PAGE, SETTINGS_PAGE_EVENTS } from 'components/main/analytics/events'; import { NavigationTabs } from 'components/main/navigationTabs'; -import { ExtensionLoader, uiExtensionType, extensionType } from 'components/extensionLoader'; +import { ExtensionLoader, extensionType } from 'components/extensionLoader'; import { GeneralTab } from './generalTab'; import { AutoAnalysisTab } from './autoAnalysisTab'; import { NotificationsTab } from './notificationsTab'; @@ -99,7 +99,7 @@ export class SettingsPage extends Component { activeTab: PropTypes.string, accountRole: PropTypes.string.isRequired, userRole: PropTypes.string.isRequired, - extensions: PropTypes.arrayOf(PropTypes.oneOfType([extensionType, uiExtensionType])), + extensions: PropTypes.arrayOf(extensionType), }; static defaultProps = { activeTab: GENERAL, diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index 870a72d300..f4cddb4a75 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -19,17 +19,18 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); const webpack = require('webpack'); const WebpackNotifierPlugin = require('webpack-notifier'); const CleanWebpackPlugin = require('clean-webpack-plugin'); +const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin'); // const CircularDependencyPlugin = require('circular-dependency-plugin'); module.exports = { entry: { polyfills: path.resolve(__dirname, '../src/common/polyfills.js'), - main: path.resolve(__dirname, '../src/index.jsx'), + main: path.resolve(__dirname, '../src/init.js'), }, output: { path: path.resolve(__dirname, '../build'), filename: '[name].app.[contenthash:6].js', - publicPath: '', + publicPath: 'auto', assetModuleFilename: 'media/[name].[ext]', clean: true, }, @@ -92,6 +93,24 @@ module.exports = { process: 'process/browser', Buffer: ['buffer', 'Buffer'], }), + new ModuleFederationPlugin({ + name: 'main_app', + filename: 'main_app.js', + shared: { + react: { + import: 'react', + shareKey: 'react', + shareScope: 'default', + singleton: true, + }, + 'react-dom': { + singleton: true, + }, + 'react-redux': { + singleton: true, + }, + }, + }), // new CircularDependencyPlugin({ // exclude: /a\.js|node_modules/, // failOnError: false, From f9939d6710d3af483fffbebb84b1129fbad0ce3e Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Sat, 26 Mar 2022 23:01:33 +0300 Subject: [PATCH 031/284] Temporary remove SRI for production build --- .../localizationBlock/localizationBlock.scss | 2 +- app/webpack/prod.config.js | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/pages/inside/profilePage/localizationBlock/localizationBlock.scss b/app/src/pages/inside/profilePage/localizationBlock/localizationBlock.scss index 97f046fc53..a7f9257931 100644 --- a/app/src/pages/inside/profilePage/localizationBlock/localizationBlock.scss +++ b/app/src/pages/inside/profilePage/localizationBlock/localizationBlock.scss @@ -17,7 +17,7 @@ .localization-block { margin: 30px 0 30px 15px; display: flex; - align-items: start; + align-items: flex-start; @media (max-width: $SCREEN_SM_MAX) { margin: 30px 0 0 15px; } diff --git a/app/webpack/prod.config.js b/app/webpack/prod.config.js index 6189912eca..ae69e40ce3 100644 --- a/app/webpack/prod.config.js +++ b/app/webpack/prod.config.js @@ -17,14 +17,14 @@ const path = require('path'); const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const CompressionPlugin = require('compression-webpack-plugin'); -const { SubresourceIntegrityPlugin } = require('webpack-subresource-integrity'); +// const { SubresourceIntegrityPlugin } = require('webpack-subresource-integrity'); const TerserPlugin = require('terser-webpack-plugin'); const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); module.exports = { mode: 'production', output: { - crossOriginLoading: 'anonymous', + // crossOriginLoading: 'anonymous', }, module: { rules: [ @@ -68,9 +68,11 @@ module.exports = { threshold: 10240, minRatio: 0.8, }), - new SubresourceIntegrityPlugin({ - hashFuncNames: ['sha256', 'sha384'], - }), + // TODO: wait until https://github.com/waysact/webpack-subresource-integrity/issues/176 will be resolved + // new SubresourceIntegrityPlugin({ + // hashFuncNames: ['sha256', 'sha384'], + // hashLoading: 'lazy', + // }), ], optimization: { minimize: true, From 11fcabd347a138c71923666d2a587faf62758af5 Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Mon, 28 Mar 2022 11:18:30 +0300 Subject: [PATCH 032/284] EPMRPP-76232 || fix save comment for bulk operation, make decision modal (#3045) * EPMRPP-76232 || fix save comment for bulk operation * EPMRPP-76232 || code review fixes - 1 --- .../selectDefectManually.jsx | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/pages/inside/stepPage/modals/makeDecisionModal/tabs/selectDefectManually/selectDefectManually.jsx b/app/src/pages/inside/stepPage/modals/makeDecisionModal/tabs/selectDefectManually/selectDefectManually.jsx index 72b5f4e82d..ea616bfa3d 100644 --- a/app/src/pages/inside/stepPage/modals/makeDecisionModal/tabs/selectDefectManually/selectDefectManually.jsx +++ b/app/src/pages/inside/stepPage/modals/makeDecisionModal/tabs/selectDefectManually/selectDefectManually.jsx @@ -37,7 +37,12 @@ import { debugModeSelector } from 'controllers/launch'; import { SCREEN_SM_MAX, SCREEN_XS_MAX } from 'common/constants/screenSizeVariables'; import { TO_INVESTIGATE_LOCATOR_PREFIX } from 'common/constants/defectTypes'; import { InputCheckbox } from 'components/inputs/inputCheckbox'; -import { SELECT_DEFECT_MANUALLY } from '../../constants'; +import { + ADD_FOR_ALL, + NOT_CHANGED_FOR_ALL, + REPLACE_FOR_ALL, + SELECT_DEFECT_MANUALLY, +} from '../../constants'; import { messages } from '../../messages'; import { ActionButtonsBar } from './actionButtonsBar'; import styles from './selectDefectManually.scss'; @@ -88,6 +93,17 @@ export const SelectDefectManually = ({ }; const handleDefectCommentChange = (value) => { handleManualChange({ comment: value.trim() }); + if (isBulkOperation) { + const isValueEmpty = value.trim() === ''; + if (!source.issue.comment && !isValueEmpty) { + setModalState({ commentOption: ADD_FOR_ALL }); + } else if ( + isValueEmpty && + [ADD_FOR_ALL, REPLACE_FOR_ALL].includes(modalState.commentOption) + ) { + setModalState({ commentOption: NOT_CHANGED_FOR_ALL }); + } + } }; const getActionItems = () => { From 6d761feb6fc6a0b57a46861a778e93d26398a490 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Mon, 28 Mar 2022 17:24:04 +0300 Subject: [PATCH 033/284] EPMRPP-75664 || Tooltip for defects displayed incorrectly (#3039) Co-authored-by: Aleksandr Zyabrev --- app/src/components/main/tooltips/tooltip/withTooltip.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/components/main/tooltips/tooltip/withTooltip.jsx b/app/src/components/main/tooltips/tooltip/withTooltip.jsx index 1f602a300a..4ac8d000fc 100644 --- a/app/src/components/main/tooltips/tooltip/withTooltip.jsx +++ b/app/src/components/main/tooltips/tooltip/withTooltip.jsx @@ -51,7 +51,7 @@ export const withTooltip = ({ TooltipComponent, data = {} }) => (WrappedComponen const topOffset = data.topOffset || 0; const leftOffset = data.leftOffset || 0; const clientWidth = document.documentElement.clientWidth; - const maxWidth = clientWidth - 100; + const maxWidth = !styleWidth ? clientWidth - 100 : styleWidth; return ( @@ -92,7 +92,6 @@ export const withTooltip = ({ TooltipComponent, data = {} }) => (WrappedComponen className={cx('tooltip-content')} style={{ maxWidth: `${maxWidth}px`, - width: 'fit-content', }} > From 9d63aa300fb64aec8143b5e1049e3323f6914c20 Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Tue, 29 Mar 2022 12:25:18 +0300 Subject: [PATCH 034/284] EPMRPP-75925 || fix apply button on unique err page, make decision modal (#3038) * EPMRPP-75925 || fix apply button on unique err page, make decision modal * EPMRPP-75925 || code review fixes - 1 --- .../makeDecisionModal/makeDecisionModal.jsx | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionModal.jsx b/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionModal.jsx index 5530a4a344..316328979b 100644 --- a/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionModal.jsx +++ b/app/src/pages/inside/stepPage/modals/makeDecisionModal/makeDecisionModal.jsx @@ -97,14 +97,22 @@ const MakeDecision = ({ data }) => { const [modalHasChanges, setModalHasChanges] = useState(false); const [loadingMLSuggest, setLoadingMLSuggest] = useState(false); useEffect(() => { - setModalHasChanges( - (isBulkOperation - ? !!modalState.selectManualChoice.issue.issueType || - !!modalState.selectManualChoice.issue.comment || - modalState.commentOption !== NOT_CHANGED_FOR_ALL - : !isEqual(itemData.issue, modalState[ACTIVE_TAB_MAP[modalState.decisionType]].issue)) || - !!modalState.issueActionType, - ); + let hasChanges; + const newIssueData = modalState[ACTIVE_TAB_MAP[modalState.decisionType]].issue; + if ( + isBulkOperation && + (!isMLSuggestionsAvailable || modalState.decisionType === SELECT_DEFECT_MANUALLY) + ) { + hasChanges = + !!modalState.selectManualChoice.issue.issueType || + !!modalState.selectManualChoice.issue.comment || + modalState.commentOption !== NOT_CHANGED_FOR_ALL; + } else if (isBulkOperation && isMLSuggestionsAvailable) { + hasChanges = modalState.currentTestItems.some((item) => !isEqual(item.issue, newIssueData)); + } else { + hasChanges = !isEqual(itemData.issue, newIssueData); + } + setModalHasChanges(hasChanges || !!modalState.issueActionType); }, [modalState]); useEffect(() => { From ff66ac84be8548ddbd668426ce88f5f4ebf95377 Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Wed, 30 Mar 2022 10:18:54 +0300 Subject: [PATCH 035/284] EPMRPP-74114 || Unnecessary scroll is displayed (#3047) Co-authored-by: Aleksandr Zyabrev --- .../pages/inside/stepPage/stepGrid/defectType/defectType.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/pages/inside/stepPage/stepGrid/defectType/defectType.jsx b/app/src/pages/inside/stepPage/stepGrid/defectType/defectType.jsx index 83cc6824ea..248a7b04c6 100644 --- a/app/src/pages/inside/stepPage/stepGrid/defectType/defectType.jsx +++ b/app/src/pages/inside/stepPage/stepGrid/defectType/defectType.jsx @@ -106,7 +106,7 @@ export const DefectType = ({ issue, onEdit, onRemove, patternTemplates, events }

- +
From acaea645c1c8ab73bd376f44ffdcd0718de2917b Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Tue, 29 Mar 2022 15:29:01 +0300 Subject: [PATCH 036/284] Improve MFends processing --- .../extensionLoader/extensionLoader.jsx | 10 +---- app/src/controllers/auth/sagas.js | 1 + .../plugins/uiExtensions/actions.js | 6 --- .../plugins/uiExtensions/constants.js | 4 +- .../controllers/plugins/uiExtensions/sagas.js | 42 +++++++++---------- 5 files changed, 25 insertions(+), 38 deletions(-) diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx index 692f4d31a1..3d010eecb8 100644 --- a/app/src/components/extensionLoader/extensionLoader.jsx +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -10,7 +10,7 @@ const DEFAULT_EXTENSION_FILE_NAME = 'remoteEntity.js'; // TODO: Create a special error boundary for extension components function ExtensionLoader({ extension, ...componentProps }) { const { moduleName, scope, pluginName } = extension; - // TODO: use public/private endpoint to get files based on extension preferences + // TODO: use public/private endpoint to get files based on plugin type preferences (will be implemented in the scope of Sign Up plugin) const url = URLS.pluginFile(pluginName, DEFAULT_EXTENSION_FILE_NAME); const { failed, Component } = useFederatedComponent(scope, moduleName, url); @@ -24,13 +24,7 @@ function ExtensionLoader({ extension, ...componentProps }) { return ( }> - {Component ? ( - - ) : null} + {Component ? : null} ); } diff --git a/app/src/controllers/auth/sagas.js b/app/src/controllers/auth/sagas.js index 60a35769ed..d79de89f75 100644 --- a/app/src/controllers/auth/sagas.js +++ b/app/src/controllers/auth/sagas.js @@ -71,6 +71,7 @@ import { } from './constants'; import { tokenSelector } from './selectors'; +// TODO: clear cookie on logout function* handleLogout() { yield put(resetTokenAction()); yield put(fetchAppInfoAction()); diff --git a/app/src/controllers/plugins/uiExtensions/actions.js b/app/src/controllers/plugins/uiExtensions/actions.js index e70c896cf3..69ec591ba7 100644 --- a/app/src/controllers/plugins/uiExtensions/actions.js +++ b/app/src/controllers/plugins/uiExtensions/actions.js @@ -18,7 +18,6 @@ import { EXTENSION_LOAD_FINISH, EXTENSION_LOAD_START, FETCH_EXTENSIONS_METADATA_SUCCESS, - UPDATE_EXTENSION_METADATA, } from './constants'; export const extensionLoadStartAction = () => ({ @@ -32,8 +31,3 @@ export const fetchExtensionsMetadataSuccessAction = (extensionsMetadata) => ({ type: FETCH_EXTENSIONS_METADATA_SUCCESS, payload: extensionsMetadata, }); - -export const updateExtensionMetadataAction = (extension) => ({ - type: UPDATE_EXTENSION_METADATA, - payload: extension, -}); diff --git a/app/src/controllers/plugins/uiExtensions/constants.js b/app/src/controllers/plugins/uiExtensions/constants.js index 239f0f0369..83cd265034 100644 --- a/app/src/controllers/plugins/uiExtensions/constants.js +++ b/app/src/controllers/plugins/uiExtensions/constants.js @@ -24,5 +24,7 @@ export const EXTENSION_LOAD_FINISH = 'extensionLoadFinish'; /* New plugins mechanism related code below */ +export const METADATA_FILE_KEY = 'metadata'; +export const MAIN_FILE_KEY = 'main'; + export const FETCH_EXTENSIONS_METADATA_SUCCESS = 'fetchExtensionsMetadataSuccess'; -export const UPDATE_EXTENSION_METADATA = 'updateExtensionMetadata'; diff --git a/app/src/controllers/plugins/uiExtensions/sagas.js b/app/src/controllers/plugins/uiExtensions/sagas.js index 3145dfffce..2280e50ec6 100644 --- a/app/src/controllers/plugins/uiExtensions/sagas.js +++ b/app/src/controllers/plugins/uiExtensions/sagas.js @@ -2,7 +2,7 @@ import { select, call, all, put } from 'redux-saga/effects'; import { URLS } from 'common/urls'; import { fetch } from 'common/utils/fetch'; import { activeProjectSelector } from 'controllers/user'; -import { COMMAND_GET_FILE } from './constants'; +import { COMMAND_GET_FILE, METADATA_FILE_KEY, MAIN_FILE_KEY } from './constants'; import { pluginsSelector, globalIntegrationsSelector } from '../selectors'; import { filterIntegrationsByName, isPluginSupportsCommonCommand } from '../utils'; import { @@ -11,19 +11,15 @@ import { fetchExtensionsMetadataSuccessAction, } from './actions'; -const METADATA_FILE_KEY = 'metadata.json'; -const MAIN_FILE_KEY = 'main'; - function* fetchExtensionsMetadata() { const plugins = yield select(pluginsSelector); const uiExtensionPlugins = plugins.filter( - (plugin) => plugin.name === 'example', - // plugin.enabled && - // plugin.details && - // plugin.details.binaryData && - // plugin.details.binaryData[METADATA_FILE_KEY] && - // (isPluginSupportsCommonCommand(plugin, COMMAND_GET_FILE) || - // plugin.details.allowedCommands.includes(COMMAND_GET_FILE)), + (plugin) => + plugin.enabled && + plugin.details && + plugin.details.binaryData && + plugin.details.binaryData[METADATA_FILE_KEY] && + plugin.details.binaryData[MAIN_FILE_KEY], ); if (!uiExtensionPlugins.length) { @@ -31,14 +27,13 @@ function* fetchExtensionsMetadata() { } // TODO: discuss with BE whether we can fetch plugins metadata via single API call - const calls = uiExtensionPlugins - .map((plugin) => { - // TODO: use public/private endpoint to get files - return call(fetch, URLS.pluginFile(plugin.name, METADATA_FILE_KEY), { - contentType: 'application/json', - }); - }) - .filter(Boolean); + const calls = uiExtensionPlugins.map((plugin) => { + const metadataFile = plugin.details.binaryData[METADATA_FILE_KEY]; + // TODO: use public/private endpoint to get files based on plugin type (public/private) + return call(fetch, URLS.pluginFile(plugin.name, metadataFile), { + contentType: 'application/json', + }); + }); if (calls.length === 0) { return; @@ -46,8 +41,10 @@ function* fetchExtensionsMetadata() { try { const results = yield all(calls); - // TODO: inject pluginName to extension metadata here - const metadataArray = results.filter(Boolean); + const metadataArray = results.map((metadata, index) => ({ + ...metadata, + pluginName: uiExtensionPlugins[index].name, + })); yield put(fetchExtensionsMetadataSuccessAction(metadataArray)); } catch (err) { @@ -57,6 +54,7 @@ function* fetchExtensionsMetadata() { // TODO: remove legacy extensions when all existing plugins will be migrated to the new engine export function* fetchUiExtensions() { + yield call(fetchExtensionsMetadata); // TODO: In the future plugins with js parts should not depend on integrations, only on plugins. // TODO: This should be removed when common getFile plugin command will be presented in all plugins with js files. const globalIntegrations = yield select(globalIntegrationsSelector); @@ -64,8 +62,6 @@ export function* fetchUiExtensions() { return; } - yield call(fetchExtensionsMetadata, globalIntegrations); - const plugins = yield select(pluginsSelector); const uiExtensionPlugins = plugins.filter( (plugin) => From 2b9af6cebdfdc2afa3af754875ae642e37abf952 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Thu, 31 Mar 2022 12:58:31 +0300 Subject: [PATCH 037/284] =?UTF-8?q?EPMRPP-75419=20||=20Indication=20for=20?= =?UTF-8?q?attribute=20component=20in=20case=20user=20click=E2=80=A6=20(#3?= =?UTF-8?q?049)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * EPMRPP-75419 || Indication for attribute component in case user clicks Save without saving (only core) * Refactor * EPMRPP-75419 || code review fixes - 1 * EPMRPP-75419 || code review fixes - 2 * EPMRPP-75419 || code review fixes - 1 * EPMRPP-75419 || removed unnecessary code Co-authored-by: Artsiom Sadouski --- app/localization/translated/be.json | 1 + app/localization/translated/ru.json | 1 + app/localization/translated/uk.json | 1 + app/src/common/constants/localization.js | 4 ++++ .../inside/common/modals/editItemModal/editItemModal.jsx | 4 +++- .../inside/common/modals/editItemsModal/editItemsModal.jsx | 6 +++++- 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index 6bad776f2b..5d7182a3c0 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -203,6 +203,7 @@ "Common.analyzerDisabled": "Сэрвiс analyzer не запушчаны", "Common.back": "Назад", "Common.cancel": "Адмяніць", + "Common.changesWarning": "Поле несапраўднае або змены не былі захаваны", "Common.clone": "Кланаваць", "Common.close": "Закрыць", "Common.closeModalWarning": "Вы павінны захаваць змены або адмяніць іх перад закрыццём вокны", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index ce49022d10..5d5782185a 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -203,6 +203,7 @@ "Common.analyzerDisabled": "Сервис analyzer не запущен", "Common.back": "Назад", "Common.cancel": "Отменить", + "Common.changesWarning": "Поле недействительно или изменения не были сохранены", "Common.clone": "Клонировать", "Common.close": "Закрыть", "Common.closeModalWarning": "Вы должны сохранить изменения или отменить их перед закрытием окна", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index 44eeec6b8f..52aac386eb 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -203,6 +203,7 @@ "Common.analyzerDisabled": "Сервіс analyzer не запущений", "Common.back": "Тому", "Common.cancel": "Скасувати", + "Common.changesWarning": "Поле недійсне або зміни не збережено", "Common.clone": "Клонувати", "Common.close": "Закрити", "Common.closeModalWarning": "Ви повинні зберегти зміни або скасувати їх перед закриттям вікна", diff --git a/app/src/common/constants/localization.js b/app/src/common/constants/localization.js index 21fad6bfb1..6b9183050e 100644 --- a/app/src/common/constants/localization.js +++ b/app/src/common/constants/localization.js @@ -165,4 +165,8 @@ export const COMMON_LOCALE_KEYS = defineMessages({ id: 'Common.analyzerDisabled', defaultMessage: 'Service analyzer is not running', }, + changesWarning: { + id: 'Common.changesWarning', + defaultMessage: 'Field is invalid or changes were not saved', + }, }); diff --git a/app/src/pages/inside/common/modals/editItemModal/editItemModal.jsx b/app/src/pages/inside/common/modals/editItemModal/editItemModal.jsx index 02a425f2d1..d3a155c711 100644 --- a/app/src/pages/inside/common/modals/editItemModal/editItemModal.jsx +++ b/app/src/pages/inside/common/modals/editItemModal/editItemModal.jsx @@ -148,6 +148,7 @@ export class EditItemModal extends Component { trackEvent: PropTypes.func, getTrackingData: PropTypes.func, }).isRequired, + invalid: PropTypes.bool.isRequired, }; static defaultProps = { @@ -279,7 +280,8 @@ export class EditItemModal extends Component { closeConfirmation={this.getCloseConfirmationConfig()} closeIconEventInfo={eventsInfo.CLOSE_ICON_EDIT_ITEM_MODAL} warningMessage={ - type === LAUNCH_ITEM_TYPES.launch && editable && formatMessage(messages.launchWarning) + (this.props.invalid && formatMessage(COMMON_LOCALE_KEYS.changesWarning)) || + (type === LAUNCH_ITEM_TYPES.launch && editable && formatMessage(messages.launchWarning)) } >
diff --git a/app/src/pages/inside/common/modals/editItemsModal/editItemsModal.jsx b/app/src/pages/inside/common/modals/editItemsModal/editItemsModal.jsx index 4ff072b451..915f32003b 100644 --- a/app/src/pages/inside/common/modals/editItemsModal/editItemsModal.jsx +++ b/app/src/pages/inside/common/modals/editItemsModal/editItemsModal.jsx @@ -157,6 +157,7 @@ export class EditItemsModal extends Component { trackEvent: PropTypes.func, getTrackingData: PropTypes.func, }).isRequired, + invalid: PropTypes.bool.isRequired, ...formPropTypes, }; @@ -359,7 +360,10 @@ export class EditItemsModal extends Component { okButton={okButton} cancelButton={cancelButton} closeIconEventInfo={eventsInfo.closeIcon} - warningMessage={warningMessageShown ? formatMessage(messages.warningMessage) : ''} + warningMessage={ + (warningMessageShown ? formatMessage(messages.warningMessage) : '') || + (this.props.invalid && formatMessage(COMMON_LOCALE_KEYS.changesWarning)) + } > Date: Thu, 31 Mar 2022 15:44:57 +0300 Subject: [PATCH 038/284] EPMRPP-75419 || feature was implemented for test steps (#3051) Co-authored-by: Artsiom Sadouski --- .../modals/testItemDetailsModal/testItemDetailsModal.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/pages/inside/stepPage/modals/testItemDetailsModal/testItemDetailsModal.jsx b/app/src/pages/inside/stepPage/modals/testItemDetailsModal/testItemDetailsModal.jsx index c8b2e7b3d8..f268978b0d 100644 --- a/app/src/pages/inside/stepPage/modals/testItemDetailsModal/testItemDetailsModal.jsx +++ b/app/src/pages/inside/stepPage/modals/testItemDetailsModal/testItemDetailsModal.jsx @@ -106,6 +106,7 @@ export class TestItemDetailsModal extends Component { getTrackingData: PropTypes.func, }).isRequired, clearLogPageStackTrace: PropTypes.func, + invalid: PropTypes.bool.isRequired, }; static defaultProps = { @@ -330,7 +331,10 @@ export class TestItemDetailsModal extends Component { okButton={editable ? okButton : undefined} cancelButton={cancelButton} closeConfirmation={editable ? this.getCloseConfirmationConfig() : undefined} - warningMessage={editable ? intl.formatMessage(messages.launchWarning) : ''} + warningMessage={ + (this.props.invalid && intl.formatMessage(COMMON_LOCALE_KEYS.changesWarning)) || + (editable ? intl.formatMessage(messages.launchWarning) : '') + } contentClassName={cx('tab-container')} closeIconEventInfo={eventsInfo.closeIcon} > From e02e8f8d2c2607667798515eef05c07343c6baf6 Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Thu, 31 Mar 2022 17:07:28 +0300 Subject: [PATCH 039/284] Share classNames and prop-types via WMF --- app/package-lock.json | 6 +++--- app/package.json | 2 +- app/webpack/base.config.js | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/package-lock.json b/app/package-lock.json index fb4498c029..70fa0e814f 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -9667,9 +9667,9 @@ } }, "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, "clean-css": { "version": "4.2.1", diff --git a/app/package.json b/app/package.json index 8838d6cfef..f0d32fed07 100644 --- a/app/package.json +++ b/app/package.json @@ -33,7 +33,7 @@ "c3": "0.7.8", "chart.js": "2.8.0", "chartjs-plugin-datalabels": "0.6.0", - "classnames": "2.2.5", + "classnames": "2.3.1", "codemirror": "^5.63.3", "color": "3.1.1", "core-js": "2.5.7", diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index f4cddb4a75..5105f91286 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -109,6 +109,12 @@ module.exports = { 'react-redux': { singleton: true, }, + classnames: { + singleton: true, + }, + 'prop-types': { + singleton: true, + }, }, }), // new CircularDependencyPlugin({ From 7b3edfbd9f305b3a2034737905681af43b0e5046 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Mon, 4 Apr 2022 15:31:57 +0300 Subject: [PATCH 040/284] EPMRPP-76241 || Plugins receiving before user login (#3053) * EPMRPP-76241 || Plugins receiving before user login * EPMRPP-76241 || code review fixes - 1 * EPMRPP-76241 || code review fixes - 1 * EPMRPP-76241 || code review fixes - 3 * EPMRPP-76241 || code review fixes - 2 * EPMRPP-76241 || code review fixes - 1 * EPMRPP-76241 || code review fixes - 2 * EPMRPP-76241 || code review fixes - 1 * EPMRPP-76241 || updated url Co-authored-by: Artsiom Sadouski --- app/src/common/urls.js | 1 + app/src/controllers/auth/sagas.js | 7 ++++++- app/src/controllers/initialData/sagas.js | 7 ++++++- app/src/controllers/plugins/actionCreators.js | 5 +++++ app/src/controllers/plugins/constants.js | 3 +++ app/src/controllers/plugins/index.js | 1 + app/src/controllers/plugins/reducer.js | 2 ++ app/src/controllers/plugins/sagas.js | 18 +++++++++++++++- app/src/controllers/plugins/selectors.js | 7 ++++++- .../controllers/plugins/uiExtensions/index.js | 2 +- .../controllers/plugins/uiExtensions/sagas.js | 21 +++++++++++++------ 11 files changed, 63 insertions(+), 11 deletions(-) diff --git a/app/src/common/urls.js b/app/src/common/urls.js index fe1f78daff..c23482f7ec 100644 --- a/app/src/common/urls.js +++ b/app/src/common/urls.js @@ -269,6 +269,7 @@ export const URLS = { appInfo: () => `${compositeBase}info`, plugin: () => `${urlBase}plugin`, + pluginPublic: () => `${urlBase}plugin/public`, pluginUpdate: (pluginId) => `${urlBase}plugin/${pluginId}`, pluginFile: (pluginName, fileKey) => `${urlBase}plugin/${pluginName}/file/${fileKey}`, pluginPublicFile: (pluginName, fileKey) => diff --git a/app/src/controllers/auth/sagas.js b/app/src/controllers/auth/sagas.js index d79de89f75..fe67fcd1ad 100644 --- a/app/src/controllers/auth/sagas.js +++ b/app/src/controllers/auth/sagas.js @@ -48,7 +48,11 @@ import { userIdSelector, } from 'controllers/user'; import { FETCH_PROJECT_SUCCESS, fetchProjectAction } from 'controllers/project'; -import { fetchPluginsAction, fetchGlobalIntegrationsAction } from 'controllers/plugins'; +import { + fetchPluginsAction, + fetchGlobalIntegrationsAction, + fetchPublicPluginsAction, +} from 'controllers/plugins'; import { redirect, pathToAction } from 'redux-first-router'; import qs, { stringify } from 'qs'; import routesMap from 'routes/routesMap'; @@ -74,6 +78,7 @@ import { tokenSelector } from './selectors'; // TODO: clear cookie on logout function* handleLogout() { yield put(resetTokenAction()); + yield put(fetchPublicPluginsAction()); yield put(fetchAppInfoAction()); yield put( redirect({ diff --git a/app/src/controllers/initialData/sagas.js b/app/src/controllers/initialData/sagas.js index 7de0153d4b..4773438f89 100644 --- a/app/src/controllers/initialData/sagas.js +++ b/app/src/controllers/initialData/sagas.js @@ -30,7 +30,11 @@ import { authSuccessAction, } from 'controllers/auth'; import { FETCH_PROJECT_SUCCESS, fetchProjectAction } from 'controllers/project'; -import { fetchGlobalIntegrationsAction, fetchPluginsAction } from 'controllers/plugins'; +import { + fetchGlobalIntegrationsAction, + fetchPluginsAction, + fetchPublicPluginsAction, +} from 'controllers/plugins'; import { getStorageItem } from 'common/utils'; import { setInitialDataReadyAction } from './actionCreators'; import { FETCH_INITIAL_DATA } from './constants'; @@ -49,6 +53,7 @@ function* fetchInitialData() { yield put(authSuccessAction()); } else { yield put(resetTokenAction()); + yield put(fetchPublicPluginsAction()); } yield put(setInitialDataReadyAction()); } diff --git a/app/src/controllers/plugins/actionCreators.js b/app/src/controllers/plugins/actionCreators.js index 559144972a..32ebdd99b2 100644 --- a/app/src/controllers/plugins/actionCreators.js +++ b/app/src/controllers/plugins/actionCreators.js @@ -16,6 +16,7 @@ import { FETCH_PLUGINS, + FETCH_PUBLIC_PLUGINS, REMOVE_PLUGIN, UPDATE_PLUGIN_SUCCESS, REMOVE_PLUGIN_SUCCESS, @@ -40,6 +41,10 @@ export const fetchPluginsAction = () => ({ type: FETCH_PLUGINS, }); +export const fetchPublicPluginsAction = () => ({ + type: FETCH_PUBLIC_PLUGINS, +}); + export const removePluginAction = (id, callback, pluginName) => ({ type: REMOVE_PLUGIN, payload: { id, callback, pluginName }, diff --git a/app/src/controllers/plugins/constants.js b/app/src/controllers/plugins/constants.js index 4dd2a83b74..0e96253486 100644 --- a/app/src/controllers/plugins/constants.js +++ b/app/src/controllers/plugins/constants.js @@ -20,6 +20,7 @@ export const FETCH_GLOBAL_INTEGRATIONS = 'fetchGlobalIntegrations'; export const FETCH_GLOBAL_INTEGRATIONS_SUCCESS = 'fetchGlobalIntegrationsSuccess'; export const FETCH_PLUGINS = 'fetchPlugins'; +export const FETCH_PUBLIC_PLUGINS = 'fetchPublicPlugins'; export const REMOVE_PLUGIN = 'removePlugin'; export const UPDATE_PLUGIN_SUCCESS = 'updatePluginSuccess'; export const REMOVE_PLUGIN_SUCCESS = 'removePluginSuccess'; @@ -43,3 +44,5 @@ export const GLOBAL_INTEGRATIONS = 'globalIntegrations'; export const PROJECT_INTEGRATIONS = 'projectIntegrations'; export const SECRET_FIELDS_KEY = 'rp_secretFieldsToClear'; + +export const PUBLIC_PLUGINS = 'publicPlugins'; diff --git a/app/src/controllers/plugins/index.js b/app/src/controllers/plugins/index.js index 57bf84d13f..e0c7a3582d 100644 --- a/app/src/controllers/plugins/index.js +++ b/app/src/controllers/plugins/index.js @@ -18,6 +18,7 @@ export { pluginsReducer } from './reducer'; export { SECRET_FIELDS_KEY } from './constants'; export { fetchPluginsAction, + fetchPublicPluginsAction, removePluginAction, removePluginSuccessAction, updatePluginSuccessAction, diff --git a/app/src/controllers/plugins/reducer.js b/app/src/controllers/plugins/reducer.js index 7112f4e8a4..de50ad32a8 100644 --- a/app/src/controllers/plugins/reducer.js +++ b/app/src/controllers/plugins/reducer.js @@ -34,6 +34,7 @@ import { REMOVE_PROJECT_INTEGRATION_SUCCESS, REMOVE_PROJECT_INTEGRATIONS_BY_TYPE_SUCCESS, REMOVE_GLOBAL_INTEGRATIONS_BY_TYPE_SUCCESS, + PUBLIC_PLUGINS, } from './constants'; const addIntegration = (state, type, payload) => ({ @@ -119,6 +120,7 @@ export const integrationsReducer = (state = {}, { type, payload }) => { export const pluginsReducer = combineReducers({ plugins: queueReducers(fetchReducer(NAMESPACE), updatePluginLocallyReducer), + publicPlugins: fetchReducer(PUBLIC_PLUGINS), integrations: integrationsReducer, uiExtensions: uiExtensionsReducer, }); diff --git a/app/src/controllers/plugins/sagas.js b/app/src/controllers/plugins/sagas.js index d72f26cdc0..8dece69ab3 100644 --- a/app/src/controllers/plugins/sagas.js +++ b/app/src/controllers/plugins/sagas.js @@ -30,6 +30,7 @@ import { userIdSelector } from 'controllers/user'; import { NAMESPACE, FETCH_PLUGINS, + FETCH_PUBLIC_PLUGINS, REMOVE_PLUGIN, REMOVE_PROJECT_INTEGRATIONS_BY_TYPE, ADD_INTEGRATION, @@ -38,6 +39,7 @@ import { FETCH_GLOBAL_INTEGRATIONS, SECRET_FIELDS_KEY, FETCH_GLOBAL_INTEGRATIONS_SUCCESS, + PUBLIC_PLUGINS, } from './constants'; import { resolveIntegrationUrl } from './utils'; import { pluginByNameSelector } from './selectors'; @@ -53,7 +55,7 @@ import { fetchGlobalIntegrationsSuccessAction, removeGlobalIntegrationsByTypeSuccessAction, } from './actionCreators'; -import { fetchUiExtensions } from './uiExtensions'; +import { fetchUiExtensions, fetchExtensionsMetadata } from './uiExtensions'; function* addIntegration({ payload: { data, isGlobal, pluginName, callback }, meta }) { yield put(showScreenLockAction()); @@ -214,10 +216,18 @@ function* fetchPlugins() { yield put(fetchDataAction(NAMESPACE)(URLS.plugin())); } +function* fetchPublicPlugins() { + yield put(fetchDataAction(PUBLIC_PLUGINS)(URLS.pluginPublic())); +} + function* watchFetchPlugins() { yield takeEvery(FETCH_PLUGINS, fetchPlugins); } +function* watchFetchPublicPlugins() { + yield takeEvery(FETCH_PUBLIC_PLUGINS, fetchPublicPlugins); +} + function* removePlugin({ payload: { id, callback, pluginName } }) { yield put(showScreenLockAction()); try { @@ -252,6 +262,10 @@ function* watchPluginChange() { ); } +function* watchPublicPluginChange() { + yield takeEvery(createFetchPredicate(PUBLIC_PLUGINS), fetchExtensionsMetadata); +} + export function* pluginSagas() { yield all([ watchAddIntegration(), @@ -260,7 +274,9 @@ export function* pluginSagas() { watchRemoveIntegrationsByType(), watchFetchGlobalIntegrations(), watchFetchPlugins(), + watchFetchPublicPlugins(), watchRemovePlugin(), watchPluginChange(), + watchPublicPluginChange(), ]); } diff --git a/app/src/controllers/plugins/selectors.js b/app/src/controllers/plugins/selectors.js index 061298a5b0..3c9490f757 100644 --- a/app/src/controllers/plugins/selectors.js +++ b/app/src/controllers/plugins/selectors.js @@ -27,7 +27,12 @@ import { export const domainSelector = (state) => state.plugins || {}; -export const pluginsSelector = (state) => domainSelector(state).plugins; +export const pluginsSelector = (state) => { + return domainSelector(state).plugins; +}; +export const publicPluginsSelector = (state) => { + return domainSelector(state).publicPlugins; +}; export const pluginByNameSelector = (state, name) => pluginsSelector(state).find((plugin) => plugin.name === name); diff --git a/app/src/controllers/plugins/uiExtensions/index.js b/app/src/controllers/plugins/uiExtensions/index.js index 9b90171657..1c8a1d4919 100644 --- a/app/src/controllers/plugins/uiExtensions/index.js +++ b/app/src/controllers/plugins/uiExtensions/index.js @@ -1,4 +1,4 @@ -export { fetchUiExtensions } from './sagas'; +export { fetchUiExtensions, fetchExtensionsMetadata } from './sagas'; export { uiExtensionSettingsTabsSelector, uiExtensionAdminPagesSelector, diff --git a/app/src/controllers/plugins/uiExtensions/sagas.js b/app/src/controllers/plugins/uiExtensions/sagas.js index 2280e50ec6..4734cf4c45 100644 --- a/app/src/controllers/plugins/uiExtensions/sagas.js +++ b/app/src/controllers/plugins/uiExtensions/sagas.js @@ -2,8 +2,9 @@ import { select, call, all, put } from 'redux-saga/effects'; import { URLS } from 'common/urls'; import { fetch } from 'common/utils/fetch'; import { activeProjectSelector } from 'controllers/user'; +import { PUBLIC_PLUGINS } from 'controllers/plugins/constants'; import { COMMAND_GET_FILE, METADATA_FILE_KEY, MAIN_FILE_KEY } from './constants'; -import { pluginsSelector, globalIntegrationsSelector } from '../selectors'; +import { pluginsSelector, globalIntegrationsSelector, publicPluginsSelector } from '../selectors'; import { filterIntegrationsByName, isPluginSupportsCommonCommand } from '../utils'; import { extensionLoadFinishAction, @@ -11,8 +12,9 @@ import { fetchExtensionsMetadataSuccessAction, } from './actions'; -function* fetchExtensionsMetadata() { - const plugins = yield select(pluginsSelector); +export function* fetchExtensionsMetadata(action) { + const isPublic = action && action.meta.namespace === PUBLIC_PLUGINS; + const plugins = yield select(isPublic ? publicPluginsSelector : pluginsSelector); const uiExtensionPlugins = plugins.filter( (plugin) => plugin.enabled && @@ -30,9 +32,15 @@ function* fetchExtensionsMetadata() { const calls = uiExtensionPlugins.map((plugin) => { const metadataFile = plugin.details.binaryData[METADATA_FILE_KEY]; // TODO: use public/private endpoint to get files based on plugin type (public/private) - return call(fetch, URLS.pluginFile(plugin.name, metadataFile), { - contentType: 'application/json', - }); + return call( + fetch, + isPublic + ? URLS.pluginPublicFile(plugin.name, metadataFile) + : URLS.pluginFile(plugin.name, metadataFile), + { + contentType: 'application/json', + }, + ); }); if (calls.length === 0) { @@ -44,6 +52,7 @@ function* fetchExtensionsMetadata() { const metadataArray = results.map((metadata, index) => ({ ...metadata, pluginName: uiExtensionPlugins[index].name, + isPublic, })); yield put(fetchExtensionsMetadataSuccessAction(metadataArray)); From 9c3b34906ac734d3beca9a8ceb2193c21b8ca288 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Tue, 5 Apr 2022 10:17:59 +0300 Subject: [PATCH 041/284] EPMRPP-EPMRPP-76242 || Extension point at login page (#3054) * EPMRPP-EPMRPP-76242 || Extension point at login page * EPMRPP-EPMRPP-76242 || fixed error * EPMRPP-EPMRPP-76242 || code review fixes - 2 * EPMRPP-76242 || code review fixes - 3 * EPMRPP-76242 || code review fixes - 4 * EPMRPP-76242 || code review fixes - 5 Co-authored-by: Artsiom Sadouski --- app/src/controllers/plugins/selectors.js | 3 ++ .../plugins/uiExtensions/constants.js | 1 + .../controllers/plugins/uiExtensions/index.js | 1 + .../plugins/uiExtensions/selectors.js | 27 +++++++++++++++++- app/src/pages/outside/loginPage/loginPage.jsx | 4 +-- .../pageBlocks/loginBlock/loginBlock.jsx | 28 +++++++++++++++---- 6 files changed, 56 insertions(+), 8 deletions(-) diff --git a/app/src/controllers/plugins/selectors.js b/app/src/controllers/plugins/selectors.js index 3c9490f757..5c6c342240 100644 --- a/app/src/controllers/plugins/selectors.js +++ b/app/src/controllers/plugins/selectors.js @@ -45,6 +45,9 @@ export const availablePluginsSelector = createSelector(pluginsSelector, filterAv export const enabledPluginNamesSelector = createSelector(pluginsSelector, (plugins) => filterEnabledPlugins(plugins).map((plugin) => plugin.name), ); +export const enabledPublicPluginNamesSelector = createSelector(publicPluginsSelector, (plugins) => + filterEnabledPlugins(plugins).map((plugin) => plugin.name), +); export const availableGroupedPluginsSelector = createSelector( availablePluginsSelector, diff --git a/app/src/controllers/plugins/uiExtensions/constants.js b/app/src/controllers/plugins/uiExtensions/constants.js index 83cd265034..2b613530bd 100644 --- a/app/src/controllers/plugins/uiExtensions/constants.js +++ b/app/src/controllers/plugins/uiExtensions/constants.js @@ -11,6 +11,7 @@ export const EXTENSION_TYPE_UNIQUE_ERROR_GRID_CELL_COMPONENT = 'uiExtension:uniqueErrorGridCellComponent'; export const EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT = 'uiExtension:uniqueErrorGridHeaderCellComponent'; +export const EXTENSION_TYPE_LOGIN_PAGE = 'uiExtension:loginPage'; export const COMMAND_GET_FILE = 'getFile'; export const COMMAND_GET_ISSUE_TYPES = 'getIssueTypes'; diff --git a/app/src/controllers/plugins/uiExtensions/index.js b/app/src/controllers/plugins/uiExtensions/index.js index 1c8a1d4919..30699b6e6f 100644 --- a/app/src/controllers/plugins/uiExtensions/index.js +++ b/app/src/controllers/plugins/uiExtensions/index.js @@ -11,5 +11,6 @@ export { uiExtensionPostIssueFormSelector, uniqueErrorGridCellComponentSelector, uniqueErrorGridHeaderCellComponentSelector, + uiExtensionLoginPageSelector, } from './selectors'; export { uiExtensionsReducer } from './reducer'; diff --git a/app/src/controllers/plugins/uiExtensions/selectors.js b/app/src/controllers/plugins/uiExtensions/selectors.js index d830863f54..9388fa75ed 100644 --- a/app/src/controllers/plugins/uiExtensions/selectors.js +++ b/app/src/controllers/plugins/uiExtensions/selectors.js @@ -10,8 +10,13 @@ import { EXTENSION_TYPE_POST_ISSUE_FORM, EXTENSION_TYPE_UNIQUE_ERROR_GRID_CELL_COMPONENT, EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT, + EXTENSION_TYPE_LOGIN_PAGE, } from './constants'; -import { domainSelector, enabledPluginNamesSelector } from '../selectors'; +import { + domainSelector, + enabledPluginNamesSelector, + enabledPublicPluginNamesSelector, +} from '../selectors'; import { uiExtensionMap } from './uiExtensionStorage'; export const extensionsLoadedSelector = (state) => @@ -44,6 +49,23 @@ export const createExtensionSelectorByType = (type) => }, ); +export const createPublicExtensionSelectorByType = (type) => + createSelector( + enabledPublicPluginNamesSelector, + extensionsMetadataSelector, + (pluginNames, extensionsMetadata) => { + const newExtensions = extensionsMetadata + .filter(({ pluginName }) => pluginNames.includes(pluginName)) + .map(({ pluginName, scope, extensions }) => + extensions.map((ext) => ({ ...ext, pluginName, scope })), + ); + + return newExtensions + .reduce((acc, val) => acc.concat(val), []) + .filter((extension) => extension.type === type); + }, + ); + export const uiExtensionSettingsTabsSelector = createExtensionSelectorByType( EXTENSION_TYPE_SETTINGS_TAB, ); @@ -72,3 +94,6 @@ export const uniqueErrorGridCellComponentSelector = createExtensionSelectorByTyp export const uniqueErrorGridHeaderCellComponentSelector = createExtensionSelectorByType( EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT, ); +export const uiExtensionLoginPageSelector = createPublicExtensionSelectorByType( + EXTENSION_TYPE_LOGIN_PAGE, +); diff --git a/app/src/pages/outside/loginPage/loginPage.jsx b/app/src/pages/outside/loginPage/loginPage.jsx index fa0d0e266d..52bdfb0d2d 100644 --- a/app/src/pages/outside/loginPage/loginPage.jsx +++ b/app/src/pages/outside/loginPage/loginPage.jsx @@ -14,7 +14,7 @@ * limitations under the License. */ -import { PureComponent } from 'react'; +import React, { PureComponent } from 'react'; import track from 'react-tracking'; import classNames from 'classnames/bind'; import PropTypes from 'prop-types'; @@ -77,8 +77,8 @@ export class LoginPage extends PureComponent { getCurrentBlock = () => { const { forgotPass, reset, multipleAuth } = this.props; - let currentBlock = ; + let currentBlock = ; if (forgotPass) { currentBlock = ; } diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx index acd9f35fb5..3617332717 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx @@ -16,6 +16,11 @@ import { defineMessages } from 'react-intl'; import { PageBlockContainer } from 'pages/outside/common/pageBlockContainer'; +import { useSelector } from 'react-redux'; +import React from 'react'; +import { ExtensionLoader, extensionType } from 'components/extensionLoader'; +import { uiExtensionLoginPageSelector } from 'controllers/plugins/uiExtensions'; +import PropTypes from 'prop-types'; import { LoginForm } from './loginForm'; const messages = defineMessages({ @@ -29,8 +34,21 @@ const messages = defineMessages({ }, }); -export const LoginBlock = () => ( - - - -); +export const LoginBlock = () => { + const extensions = useSelector(uiExtensionLoginPageSelector); + + return ( + + {extensions.map((extension) => ( + + ))} + + + ); +}; +LoginBlock.propTypes = { + extensions: PropTypes.arrayOf(extensionType), +}; +LoginBlock.defaultProps = { + extensions: [], +}; From 7388b86760949d1a2bde41a9d18337951dcc2608 Mon Sep 17 00:00:00 2001 From: Ilya Date: Tue, 5 Apr 2022 11:09:16 +0300 Subject: [PATCH 042/284] EPMRPP-75871 || Use plugin accessType to define public plugins (#3055) --- .../components/extensionLoader/extensionLoader.jsx | 7 ++++--- app/src/controllers/plugins/constants.js | 3 ++- app/src/controllers/plugins/uiExtensions/sagas.js | 12 ++++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx index 3d010eecb8..069fb7b0d9 100644 --- a/app/src/components/extensionLoader/extensionLoader.jsx +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -9,9 +9,10 @@ const DEFAULT_EXTENSION_FILE_NAME = 'remoteEntity.js'; // TODO: Create a special error boundary for extension components function ExtensionLoader({ extension, ...componentProps }) { - const { moduleName, scope, pluginName } = extension; - // TODO: use public/private endpoint to get files based on plugin type preferences (will be implemented in the scope of Sign Up plugin) - const url = URLS.pluginFile(pluginName, DEFAULT_EXTENSION_FILE_NAME); + const { moduleName, scope, pluginName, isPublic } = extension; + const url = isPublic + ? URLS.pluginPublicFile(pluginName, DEFAULT_EXTENSION_FILE_NAME) + : URLS.pluginFile(pluginName, DEFAULT_EXTENSION_FILE_NAME); const { failed, Component } = useFederatedComponent(scope, moduleName, url); diff --git a/app/src/controllers/plugins/constants.js b/app/src/controllers/plugins/constants.js index 0e96253486..fec078578f 100644 --- a/app/src/controllers/plugins/constants.js +++ b/app/src/controllers/plugins/constants.js @@ -42,7 +42,8 @@ export const REMOVE_PROJECT_INTEGRATION_SUCCESS = 'removeProjectIntegrationSucce export const GLOBAL_INTEGRATIONS = 'globalIntegrations'; export const PROJECT_INTEGRATIONS = 'projectIntegrations'; +export const PUBLIC_PLUGINS = 'publicPlugins'; export const SECRET_FIELDS_KEY = 'rp_secretFieldsToClear'; -export const PUBLIC_PLUGINS = 'publicPlugins'; +export const PUBLIC_PLUGIN_ACCESS_TYPE = 'public'; diff --git a/app/src/controllers/plugins/uiExtensions/sagas.js b/app/src/controllers/plugins/uiExtensions/sagas.js index 4734cf4c45..d5d9130b83 100644 --- a/app/src/controllers/plugins/uiExtensions/sagas.js +++ b/app/src/controllers/plugins/uiExtensions/sagas.js @@ -2,7 +2,7 @@ import { select, call, all, put } from 'redux-saga/effects'; import { URLS } from 'common/urls'; import { fetch } from 'common/utils/fetch'; import { activeProjectSelector } from 'controllers/user'; -import { PUBLIC_PLUGINS } from 'controllers/plugins/constants'; +import { PUBLIC_PLUGINS, PUBLIC_PLUGIN_ACCESS_TYPE } from 'controllers/plugins/constants'; import { COMMAND_GET_FILE, METADATA_FILE_KEY, MAIN_FILE_KEY } from './constants'; import { pluginsSelector, globalIntegrationsSelector, publicPluginsSelector } from '../selectors'; import { filterIntegrationsByName, isPluginSupportsCommonCommand } from '../utils'; @@ -13,8 +13,8 @@ import { } from './actions'; export function* fetchExtensionsMetadata(action) { - const isPublic = action && action.meta.namespace === PUBLIC_PLUGINS; - const plugins = yield select(isPublic ? publicPluginsSelector : pluginsSelector); + const isPublicPluginNamespace = action && action.meta.namespace === PUBLIC_PLUGINS; + const plugins = yield select(isPublicPluginNamespace ? publicPluginsSelector : pluginsSelector); const uiExtensionPlugins = plugins.filter( (plugin) => plugin.enabled && @@ -30,11 +30,11 @@ export function* fetchExtensionsMetadata(action) { // TODO: discuss with BE whether we can fetch plugins metadata via single API call const calls = uiExtensionPlugins.map((plugin) => { + const isPluginPublic = plugin.details.accessType === PUBLIC_PLUGIN_ACCESS_TYPE; const metadataFile = plugin.details.binaryData[METADATA_FILE_KEY]; - // TODO: use public/private endpoint to get files based on plugin type (public/private) return call( fetch, - isPublic + isPluginPublic ? URLS.pluginPublicFile(plugin.name, metadataFile) : URLS.pluginFile(plugin.name, metadataFile), { @@ -52,7 +52,7 @@ export function* fetchExtensionsMetadata(action) { const metadataArray = results.map((metadata, index) => ({ ...metadata, pluginName: uiExtensionPlugins[index].name, - isPublic, + isPublic: uiExtensionPlugins[index].details.accessType === PUBLIC_PLUGIN_ACCESS_TYPE, })); yield put(fetchExtensionsMetadataSuccessAction(metadataArray)); From f2073a4e90a095126f213de3fa8ddb0c72b4c85b Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Tue, 5 Apr 2022 11:19:59 +0300 Subject: [PATCH 043/284] EPMRPP-75871 || Make public plugin API call silent --- app/src/controllers/plugins/sagas.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/controllers/plugins/sagas.js b/app/src/controllers/plugins/sagas.js index 8dece69ab3..63806205be 100644 --- a/app/src/controllers/plugins/sagas.js +++ b/app/src/controllers/plugins/sagas.js @@ -217,7 +217,7 @@ function* fetchPlugins() { } function* fetchPublicPlugins() { - yield put(fetchDataAction(PUBLIC_PLUGINS)(URLS.pluginPublic())); + yield put(fetchDataAction(PUBLIC_PLUGINS, true)(URLS.pluginPublic())); } function* watchFetchPlugins() { From 1dd49a33bd024b401ad06182f6d147e955ca97c2 Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Tue, 5 Apr 2022 11:32:43 +0300 Subject: [PATCH 044/284] EPMRPP-75871 || Fix files loading for public plugins --- .../controllers/plugins/uiExtensions/selectors.js | 8 ++++---- .../pageBlocks/loginBlock/loginBlock.jsx | 15 --------------- .../pageBlocks/loginBlock/loginForm/loginForm.jsx | 9 +++++++++ 3 files changed, 13 insertions(+), 19 deletions(-) diff --git a/app/src/controllers/plugins/uiExtensions/selectors.js b/app/src/controllers/plugins/uiExtensions/selectors.js index 9388fa75ed..0f714d98ab 100644 --- a/app/src/controllers/plugins/uiExtensions/selectors.js +++ b/app/src/controllers/plugins/uiExtensions/selectors.js @@ -38,8 +38,8 @@ export const createExtensionSelectorByType = (type) => const newExtensions = extensionsMetadata .filter(({ pluginName }) => pluginNames.includes(pluginName)) - .map(({ pluginName, scope, extensions }) => - extensions.map((ext) => ({ ...ext, pluginName, scope })), + .map(({ pluginName, scope, extensions, isPublic }) => + extensions.map((ext) => ({ ...ext, pluginName, scope, isPublic })), ); return uiExtensions @@ -56,8 +56,8 @@ export const createPublicExtensionSelectorByType = (type) => (pluginNames, extensionsMetadata) => { const newExtensions = extensionsMetadata .filter(({ pluginName }) => pluginNames.includes(pluginName)) - .map(({ pluginName, scope, extensions }) => - extensions.map((ext) => ({ ...ext, pluginName, scope })), + .map(({ pluginName, scope, extensions, isPublic }) => + extensions.map((ext) => ({ ...ext, pluginName, scope, isPublic })), ); return newExtensions diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx index 3617332717..b56d80bf47 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx @@ -16,11 +16,7 @@ import { defineMessages } from 'react-intl'; import { PageBlockContainer } from 'pages/outside/common/pageBlockContainer'; -import { useSelector } from 'react-redux'; import React from 'react'; -import { ExtensionLoader, extensionType } from 'components/extensionLoader'; -import { uiExtensionLoginPageSelector } from 'controllers/plugins/uiExtensions'; -import PropTypes from 'prop-types'; import { LoginForm } from './loginForm'; const messages = defineMessages({ @@ -35,20 +31,9 @@ const messages = defineMessages({ }); export const LoginBlock = () => { - const extensions = useSelector(uiExtensionLoginPageSelector); - return ( - {extensions.map((extension) => ( - - ))} ); }; -LoginBlock.propTypes = { - extensions: PropTypes.arrayOf(extensionType), -}; -LoginBlock.defaultProps = { - extensions: [], -}; diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx index f9804b83d3..652c7bd312 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx @@ -35,6 +35,8 @@ import { FieldProvider } from 'components/fields/fieldProvider'; import WarningIcon from 'common/img/error-inline.svg'; import LoginIcon from 'common/img/login-field-icon-inline.svg'; import PasswordIcon from 'common/img/password-field-icon-inline.svg'; +import { ExtensionLoader, extensionType } from 'components/extensionLoader'; +import { uiExtensionLoginPageSelector } from 'controllers/plugins/uiExtensions'; import { ExternalLoginBlock } from './externalLoginBlock'; import { DEFAULT_USER_CREDENTIALS } from './constants'; import styles from './loginForm.scss'; @@ -73,6 +75,7 @@ const messages = defineMessages({ lastFailedLoginTime: lastFailedLoginTimeSelector(state), badCredentials: badCredentialsSelector(state), isDemoInstance: isDemoInstanceSelector(state), + extensions: uiExtensionLoginPageSelector(state), }), { authorize: loginAction, @@ -98,12 +101,14 @@ export class LoginForm extends React.Component { dispatch: PropTypes.func.isRequired, isDemoInstance: PropTypes.bool, initialize: PropTypes.func.isRequired, + extensions: PropTypes.arrayOf(extensionType), }; static defaultProps = { externalAuth: {}, lastFailedLoginTime: null, isDemoInstance: false, + extensions: [], }; constructor(props) { @@ -196,6 +201,7 @@ export class LoginForm extends React.Component { handleSubmit, externalAuth, authorize, + extensions, } = this.props; const { blockTime, isLoginLimitExceeded } = this.state; @@ -212,6 +218,9 @@ export class LoginForm extends React.Component {
) : null} + {extensions.map((extension) => ( + + ))}
From c6f23f7c3f70a7f6b8b204ce124d316ef8d5a1e1 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Tue, 12 Apr 2022 12:48:11 +0300 Subject: [PATCH 045/284] EPMRPP-76246 || Refactoring login page extension (#3057) * EPMRPP-76246 || Refactoring for sign up extension * EPMRPP-76246 || code review fixes - 2 * EPMRPP-76246 || code review fixes - 3 * EPMRPP-76246 || code review fixes - 4 * EPMRPP-76246 || code review fixes - 5 * EPMRPP-76246 || auth init by url params * EPMRPP-76246 || ut * EPMRPP-76246 || code review fixes - 6 Co-authored-by: Artsiom Sadouski --- .../pageBlocks/loginBlock/loginBlock.jsx | 37 ++++++++++++- .../pageBlocks/loginBlock/loginBlock.scss | 54 +++++++++++++++++++ .../loginBlock/loginForm/loginForm.jsx | 28 +--------- .../loginBlock/loginForm/loginForm.scss | 38 ------------- 4 files changed, 90 insertions(+), 67 deletions(-) create mode 100644 app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.scss diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx index b56d80bf47..3e3e7038b8 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx @@ -14,11 +14,22 @@ * limitations under the License. */ -import { defineMessages } from 'react-intl'; +import { defineMessages, FormattedMessage } from 'react-intl'; import { PageBlockContainer } from 'pages/outside/common/pageBlockContainer'; import React from 'react'; +import { isEmptyObject } from 'common/utils'; +import { ExtensionLoader } from 'components/extensionLoader'; +import { useSelector } from 'react-redux'; +import { authExtensionsSelector } from 'controllers/appInfo'; +import classNames from 'classnames/bind'; +import { uiExtensionLoginPageSelector } from 'controllers/plugins/uiExtensions'; +import { pagePropertiesSelector } from 'controllers/pages'; +import { ExternalLoginBlock } from './loginForm/externalLoginBlock'; +import styles from './loginBlock.scss'; import { LoginForm } from './loginForm'; +const cx = classNames.bind(styles); + const messages = defineMessages({ welcome: { id: 'LoginBlock.welcome', @@ -31,9 +42,31 @@ const messages = defineMessages({ }); export const LoginBlock = () => { + const externalAuth = useSelector(authExtensionsSelector); + const extensions = useSelector(uiExtensionLoginPageSelector); + const pageProps = useSelector(pagePropertiesSelector); + const auth = pageProps.auth; + return ( - + {!isEmptyObject(externalAuth) ? ( + <> + +
+
+
+ +
+
+ + ) : null} + {extensions && extensions.length !== 0 ? ( + extensions.map((extension) => ( + + )) + ) : ( + + )} ); }; diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.scss b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.scss new file mode 100644 index 0000000000..217a661c97 --- /dev/null +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.scss @@ -0,0 +1,54 @@ +/*! + * Copyright 2019 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.separator { + position: relative; + height: 20px; + margin-bottom: 30px; + margin-top: 20px; + text-align: center; + + @media (max-width: $SCREEN_SM_MAX) { + left: -115px; + width: 610px; + } + + @media (max-width: $SCREEN_XS_MAX) { + left: 0; + width: 100%; + margin-bottom: 25px; + margin-top: 37px; + } +} +.line { + position: absolute; + left: 0; + top: 10px; + border-top: 1px solid $COLOR--steel-grey; + opacity: 0.2; + width: 100%; +} +.or { + position: relative; + padding: 0 14px; + background: $COLOR--white-two; + display: inline-block; + border: none; + font-size: 15px; + text-align: center; + color: $COLOR--steel-grey; + box-sizing: border-box; +} diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx index 652c7bd312..c087c616b6 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.jsx @@ -22,10 +22,9 @@ import { connect } from 'react-redux'; import { reduxForm, stopSubmit } from 'redux-form'; import { FormattedMessage, injectIntl, defineMessages } from 'react-intl'; import Link from 'redux-first-router-link'; -import { isEmptyObject } from 'common/utils/isEmptyObject'; import { commonValidators } from 'common/utils/validation'; import { COMMON_LOCALE_KEYS } from 'common/constants/localization'; -import { authExtensionsSelector, isDemoInstanceSelector } from 'controllers/appInfo'; +import { isDemoInstanceSelector } from 'controllers/appInfo'; import { loginAction, lastFailedLoginTimeSelector, badCredentialsSelector } from 'controllers/auth'; import { LOGIN_PAGE } from 'controllers/pages'; import { FieldErrorHint } from 'components/fields/fieldErrorHint'; @@ -35,9 +34,6 @@ import { FieldProvider } from 'components/fields/fieldProvider'; import WarningIcon from 'common/img/error-inline.svg'; import LoginIcon from 'common/img/login-field-icon-inline.svg'; import PasswordIcon from 'common/img/password-field-icon-inline.svg'; -import { ExtensionLoader, extensionType } from 'components/extensionLoader'; -import { uiExtensionLoginPageSelector } from 'controllers/plugins/uiExtensions'; -import { ExternalLoginBlock } from './externalLoginBlock'; import { DEFAULT_USER_CREDENTIALS } from './constants'; import styles from './loginForm.scss'; @@ -71,11 +67,9 @@ const messages = defineMessages({ @connect( (state) => ({ - externalAuth: authExtensionsSelector(state), lastFailedLoginTime: lastFailedLoginTimeSelector(state), badCredentials: badCredentialsSelector(state), isDemoInstance: isDemoInstanceSelector(state), - extensions: uiExtensionLoginPageSelector(state), }), { authorize: loginAction, @@ -94,21 +88,17 @@ export class LoginForm extends React.Component { intl: PropTypes.object.isRequired, handleSubmit: PropTypes.func.isRequired, authorize: PropTypes.func.isRequired, - externalAuth: PropTypes.object, lastFailedLoginTime: PropTypes.number, badCredentials: PropTypes.bool.isRequired, form: PropTypes.string.isRequired, dispatch: PropTypes.func.isRequired, isDemoInstance: PropTypes.bool, initialize: PropTypes.func.isRequired, - extensions: PropTypes.arrayOf(extensionType), }; static defaultProps = { - externalAuth: {}, lastFailedLoginTime: null, isDemoInstance: false, - extensions: [], }; constructor(props) { @@ -199,28 +189,12 @@ export class LoginForm extends React.Component { const { intl: { formatMessage }, handleSubmit, - externalAuth, authorize, - extensions, } = this.props; const { blockTime, isLoginLimitExceeded } = this.state; return ( - {!isEmptyObject(externalAuth) ? ( -
- -
-
-
- -
-
-
- ) : null} - {extensions.map((extension) => ( - - ))}
diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.scss b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.scss index c3cf53c4c6..e4ce80ac56 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.scss +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginForm/loginForm.scss @@ -23,44 +23,6 @@ width: 100%; } } -.separator { - position: relative; - height: 20px; - margin-bottom: 30px; - margin-top: 20px; - text-align: center; - - @media (max-width: $SCREEN_SM_MAX) { - left: -115px; - width: 610px; - } - - @media (max-width: $SCREEN_XS_MAX) { - left: 0; - width: 100%; - margin-bottom: 25px; - margin-top: 37px; - } -} -.line { - position: absolute; - left: 0; - top: 10px; - border-top: 1px solid $COLOR--steel-grey; - opacity: 0.2; - width: 100%; -} -.or { - position: relative; - padding: 0 14px; - background: $COLOR--white-two; - display: inline-block; - border: none; - font-size: 15px; - text-align: center; - color: $COLOR--steel-grey; - box-sizing: border-box; -} .login-field { width: 380px; height: 40px; From d30f28e4474ede970a4df2fc67f893d732dfb211 Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Tue, 12 Apr 2022 23:30:11 +0300 Subject: [PATCH 046/284] EPMRPP-76395 || Local plugins overriding for dev mode --- .../extensionLoader/extensionLoader.jsx | 10 ++----- app/src/components/extensionLoader/hooks.js | 3 +- app/src/components/extensionLoader/utils.js | 16 +++++++++++ .../plugins/uiExtensions/actions.js | 5 ++++ .../plugins/uiExtensions/constants.js | 1 + .../plugins/uiExtensions/overrideExtension.js | 14 ++++++++++ .../plugins/uiExtensions/reducer.js | 8 ++++++ .../plugins/uiExtensions/registerPlugin.jsx | 3 ++ .../plugins/uiExtensions/selectors.js | 28 ++++--------------- 9 files changed, 58 insertions(+), 30 deletions(-) create mode 100644 app/src/components/extensionLoader/utils.js create mode 100644 app/src/controllers/plugins/uiExtensions/overrideExtension.js diff --git a/app/src/components/extensionLoader/extensionLoader.jsx b/app/src/components/extensionLoader/extensionLoader.jsx index 069fb7b0d9..caef66b850 100644 --- a/app/src/components/extensionLoader/extensionLoader.jsx +++ b/app/src/components/extensionLoader/extensionLoader.jsx @@ -1,18 +1,14 @@ import React from 'react'; -import { URLS } from 'common/urls'; import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; import { createImportProps } from 'controllers/plugins/uiExtensions/createImportProps'; import { extensionType } from './extensionTypes'; import { useFederatedComponent } from './hooks'; - -const DEFAULT_EXTENSION_FILE_NAME = 'remoteEntity.js'; +import { getExtensionUrl } from './utils'; // TODO: Create a special error boundary for extension components function ExtensionLoader({ extension, ...componentProps }) { - const { moduleName, scope, pluginName, isPublic } = extension; - const url = isPublic - ? URLS.pluginPublicFile(pluginName, DEFAULT_EXTENSION_FILE_NAME) - : URLS.pluginFile(pluginName, DEFAULT_EXTENSION_FILE_NAME); + const { moduleName, scope, pluginName } = extension; + const url = getExtensionUrl(extension); const { failed, Component } = useFederatedComponent(scope, moduleName, url); diff --git a/app/src/components/extensionLoader/hooks.js b/app/src/components/extensionLoader/hooks.js index 06b493bc51..b67ddad764 100644 --- a/app/src/components/extensionLoader/hooks.js +++ b/app/src/components/extensionLoader/hooks.js @@ -2,7 +2,8 @@ import React from 'react'; import { loadComponent } from './loadComponent'; const useDynamicScript = (scope, url) => { - const loaded = !!window[scope]; + const isDev = process.env.NODE_ENV === 'development'; + const loaded = isDev ? false : !!window[scope]; const [ready, setReady] = React.useState(loaded); const [failed, setFailed] = React.useState(false); diff --git a/app/src/components/extensionLoader/utils.js b/app/src/components/extensionLoader/utils.js new file mode 100644 index 0000000000..61264493ca --- /dev/null +++ b/app/src/components/extensionLoader/utils.js @@ -0,0 +1,16 @@ +import { URLS } from 'common/urls'; + +const DEFAULT_EXTENSION_FILE_NAME = 'remoteEntity.js'; + +export const getExtensionUrl = (extension) => { + const isDev = process.env.NODE_ENV === 'development'; + const { pluginName, isPublic, url: defaultUrl } = extension; + + if (isDev && defaultUrl) { + return `${defaultUrl}/${DEFAULT_EXTENSION_FILE_NAME}`; + } + + return isPublic + ? URLS.pluginPublicFile(pluginName, DEFAULT_EXTENSION_FILE_NAME) + : URLS.pluginFile(pluginName, DEFAULT_EXTENSION_FILE_NAME); +}; diff --git a/app/src/controllers/plugins/uiExtensions/actions.js b/app/src/controllers/plugins/uiExtensions/actions.js index 69ec591ba7..a224c47284 100644 --- a/app/src/controllers/plugins/uiExtensions/actions.js +++ b/app/src/controllers/plugins/uiExtensions/actions.js @@ -18,6 +18,7 @@ import { EXTENSION_LOAD_FINISH, EXTENSION_LOAD_START, FETCH_EXTENSIONS_METADATA_SUCCESS, + UPDATE_EXTENSION_METADATA, } from './constants'; export const extensionLoadStartAction = () => ({ @@ -31,3 +32,7 @@ export const fetchExtensionsMetadataSuccessAction = (extensionsMetadata) => ({ type: FETCH_EXTENSIONS_METADATA_SUCCESS, payload: extensionsMetadata, }); +export const updateExtensionMetadataAction = (extensionMetadata) => ({ + type: UPDATE_EXTENSION_METADATA, + payload: extensionMetadata, +}); diff --git a/app/src/controllers/plugins/uiExtensions/constants.js b/app/src/controllers/plugins/uiExtensions/constants.js index 2b613530bd..3fc9b5fa4d 100644 --- a/app/src/controllers/plugins/uiExtensions/constants.js +++ b/app/src/controllers/plugins/uiExtensions/constants.js @@ -29,3 +29,4 @@ export const METADATA_FILE_KEY = 'metadata'; export const MAIN_FILE_KEY = 'main'; export const FETCH_EXTENSIONS_METADATA_SUCCESS = 'fetchExtensionsMetadataSuccess'; +export const UPDATE_EXTENSION_METADATA = 'updateExtensionMetadata'; diff --git a/app/src/controllers/plugins/uiExtensions/overrideExtension.js b/app/src/controllers/plugins/uiExtensions/overrideExtension.js new file mode 100644 index 0000000000..d3779860a9 --- /dev/null +++ b/app/src/controllers/plugins/uiExtensions/overrideExtension.js @@ -0,0 +1,14 @@ +import { updateExtensionMetadataAction } from './actions'; +import { METADATA_FILE_KEY } from './constants'; + +// TODO: restrict access to this function (f.e. only for admins) +export const createExtensionOverrider = (store) => async (pluginName, url) => { + const response = await fetch(`${url}/${METADATA_FILE_KEY}.json`, { + contentType: 'application/json', + }); + const metadata = await response.json(); + + store.dispatch(updateExtensionMetadataAction({ ...metadata, pluginName, url })); + + return metadata; +}; diff --git a/app/src/controllers/plugins/uiExtensions/reducer.js b/app/src/controllers/plugins/uiExtensions/reducer.js index 3c834248cb..19ee71c845 100644 --- a/app/src/controllers/plugins/uiExtensions/reducer.js +++ b/app/src/controllers/plugins/uiExtensions/reducer.js @@ -19,6 +19,7 @@ import { EXTENSION_LOAD_FINISH, EXTENSION_LOAD_START, FETCH_EXTENSIONS_METADATA_SUCCESS, + UPDATE_EXTENSION_METADATA, } from './constants'; const extensionsLoadedReducer = (state = false, { type }) => { @@ -36,6 +37,13 @@ const extensionsMetadataReducer = (state = [], { type, payload }) => { switch (type) { case FETCH_EXTENSIONS_METADATA_SUCCESS: return payload; + case UPDATE_EXTENSION_METADATA: + return state.map((item) => { + if (item.pluginName === payload.pluginName) { + return payload; + } + return item; + }); default: return state; } diff --git a/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx b/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx index 6079c07e9b..5e74591f88 100644 --- a/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx +++ b/app/src/controllers/plugins/uiExtensions/registerPlugin.jsx @@ -1,6 +1,7 @@ import { getModal, addModal } from 'controllers/modal'; import { uiExtensionMap } from './uiExtensionStorage'; import { createImportProps } from './createImportProps'; +import { createExtensionOverrider } from './overrideExtension'; import { EXTENSION_TYPE_MODAL } from './constants'; window.RP = {}; @@ -27,7 +28,9 @@ const createPluginRegistrationFunction = (store) => (plugin) => { export const initPluginRegistration = (store) => { const registerPlugin = createPluginRegistrationFunction(store); + const overrideExtension = createExtensionOverrider(store); window.RP = { registerPlugin, + overrideExtension, }; }; diff --git a/app/src/controllers/plugins/uiExtensions/selectors.js b/app/src/controllers/plugins/uiExtensions/selectors.js index 0f714d98ab..7bbf55ce43 100644 --- a/app/src/controllers/plugins/uiExtensions/selectors.js +++ b/app/src/controllers/plugins/uiExtensions/selectors.js @@ -25,9 +25,9 @@ export const extensionsLoadedSelector = (state) => const extensionsMetadataSelector = (state) => domainSelector(state).uiExtensions.extensionsMetadata || []; -export const createExtensionSelectorByType = (type) => +const createExtensionSelectorByType = (type, pluginNamesSelector = enabledPluginNamesSelector) => createSelector( - enabledPluginNamesSelector, + pluginNamesSelector, extensionsMetadataSelector, extensionsLoadedSelector, (pluginNames, extensionsMetadata) => { @@ -38,8 +38,8 @@ export const createExtensionSelectorByType = (type) => const newExtensions = extensionsMetadata .filter(({ pluginName }) => pluginNames.includes(pluginName)) - .map(({ pluginName, scope, extensions, isPublic }) => - extensions.map((ext) => ({ ...ext, pluginName, scope, isPublic })), + .map(({ extensions, ...commonMetadata }) => + extensions.map((ext) => ({ ...ext, ...commonMetadata })), ); return uiExtensions @@ -49,23 +49,6 @@ export const createExtensionSelectorByType = (type) => }, ); -export const createPublicExtensionSelectorByType = (type) => - createSelector( - enabledPublicPluginNamesSelector, - extensionsMetadataSelector, - (pluginNames, extensionsMetadata) => { - const newExtensions = extensionsMetadata - .filter(({ pluginName }) => pluginNames.includes(pluginName)) - .map(({ pluginName, scope, extensions, isPublic }) => - extensions.map((ext) => ({ ...ext, pluginName, scope, isPublic })), - ); - - return newExtensions - .reduce((acc, val) => acc.concat(val), []) - .filter((extension) => extension.type === type); - }, - ); - export const uiExtensionSettingsTabsSelector = createExtensionSelectorByType( EXTENSION_TYPE_SETTINGS_TAB, ); @@ -94,6 +77,7 @@ export const uniqueErrorGridCellComponentSelector = createExtensionSelectorByTyp export const uniqueErrorGridHeaderCellComponentSelector = createExtensionSelectorByType( EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT, ); -export const uiExtensionLoginPageSelector = createPublicExtensionSelectorByType( +export const uiExtensionLoginPageSelector = createExtensionSelectorByType( EXTENSION_TYPE_LOGIN_PAGE, + enabledPublicPluginNamesSelector, ); From 754e0602af41ea7c98c3946e431f18538ea1a913 Mon Sep 17 00:00:00 2001 From: Ilya Hancharyk Date: Wed, 13 Apr 2022 19:08:12 +0300 Subject: [PATCH 047/284] EPMRPP-56826 || Sender email as auth independent field --- .../emailFormFields/emailFormFields.jsx | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/app/src/components/integrations/integrationProviders/emailIntegration/emailFormFields/emailFormFields.jsx b/app/src/components/integrations/integrationProviders/emailIntegration/emailFormFields/emailFormFields.jsx index 3a0162d3ab..88c3f996f6 100644 --- a/app/src/components/integrations/integrationProviders/emailIntegration/emailFormFields/emailFormFields.jsx +++ b/app/src/components/integrations/integrationProviders/emailIntegration/emailFormFields/emailFormFields.jsx @@ -181,6 +181,14 @@ export class EmailFormFields extends Component { + + + {authEnabled && ( - - - - - - - - + + + )}
From dc71b43d3a910c919c889e165e5fc57e9893637b Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Wed, 13 Apr 2022 19:13:09 +0300 Subject: [PATCH 048/284] EPMRPP-76250 || Expose components via WMF (#3062) * EPMRPP-76250 || Invitation form implementation * EPMRPP-76250 || File fix Co-authored-by: Artsiom Sadouski --- app/src/components/buttons/bigButton/index.js | 6 +++++- .../components/fields/fieldErrorHint/index.js | 6 +++++- app/src/components/fields/index.js | 21 +++++++++++++++++++ .../components/inputs/inputOutside/index.js | 6 +++++- app/webpack/base.config.js | 12 +++++++++++ 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 app/src/components/fields/index.js diff --git a/app/src/components/buttons/bigButton/index.js b/app/src/components/buttons/bigButton/index.js index 6341726f91..fffff6f372 100644 --- a/app/src/components/buttons/bigButton/index.js +++ b/app/src/components/buttons/bigButton/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { BigButton } from './bigButton'; +import { BigButton } from './bigButton'; + +export { BigButton }; + +export default BigButton; diff --git a/app/src/components/fields/fieldErrorHint/index.js b/app/src/components/fields/fieldErrorHint/index.js index 78b4de089f..9546b3695b 100644 --- a/app/src/components/fields/fieldErrorHint/index.js +++ b/app/src/components/fields/fieldErrorHint/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { FieldErrorHint } from './fieldErrorHint'; +import { FieldErrorHint } from './fieldErrorHint'; + +export { FieldErrorHint }; + +export default FieldErrorHint; diff --git a/app/src/components/fields/index.js b/app/src/components/fields/index.js new file mode 100644 index 0000000000..a986b97aff --- /dev/null +++ b/app/src/components/fields/index.js @@ -0,0 +1,21 @@ +/* + * Copyright 2019 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { FieldProvider } from './fieldProvider'; + +export { FieldProvider }; + +export default FieldProvider; diff --git a/app/src/components/inputs/inputOutside/index.js b/app/src/components/inputs/inputOutside/index.js index 299c2817e1..c1d67b197a 100644 --- a/app/src/components/inputs/inputOutside/index.js +++ b/app/src/components/inputs/inputOutside/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { InputOutside } from './inputOutside'; +import { InputOutside } from './inputOutside'; + +export { InputOutside }; + +export default InputOutside; diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index 5105f91286..823ae7643b 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -96,6 +96,12 @@ module.exports = { new ModuleFederationPlugin({ name: 'main_app', filename: 'main_app.js', + exposes: { + './FieldProvider': './src/components/fields', + './FieldErrorHint': './src/components/fields/fieldErrorHint', + './BigButton': './src/components/buttons/bigButton', + './InputOutside': './src/components/inputs/inputOutside', + }, shared: { react: { import: 'react', @@ -109,6 +115,12 @@ module.exports = { 'react-redux': { singleton: true, }, + 'react-intl': { + singleton: true, + }, + 'redux-form': { + singleton: true, + }, classnames: { singleton: true, }, From 0bcae0206bebc7784365abda8e9d19f749741860 Mon Sep 17 00:00:00 2001 From: Ilya Date: Thu, 14 Apr 2022 13:44:21 +0300 Subject: [PATCH 049/284] EPMRPP-68373 || Project activity panel. Update analyzer activities (#3067) --- app/localization/translated/be.json | 1 + app/localization/translated/ru.json | 1 + app/localization/translated/uk.json | 1 + .../tables/projectActivity/activities/analysisProperties.jsx | 4 ++++ 4 files changed, 7 insertions(+) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index 5d7182a3c0..524c9710fe 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -1820,6 +1820,7 @@ "UpdateAnalysisSettings.numberOfLogLines": "Колькасць радкоў лога", "UpdateAnalysisSettings.numbersInErrorLog": "выдаліць лічбы ў часопісе памылак", "UpdateAnalysisSettings.uniqueError": "пераключэнне ўнікальных памылак", + "UpdateAnalysisSettings.allMessagesShouldMatch": "пераключэнне 'Усе часопісы з 3 ці больш радкамі павінны супадаць'", "UpdateAnalysisSettings.updated": "абнавіў", "UserBlock.adminBadge": "Адміністратар", "UserBlock.administrate": "Адміністраваць", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index 5d5782185a..61ae3aca72 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -1820,6 +1820,7 @@ "UpdateAnalysisSettings.numberOfLogLines": "Количество строк лога", "UpdateAnalysisSettings.numbersInErrorLog": "удалить цифры в журнале ошибок", "UpdateAnalysisSettings.uniqueError": "переключение уникальных ошибок", + "UpdateAnalysisSettings.allMessagesShouldMatch": "переключение 'Все журналы с 3 или более строками должны совпадать'", "UpdateAnalysisSettings.updated": "обновил", "UserBlock.adminBadge": "Администратор", "UserBlock.administrate": "Администрировать", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index 52aac386eb..e41ac7cd5e 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -1820,6 +1820,7 @@ "UpdateAnalysisSettings.numberOfLogLines": "Кількість рядків лода", "UpdateAnalysisSettings.numbersInErrorLog": "вилучити цифри в журналі помилок", "UpdateAnalysisSettings.uniqueError": "перемикання унікальних помилок", + "UpdateAnalysisSettings.allMessagesShouldMatch": "переключення 'Всі журнали з 3 або більше рядками повинні збігатися'", "UpdateAnalysisSettings.updated": "оновив", "UserBlock.adminBadge": "Адміністратор", "UserBlock.administrate": "Адмініструвати", diff --git a/app/src/components/widgets/singleLevelWidgets/tables/projectActivity/activities/analysisProperties.jsx b/app/src/components/widgets/singleLevelWidgets/tables/projectActivity/activities/analysisProperties.jsx index c5b20c1148..0c39f258aa 100644 --- a/app/src/components/widgets/singleLevelWidgets/tables/projectActivity/activities/analysisProperties.jsx +++ b/app/src/components/widgets/singleLevelWidgets/tables/projectActivity/activities/analysisProperties.jsx @@ -38,6 +38,10 @@ const messages = defineMessages({ id: 'UpdateAnalysisSettings.numbersInErrorLog', defaultMessage: 'remove numbers in error log', }, + 'analyzer.allMessagesShouldMatch': { + id: 'UpdateAnalysisSettings.allMessagesShouldMatch', + defaultMessage: "switch 'All logs with 3 or more rows should match'", + }, 'analyzer.numberOfLogLines': { id: 'UpdateAnalysisSettings.numberOfLogLines', defaultMessage: 'Number of log lines', From 467607a9328bd724b38ee7b95aab818a15fe738f Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Thu, 14 Apr 2022 18:43:19 +0300 Subject: [PATCH 050/284] EPMRPP-76615 || Public plugin command url (#3068) Co-authored-by: Artsiom Sadouski --- app/src/common/urls.js | 1 + .../controllers/plugins/uiExtensions/createImportProps.js | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/common/urls.js b/app/src/common/urls.js index c23482f7ec..4d5d9a6473 100644 --- a/app/src/common/urls.js +++ b/app/src/common/urls.js @@ -276,6 +276,7 @@ export const URLS = { `${urlBase}plugin/public/${pluginName}/file/${fileKey}`, pluginCommandCommon: (projectId, pluginName, command) => `${urlBase}plugin/${projectId}/${pluginName}/common/${command}`, + pluginCommandPublic: (pluginName, command) => `${urlBase}plugin/public/${pluginName}/${command}`, globalIntegrationsByPluginName: (pluginName = '') => `${urlBase}integration/global/all/${pluginName}`, projectIntegrationByIdCommand: (projectId, integrationId, command) => diff --git a/app/src/controllers/plugins/uiExtensions/createImportProps.js b/app/src/controllers/plugins/uiExtensions/createImportProps.js index 8c6037014f..37020f5814 100644 --- a/app/src/controllers/plugins/uiExtensions/createImportProps.js +++ b/app/src/controllers/plugins/uiExtensions/createImportProps.js @@ -160,7 +160,10 @@ import { updateLaunchLocallyAction } from 'controllers/launch'; import { getDefectTypeLabel } from 'components/main/analytics/events/common/utils'; import { formatAttribute } from 'common/utils/attributeUtils'; import { createNamespacedQuery } from 'common/utils/routingUtils'; -import { createGlobalNamedIntegrationsSelector } from '../selectors'; +import { + publicPluginsSelector, + createGlobalNamedIntegrationsSelector, +} from 'controllers/plugins/selectors'; const BUTTONS = { GhostButton, @@ -291,6 +294,7 @@ export const createImportProps = (pluginName) => ({ defectLinkSelector, pagePropertiesSelector, launchSelector, + publicPluginsSelector, }, icons: { PlusIcon, From d8ff3937108dcae6099768efbf046b11feb987e9 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Thu, 14 Apr 2022 19:47:02 +0300 Subject: [PATCH 051/284] EPMRPP-76615 || showDefaultErrorNotification import props (#3070) Co-authored-by: Artsiom Sadouski --- .../controllers/plugins/uiExtensions/createImportProps.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/controllers/plugins/uiExtensions/createImportProps.js b/app/src/controllers/plugins/uiExtensions/createImportProps.js index 37020f5814..c837ccff60 100644 --- a/app/src/controllers/plugins/uiExtensions/createImportProps.js +++ b/app/src/controllers/plugins/uiExtensions/createImportProps.js @@ -95,7 +95,11 @@ import { InputRadio } from 'components/inputs/inputRadio'; import { URLS } from 'common/urls'; import { isEmailIntegrationAvailableSelector, SECRET_FIELDS_KEY } from 'controllers/plugins'; import { showScreenLockAction, hideScreenLockAction } from 'controllers/screenLock'; -import { showSuccessNotification, showErrorNotification } from 'controllers/notification'; +import { + showSuccessNotification, + showErrorNotification, + showDefaultErrorNotification, +} from 'controllers/notification'; import { SpinningPreloader } from 'components/preloaders/spinningPreloader'; import { FieldProvider } from 'components/fields/fieldProvider'; import { FieldErrorHint } from 'components/fields/fieldErrorHint'; @@ -275,6 +279,7 @@ export const createImportProps = (pluginName) => ({ updateConfigurationAttributesAction, updateLaunchLocallyAction, updatePagePropertiesAction, + showDefaultErrorNotification, }, selectors: { pluginRouteSelector, From db5e7b16ef16816853c02ea106b2db50bd9a789e Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Fri, 15 Apr 2022 13:33:02 +0300 Subject: [PATCH 052/284] EPMRPP-76489 || add project settings layout (#3063) * EPMRPP-76489 || add project settings layout * EPMRPP-76489 || code review fixes - 1 --- app/src/layouts/appLayout/appLayout.jsx | 11 ++++- .../appLayout/rawContentAppLayout/index.js | 17 +++++++ .../rawContentAppLayout.jsx | 20 ++++++++ app/src/layouts/common/layout/layout.jsx | 49 ++++++++++++------- app/src/layouts/settingsLayout/index.js | 17 +++++++ .../layouts/settingsLayout/settingsLayout.jsx | 40 +++++++++++++++ .../settingsLayout/settingsLayout.scss | 33 +++++++++++++ 7 files changed, 167 insertions(+), 20 deletions(-) create mode 100644 app/src/layouts/appLayout/rawContentAppLayout/index.js create mode 100644 app/src/layouts/appLayout/rawContentAppLayout/rawContentAppLayout.jsx create mode 100644 app/src/layouts/settingsLayout/index.js create mode 100644 app/src/layouts/settingsLayout/settingsLayout.jsx create mode 100644 app/src/layouts/settingsLayout/settingsLayout.scss diff --git a/app/src/layouts/appLayout/appLayout.jsx b/app/src/layouts/appLayout/appLayout.jsx index 40729b143e..deaa55300d 100644 --- a/app/src/layouts/appLayout/appLayout.jsx +++ b/app/src/layouts/appLayout/appLayout.jsx @@ -22,8 +22,13 @@ import { AppHeader } from './appHeader'; import { AppSidebar } from './appSidebar'; import { DemoBanner } from './demoBanner'; -const AppLayoutComponent = ({ children, isDemoInstance }) => ( - +const AppLayoutComponent = ({ children, isDemoInstance, rawContent }) => ( + {children} ); @@ -31,10 +36,12 @@ const AppLayoutComponent = ({ children, isDemoInstance }) => ( AppLayoutComponent.propTypes = { children: PropTypes.node, isDemoInstance: PropTypes.bool, + rawContent: PropTypes.bool, }; AppLayoutComponent.defaultProps = { children: null, isDemoInstance: false, + rawContent: false, }; export const AppLayout = connect((state) => ({ diff --git a/app/src/layouts/appLayout/rawContentAppLayout/index.js b/app/src/layouts/appLayout/rawContentAppLayout/index.js new file mode 100644 index 0000000000..df581e7f55 --- /dev/null +++ b/app/src/layouts/appLayout/rawContentAppLayout/index.js @@ -0,0 +1,17 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { RawContentAppLayout } from './rawContentAppLayout'; diff --git a/app/src/layouts/appLayout/rawContentAppLayout/rawContentAppLayout.jsx b/app/src/layouts/appLayout/rawContentAppLayout/rawContentAppLayout.jsx new file mode 100644 index 0000000000..82af7b8645 --- /dev/null +++ b/app/src/layouts/appLayout/rawContentAppLayout/rawContentAppLayout.jsx @@ -0,0 +1,20 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { AppLayout } from '../appLayout'; + +export const RawContentAppLayout = (props) => ; diff --git a/app/src/layouts/common/layout/layout.jsx b/app/src/layouts/common/layout/layout.jsx index 4aebc4c242..f5e0df2ae7 100644 --- a/app/src/layouts/common/layout/layout.jsx +++ b/app/src/layouts/common/layout/layout.jsx @@ -28,12 +28,14 @@ export class Layout extends Component { Banner: PropTypes.elementType, Header: PropTypes.elementType, Sidebar: PropTypes.elementType, + rawContent: PropTypes.bool, }; static defaultProps = { children: null, Banner: null, Header: null, Sidebar: null, + rawContent: false, }; state = { @@ -79,7 +81,18 @@ export class Layout extends Component { }; render() { - const { Header, Sidebar, Banner } = this.props; + const { Header, Sidebar, Banner, rawContent, children } = this.props; + const header = ( +
+ {Header && ( +
+ )} +
+ ); + return (
@@ -95,24 +108,24 @@ export class Layout extends Component {
{Banner && } - -
-
- {Header && ( -
- )} + {rawContent ? ( + <> + {header} + {children} + + ) : ( + +
+ {header} +
{children}
-
{this.props.children}
-
- + + )}
( +
+
{navigation}
+
{children}
+
+); + +SettingsLayout.propTypes = { + navigation: PropTypes.node, + header: PropTypes.node, + children: PropTypes.node, +}; +SettingsLayout.defaultProps = { + navigation: null, + header: null, + children: null, +}; diff --git a/app/src/layouts/settingsLayout/settingsLayout.scss b/app/src/layouts/settingsLayout/settingsLayout.scss new file mode 100644 index 0000000000..ce4773f160 --- /dev/null +++ b/app/src/layouts/settingsLayout/settingsLayout.scss @@ -0,0 +1,33 @@ +/*! + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + display: flex; + height: 100%; + background: $COLOR--bg-000; +} + +.navigation { + flex-shrink: 0; + width: 353px; + border-right: 1px solid $COLOR--e-100; + box-sizing: border-box; +} + +.section { + width: 100%; + background: $COLOR--bg-100; +} From d11b34c91ae168ba1268b9f7ade6d774bef3f3cf Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Fri, 15 Apr 2022 16:32:22 +0300 Subject: [PATCH 053/284] EPMRPP-76490 || add project settings navigation (#3065) * EPMRPP-76490 || add project settings navigation * EPMRPP-76490 || code review fixes - 1 * EPMRPP-76490 || code review fixes - 2 --- app/localization/translated/be.json | 4 +- app/localization/translated/ru.json | 4 +- app/localization/translated/uk.json | 4 +- .../css/fonts/Roboto-Bold/Roboto-Bold.eot | Bin 0 -> 25631 bytes .../css/fonts/Roboto-Bold/Roboto-Bold.svg | 309 ++++++++++++++++++ .../css/fonts/Roboto-Bold/Roboto-Bold.ttf | Bin 0 -> 53676 bytes .../css/fonts/Roboto-Bold/Roboto-Bold.woff | Bin 0 -> 28704 bytes .../css/fonts/Roboto-Bold/Roboto-Bold.woff2 | Bin 0 -> 22352 bytes .../css/fonts/Roboto-Medium/Roboto-Medium.eot | Bin 0 -> 26071 bytes .../css/fonts/Roboto-Medium/Roboto-Medium.svg | 305 +++++++++++++++++ .../css/fonts/Roboto-Medium/Roboto-Medium.ttf | Bin 0 -> 54268 bytes .../fonts/Roboto-Medium/Roboto-Medium.woff | Bin 0 -> 29024 bytes .../fonts/Roboto-Medium/Roboto-Medium.woff2 | Bin 0 -> 22736 bytes .../fonts/Roboto-Regular/Roboto-Regular.eot | Bin 0 -> 25435 bytes .../fonts/Roboto-Regular/Roboto-Regular.svg | 308 +++++++++++++++++ .../fonts/Roboto-Regular/Roboto-Regular.ttf | Bin 0 -> 53440 bytes .../fonts/Roboto-Regular/Roboto-Regular.woff | Bin 0 -> 28508 bytes .../fonts/Roboto-Regular/Roboto-Regular.woff2 | Bin 0 -> 22164 bytes app/src/common/css/fonts/fonts.scss | 3 + .../common/css/variables/font-variable.scss | 3 + app/src/common/css/variables/newColors.scss | 4 + .../projectSettingsPageContainer/messages.js | 48 +++ .../navMenu/index.js | 17 + .../navMenu/navMenu.jsx | 57 ++++ .../navMenu/navMenu.scss | 38 +++ .../navigation/index.js | 17 + .../navigation/navigation.jsx | 48 +++ .../navigation/navigation.scss | 26 ++ .../projectSettingsPageContainer.jsx | 194 +++++++++-- .../projectSettingsPageContainer.scss | 24 ++ app/src/routes/constants.js | 11 +- 31 files changed, 1380 insertions(+), 44 deletions(-) create mode 100644 app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.eot create mode 100644 app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.svg create mode 100644 app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.ttf create mode 100644 app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.woff create mode 100644 app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.woff2 create mode 100644 app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.eot create mode 100644 app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.svg create mode 100644 app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.ttf create mode 100644 app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.woff create mode 100644 app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.woff2 create mode 100644 app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.eot create mode 100644 app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.svg create mode 100644 app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.ttf create mode 100644 app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.woff create mode 100644 app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.woff2 create mode 100644 app/src/pages/inside/projectSettingsPageContainer/messages.js create mode 100644 app/src/pages/inside/projectSettingsPageContainer/navMenu/index.js create mode 100644 app/src/pages/inside/projectSettingsPageContainer/navMenu/navMenu.jsx create mode 100644 app/src/pages/inside/projectSettingsPageContainer/navMenu/navMenu.scss create mode 100644 app/src/pages/inside/projectSettingsPageContainer/navigation/index.js create mode 100644 app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.jsx create mode 100644 app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.scss create mode 100644 app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index 524c9710fe..fcf480e12e 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -1593,14 +1593,14 @@ "ServerSettingsTabs.updateAuthSuccess": "Налады інтэграцыі OAuth абноўлены", "ServiceVersionItem.newVersion": "Даступны новыя версіі: {newVersion}", "ServiceVersionsBlock.currentVersion": "Бягучая версія", - "SettingsPage.analysis": "Аўта-Аналіз", + "SettingsPage.analyzer": "Аналайзер", "SettingsPage.defect": "Тыпы дэфектаў", "SettingsPage.demoData": "Дэма-дадзеныя", "SettingsPage.general": "Агульнае", "SettingsPage.integrations": "Інтэграцыі", "SettingsPage.notifications": "Апавяшчэння", "SettingsPage.patternAnalysis": "Патэрн-аналіз", - "SettingsPage.title": "Налады", + "SettingsPage.title": "Налады праекта", "ShareFilter.shared": "Апублікаваны:", "ShareTooltip.sharedByFilter": "Доступ да фільтра адкрыў {owner}", "ShareTooltip.sharedFilter": "Вы адкрылі доступ да Вашага фільтру", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index 61ae3aca72..19cebf6872 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -1593,14 +1593,14 @@ "ServerSettingsTabs.updateAuthSuccess": "Настройки интеграции OAuth обновлены", "ServiceVersionItem.newVersion": "Доступна новая версия: {newVersion}", "ServiceVersionsBlock.currentVersion": "Текущая версия", - "SettingsPage.analysis": "Авто-анализ", + "SettingsPage.analyzer": "Аналайзер", "SettingsPage.defect": "Типы дефектов", "SettingsPage.demoData": "Демо данные", "SettingsPage.general": "Общее", "SettingsPage.integrations": "Интеграции", "SettingsPage.notifications": "Уведомления", "SettingsPage.patternAnalysis": "Паттерн-анализ", - "SettingsPage.title": "Настройки", + "SettingsPage.title": "Настройки Проекта", "ShareFilter.shared": "Поделиться:", "ShareTooltip.sharedByFilter": "Доступ к фильтру открыл {owner}", "ShareTooltip.sharedFilter": "Вы открыли доступ к Вашему фильтру", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index e41ac7cd5e..7d3c5c4cf4 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -1593,14 +1593,14 @@ "ServerSettingsTabs.updateAuthSuccess": "Налаштування інтеграції з OAuth оновлено", "ServiceVersionItem.newVersion": "Доступна новая версия: {newVersion}", "ServiceVersionsBlock.currentVersion": "Поточна версія", - "SettingsPage.analysis": "Авто-аналіз", + "SettingsPage.analyzer": "Аналайзер", "SettingsPage.defect": "Типи дефектів", "SettingsPage.demoData": "Демо дані", "SettingsPage.general": "Загальна", "SettingsPage.integrations": "Інтеграції", "SettingsPage.notifications": "Повідомлення", "SettingsPage.patternAnalysis": "Патерн-аналіз", - "SettingsPage.title": "Налаштування", + "SettingsPage.title": "Налаштування Проекту", "ShareFilter.shared": "Поділитися:", "ShareTooltip.sharedByFilter": "Доступ к фильтру открыл {owner}", "ShareTooltip.sharedFilter": "Ви відкрили доступ до фільтру", diff --git a/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.eot b/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..88e17b962161854b520933f41876925297db0a86 GIT binary patch literal 25631 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 literal 0 HcmV?d00001 diff --git a/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.svg b/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.svg new file mode 100644 index 0000000000..11db87dd0e --- /dev/null +++ b/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.ttf b/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6ccf9417715b56effb8dc8cab145fa954c1b7182 GIT binary patch literal 53676 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

Jl|9Lfb6LJ7 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 N|B?TI(+HMY{x5Gar>Xz| literal 0 HcmV?d00001 diff --git a/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.woff b/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..6208290d98c7c9d0c4ce3b856afe815ae08316d5 GIT binary patch literal 28704 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%0D98NnwA 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 literal 0 HcmV?d00001 diff --git a/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.woff2 b/app/src/common/css/fonts/Roboto-Bold/Roboto-Bold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ce41abcff513b5ec33e5108cb3d377b5077d96c8 GIT binary patch literal 22352 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

YA*>d%p{w_vi>pt`M=G1lR!r=2zF)S#EmB9kNG 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.ttf b/app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a2b79ec4a710a1026569bd3a75e96c5c46f20dfd GIT binary patch literal 54268 zcmbrn2YeLO8aF&=W_C9{yXgrng(L`K0wD>YAWeD)K{`n9H4u95y$C1>DALjKv2qm)R+>an$?nPff6nae&LH=G@9+Jtm)*?n?96kX^Yk_nlO!n$FRGN>q|q~t zoqL^+Ns<|B~vBoa#=}|zi!hZtNM7(j!4qZ zEjYh--{E~mjqNz*Z%Nu+i0=#gjvtp?t*pI;B)Rdm)P2CHfy3u}D(=Ch?@AJTdtjfj zqog1yT9S%9_&#jlu!#d2?R>lozI$AfHVqooZ+PL6506)oq+R%$6%Oj(r=Mr@l`)d^ z>I!_2HwYhu+;L>!{!?&VanSH_g;hIF4#W3nB*}Jg*vP(pZrloMD@mIHzkF?YpTbef z%St4U*Wmo*5q*aDFY`fdobT?A>(3Z9a_qR$;Zi@qbB(?qHKzZlBzY_Fv41bV?;zRe zJEfA%Eh&;+3YNm8NNJ=N=5)EDYPrLlZs`)e+QnriJMrgzF#3PItt$>}n|~t`x<^n2RYXESIGymAp^M zr}Ox2euRbnAS;|R+3U5rAG~IBc&Ew}N?dZGx2N25f!tG)rRAmf*j535xb&1}kBB75 z?M^p)6r5pzGYoJR*~8r-Rh~=vyv!e6aHgAOWmjWqxP6Vh>T$6#_S6hE?Q%Sm_&?2O zG;cbmDch$i4^Gu;(V|v<^X5Rj)L;2Su4gA23zpJ#gebVSk_v>#mw+6%5c-RPIrtr zIqs5Ma=H`5C*>~*7$=e|U{flP_LxxwGX@%vQUYxmxdN{Vo1o zx?TG}B`tT1zh3(~dx;NVFKuGAHnT0fH~rhpKiI?v$Te9liAnuRtEw6H4btP%46Sn2 zC$NM^EI$~F3^taZhJ!R?`N=p)rsXGwCDZZ~okcS9FJFrcPNPr5oJG;5Pczek>C-f4 zQRTp=SZIxmjLeMO8hQD-Ik9nZv1v6j(o*fQF>z{n8HC}8P0P*5$jym~%c-8HCH{GO+R8zF zIuGvIcHq3OyRJl^IvIEO{b`FvfCu}Q-n1>Wy(fiBNm8biE7g*gYPQ->5_~qNJNgp6 zmJzR&#A_aCJ1@&!GfV8gAUp#x>A*!gAqJEea>*T%RpgTWsKAFs38uqzr@QGSf=qUwRe>}t_9@^ZizSbth-MsB=Vd~R-y3?K#^osd#r*11QPnAEIs;-~2YuCc2vv+P= zVt?k@XPY&9rc>u8o=fw#Z(rJE)~+23ZH+p2Xwjl^$BxbaXsV8B3VGEDSaaD4(oRv6mWQDq&8Z_z17WUsYZs^*^dpFtR2pJ}|S3E3KNUyj@$u6I;VxdW!58Gz*iL#2{%;44JSM9wdr{vTe zt|+Wta;sVHaEP|(8c|XC@pf5pIHTen8L~WM%H4U{OAiFGJuhX?`+c(9_9wQPHEFPH zC~wAZbmEtJ`jq(%STpuAu3HJ$ZHMbd(RHI^jO#{_$c&L?M`m7>E7vJ!X6DC5Ma9eQ zCjC7>d+mYs%PM5gxH}_AuJ<+X%lFlvKaTx}RgY(J?Chel3+nRIeBvcqX&JedG7d5| zLQ2+Gs$$Dk!7P^&-BMP9I~ec5SqZpXdcIA`QPSgW(GEq)WG(r{eD*}->yhlSJbv!X z%7fY}<@|HI3fOb})v1* z<)n`;P4x64@+Y`R69{;32BANZ7vt6Y}n zlPXYVc|ux42C)>io~J6iF}O=X-|@4GCw{y7lRqaf;Tz@GcF3-Rm)i`Qv101ntK+Y} zJ^apkJ{vH$!A`{j#>b@5nxk?RKa7!pG17q1kgghwq*cJK(kd`ETHDN65AA9E<&Ja~ zIRfyxnX{-;;82UL#OP-btEqucv7tGSS^~6ljGC5O(Wi|`a;C9)Yevl;KI-{t#S^a1 z`SPEseG8}Z;;*joKZ<7#A3bZqyyZ$0HfGqMv7@_bFq<3NA zn6Xnpku|Uv&w+kJATyfl+h9>3LV%FYV8N=sM6NYt419;G)>*#vPvA>NH;eESO|LK>0DwV!D!~Y5WEn-T)QBxO9Y|uSVz9N5p zg}+vt-~aY&{?GSEhK$~_Xzqrz9ALEotI4;$DaF9H?XSfqrw|~qPPgGr2>$ukszA&p z(WN;g->R?@`l~25unbyNnZO|s9-C&jJN)aAphTn;B^4H2OkDLmXNJjN}spjHQtrR`a|^O66y~k;?D3#~ys9-Z}-DJ;)~$ z?0fo{!--;y~a%Dp3lGFB~wQA9Deuw zM|VG-`N{OD*CtmOab(!=Bg56~p*ym3-x~Msx8EHvI8r@($Iv5Re(5s(iawZn5AE*VV3fmp4j`OYB!i+*d(yHTJWWY^v$7Lm$*-?{Z zVdXy>fcroP|3}OQl)R zu`jFbqzoylM3Nj*RB4IQ4xc{(ZNC7YXX29|m3E*eXB26hr={1FIcjSh$7_-!2x~JD zS=qW>0JAL?&T=fvlUsX^D$mFht{1a{6Kq^DaJZ87Q|>6Af|eY(vhYJMxfM8tCLB1N zMQY#>*CV?G|CBqPSCyXhPYFBcU3QkBnIUacu0H}Aq1Sb2(g~Ja`B(2+rMG8`Jmvd4 ze8~yE?tWrQza+; z(rMLuVNMZoh!tOA8Q4X`ijGb5sXK?m?obT#8@_$d2B(rL_2}AZaIt*r)Y)&>Pi`Rp z(fsLp@bsIoy>mCcQ>jjqo_+gtD7tX|&8?dzwphW>KG{rn{bi{ef71SiZH1I4HGsGJ zWWz=T)00kj8dg&|%bjEL$%y~SkP5<@f{03OIkb~nqy6#eB!O^~PmSm}vvZB;xdUd~UHk-p_cXt(1&1wW z6)tvsvtCA>i-S2|)2(M{*w<|4{eRd%&7*`jZ*p@%$e-<9j)i z|Lxt#wtvhz@O_9ZwUsN#2$(4nqG&2blOm)zXsS_~tZOPns$7Wb1bj-17WNx|@scoK z;vswEA$ubO{G|m&#uK4Hqd5bglG-jGILxk=<4UQnQkX%PybOoXyqW1f1)R2q75~NL zVS~ocxAfjt#F{@f)Q3y;H1(`vEEl6IW_^15j-7O#WG*ybcE#*$~B3|#D&3&FDSgpfQ z4KM^l>Ij+gNWOS9E4TrJ$rmM-AWM{Pt9<1>N+S^08*SLXlhE>b=yI@z9oB3F86;E?Ss_re&~oQ=Kv9drD7 zYt&6%@*FGot`A?f1hHqW98MBx2=*{oxZ}i4Of}h+~oiM>x{k9Rsx2ADd;ws`y* zEVa~_FU~{8f+ehA*$#tp1gr-4X|he&KMwImM8#+a7|1i;>zzR4S)vA)`~^UY)o@5y zXaZY#@U|1&-BeQrcSAxT?yn=xq7nSKf<`d;j3iO4&K8MQLnS1uhyvE25DZiTgxN4?lj@b`NHD z>2DqH@&`=1@6!vP09zr*t+mlYVuX(q;&g}kpcd#b$i{HKv`{8w&qE>^>dce~0L=nn zLhY()=|bOTWTvo{Ub*TYtOEbZ%Rgq>^Ovod#?Q*-yx-g0{PL%_Kb&4TeyI$&dY7uU zBw#ZZwrx`_NVjc~MM?I-Wr^VUi4E>ZVn7R!6_^}21VAyeBi@ltHk+Yj1xlf111L?L zJ^sOK{9K*JZXa5U4iZ}VTRXQNmJjdP1+-q|m%E%=^Jlmfwf8wM{q@=4iUat3*aM?3+RKX0Hc&9n^ z(;{F!QyQSTDv?vG)2_ugEC*#(js%umj(k8ZB3J|$;rp3mhq47qEmfS0blF4BaE%O@ z&$%^V?pSg{hJ$Q~US;WgzGct{tip};w-)U)m%MqQjXX6BGyZHM-sxntC!&k8OqoU&jjR)@f->c);Zq%3_|7JI|k0x~5m zhK7hR6N;fd-Mn@QudB|68B-z)6CM!4=Rc2%5+*urVyo`^TT&`|vpHsAC_r#dVpKElKtp_$v%PrY$_ezdp+y zEb{cx){Hswt?BpHYyt!=#DF9^2aw?ZIngY~7IM9WyYKPe_>E%jF8PkdeZmH*O&_#X zGfTdJ)IFj$26V`{tG@ucP($llz_QpQ2HJ&~cYuf;LhCYOIL)rVAz4pHx{;!zMrd48 zx(iu#R*^SlC;1or14OmIWT$u&R#ACXj_^L=O_k%kzsg_BS7=upfa+5~6@>hmxSa(m zac@JW8c+cx1c-i5P#bPIlC@z8Jc09gmMC*s^9=I-EGH=I=?-mihb6c}u+&(;gXN+I zEt?4$ZoY8m5TCFG#D^AaL(&PiCFPGAf!vf>HcJU9IW7P0jZrI{JNKGe@B9|J;~f6B zT-Lq}YpW;{REU9E*u)Z#!!n>O$r6^!ZrjEOvGuk~|Ll6lA+QruI$P-n*cIp;%IFhi z7}gl#q@aPAyK?WlHupatM4Y~3cN-pkfmohEf63}v&H0BVx4Y#oo=PRH_P~;oh1y*GbtNf9=o#)7( zc^|{ol+yaN8CXYIeGd%QG9xCtnvH@#>per27mgptud1n+WzZLX1w0~-ABhmYTcI%0 z!APZo0!v6|4v|G8Jc1H}&+&UKR=v!!$d~I1i?#$&qw=8s1zNnw8MxyEx-lNK9gpad zK&(Mu0W1sA9WSUpRJ@^Z0YA5R)ls3OaOwqzMU{Agq@vfNo*mQCZ;mlG#R&j=n+qv}uV|QNY*}KD#;_)9&J@%dQnAh8M zdh+b~3wl&&Jn_iFeTSQL?BAhYmkrMy-^UYHb#@(S{N(wbof>x_3`~K{tqvSUBD*y} zi`KJS(Yn<_X+jW`Ft-dO7#kzL@y9o8VYJg)h^!-Cx_dhTI(IX}CFZS5CZ}uqM zvp>_lk8n--DFwKWKo)I)7B8}BL~RP}7`rJbX8>&&`vTX-3N)KS`A;oGyb-R=VPhDM z7K;XX@0{xKz;qhXl$=lTk9-%bG<%z$PwgF2d@XGFp<}-lPcL}knT9WnpCP9|U|EH7 z>U7mD6kw0k8z$BC*m{iI44SnbZiUo48RRHKueMYYLl`K z9#6WMB=a`#`mrp!Co_u%QMV?nR? zKIoZ5*l*7}sbRo=A|%~BEj2xZ2sV|HcqVaafFrolI1m;@ln-hl&PZt46cM$uhDEeU z7k#S5>R&>RnKBT>#g>GpPFeXrzaFIz6adV9h{)RCI(>LZ=vVx&Zzp{J6sWHg&bq})ORWCR6}my=8`FlF0C5P%JvaENua75C}6s%det za(WRj@Ya!!jOsDVQ-Zt75~?oQ3fom^m~iRo|5mwY03j?BV3&fhVJJk*GMDiAVkv>* zz3IipoHv=%6ajs;HcPD8ym`(1X3dbme}lJRb8*iw#CKb0N<7u{0Q-J#$0Cje9b$XU zd3MMI3e(4C6-5RT6j;5BYNIl9g#VRD0?3DT;2NjmS5shtPXr&8lL|G}6k`@z&Dcj_ z{}~73O2&avJ0R92a+|c>ejQ1i#S~GWWpfDk9~PoXkfB%++Yp}ziHv^;9P6ZLcSNU= zNG6hGeH>%n|Dx^qPhUSE7k3@hVQ?%fwjEnlr&z5$dhYh^@1OA2lHVQJyGv7Vl6>a) z1kYWyHmytW3D)J5I%>%21I>?+3znrsz_N)jp!b{bEJ9dp;Pp@o;{aX@=dhlR!c(lh zy|_#N)lC80)RlayH&=dVVBfhO4v=(RR|gP9qF(SBEv!sgqGAwcf=^;u1gN3tEUFAv zlBG-p6@I{)6dxZ$sUnGL{EVD`n`u9+`HHzh+2k8*Z}3~ii|#L6I&s1hIdgOALjL0~ zwYGQ`v1&Yc$2;#He(l|N0NoVcTg~=CHwxu*0y>}7}5STaGH>R|~wQwl7D_g2(j0{_3&G zJb9YX%Wbd{87m>1V)#Qg1+BzF*%r+pIM!H+u>)4?!m=NaHZ7n4(p=aNt7-B68$%*K zFCMb{HiXR4-v-K4ud5jhA1~&e>7B_-Ffb8*8L0-GgR$%c`{}E{!0* zX#v~u9PXVV4b_4(EBX1xvgKvLDrJec<+37E5Ahx+s^?6st%b)?=J#M&c-e5dhr6t^ zsA7PDw3LcM@+m3NDIx-G6!1a_n5uUvQUgp#l}6F*R5Ii>CTfnuX>~R&OV)bG^5o8 zmEM%c*y_WQ>8MF2OC}l%iZ+nxSDhe#SSuorO@5#$^G<~;rj(Fw=8!@m%SBj}vGz2C zSzy<=*uLY(t36%0N{3cRj%c>}{GWr~*Xrhnyd96!d;f#X0k|dr>wiH?khC(iI?<{{ z@CvvLAT0_-81}Ruk}QgC9#-=dmCO*qAF_2ppGw%!_uOw3?)9i5}*?7hXmIP>!lXZYv0 z4t)J4Ya{g zDHa9EZ8+ZS0*l~puulAs&p(3;-iaS#Ve+S}pZ7QKS8NPlCa24>fGCW&P(B4jky1Sk z^%8!Lw0Lu3Hz2w+$tI$?k%Dwl$7HHDBy6NG@-%bf;mJ|D=dWu_;qCk0%B}ZA_a0@^ z_#9?u-Q}-KQu&>zx0Qx%dZ@X8pgnN%E+DYRgA6nnlxT4z|F7dgGvs=nRdTxbhSKKb z$<6X-r(dF7sL9vMEA4d<-OksdM08t%^(Z!6=sUYu+)l5 zZjH3u>bbcnEs3W*w*$5Caq)5=zS(i&gz|{_2C8fMP#(F@ zWSwAkB~X2#+m%%mWrEojMZ1bRTgq|gXXNH)zNO<`c&m?lQC2`g#fqjR2%=E3 z$fY;SEf~@0ErA|0=ZQc&@nn{f=zRj@Vy9qBPWAFK`7`RZW6PRPeW_ta!&WB_t!X}Y zWy8#d9hE5eH#HZg4C=V&t0(8Aj_L?|Vjf?^UQ}BFcaiWD9C~k(!wG4s>oSWl6C4fv zkXUsDEOcG;Qq&G~tG6+TdZ68x6L=|eG_BvDY10Pvo62iTxGleCixxHWTcF8{I#WW` z5LbDBPLF6)1}bfnKY~3tJu^<48fQfGT%0p}R6`mTDM|L~>!M$_8e)(3f!LtV4 z`+$7L9;G*IZPecpPpbsFlpm{1puuLS;G+dYg2173!9;m(>mf(B9u?wY|BF(`ByHiUUxD0~I)WHQuDA;ruj?OdM z8aJ|ds9FMJqJs!U$+5(Vkkp8G(|<565%I-;D2|d-Ag#mso?kg)xBRk)pJz4r`M>!t z=2F_oeY|<=7p+4cwCcJ=>*aH_4+|jAh6{P-fRr-o{DlSuJyF7>3YZP{0a@Y;Zrr%R z?BSz4q6@jcn* z4{?(e#`X*P#}-g1g8CWLjX!!c9N(zX_=fDP{%-43y-}lnjT%+c-^l0hj0%D8usccM zu{>#&Rw2J8A+CZGy)yKgksm-c9r6RgRYgBmaMnR7 z*cpru!h^|DFLDMd7>PmS1BY6YUangeG5nywick}o9yk>01kGl?ekxyso?d*Gn_fe% zn1;$nXOx;;F)AGeYN$qV>ct6a&jbA3caCq`x^H9m=eiFZ)U8WbwtX$Xy>&CcvvC93 zPwTPh^$+eGWi8kY*8J#E{?^G8{LQ!Jj_Y5&dT{jqtJ_}a-C@D_g7Nd(JwJClE4Sx0 zex2{-*LUn@$ve)mt{;5BxAS3q``I(BD|TwB{JKKjX-SAGuF}HwsA71a>NN(~iy;D6 z(y8zsJgw^}1Ucv!A!zY&NR~SWF-{YXoFQbGYv-M;N4@AUXIbat&ZnF$o!yA#f4k(3b|u%R#u56f*=gc}z%x=s6HO=v(gXYBgp2?4A1t zjH};l-+=`SUrORzDs?O~q-7`hM5FeT2alMTGd(9eV$jT$bNJ~#?PgU>T*#iP_MC*u z=FZY0Wv;Rd-rtwMQN{C@47MM1(R4OmIjN+h;s?D_Xdr`Igd7&)5tceDSVWYLI(f!B zS82$`Gj$Jyrk^sYTc{fPa9+_uo_vas2Q7>4RlHUcuLgw*W5CdFhL$GGLI1+YLF8 zs4L&*A(B3rnwv!Lo!Zv}{rz;2K#h~?IWJ;gZBwuxoPfQ3an>ImjN3{j0 zP^2OPhqx}uD)^T*@}dP2QtdHuZ2pj!)(;!L;pL&Z&pb1vX*1jDP1iPTxVDKGHp#8g zvgM$rxPLFCB8ycIJgrEnsosGH72J zA2F~N;{r?9WQlSi8anxjmdLa=eHkV`MJkQH6xc@tDaF}+<}^qsQcjUIR5X_xomZoF zgCo1x7iWweI-v7tz?m%6k~a87 zJKf2^e_>DzpX1XjfJ(FlUFyp{*i67mT#T^LecX1dyYKw)YEn5bytV?NrQda zcgn=U6LKC~He}lL(HXh=M6>->*XSuL6A4D5;MY?(0mY-4q*W*#4HViYT8kqJDnzqu=<24^U*BL4^qpGPd|r#z_3F2j&(&_-y7rSa zA%RK5d3|;kQY1pk)q*1_e&^4_`orUPI7g)B>55vogNk-ECTe$Jo9lFtsY}CrRyTC* z-VKfhO`5b#R`SZM8a#esR^_T`w#9U>8Q?qFwjWWZ+Ng`5HR|*%Tp9}&h@MqZDoH9w zu~1@~%R#-F^5L^=WHhc=J9`x>W@TxDtSOI!!NZ`-8)(6LJR35_sE`vr2kwHe$i6`X z@c%Gz1mfTc`Dk44r5E++;N}U(S>C&Ezr5+#fgWvJcVj);wCdXS_NJRpo!)AD ze#EdoZTpNEK7jOV59rqyg?{}inDpycY??%$W7ddmwrvk;<9;dqLSB#eYpjeEgxKIs z8I7!x(~6qxYWNMd+;$%L!@1I3*p~F$OY#Q%=4T}-@EfDNPW)yde&c}*q3iDyzqzT@ z#b!9ryPPd=Fz%D=v*WX?0h0~*bY&YN!ilh5`)W?TTGHusm-DHL6r7x5aF$>u^5j#H zD}C6L*OdR&3=}7Nf*@SrPmA7q(y2M3O$G*iJ_1(JWD~=JtR5$imvfs9?D~9{=Y|x^ zcTQgTZbSFhA@W~(x=wy!%E~rF`V8sWqhE)jOK0EOwzWsovAHY|A&^V&1Noi7fsv3C zlXcu0Zcre|L{>710VB?*x%BdKL~l%HkK5WEprJ*d=n3Vk4|O+~wN{ik3As4*xgZz_ zr9};#h;pPTj?SKGkv!xr{_PlxWy)xVIBEioBKUJ=sljt2FeSF zk6KBeDmT@6(4#daNJTXM2wNyPOA866zcf`5rIbuWB+0Y1UD6z?Fq6O#p>Qyx8JehB zJYx>VTCu12={4+0_S71FTDUfNKgkHcXx)5MjlzBs3kc?s5DKyVWp3^9C6XMn0U%`$PQbLOa{@6BIZ;SF&}(wPPbhvPpxG!+I!18?^yjZ^E7J0 z?suM#T4wq9<2=6gV5+>Og60-$Z=YfV8(w9N4)kAMe1e~9adC!H`&pDV2W=nYxt2%e zx8Mn?fS(5X2}33USrCy)AjK5vTdxq_h72>*2r9+}X`n7ELjNlw%N(Dj9D}7U0_g;5 zEK<{`2^oHQbp$pt+5F%CU{U;b@x9{W`%_mgnS|ozpKqV};0{NrHBaYBv%a1q>TMUG zK4k-{HXfIHXlbVTEJD5-X<ucWLUZpRJIIXL3_OJg~UW) z*oqjq0z-fzn8GL~cU(7o9Bk6P8yAj#R_2+w`dYg$-fz1nqgvJJd40Mz-rsIo_qK1T zYP(NwAKg{=`O)<=AMdzkVT(P7GZRmhP4CpOTDJuY+CF!-Rl7ca5!E#y&q1Q_rSrxvd@eY;?(RWl-GK8G#LCh9%Hvb5!4urOfZI0H+i5+u-KnJlfQ zBwFHYW*w|hGpi;Q=+rEww_Y_z(%bQx7i+@DSW*-2yg6ota-B5O<*X>93Z<+-M2i~d za|0)%rq94-_sIn*E^u;kzZ${2O^T};*v*7jf77ne`tnp>f`q~Sso*q=#L#fhtx|5wA9`j18j_!?{_BQD@ zuuFsJRfp%!m$~=1g^M@UPTgL!-dj&rxh(f;T)&O{)1v9+N27y88VK5|XMY@3169EF z4!zeI0gOsM%qK!8BpNj4PmM%6M4dVU(ymAmAHvKZQ$m|8Xj4HA#feN~2Eg?wYKoD` z$|NNK$2UGh!~sEShyW^?8DM>i?-1E34fwPhOBQ`MZS;jXt43FwcE0uAX|J}pU39SZ za+W-~^|ZxHM~qx(i|2pwk?pthe^yQVZovybP3^X8(){6L+E+eReSYC^Z(>w-&7Chy z+j(XmXs)5OTFqC_PWOKiANT@G zgv%1}r~KWoShAY$2~+;y!8E+1VRQViq5hZL_!FkJ9Mhu3n3kUAwOh8VU5hL^1(kIZ z)H>=>QJt2KJyJ6$WJZvJu<@Ga+bK)cfj^I!po%)cWbsBpzCIXx05nZ#t^NwvC5HwpL@hMTS^$l5bB% z>4Kqsgxzi&7)!PqIT04&r$tF*)4QXxETbAA(oA)f6pt~pE<~D1ZIfYxy+s^{e$6L;{x*2pVa=+4PIl1Q~M4Y)9sZ5Op95~!gsUU zds)=l7_?QM;q}Uft2HAozRk~_xD32?gD$wIwn4peWvRNfNlVPBLBJ;py8*9H_;4at zZXni@TQ*7n1x}25Ce0QkD*v+LMY(1c_&k#s_qBPG`zX0|ze4w{(|z*18;iXD&%F9?4*&GFw^QiKf-cLOv}y8D;a^MU z-T$87yEkv*gn9D|3l=EfK3f>W-WV-s{>`$AI`%}b-pvJzH&w2_>FN6WF}IG%!Ml$f zes}w^BS#iaOdL50cHdj+&16246F6PVR7O<_ipwP#1<7}MJz*X0s7|I&S^#hm80AE#~H zIITgmW(~j*h3Zl{$6gt+tQgokfJck8;rd9SM5B`+goLd=HV~RPJaC9>`-4|V)(LwB znIqPz$Be1H`%IngYVbr>{imOQ+Fp6`?!v;|lP_h}ub2Hq!-iPTB=sw$v+YmFSM>HG z3><{A)~rL3K^20sf)rYe4n5VnMw-$*6vi|iBGoDqJb_fJ9?=yltn>8VnY9L2Ny^B5 zVS2AxuhhuMv;8t+mFuanT2BOxSlhK0>h%%%gC&{|OVmc|_IoP^zxy+5u%Jy16{Kh= zj;ZE*dwZ0P)Nq7L=vTAF;7(De|tsb|Crn%A*;m2Z80A2bdNeQaP`#Edp4St zn1CFb%a-Jyr?@uBpRJzrixb3sl|?y2*0RJ5(|c6 zQk`lV1t-W6khjbMNcfNWXo&0|v;D4@U=;S|G%+k@xzh>Dh?jTme zRmYx}SEHT(i=U~TKkwq?i`344|K`SJH?Exf&yD#ngO^b49aJB?lqjXr9GkR?#OQDo z4ecU|8I0W$lGNBO;pO2#lM;l~M9D;gb$j65nQQZ*Q%o}o+)=_fDJyo1{0P+nt)a*; z`O&p4)z0qeYWMtaHS+y5`o6di`;XTJ2Bt`apdsDqioqJUaDXZ*Zk4;;-e3J4C zEBIvo1+Pv0!TS;aoBwCtIVEVwXP4!(-VE;_s|&_1hnFN1{{%I`YNOFDu}EX0TY|)z z(OGN6i3B$Yax|81tX6zu#0^oQBXXRWe6m@BC{@EnbP0rtwVFmt5TTlDE)Zcf%|#OA zN@FGTRz+X|w2Jm%z56nat&?YXSe1>pr}OWNz1O`nJRW5VR=sM?6wH(v>b)}J!?_>* zB~S9sL*I4~Pnb7qp|Dti}Rfqo$mAY!!FSUe3ap!!z}zCG$Ldk=h6BwV}+-8$6$#TRf?(x0R2(R`K<= zaKIQUHS^~LEZ(#*SdBdp;>jRC!_PL0BR9?Pix!>#0*NWByz)#hZ{g(-nk7l44rAT0cC+>3lUGk)YS5m&+ZK2x}dvQ?(N7rX1* zTcU7dUo+Lmy?t2aEw`ue-|l!nRyN}3u^G#kOaZDkk2p8?{NKnJV?U!7j~y|C`j{*7 zmu%MnaRjv9KrKp-LV$^k9tcs6V4zCijUsa-aZP%Ga(PJTnws1&--}v-BN2>&0=9JC z0(1yX)DPz5MG-sZqyTPFMHOqE-098%`Wrz z<#FC6^iOffyS!WE-r`>u&tF(qv(j7YbkyuTCN0#`P4o6FJK;Atfm`$Zw@RU8a!zqq z%1Xc(Q`X~PcBOiiNI_H@MQ>Xwx$&miD^XC--07^j(ks!Dp(9PjK3dsyN_=9+{7ENL zfK*QAYk;P*TEpmpgw07-hOL=Ce3fU;uS*}W*ur6xX7W!Sy!6jh&&I-eTbD1|^C}Bd z)1DtUw%ddw1HU}ocYAi_J=0JBG~(Fgo-?QQpFHvm){nTD;ND=eDQS-^tSbTm#=cs% z(g@D@`bf24(M}53sg{}w?OdwU>-EkQ6Q$d#;U&f3-g`tz&{pD(E=(9uqe%8X;>P|y z6apz=U|7&kmV~v$AGfw>A6vM`s%mHk(Z93{V5(L6oBAJ6ccj$(-xZt2`VH#Uq)5tO z!jtx8)nQMWEE+A`POdmm0m^jP(-7=H$_cfb@)lN+C34#n{jLv^6Y30myatazT=Y%( zpOU8CH2WE~`((AE9tk*YPq5t-`n(Eafnj>I2Av1+-|?CT`Gz{hge)yiuTG4kq6RHp zKS;NRC?Oi+tV%oGiMa`G#A(w={DZ2f+X()*!4^V_>b5O3Nhh_wi!2knID*NMh zvgj9I6(Wyg-KV-dUd zu&5W`=OeEiK6p`y@Z7ud`kPmP@m2g48}-SDA|5DaxjsyK7Oi0jZ;PU^2NXpP27c>` z!X5K-$z@$pl$7;eWyo1e%b+K2<6bVQ-XloOBFGH7(;}F#R}t?uwMPS8ATiX5SIh)~ z>#0Qbw&zthFX4YM51Y1b|7&8*Rh`Fv{FzGJq;?e zu$)2p=J|~9-{6K3D3Ip9e{3y#+rtif{&~T-bfG74L%KJA)q&w#pzUY<<*gPb|L?aq zY@~nR-i;b16dK4DIK(cv3|Mx@eEko2id44v7v;UqdIAm^-h^bMDI=t}`ylTvy2D_> zMfmi#1v+Evk-PUPYBJ2snHuQA|E0R2^d6^%fcI?*fkgoukk+EEqcQe$+1{#!ZZ7;2{fkA+p6l}n0Mm;33$*Q!%>9_pZQWK01Ll=OINkieM{Vx2pSr$LdV#ND9 zS%Raf<7o>}+JZJ{QNv8N(+ zEJb(DU<->VwIeMLks!>65#!BLrA#&`X5H$Id+c5=%Rxn3mb?(BASZjT%R>v9>+&!1gSN^qlNX^v9=p~J zmcmo^Xhg3wq)u9d=(lo%d&>Br7RK+t@+gu^WKZB@CQ9^|Wh;<1NeS>iwt`YdV)}~< zv$gY4*`0&HJf@I4^5XsJk{TKEr1SUrpEthYxBtGssNLxX3%0M{TxR9!@$=?PnmBhZ z9_MlA*RWst*Q^qg8nd2keNNe@^ZHL~la~D2$`?*;-nMc70r!%vh{qzLt=2}EIs*Gp zR+@}CJ~V%TWEui7CdnpLqY;la_Ct$flpz%pVGq`eYa2&g7AkryrCMQK);OE70KYK{MliX9B*KIh*@{=b zC!bNqdlu;t{7imKeNSL11{PVsb5pVJzCIVhmd5oBwPn6I)HcOrVZlLrBKM~IYXHC^ z>#^a&Q6n&1Y0>1bIpmrBpK(OUch=tXHownMsEJxyN5sj|A8ulsJPW)Y)_@o9=fVKV2zb#>mpr9aRV|TN{jmz3 zPkp_RN_aH&LZ+jf&h%wUBC$xl;LwyZDOFOQOi^hhAJMH|ZuF3sW-TIA+@0GTx%c6e z^JDIf@7iT>_ul&tZtdB=?TCAK51+lRL^YjQvHp=4iaNYFxIvc=4cjz6AkS&gyv8ue;)X0(Edt z&>cxS^v4~;q`^8ZS*To~+PJ;tj>3u{1II2#m`#E2pK$PF`}fEj9BgRsfHy7L4*hHv z+#$@@3Fgy5!n0@I$;HJ((MSI{pU8Hiz-2G*sMh9fncMrodma#?H&KlNgpuS=n!4?T zh%#U^?0R8*8w5h~$YcTR2a;HD+-E93cm ze)rZnTj;(U?1B$twvhs3U383D1gF4@0hOW11XPB5DGma5m!(NE$Y_!jQVNxn1fg7t zlKSjo{^>S;wHUFFDoP~w@VvK%e94;)KzwxL!k?j_puo)xFodi!4h+dIPBSbGJR(CB z!l23Ec<@ECv3doM45s3W;8MJ4y@J`8gIU2(2g_r$<1o7pRtV0b&zA=yD6%|wGd?%F zZcxTTxat0j>MG{lii_E{Vura9*xNenl!?}@nT`Jm=6}s>s8PkdYq7G#kmn3}SV_4A zj5v^k{5MAYr2MbxZ}7fA7(z#&IQtTRrI>G1_9+uR^OcDwpiMjS-Zq-)K>Y|=uQ;R?|NM6dB>3X~u(FwAKd}-c}myford#_%nBOibAW`}3))oF9!ajxBg2MNO-ZdhXp{{9nB|v+kNZS2|BzoV=0BF_o!IsyrhNa@p%22nwL@5oS9gWT zXG2cVUh?DWHbH;z_Jj1+BMX08q>5j6nzB^To&K<}@H6KXv+c#JWB%j0qSp2-Pzs?2 zy{ta&)eAd&U40VXeltsa$)W@WQVm)%go73?oc<{&X-_bh4-0Yy$})06usW)8lmVGC`Okx+ z0Vwos!0llxqcdCm6@P}q66vW)x`l5z`N9J>kYGq;O$syePzckTgfWR~vy)FrT8qt$ zrW#>7!dl8j(h2EURNl$WZ_j;y;LX##96uvhxz%N0|4#CE-M5cGACWTtwD$(z+U2!g znA}EM&URMpS0rjQMrsayJ}3AU-aTH8+>(V$g?In(3WO{Pc=r*$Qu1`n%)|r_lKA~dkgddl!q8Fnmv2KX!Yz( zFdFDJ!S@hk0jTiQ9oTF?qZ&CGT@X%FZ?DC6@C!NI*JO@s<%6iCeG1xQVZxPfTOMYE zQl3v|+2|3rAmO z&yK$_?%bGbEOg?vm6OkmxG}!dfN5bcQ9DFTQx*?y)9=6_e#Mix!LwlCk%Ar*UR=0y z&T?RWC2Cq~VvY3Nl?9J@?utdc3F&UojWECs$JS3b48^0gY!q@Fyu_|!Jn}(m2_dg4 zK=p7WECoJrBrFv@EGJLQjrR?k$rM%+f zYdpN}(B|?7${#PU^w6@(gYqKjB_%<)$|=ZP1!z!{6GWwrHHGNL?wIn$kY`BGqvjru z=OB9`RtzViq7soV$o1!9Y0ertiRB6WPci4~@b<>FBQu|zEXI9p+EmO!)qTHU=9htK~;&tkV@o2%yaFu=tR+HRW_P<6fgf{5+TYUqU5^NbFUPh8}|cz`=B4* z{ZlmEkC+<5y7BFaXuKcb?#D8jOydZ@JJh>i&C;FxCa91+-IqXx^c0DyTCk|?pvng$ z8f(#e#wx{z`wJ)aW*u-EsTi}y!IDgVIVub+%mz7S5;R1g7g}6^#K^_Bo*UG!6Kvl3%G;Z_oREb(aql*RKXKrD zcES4|Kk;0vrtR>&H}d`LMObSTx-#c#OrLUzsCl%HaGb@jH+->&7VZ)eUDUR# z`d`!~YLWUxvnD2_%(AHhg2!@8H(-|9M`UpIL(+hDAf z{fDPPs9=d*@xV#&=WWOo;?D#`p~8ICMzN3JPhm0{GSk12$74ZkS@aS~FA0&NB0k|E z-c&^(4hu6YJ1`?U_)#CL7ewgH7^sIZcyKZQ)--Ex@#11uL4D(Q^T0jzjoq)jBJACl zgr6Qt^LQU+?^!bHc>1G=XugP4y zW)Pj;OX1zQp=C(QE$~OdARM8 z{@Gkrz~N|QVz5gN*!jSeuFBQHs?=)ss!fXqifdFy z(5jzw4%bNZLxNs3Q@ObR_jdcf$R?>7|B+vr4 zcG%;MMHEdZAo8pIJ^eZL%K`jk>xD0$Ju+-ezxu70t^M#&-~SM17RYwFk@6L6^>|J3 zO)x`|q^P{~cOp{fx*p=nTrjcUz`_Xw`%aVuC0u6ZvR1 zFPhn~*&pA^j}vE^(9epgi*u8g*2 z!p08A^sR=Fqgr>T3VdQA*VqE1v((9YQfZ+N`?T2yr7i|1w42a1+a%A zqbo#bMJqil9gaxjo5JO8%sMMi-B$=K5Qm9ubUbp?l0xzd|0rQ4#l!K^Re$ok2V`}d}tFUOLZymZFWQdXwI zN2z;XTRH>I1yx)*PTJlDHX~tCWJiq$ON}pjz zsb&Il8PB$>hMoQ|&$h(_?9iJp4?j&Z3K@Mh9-V9PuuTfIVBI!>9hT^`O~gu#teC~t z7SB{S6o@~%MFs1vDo&?)eI_yDj5+UY+s1~R zT+nuPoAgCvM)tdURUU{zx$_P-pMI!&YSP*4K7ATtM6uAHs7+EI$2#Kh^vo#J%pftr z$$;PD_Z!SEUcv(d6omGGNN28)Vxi*ZmH-&Cf96iZ4Oousr+);I!{B3Wvq z^=+eWMBgCklz;CbnGUp%ruouroNq@n7L27GE#^zq3u04^q0`pQRpyBe7WzQPTBfv9 zi#BDDL|dhSAPed&Xt2Z$g`_f2mkBgv8aNT6&Nwg;vL&wf5NfQwo5az;U@C~@5jgVE z2{q>EbWS+3;zuVOosRet(>QLOfC3an)46R@ckfllXF+4Z?`09GsR*h<^e`pMoeuk( zY$9@1bvc|Y3(cFHg-Qi?In0zH!%M?6k4TS0TE|>+WBi&!B|Ak+j3Hkb&u>y}c(|$Y zcwq;|m60tGgQRwBd|GUdf+?KzPfbvcd+K`{sgdO?Ht)XUg%w-m59QibYSrw~E$iI5 zb1hWNiB;|GJ=Hwbl#9RDuAPuMzxj-Hi>K$*s8^%cQ}w&I?6%w6QVrQePf~vhf(d0L zkV%i25|RXZB_=Vl9o8u!aU#O>U#5geqR}o^ydg474}R7gfb^kzSk-@<67r}SAyBKb ztVF{e^5r3fGhl${51e4en834jmIAoKJWIitq|l=DPkA?14qJ|%_N~VbUT1!I&6BUM&+ z^X}c7*1x=e-=?r#o8Q{?680h=5bXj)6{T7Ko`hmRVn}~(W}(PZE_U;n z5{r2r)~8w4vm>j2ztJ4B`^b`A<98^H2ZYdAIHsn$8U4!KvaUPt*$!EE?D zeDRS8R(svntrOWlJpEoAaNP#D-VYd(FiSaH^jGROs_@PXK#WMg8^v>`@f?~%A4iL) zxg-SO!sDuh*K9SoG*>hQSGA-BidDi4r-2CcBxnkQAhL=lTKf>~c)kX^$@j+8Z8Cew z)+ICd$%k!Y3K}+On2X0fuU)&Q%)Cj3FV5-PernA|m7v#J0sg~EDs1rb$Qs1xPfmkg z3-j3$f@O_$7!gyV0F!N~*~0_{VAN<#U>y`NHJON@gjn?K1t1o)&J=t^gbk*atFK%b z-ehRO{GIbw@45T++NupAr{^|OQeW)#{4>iYO?Yv~hH6)S=AA3XS6taRZyfmtdDwr# zz4d9;2C#nr7(H!j04zM}&o}d#p6-GPNc;J|(|BTPOSw?q>+L8{Ukj;h@HBP3RFq!S z9Qvd)k(+SiHPwe5p}~zC8i5iGty9>eDehFv7MhW|B6Ulu(&J#;)ZVE`;Yz7adaIY( zHkAq_Qm^BvDA5F-oJs`}h{&Yk4fnF36wg?*4m=YB{%HTjU{oP37$sw9$W(NVRCIe| zD)hS1b6#1t0M2(KQ6z{j3JXI4xLdaf85~lG})$k3z--sv$^`y3J;T!m>1cYcXydz*c|CmPeLi2=f1cl&5xz3cYlG|U7w6p)*Mq-L3lJ&| z*AvriTH&0-wj;O}Vt;{q3Kpk(#`x};hkNSRx?{eU(3Qru0`T7z=OpU)6AVGuLPI=; z!&dNJv9Y{d-YQo6yZO$3#3%XA8;P3KYPL7=$eW}Gl7SOHeAEg`IH3;1RNHBsRTfbW z-<|yrjz|A~tka!N=VIrP8dZM9&Rb;!LFh*hS&onq=CsH|PqbHl^?ve){J6J~;`Tk! z9#9}>=&M;L5SD6I4y)V7a6Gk&MwbfJ!dKC=NVtmMX!^A%g7GpMQe@g54)O40Kv7 zBLwgT2;236i{IPvI}^=+VH#gP*>!^~0+dP8Z#fm+Y1&`JW&xFX45)cN^b&z}sWR zQQ)cujyyR-N(ZVPQX@#zJY(1V92Ry>-?fL&E?_4EXZw*6ZaF*Of9++`sleI(Ye!nn ze%ycdO6fh8PcbM&+2btd$o_MNNVjptIGt|&SB$!b;!?paI=pNA=dWPTu_1^q&^4Xc zL|-y+FaW7KJcAl%AxDSE+eCJ@v;?2i1e}(RI{5rC9XHa?td4;je_X;??Zammu=$TT zJHodT{p`B_YcG=)JmPGp=eBqUQ9*S9`AY1tpaNT#JJtuUcv7sOSsDmVG+R4BSHiv_ zc$5Fj*#+#2z}fyP@f6G1M6>#}mtj7rpCA0!PP3d%(CTNe#LTgLgF^h*PPLp()T^I8 zgxPRy-!A&EopH^brBknXGNxE(E#Ep_0a*OnBg%L6htDox?*G%>na5XAWQ+gQy?yV^ zo=XT@65xhSmV|wYED|sa*$BG{tH_QZ41$h+Twp{V@Dv6gqnQDPQD?*rE}H}wh=?$t zBMKVFH@uMmB5Dj#z-=V``&Qj0z`(qjKYy?5bGo~_PoFw<>YP*6Rn=W!2l{XuUV)=? z7ofOGwqAo`NX`L@n%@BSY;qUoH=KUc<9uXgtj&YHR2qH<7=E<{gk=}1#r)AhUd$?d zZh?AsAb0XI))(wYHg7h%qoC7uuotO9u*qGMF8;JDa8!_@TUHhQBfZX-Ol?||MTt{=hHzddwI)>#uxH6yTG09`YA})BdhGzb{IQMIpk~j6|dtLuD8S3v+bc^2PGfIuJ<+f(60Ew z=)efW^_tO2YZQYxDM6{~wfhE`G8hR4oMMhNo*ZIc~;#!u9#TT#M>A4y%u;7at39 z@T>ZoF5KEM+D9w(|M1$+$c{FG+TiljGNvBK;{V-xJ)K!Kr_J-7&Dd@5Z4P?hnmFwt z`b=~?v`bLdcc^gP5pG$A+KT4uV^3?aHyZ5K@=1Nkn3C5mfRK(R=r*oNn>KDx5BSoG zwA+Pv(f^krPC1A4#KdX$1>&w)liE{()Kv5O)WYvSm$d`kv(3}IyabmIVK!A^u+>e2Z^AiT4cQo7O37?wUCA*Q;=IKf}b~QLo@koc>$V3$AWUoO+eG z@#NGmZtcm5GdOG|xIRI4+k&!t!ag7J)?wcs%8l_s=4m_(PY2gfgW4#p@&B83Sm8Xl z#t@w2D~L1KRtfo7p&_F1LyU6L zZA%?e|8#Jc3Hdo@@`E?{_ujm)PyL=2u+J=&e+~N#wL7nFDP_q&YgYxVMVE8HTC!w+ zeL07%#n8qYObeL)f;j%37!~}twCIo5Ti!w`Q z>cMM0StU3!9r%X_{~>$pqq@WQ*3D4OSnFJ`c0Oa7!@Bgd!+OE#xHOa{&+FjIS2u|k zrv6@W>OXR&8!%z6LJ`ANXg+6X#K)kSQiR{F?)uJ)ZBfyt@0hs)X zJ%0YZr|Vw(`}yj>*S)?))!nK#zTjMQNjdDF=b<^nDeFw$zTLD1v@UCp)5ye|m^fb0 z;yZHgGiJ{HCEV|8;>}Ea1@QvcF8Xki67_w(wsmj55~gR##3$H4;qP?3xxv?OHG%ty ziQ0pSnv4B3#*$n*#ui6AQXE}*LdS0nhjsKw3|9Lb6C6J=hcnYT&-t|TPtGqbWwo~k zT5GL+`0?egcilbQ>)nSuLp<9(dp+-XzKlqS=oV2HnG^XRk>{gwqt-+ni;jxEJ^K0R z{n03!7utoN|@n+7or(i?0} zh)?f-;|G=M>c<{MOurD7GqjQv~1P#ww8Zv`IB$1 z?@`~UsnMxvskf!BNj;u=ww0q*N~_+jHnw)R&T3uJCZWxPZ8O{MZr7mQ(srlY**84g zzE%6u_RHJ9*}>Hzt;4tudpdUR_=ir(o#u9WAq74bd++T1 zeV<-^?(K6VqkG2v8Ru@CdE>sm{rkSyFSXxe{l4$tqyLotkA%bH{Wtc1tN&*MTmu>m zXg*-rfQ18=4%j&0^#Ml)oVsbsO+O7R88~m?vCIyc`v(mp>>eC5xcA@(2cN&W*Ui7V z`Fxfy>yOzH*~7D^W#5zipV=F-w`Tt-`*`-b99K^FoW6v?Ioop%=TznVkQ3)dGuTliApTZQiw z9xG~J)U_z1sJLi)(H%v16|E|Iyy)ekw~9V4`mU&MXrrNNLvJ2BcIY35UKsjwu~i&X zoLHPv+@?6KxTn!>N9%+c2RHSf6yN`%G>b6mzrVHtZ8VXO)QIYz+Fbf5ay+Bly5;RK zx5fF0Obwi2J9PnYw3XHLMo+U&%B>dnT_KMU9d3WJ5Ni0 zPkR~X8Yu~`7+LGOQKq~4^54g0z%=3uWVUOItaS{QXRKdHx+|LNqhzgz|M<8z1Ixf~ zZjQHFb=><<@~yvu*GKMmrAvY*O1iqd(!n|*9_s@c=IAC%oh6dUF~)hj^m48jr(>;j zgXUOkiQH#(h5w~MfsAxiO1iZ|Mv(43j%c~xq3oSjI>%^v#Qhz(cgj81Dsc64|4Hxv z`y5jlRd`+^tOatn^P)6%eJiP!TUt6llNgR899tyA;gHQ7lU>7Qk)wqyv+kFv)=rt| zdXiO`G9_C5EX%DQWUTXHnc&WnTbyg;QRhjy#hNP*n)qL3oij=vwDM&Vt6ud7`Y?lU zK7Z1E%=xusBdb*ougvB8V&`-4aZ)BQb+XjmNrt&^kr~K*u;*d>J1a|yTuUjt!^rJ( zS?+#QhFH(Z3~PG?!Ep0qcOJl22@?4uJr{^h~D7n!+Ns3)Rg0n(a zdDcmp=SL}HhGlgN4iH~xBAT8Xdd1i%OV`$GN&ELxdmab-=27*T8>L5?LyUG$(Ayd@r(u0p+yE_wQ zjx$*@oe|RA@s2Ea{gK(53uKOCmW)Ej(kY8x*ucby&g3mp=2{QQQ`RPFYP~M$p4I`- zCH2?*F*X`pOtai*0tTbO6>2A zy=j}f8n8cOd)oej;23QGN!uUCcYwWNyVJIJIcS@^42;cbySf%=JHy5<2S<{(x_8VI7On&h*1`m9#lg5|eV@zJO zK5KuX<)HnD_8ppk&8yb8kiEly(574Jdqy|4?Q1^)@5Wc4n;OUXP<*S_6)jVpW|*G# zOL6G<)xLA1tgv?APd4HccCd;&%IBF=7lRwW{iil{gCfU=)iJ1*w1S*gnYutLNL;^j z^*~=+29C}TWV&|!LHEzuVsYHSp#bm!l3QGyE19&eF0n$5$aK%|9NbVF^gZ2HBjRI3 z-k5-z9~osqj5$1Rm&eUyXv<}GuF%GcDK3{4;bwEW+-|4K?J^M)i(t=x8!XFd(Ak6T zh|m!y!Sc8)mlM*^aJw9C%VSwC56Dg@H@RV19*@V0;HKL=P>5Akb?n)$y1~+b)O+Nv5 z!Ht+^EF9MvuHT@kB@x`nhep=i8My>S5`2Q2Z~{Km9c1pZO&5YLIxYW1_R1VBhpxj* zC^eVRu4d-b1N5c5L?8TKIUq;mjGPl&byFi9uR9Jn{@ZcfYHM||vaMoklC{R#>T~!a zebK%|Uy`qdua&QzuZOR%FUz;k_fl%()K;w$>TLTGZE?NDQuZ5p$9kDJT2a!!>nIh{vhRszNWquL%F-}#%oYk_ILJaW|!}i5%!y;k_j+QY>&13 z);)dcPnTY~v{U5g`+$W&-=DXiIDBG1;f)iop4ffjl@r^mI-dCbiLw*3PIUkD(5HL; zc7&G2msi__@M3KGIUe9xzcHs<{!;JH>u+5DOey71PGvFTTfzlPs#>AyMfhwIL&i!7HFsw?vA&cy$ovXTz~ zCec&2mT{-ws0?)@V`2T|ad|?@)Bsk*x=DVk2FmaF-@zbRrv}S>`#L1n3I zm7{Xi5S6F$bs4e1V4=~0&9X%mF{-*%w$bOiU3SP$c|{e=E;URImvUCj+pR{b$!e7B zr;qz>HAdaS$Z9E?b5K}iP~FCt7>E3lR^X2uR>Bm{Ri)+1e%PPYob^B_O-%QzG@mbf zRu-Sgr28Fde$_EG-S15E<@lX#b4HZ3F7>VSt<0Oc(wF0#IeDtzYHN<%n6|RCi_b43 zOJ=bjRg&t@EKLrdPAe_#o9?$X8J+-pWhn$^2MKUAm%3a^_q);xe12!UVI{*${EM@a z{h3*%$*HNnY=6bD5`RTja%yR5y5Ak<5nk_~)il7ZC(ZBfnC_1VP#9U_&rJ49>B^Ow z-pG>Hss6<)S0=9{2cdYymGN>VS6|4y`~nilE?0|(L5f4`)MS03b!zKWI4sRd_eZ7` zj4a89#Z*{~O7o{>r~9MR{OKHG(pW%rxo_pjlHHkN$&~U4Sw5;{x1>4G&M!^&w}x5Y z@^Y464_(u_j7{@rE-&}V*pjX3l9jw$(w%3sxE|BV&$<`eRGg!e+7_?a?~3o+wQaIj zB08Z48J*iCHQ;oYV`ygg){XR;b4b6=sfqf`3SV<|ZQrtSoWACsGJIe<%RP14<;mz80I-CM7XOpT*tW zr&G%W&SaZ6&I7Z7GTOE{QQf)CuXn=|)j}OzxNTqx(Mfvupx$*!;aaiY&C|QpdbdUI zY`trlq88~V7U?Gz=_eL#i}&%^JfDv0vvYda(g*S+y<4q!NA%9tyMY?7ODp|^-gW87 zZXi41@BQz}8v3Z#@XgEu`jhULG5mXBsNAY7c|rE$Jre6~<=uics_Yvjw(beO0ZNr< zdTtV}N5xA$n&@sSjocODb&TWP#1fbLZ(*MmA=9;Yw<4i45eS?sW;IR>o;xH?ei=M> zUUuEO?A#^o@Hl~I=~2NO1kU5|g9lh4WS-2Id*FVS%#fL~5Z~UNzuk8u_!z&ON0`AE zOVfzu@dd{e>CD+6uFT;$BK*{yCN@p(1apDh#eOQ7BY65YU?Je6XH;LEC5vP(ccwvi z5mY9FKgK+DC->%&hUTC%>GzO6($B;+KYgyCmVN~_&G$m`(U-A?E^@aCouND*m_n|m zL2n-E%;4@EQklY)I}ERPa;1=*-Av#5P)6{w84b~?cSTBOvuD@88waig_xgL(2ysv+ z##3UtBm&#xoHu6f%}rd*rlb_oy@&l0g5qyf53yfHP_lxc7+-yq{ci{gU%rw3GXy2i z5tKYHFS37G-eA9%pyW+?i~ZXK#W?h5d=ezo4~n`Why4)zw4(l)!d=ak2rWeMa;~d4 z&5J(c9T@(stenD8k~HO>1#={6#)4_LOVXUl3-3TjXwI3QHS^T%(-z!8P6O4W;-03e z|3ul8lnM>*?;Uq}U-iD~SnhZ#e!e#@zQ$YOcsBktA;bB!Io8Dg?A+vh&zs_`Wy##T zydPSLR+4wAcfI$pm0@kR%Huo7clNIGuD9x3OviF{2ZngpyQaG?xL@(y7k@g!5%H|| zuE-oiE#K@?5%+#KpvQ_pXoY zAGaW`EN)x;D(?&4SK}%)ukkhU^Xr2*&RY=(0m?z1YrrCSKZMizaG3r(g5h@+JnP^m zRK%|`&t=4C#OFhM6<4$j$UF2?$n{d5Bah%7h7-T$gHS>2LnPV_S!&6<35wqN7_K!W zSZI@8#r6jLjhmkMbjq&_^K4@zgOG^U59IG6*^(p4XmUQiqJ@N(QcUpC8#{`x{l^g6 z(mE``8;oU^+zpHrOkft&Btl17N$AAvsI^dk934!Tr-gnAS_@mDx}A_Kkp1vV_ zcuS~|ec0dIv<-&w73e$I%~AUKN6SZ2DYu|zjigj1DWA+!tyEjNi`GsTxmWe1MYCA9 zXJo1BPa9^L8bteLC9Remc?8WZlGXHh52MvHLXD6o)F@gaWojJ%ul*e@lgYGirl8jw zkw=ETU)BO;_I{Pm(S-~W@fGb@<-0L0uEyZ$dEgE02xQ}}s}a^7leTuIbhf)1nPuC5 zlU(~NR^|GN|6hN_c+OXht9>P-fidS~m-GwJ%yR8GJGT!0%$w*RJ5faX98pe5h~Qthu)E1)&d251X(0@8qVpfk_~=xTqd zx&hsR9zaj~tm*~yv%9K+(9f4dRS3NzaEpQAzzFV-;y8}uWcXD4t?^xY`ZDZKr7!L4 zes;ACu>S|?eTwuxRY~^$Ai+=76s|>p^&VJXgYiBX?}70i81IAe9vJT<`B-Eyh`E$w z?34Ibt(&p&K)a8`{6 zX96%0n9TDIDYq--m|X_{xyXSP*+{QikL8hGHRW7QTGgag4ee@ZS3|oR+SSmmhITcy ztD#*Dy=wAK31Cs(v8M)xvj}wPBxg-2&y$qrNy_si<$03wJV_ayL{q)?Qb_}98OrM@ z<#klnb8jPM_>5g8o51yRzuZ0~74`>m6dK2XkAO=1FlBoTtvZ8Nol!U0UsKLURe^m0 zEjpt{+UL-sGip3|6M%`p6w+iA#jb#x3b=U^ZVtjtE!@1wUv7@_?sk;_Z5)N0C*^Vb zA{;#lN42tn^NrZlGw8-9-tRVpvklk|>;zr`b^+z~pXF7KuLExY6~I2=AaIm4j{zS6 zm39T(zo>Lo4xS z$-yRaaD*HjAqPi{T-S2H3|P;7{#6^4={~qWV&uAw<91*t@CvXCD7O!ggCpeN2st=H z4vvt6Bjn%+IoL`LwvvObzqbfM6LMzT8*D5%wLNm_6NfqD7WuSX~?azZU{2Y!d z;iwXhDv{wgaB~K3&IDyxgAC8Y*%>&iM26qMT_xOA!d)fYRl;2*+`SKXm2g)Hca?Bg z33runSBcC%hr>!_Rs(luf-%@#Ha{JjTNT9)ppIft;ICkT~*kMw(z- zd$Fy(aI%5?9D<9N;bH?EYzW%W8S=27l>SUAA7K-Fv5CFd#9nM-FO**n+QSC)elL2z z7royLb-kkDCi^X()K>K&a?7w!A+OI!<1}fULSCPd&M8@kr(Mta24JK8h3vrd9KcH? z*{7lX1stD3Zl6K(w2|3KsAvi&p>P@sC!tUUh0{iN6ft|oBz%HPid#`eQ z9e4w%0QLa~vA2%EP+%A^5)By55t~QT&mjvpIus3z#nVmz$|=s!L07e0ufi2j;HjdkYoxm%=E})zm=2ecbaeSTQ z8^9i{wu0k6;2_r75f};#14aX5f!nwj39lF7^&-4ogtv?Eb`jn*FBjqEBD`Fr4>K1T z4FU21d^>gPLF(yR>gihQ>00XPTI%Uq>gihQ>00XPTI%Uq)yY0c-FuL__aJreLF(Rv z)ZMkzzXz$mYpK6$slRJ^zjV|7hz7EWN5AbO~$AkK?IR0;#tA$~xjmIDx@GYR?@PI~28RH7Kmjn)o{wb8t^yZ^$^U<~W=-PaAZ9bAIqr~PToie0TrpDM!kx*H<{kfc$<2c$tFQGZ* z_HH=&f_$yBH_Il<;$^tpg0I_3KK4>Oyalg^xb_aZ=#kd;7AZki!`6gN~<+SE1 zu)RjK!5`qxlQOsN8|L+0kR^35$})SRtgs89KLz?OQhkFo@?=Y09ceV=>6xSx2ZfpP zCh@my4?S01Ni&W#`@{7*C~pCr%+w)OU=#dUw0z@8;bX2O!0`y~$5I0fqLe1XVPmoI z@?-Go<7j!#wdcrv_8m~T8IE3pqu=w~7C4HBqtkG-5gH5OXfYgZgQNT5Xd4_YhNFAn zs68Cr4@YIBvkp1Egw)EBpw_5>t~;SnPK*|~{cEtapVck?3Vf6zHWOTJ+1i46OQCd$ zgENlWK~vGbsDeC2K|#Og#8J--BBgxpkFo!P+`lyMBy%aL`>4H^!1FT7aRpEPg_g0y zvl6LD#4n>>p*Ci2(q$VnR`q6|BCml>e~(swW@7ef>Z_|ZY8A8DFH%2Zz0<`KSX(6W25yE+>ox>>`h@_ zf>%Nq|J%{_Uk`(lVY9zRU-a<|JI2=k{jHwc(6a%Gq1g400XgaWAsUoXFz?ie|762c zUA0{wKY$yc8=`*2!|{QbU5Z9uXS=$buY(r8Y@eYGBlc$jZ9#wk>1OLWv(E%j?7hg~ zFYG_DXWMVu)#!NxwB>+(5?zSZIM76c>}H%MU{_`XOYG;+;pgnGJiFX3!A^AFqu1VH z?+05VwCA3ka2|D)&_RHym3U2nZ;j_Pn&aOTNWosmS^}Q?OSIa+8_I4GX=%b)N4E5(< z@u2++9i?9TCmR-b=-Rh=uQFS(JU-M%`zRJe56JZ;X?M^MQF~u!vl$n^auaaIfwo3?vn%R(*Wa85>?3^ppPbZPSO4wN_8Y)-`vJR$J;|O75s!H6+wEl`YodN~ z*^kxrw&TT9*Md~_m<1cpePM5=y(0D>Xe;O~0e^GUoP~Gx;kvu+*TA_E2xyr8H?QtR z7wY(E>Uw+-H9XJKDrifuw?#j9Pug4=jDjT4bDqnaPaYw~^qe<0edaAppLr|V{$uHZ z8_!5i8`DpIgBgo&FTW*p(pv6EXa@iNNn-#Z2Kn8DKglMz87au2WOE6Pj5H&R zG%ch#0*Q|#ur>g}V<>p4dUZlH`k&HhQnj_;) z?6s7e8Yw3jDSM2RQ;>26rT8YnV`QCztPe95@(!V?8Kr0<9}-%av5F>?z{i~HGH9WP z#~9I4^lvznNAYt-6``VqrIZ-YP|W9OCQ*!PBr$(0S^31RQdO!nG9w%jlw3!#R43I% zoRnWLep}aD_2$_=jCr(F{TQK(V$5Rz?`=2HZ{kw}={a$zOqD4~jDidTXE5dMV)jO0 z6mJN9`*|u49`fnuk7XW50X;{BjJLT}5hEoLXhSh+4P(5-qlPnwqmdakiDVWBGx!)g z83oR0G^QyUGY)>n^QPE@k-+ZdeQ)SX^UxObVz@z zbOX4Z2o9q+DMnZH|9*OLr4J#_Xbf}e2$4o(ni!2~Xf!6?XiT)x7_ZS7tt)v5ovG67 zwU#)ImRLqhoQx-p=K3v!7`{a;MPIcoMqH*b5k_NT&8VtF9w9gwP1WP6dMqo-jH)`& zq{q?bGD4Kmr+9k6HgH92Rk9gvZD#bz8Pun3jCVPCC*FZQ?37)cYdcnqf4$22YlI|u zoslr7(KaVzVf#1_jL059>l$O@2f6aTd=S*R21e%^8J%ljbgq%nxkmic)TV^A&bf`w zIgGYBjJ8D@ZHqSA=0V%qqJ>(|oJP+q)m8PNEVZ^p7!6A?x|M8n%WX8tVRXo0bcn?$ z(4lyvLms0;N)2T$kke?AWi-iYG)WmvinvUZl+h$7vx3Ix*^A6ybQ-OSFk02X=#yfO z&~04TV|4n-+O*6t=)1YsO?5YWAbd{?<8nESf7b=ggZjNABQsfh?S_uiU#(?-!d?b=ppo zZlsCp5p(@NHirQ{dL9^?*Le;|O78=>PIJXVc8#fDhBCinGqdXwR69y&0azL{0?=c` zI{ev4F>o!DICB!X7bmCTAfHj%lf;WI!%4Xe=QD#dOiqC_%uvf`A4oy}Sv*F~kxOct znyzN3nQE5&tY#}_3E*M%O3sPq9rq{sJG@@;l;~^8c#g*O2REh0&`&f6Ut!7m{O8N5 zYMP`|PazIZI!nzqn0mf}enL|WVd%UcBBsCZ4`@yV`B3;OCDViQ)KYNBae~NM`Nm*} z^3@-HzmzYy{uT3fzUIF>=cLx)gfNo8I4}1yLu8>`kc;x2d@n!9k5E*>T+9ChuW7@w literal 0 HcmV?d00001 diff --git a/app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.woff b/app/src/common/css/fonts/Roboto-Medium/Roboto-Medium.woff new file mode 100644 index 0000000000000000000000000000000000000000..cb8ce5392f1f3f5eeb82cb838751f0e45c21aa51 GIT binary patch literal 29024 zcmYhh18^o?v<3Pl6Wg|piIa(wFSc#lwli@uu|2VE+vdc!{qo=Y?yJ|;ySvWnwb8pz z?K)>yyU78801&|U;h+yd`R_je{yqL5 zpilq+A^`wEU`nFlX)C6rA_M>+Q+;#ezMpM@OT78WDKY*808m=K^%TBE-}Muu&B(^U z9sodv`{s3j^W2@39iNR{orwSdw25zy_J6{R2O(u@Z)O7kp#Nv@+XhHS*gILdnSs-{ zF2;YHZ~bq90-%~%dzgM>=HD*T0f20Cky1Jhb7LEK0KgpVo0Iyj>)tlrO>1sqVEm0` zeq-$a$$QS6qxm=ZjV*kSiN1vl<_eO++{XDo-FpDw$2S+efnM1Q&f3oCn`iysdrf}J z#=!-gyp4hTcPw`L|F165kE|bvwgxsP--Beulf%-(O*ZTQ zcV?K_weF(zPqj_4v?CLVQ(OL9vYM&D*LamBV2PspF?>%bnQYKG98Cnv(6ikQMI`(d zi!I1HFlq15W69(~A(FlW+MWgNDO%0>I}`tt>fv3^bA0t^I8{=?%kWL^v$|ARfss{f z0dsj4`gKa?$aL1DO(v)1&j#uxd3Ug$klHc(lbpbVa&FWju#KLH=$dpeBx(LV)tu5Z zM^=21=&_MPRi@0Om(^F=UfCXatvdpJ07E}Zny0n{vtzr1+eTkU=QsfCW#XKnHi^4u zb364+dmpZQWBYf|5;7Wn2A>gIXN}If@N@}has{)EKzy4 z!J~Q0VxYE5(Y3(+&x#5VH@R&;6lUoX7bWnVh^d*f*w2(}x zFjLt$Svi?zBGFPY5nNI0v_|Aq;zzOssl}9}1$Cu5qfH?^Zc$c)S)%iwZ0q=~xs0qi zwa;1&%$jI?K|rWke|&5jwL{vv_^>=o&|m!o6g6c9QS@>u+hE)MpDe+slw#F+L3KWl z=!kt2$Y;gfnc=i2^K_j)ccz`Ku<<&fcnbv3r1`wX!Ku_?fBTWUE>f+Td5{w54UG#9 zZxTM+#LV0JKAFD2t4fK9Z+*hnUb5w^s2$vmW{!r_?C-vMs zpYfA{W*$&SDEBp3M5FaJ8f2_^4ngluLop1mh0~CMmmT%ATwq+RV`i&Mj#r72W~!rj z7$P1mo||_RFPX%!9%Q#3MjmpLO0Gb~O@3M@3R!4{8l(z=JZEeiK)5FvdgVkBALBmd zv_v36e5onGLulDClK}`S-+8Btuu(fi$N3SvPzfL!9k3P! z#E4k@(I}XOt!NKzW-DPZOr2YxfYX&Dm$IzT(nU{n{_zAIx1ohYUffdpiumsPv`sllI z9CmQdDy2-PiKNqfhdH;Cs2k*u3Rt3Wq$_WKYr5K<+%7S8%n{RM>n>zSJGZ`QCMTCR zGUVO%2|s~1VSLJR;<{JCE;AX_^w~)E2GTNqDasqTsXif02BIOJJ#nJH7^{9pmvdNY zv57BU#(Y*Z$7;Pl7~lW%fb&Xx>mA2vj)seH`sOXjsK+#o={<`1P9xhQs6#&C4R-bO zD^Ip+p+Tz4EW1q-wHCY5T$m?+jWTP1g%cK5r^O%ZDvC6qko^{1?-soK7Ch0r_szSv z<8Q7W_^I75k#8^X|Kr7RQ||F-KoBU~vO`_~=!+7&CNKHq-IFl~(yqf2hoN8-5GI&k3hIgMYVl)k?orhtI_Va zu;irCoBPUsfjG{shm?{x=G})!T|B9Ch)JeIoq(Lva;dMLcW- zLafO&Wc<(k9Mk^4>1n@xDFj~jZx{35_c!T(_dMleWOskb0z*1brXRri{XMUyoa$4g zK{Bs3_@GL6jN_ zz6eK|$EU$)!lGe6>OIV20ts3{aIGTASNiX;V-poXW5d}4Nq2DhoM1bqPlHiK?01|M z>^vU*4Cg}x=Yw6!P09aTE5F`y`bak_K$C8yxvXfgoshDkS|j-KbDqGEMA$rxOQs^b zgKIN-6#@{%=i6w)@1%#`%}Qsj$lx9VvQVv^_kzH9d+iKyYgy#)W5J z!0l3|TL(o{##lezaP8}BgVD|YGc2~1)ilSfSWdOxm)V69bimWMe*>DPy@$?j5jn`fG_*q2A5mN@jgK;AZQ#R3BF>sOvaS-(vsNMU*nt?q>uvfSd4G6O%8vXse5 zM5%z(+OL7`;c{o}H_()_?LRtknE$`5!5;FDjf1ErFogFtKJMAAYyZ!(1)VOi@qZRD zk@IHV_paGqKb1!Rj_+2kKf}Jme}a4kI!>tNR*Gn$D=(WFn;T9%9f?a>xHOC>pMtVv zT<;@0$jmxwjcCyIkE3gvmanu2HTM&E^A2nvZyrYZEx?pZRGrrJ-DMu_@HyiFhb7)t z%F6j^=PR=A#$LJYY~tz%Ld(0N6|wI*1pR0#Z2N)KT05L8;lMU>*FI~?3x*-Dq@l+( zzZJNCQ{9g2z(aJR5O@?-5IbSRQVRq1mL6#|0yR_K#7iw=*}w6+@@~|Pn6a+^W~r@8 znwHcqX63$GTEr{PhYS`?@nLaxPs< zRY*{K7nq@9iC-wt4+J)k-l)6XXU=*oWo!Hd(yxwBy4u1?np#LHpsLNE3K^~VjTot9`xyYYVzhx~LjV!uI^X0YMtEOiV z1rc|1Ue1UBW99{%R9$L-&Y@Q8^F z_Yv?}z<&s5nxPb`F?Xiuw#&;InhKFr-s^Zg1}HHiEgJ3fI`^%MurLNDd8f#ST@Kvq zLMC}9njgCS>pYg3Q=`HYC@X^P;wA`7O?+zu?-pwmSg;dN)L|MvyCQBz?$&%hopntpL;z2Y0 z7>Xj8zw%(o>pvQ~&ah!Eo35*$8h#6N=`XziyPQA&1c zd!rXWI+Om%e2qyj1*(aw9Mk zEuY^=b+O-;K6OjsxY5x|F)vQZ2Ghz)&ognDrdx8u2fO^JAsV@9mX}!RwZoVE98mZ+rvGsLrsZflWghvjuevrk~r+BBO{g1+U&Dp`Vh%zu7AgR!RFQ^_P{ z+pT%}B(oYcWut}_vg20K*y(45``^~UHItQUPg&4r9o}-iX}$ae`z1e-G7XdI7P!qy zm4Q_gOe~c)!1{B-m{>HqE}fXYHUwwAVpP^@aI$040C(CUqenuPB|gIj=IIWgCf_Hhq=Dn>Ydb^aDdtlN5v77dC=V_St9Ry`6t{%puoJrp%v|^G>D%IMhc!fww zM!KG^zH$JMmSuTJUEeS-x@N&s!<0N(D+pcHs0hAh%v0Uw!@3SHgMJzVH<}H$)-=@T z{K>0F5kZqL89&D4cV+{ztVaC&5+?1D(ShnYPfy~~frr&iexu=mWyLSF|4@n?&BSRs zLM@J$E$(;y#pj~Z>ypO3>ijqbA-PbmdK*?ONMot`Q*+GLbOyCMXCx*mX*cjY?{LPjha$AXALni zOIExZHcO_3m1|?+O%}L8YgHHbmSL_;xmjxxvhCW!y=>>ii@F!&)jn&(=I`lfE&`BP zbAtGVxxx&^r-rif3ldqy`7BkGxDROg*#syIBD_Hg)A|c6W4S5?d9&tJm=9zVHDqlT zKw9YEbOsR*qRd59#aM&N`Kdcp#r%=fV$44jqO=^y4a2BuBnlFwl@lCC29VEoQcVg{ z`^X2;@>6wfYl5}tci2&%G$Y>Vc6{%yqW|QV_-5C{mzMRisQ%7Y%%{{nf>+#XVBXrr zpQDoQu%jka&q90&XSI}i*--5IdD9qu6J7K^W+&nV2Xrc!-Oy*{z?qD`?N%vh)n-i* zv5{C%janO1(AsL05t`M&$ueP8gB=0dgiuvr+py(VY9}R$2urXkM~1!@fe)PEqlzBmU$zK_dsC$w?8)2H`dqx zXSf1>9EpeG6cI@Eu5!2fxSw`srseQ6;)8aGigt{<58oJN-PKlYL88F^vQ^Y0?CxZ| z8m;PpLmAkjs;!|u)hKT35{1bL$jET_|F`QDT=1*kFX!O}AwE`u8t5zG=@*9B{q@-< zJe2cf0i^i&urZdLlXEJ2@)59iC8cr|VaCN|41V=GHkerJk3k>URoFsPIXt|hR@BTK zC;UTA<3v)MPDLK??i-xSO#4?BOx(zYC<8FN(R9cQgM*8=XnAGPs}do3U|8_VMTcku~ zZGd3pjzgB}ekiqwhmh8>pMLEn*Un4=nmWMmiFO>CH}9B3h`Hw$5m_U&xG$qn z2x%+@PyXG2abJs?V9_^GKnvOV+Q_WENaJlP_n2I1y5QT)WlUtynHg%jaIU>jwg^nb z#l^L9A=C$v?E&&E%3Gb`UPnsN8Pe87e!2e(V!SDgm-~^0<)X^lXjs8oK0q@M`C#Fr z!@oe-SdM@ul{^ZwO0{m%e4Z%msEg+)lR0R1b=dj#Sb4=!JdK5w0FL9KssK^@cJrhT@pE zAOmp*L4N~rjVc_5>IdqeDbkJWsEh0R$}EaA42m^O>xbI74%5xLz^&Df8$_)&Cz8pN zHBGtJ&ugrTSX67x*xr`Z#{*pO90zJ2RP7CeqS;rie^)kr;IG<3ntdsyxH=B9akx5+ z<3IgcnJnOayfr4Ae&jg=R3qFT#`VW=j`0wBb022zd4B+i0SOHN01aRQ5D&=ymh< zfdxQ^=m8*sY5`Cn!2sY8TmRb&bzjqo0TBZe#0oWAyJ#yX5r|5yt>R=s@b58v9O+#m zID}PcD}cR+G$dZi-M(e0f!vsG<&RHaH&S7`>X;th1D{udb5wKslz{*G^yjUHobB%f zSynWag8ekFDd`m(BbsvzH0Nw}ftFzWc-R<^@b*Y2C1}D%fR!_XR&6nHHWqMQz5B6TDu7S+kyf9@p2CBhUZ6vB{aFO4LY}lz_d|+P?-PYCLns9_p=^eX&Gf zeh-BB$jY-92gma0wu%rs>AZ$^@%d=x$ozmjvGX@iW$Tz&mrA3m1&@$aRu^B=&n*cV z?-LP)2*crK;hbY4j&boBr9FXdmeiQY&fqIIwHvkZ3gpF@*5%Sjqqd z^M%0xrGh&L@69T2fHPpIO-BX$$47CQIc2Bo?H*;=mkgVHJ5r%e4^ZrSvTP9rMH)H* zniw?!MIJ{oj;6(G&*@~Jk1GV=9?-Cj-867jf z67Q3!wDL4icqPjP2mM$!1&-TOF^<`-@IF zB{iy8r;&t6E`8d3%UM>bK`%KwyK*sKv@+^&5`+mZ?z2~e8<4h3C*c(*az#%*2e||K zDj(L>lPBjQ4h+)^=#SmhtxG$H;UW5MGYg^|LXdQ0OoO1^gW#XX;r~vYCBZt-`;#i9 z8O)s&AL}I7Sra%-6p4_J^*Ro2$o}E@_l4+>tUQB#lF{#x7!dFn{{?UUYPlcBG~fA4 z1GRJxzU7BywD+Gy?yVlcu-{*yYia=dG)g%?r<@q_JDxS{SF>&0SiI#ZH0F-~`!Kb{ zKbI5umbQ)FxRK^Xdxznf2q$7^E7ZtdKwrr5wkplHDgv>aUW!3J|9~W0H{t_MQv!BX?0W;ufUy`O{VJA z-qU26NAK?^?Kj|@U|T%aTwgP3MH_47GtjYW#|$Ph-5WGD?C-OBnYVO$wiy#%TD}ht zerO?NQsK>)JY5?=sXoeeI~v~&FK5jUN8`s9cd(aP-7fgKZ9sh-n(lWW6<1iffm6ppH0no`8F%&lQ;I^60^tGP8G-vs zmo#K$pO&U+O1hJWOXLTUMZy9-KEV;b7Q9gzbgV{G33u3}4S%17%M^9*tKGH{SWQ&N zbjBI}jkhg%3!K_cPR%quNR*Q*kC#Rc%JxCK`hf0FO9-s^c%;+r@OtX=fP8B3Y_uI$ zo!8XA3-Gvmx+3eo+MF-8RjprgIc*|wr};E4>+qer+=NY^+G_Nvt(vu}X0uuIjEHp43tH)qBy`C5I|85;#f>6U&kKOW#^6p zzZWloFoC8_N643gq6|bJ!P*%RV=o3UDXTEG*iuUN`PN~+VZ zQxbpGv6S0W`!Y`;{F*nyog>#S=xfs*-#~7AKfiCVFTD}05g!B`T)a^3mJn;u@40m7 zUt-^S8?6o5+%{iL!b`7-KY~l8xH#eLG%*I2XkK{!ATnocl?NQ@ z?o99L5SWI5=Cczjm?lQ3Lx8b}v%SYuVPf@`p30bZi5)15$DG~k}<9OocNFH-fSaxu#vE@m_l#ai?orkQ$Twm?35YT@{E z#RQewV{&TnMl!XZGvmZpp}8q@ql0&}2!Cmdq;y=5avAosmY-aR5ySG`Z-)gQlR|40 ztEdP=0pSpyES`42AKd$mH&}==P*O~*($E&r6g+(X#c^D2qjannRY}*p7D2b&Vpc1i zh9i(vxR?GQBq~9EfPTpJLCH7{!JfsFz%qCy(e@LOf4=B-UPt z4P-wEltCJuX>T%nP8h)DvFk38HRo_PXZ5q*Jp$-8WCjdKz;sJ>OupoBFu6NFE;Ej) zcP@|{#%86%qu-N0gVg+wM!D#nLnQ!&Av+p6Wf&tD>M^D8*kHNy}D$qbzfFs7B5LttYjKb`+YLCd3CCwew=s+W7BJ=jYhj9A~n&*Ec#KiDL zUM(=_rYGdTpvXrws%VZM!yug9zfbDH@;+rRYbMRjZ$1M-ih{An9F}sTx>i^bY>OLuyI;M)F`wr1C- zy!-x$^D@lkG?1!scb6<7GqbW2q(?aKa}OER#k=n2caVaYIQ8LsW_|^YI@HAn&a?oC zYnOk02-7!bfQeIt=qoXgYozw1#g!fxk{(z5a0by{Jn$PVMlvp0bQ$X01L>8Hypo0yo| zk5J8I5P&nU-2Z)1&{aeCL2Jh`o1a8%XPFEaDuh_j96cN^Gh{Cd> zn$DlxPalFPhYJLXln990JUAQGEl@tr@h@fem-rEh>Uj%)0=Y_$Hk+LG4*l3{LT^98 zPcrTjNA>i4y~E9*0zevTL5F zDGnUT8zQOJWEtbDUGER3_1H~Z%f+(&KBoD(b}3(6zr6)6*~nT8tDObg{DrvLuO1#- zKb$bmX&6E^l!v;=n}dv*FhP!cwYA9_3zqeY=Y07(vxTbPX&QgvV@(2}bVF?B@LJjM zwNz%_X1UyvHQ*8p#i4~QsNjnBma2>tNq>DNqaI`e_cHwrz)u-@<81xGJUz{9!!YDe z(hzkyXK?RK^cww7DCT}F^C-$al7j0xGj;-`pMoyt=#kSETdM>U2lOTS{o0l#J9V_K zlX3{-21`bFA^r1QZ}{gt+wzh1gSN`@yc5hsjbL&sbTY&tBcxBlsa3dB`N02{!2us- z3aFkyqc@6>hWL#iaaE$Tp7PHEwB zex~X&b6Y#JqbuP*Dl4cM{NU%lHc~EI`FMudr=;Qf>ynid(fOz!&@a21y8I_{$U9>> zPI8)#4vAsWSi{#*Jb}3stO_C1_3cqVFsb6*`lj*Qcl^!5vb`)$o`aal*iv8_w_>_O_9lclKbV4+<0^+TE#jY$!0&uJ9v9neI<|G zyeRRtN2tYVwhH^I#vq*WWNLZ;_$%Ei{G`uSS}m!afy7HkG8c)4`zvLKgr63MB z)1~D8e3ZFxjbI%kI7&u8$RHH0%SyA!PmH5OqXaOAE&HJ}14{>!dkf><)o^dyU-@1h z;Gq|Rv$AMfmky%0#&TWv5}#?0`>@(O&$)R#@@ogRrCgpL)j4sW+g=4%3Hc1A8`Owh zNl;y;l>=<36_Npw1B{s@ZuWAI=au(0 zX<9u8y8md7p6UuF8B%ujx62g0)m}qBaX?j6Lf*DTCtH-?Sx&I1(#0r>i^)^4gr40n zsoQSGjh4?yArxD*=N7}dec2hzw%qL|z=R+J5;{cwFlzj%;_ZjC$Khc`qX3ywby+j_ zXAldkr>63Z$%0Grmj{*IzI0^-dda&yO}DV?G-L*mCGMUyeuTGBwpV!_bEgRv^hh!0 zo_QmQhs9UnSN2$GlWt<35X@c{;EugKiX+?ffkH{qg_{y{=aR&|6v`vyD=kH=^ya46-B=P5P_G|Mu>MD*eo#=g>Ae>C8Zfq1t{D$v~BKTdti))=8K^rmEeJ; zN`R6lU)qokC?e3_ZC=EsZR;gLkyL?#XUr16;b=uQCWi;Rr+I={F=0kEIb| z;_$~$9`9vRhEGi8h+c;;TD#|9gP#_`@nPsgu0(D`Cs1ReSY0*0rO~ip<$kY?{&(5{ zW;g*}{7NYo$_Y5qBIuq^&EMwJL}y*0&>1RtAuP;T?fhML$E zO%kix+T6)(#(=Z!bv@&$#K`H3?PIdGk|ylch|jKnI5ivAJ<-~sKlW}QjRF`!r~)sE ztdlYx<1V1uhh;@`IyoUq6D_Rzl~Kmbe9M@EHC3#biC^NzCWQZ|N(Va=x;VAwMbrc) zt%Zj?+R=miz&%ldPqxeZKFNDevlH)6$=uK<&kHX2Mj}INS+zInVjLfYfOb9Oa3?t% zFGgYMG<1cWvAsW8>^NBfm&`Q|D@I8B*URz;Qb->6?U~%VBeXoafLq3R<5n388XaG6 zN=}zR2C_8l#cEl8*1Hr@?Fu#7y#F4Ze^h+hE2xJ*vdAEn5y zV(q8W4J@QTwnSgO5Ag^ly(kaJf_x_@0@Z>fEJ)645}^1z4&;MD=?Pyqpvw4vC}n1` zZ`odgJsZ0P%_LBjbv+>=+x1*2ckQ2Yp1r)ID1I%qj&b9|0L=t*H%w#af;=TlnK2Fm& z*PmFGYB1U7d{sv)(Dd2#4~!AU|CH?-1AXIX1&;Mvp7bL3Mvwf7;=IFMuaAnayMccZ z=%jlCycg_Y@0wR+nglTLw_BB(?{CJ3U9wga=dYI)aklBHi`qrw9KmVkSPYG06=2+Z z5Sa75-U4$pKoc80rUWreVs*YU0B*Ass72NssxJ9)r$QTx z%~?@YH!Im&GxV(3sV{FtOZfySA8yFk!>q7$0-$nggbFxCwbr#ZX-v6}&vxR8(C!{)*GP_Cqgos&heE2DZxO9KMX;8}YH2;^ zXfs{JG2V5y%;$NNw`7dozFFRZMKYy(UF+Ytj10sDGDM70ieFD9;raDvaSX30>eYq|c zHj{^+MzR8m39;5ZdwK(?uqEPSXQcSMa(E4{0?>wi0TX*l2?#`3B-B-v3bO>3iBwfC zy0WcU3ad{KGZF!K%kKmBHW&^z=zFiq==F-y>sT^7aK)g;sVl5&@4l|v@<)?B$YF9D z4zkl4^QFD%8`zvD)RI~Lw0t46PVx_Z7h;F`pZRoFei@^- z?Q*cAt-=^>Q|n6lk{8--4S6WN!6mXYW?N>ns?6J5!|PxL_gR(k(Pi?jT7^bzb@aHk zA*7uYf?kj&XYZe#=2dwSl-8V{2nC1K)~q*PtWOh;S(cT@x&Awpp}vyu7CxGweBZk8 z8DWbs=;l2kgH${h6Y_}s7$`IjjTONd_z_?&>1Gnu3}NsH$H_Bq9`02s(j1OsSm(&k z_7!(i>qufko?KJ`7ps$#kXN+$jHL1Abrb^!|D62m)!}`*x`WSiePB=+A^W-A-uAML zB3e}@^>?Cn>DUCaXt$2vO7+E9YkdjFxF93{hNm@78`ldMATRORkMKJFO>k+aA^V`MJL|WA}XC$wa9{iMu&&zvb*-K|#G)Yos&W zl@iE|;{o^dhS!6i$>rcP!~&C1j`Nde$+blnTJ?VCi7X|t%pq$Lf)5v}=#uqThbge$ z)c^N3DgBK0>x2MQ7)F_K^z}Y2R%fN2AjRy#Lkx#}cF)GW!QU5R!F*L|HA?bm#u#Oo zk;01%+y$8`ZUq?HfMWB1F+s&jpS_2&>^Xk#;}*0@Q}&uE(A~?5g3~ zxHe9#BWUt&jmfxWeTBgbMojTrFdl_2#POd%1!}MWGRpz6khC{11ay&B_)MPZpt%|1 zPYPVAxnr4O&~L+1f6*RYC+>dMyIa>+=m8@SPg}AxzC34B2znQYXxCq~)4jwMN}5-s z2@*tn?v40A+iWhQ-4G4UntSm>gNaKV4NdS%GPz7IWAF)cT$lSwARaE)7Vtx+bMUTS zrKY@_R{W)zBiaU67~vm}}D!BP}<6lw|;w0!+*94h#DARiXwIDfC5W$HjySV|gX zv;|7Llp&H_0Q> zPxB^c{$ii^)%c+Q37$LJyu3y6lnG17p#Ib0-7vGR)g9#JAy!jM8&-kMaK+<&A>O7W zhNUv>KDpd87q?QA^|)n;^s-j*PD#JYQ~~?7d(IE5Rm$9Kl`FXf6 z4RvXuyxVod+M0o6*=b{NjDyrn;rGek%PiDHiFa0pl=Yc3{Z_VRYG63`;BWGvCZkC{ zS|Ur#FTuuGmid?Vs_`M5 z2t~wh>`N>zr`-hoCOb{}%^MOQ*Pn1o@YLv%+4Kw^aQFlED*T~dx=ho&?BU#!@-6YT z^*y<%M41=i%!esYuS|Krj$9N2$wACgD6SQcy?NQBZ{%d>Z#AyJ|5$V5^nSWdgPiKk zT0=OFFl=t3{>9O(zoBCy)V=kg;Mf_;M&rEN`rNN%$2w)J+ibe2#v^yyaof4o{^~qt zJ7jvK=8YMvawLt6Xh4#$x#3>vMt_1Xk+esxzy zx|%ufgHle_tI@Csq0-!5MCCM|GHhf0)b!cUT-3t7hqw?DY>#@0a5ODb%cHQZ$6ad2 zvr1qmk{6RIm2&+#@`Wr^<`%DZb@jHosBr!V2)`nsW*oE>I7cuwLk%rfGWNWLX^Cs2P!i7B*BzTJ-;xpT(* zS1@y3!i#;vf8b$c%+;}j4C_yuq_Fd{Lk`@C(~M z!yoiGQpvkyctbvD^o6)+`A8#*z2+#DTn20t-XJYNj6Ml9a}Sd z65g5?4kywkpU0i->QqW4miExwxb;Ke7AHE_|3Te59*WGQo%&~Zai^P>Kh;H{Wrd#H zDr&-OX+AWtrfV9SP?Tj;bcAU+eD@{&UK{SS3r>AEeP8)CwhQIIHNs(Qj?Sd>OUhz-s!d=HA;&orL%Feiq^7+F(`Tp~mxYqW#K8tGwl3 zvuxI9hoZJs?Z;#M9e)|Wuk(3RR&QL8={QG`a%8h-*=SI6oU%&fKM~?0ZXuB_@|!gj zi6~Tswc4MiL+V%KD|^TBMo8Sn|X4ctENE_bc8IEAdoRB8D93)*o^ zEqhybdTEKAZKV1mq~)`?jTl*kFlOCygS`?_gSX0 zw|F@i#?O~Y$j;CS9PMZ5>+_yYAh=N%PuZxG7t$`Kz)%APDl~LwEiH!Kq^glMZ{QIHg zp}gw~@(48~V$&u|U9ZzC1X^lQ{jYN>5K1C^7!t29vIRG(sxT`oZEWj%$yVAKnGT0`9V;MKgXs8uORbiN84RK8EBHTRqJye z?{OZX5p^>>_*3wfeVUUcCLI#7aR}#wg)BNhLuk=Yh>aQ8xHtESM%ODQnO@ zXz=KEyW4puzLSGETG z9YTG9{161r6%3gkloKLo%kA6CyT0Wc+Q{*Cq*HVm?1{Rzph}je)-%v z;@rAgh1yN4yf#@*&aHY-9df4-D zVdd$Tnv;>3v0QbvfnU0@WwVd5DrS4J5wz>3E3(P=5`0e7KN8fjmfUV> z{=1m8vD*HKh^JP)`WbYG*?}$Eq6BO`k%Lrddc=j1KL)8MEK{yPtfZYkMAa-0qiI-+gHp4IL+<18$8 z<$9^60T><1Zd07O?(EbbnvpRQOku&M*@U-&#&i!##$|#DCIH21lE*gt%#M|#6@LVU zQWS<#VH6V#AlK|&HEbowVA=}jPTbUshd1w0D{VW=U64)xfKCfM^bVxJpzcVhV&C#t zIlxlSYd^(Are0GM!cn7Itnce&XA8Br-3#%j)I2j@Dv*Vl2~l|p1LeH2^YY8d)GR&QDIz zBl}M`l*#d^0s*RgOiQBE&%u!*H7^#&7#f}Br>I|(+iR4@{YUsjSf2Fbl6oL33r3oI z_#~>-K7uqWq#J(Q8Tt|8D?vF$6HTFS2$z(pOwxoXp&L%J;3>_vziJ4X%dUsRALVnE z_Lq$TLG*x}WHR&ojc^M#Xo_DY7uEa7w_oVw`uvW2o;UMN=Uq|`qzzh@a#vO=AJ0A> zia*S3^hCE8ehrcT$(71DYBbMMsV47AU2StYq^%GJ4MZ*^Xak^t38z~^G2ikWD~dj~ z#NddLyD10V_eROe%h#B$SUJb#JM_aTbLd}m!N0!Bq&GyT%oV61jOxT`)<()`44f$) zclD2fsAl{n*|x;q_9+?rrIKJ4sIRbptYJgJ=LiyAH^XD9s>4M9=y$J>{Br_<7)(`K zjl=5K6!2Hw(3A0FB+=&s6g`ZTVXGvWufHCAC`aU^gwNY*J|bwPot#zzd{YQAZD1o=mr_hj+y13ZIXHyhK-D}6e|xu+Vyq^S;5@n7t2^^K=z zS44g<;>ixfClnwG)ROAgJ&#QqrVLllC&niz|K}!X2gu2e8+D|Qm^Av{Ha1vpOOnz1 zXZy3;rKAf;9Kof4N=Jb2uvTozHVE9qsIvu6Y{Ob^j^#ofc{EUr3y}i#n2-`GBSPaA znpIV^7)#t!fmyy~wx9YhZ{@OwvT(cXy!+3erTt@l$~&yUK2FRMHr$0uyJZI9tmode zaekZQ*)>A`xjq;7$s}}}&`0bwmUh3e_dr-e>+ST-`v+F#Q{tXMM3DO|kF6$b3fLD< zMoC7F6M?&}j$CekRW$$PM-o+zaK-V8JF-s-@q0p4O^nYV6fz&Pl0Ghr|^`BNa(4`Ny&&tT2GwfzmtdziA$^vpfTTV$M=(}Gv4 zQD|Qx%B6hIeKLO$+TLwdls|9!A@1%GuhdcKw7dlfuF@FggWlKJ-@k4v;_`D@cj$yF zMAeGbj!86~CHkmo|l>Pmm}ZR7`QB2PD~SQh5mXFFtwC#E9WWX$_KMb=v> zl)lc^P4TF8hG@fQ~K|=>-|jEE!$JP%{-z ztDbEz?Z!9K;h0DMMfcY|ZRid|IN%h-V22S7`_s6*iH7m_JKHR!F>Pd~KDjjQ!({A@Y(2bE1MA*$Y` zF%*-NwvzX~x#G^n_;6R0Et;;J&C|oM%@c)M`A^>(TZDS#EdZ z{;}P4`;MuXQn};m1uga-Nr^lglhmm}weIuhx9xJFRl7cq7}Yf`zN?!fx1|(U18PHo zitE(%;J-=%JJu9))kII3hZO}XRvws4RhI=)4Z|virLCM6qf^zIz{7_%QxC<}Os&Zh zbZQo}Q?Ht%*y&`=D>bQ&vA8BR=i|k69h=wfM3k{;XsXvA)57^QF^eZf=Vj+5KQr{K z=~h}8?MdumnLVXOUpQh(KFqE0t9x<18+nfN_y0KAt4sIS3*8_6FlzSsFYddW8P?}5 z7*?lQ0t|yFZDr{yLpi8KcfG!H6_0nff(P@F6xor9zM+v2 zeWaFuu9`yho}NDuNGOy{6pLLe2;0GIqSh_L3_}gWM>6vRGE$=+Kq-a!TubDJRG&<{ zy?EhI)5ct$vvN$eX_s2>oAyqN`}v1jFGKN@TTffGWaOv?ij_PfquTEvPgYL*Y5tnu zrgq;wY2Jvj?JJ(GK5xPZcci&$&0TAz?K;07BxnGuIX_k(}WQl>Q+G*1V%ZbNXKc?Kj-`3#7Ij z+oHwTmagWREn8;RVw#*pvkk`6Y=dJwJ1vQ>k(`|3fj64NYZI~#eB+1_GS35y=O^am zi!AUdA8|w&9SH?&$!uj)5;!+D@vH>Sq%9g>)_K@+I?GNN+NH^gf#+y?LUy;ND+XS6 zW}!-{wP=QdA(MPn$v$}jPgO`HR{_B?dYC0=`sD1yJU?e=mea}Nrgewe7iSbfkUvb1ty2NSIj#-vH-XXTO#HJ3^{yXdR9-r6~FCwa6Q zuRsC2ChwGbuo_BMPgyjz-{7&`-#&=c&{ZgC56aw!%xgnwS><_>6%!=a48HOqxp?|2 zNYI_if<8~2oXGxHHl*3iri#@!y;|=8?OTViVb9Scr*@n;dUV0W$WfD6Et`BxYM?{l2aT9dPYsb#w%V2* zM$?0*As#A-WG)1U?1_jS3em^0f;verdx%bWv zxW%02%CFNlZk$%XS+n|pVS>B_+jSMe0HIJBC_HM2g0fi%#X@a+Q1 z4FeB{_{I69`blgu8uTpJHAE7&jad>xtzlxQl?!@Jgms?YJEhi;N>RyaYo_&Tq zbmfncD^0ZnYrX6@a&5O-slYsc0CEPe#jO0I+Iz~pp=@23oZ;^6k~Xq}BgNsln-a>a zm}>o3tB5YtbE|C=lu(y@x=Wr|diTWQLWT88jDRt!NsEw|?m*w3D5ZHhY+x1OS7oa~ zYuMy42&pa(S=8fz=Y582RaO+SvQg&F38pIOJ!MzRiDmWJA{0UH6SQD4TDB~2f}2c{ zN6NpDamjy?ws%iXoHKr2ynCEhlf^r|JfPe+4#ufce8T@xRlaKFGG+>$a>Svk)+{Sc z0Pk%b%}xc@TlAy?>p>79GTNB`P{*H8!cXM;w37evLGtekv=W&PIZ+a=w(TdQa}|JT2>a{lxyldrIH{)cxrF1>y2;&->_y#<(Md;8U+s}u=|tdEVY{Ifnb zP@2pjR!4dp|2+H|!MP@+IwHj7F^akQAoM73n7MKi!&i&h5wf0DyJM>I+0ruV;tX1Q zWAYRrDnY2)8+WFYJGb2zN&Tphejjeis?fPtHUAiCFM4U(ie;0ew^7a)^Des;`4{(R z4^vkRGf;-v$&#Ii)mtg?RDBiCLovj68V4;f2#d_FUsOTs1BFA`fwxZuq z1*1iqy1E%CE0u$=hfsks0+CQd#eA|bpZ&=iAZVqE30nC&@=V@_*5Mg0RB7Y=>Evgp z`<8o#%Oy>rvtGG+iqr@Xb6*?z>D&U2B4av!?AHbmdO zO)}8MMU!IOtvtJHC0VZo@tV74OobDyX@S29*SS$~VQI?mew9A`WBBSog<>jn`j_;6Ibns>V1myD7K@>Kr+CSVW{80 zDRG+MrS#fNLbs?F_L3O)u+%_^)mwhfH!)xa8D$k4*jR4*xOC?AOBS@ z-s;*zHjt0dbFRm}2$~h&lcy_Z z;U!q0CUIYwxDukm86dV9s}Nx2vY|q1glepSvJX|QkX3;Rhzg_GX-fqMJ*m11OoDh< zI;*Cn3Z5uUoY&Quq&RJgUIlaBeQKx~?cIbg%^oieUp;-qO4pn}mpnyb6NXQkNxpdc z=98(ejT7>=E?c9%rEk(2J;Lf(PH^F$N0QDw75 zjQ5DW1d*-yQw`FEJS*MR>ukKNh~;kLEvP(-B+ASEZw5vm?zl!}pj*angbCUC8pr8|3d@QO=0nke#VB!=s}^y}~FGO4;Kw<6vN z2-XAWB~3<(5D57b!j=;#KOcGfCJXq~5udsCgVv%CUFeAG$r{hpxt!E=`1Rx+{eDi{ zuQ9UukB=90q_U5vIZ7Vf}K{P#EX?I21^VVz6NTT^)`$)FpJD^i=C<(vgnC| zjK&CBQj93QK__wNqd-k+h#^qp-kNbnbz#k1v!w&?4->{CS&)JThpt<-aj(uzF!sye zvUrWz6@iip-$lk%Xc_s(@tAxOj=tWM_sf@;zWQbHru)cm7dijg)7P_n5;`3%aWxMZX2D)lA5 zlHbVRs1ZSyhvIv zPrCGw{CoQca{uweh3(GOpTA@M=I9lxa`Wa)nmBi^M970b1OFu7qY4Nbqn>EJJ?7Q) z0n^&p;b9VFgjRy`o7HwBITL~*3}Rriin&G2y8#NEjf=)I)$!p7N;<+G z$_j5A&URt=Eqcli(R;UL41a!G#%P}gf~75|b-XPjO`1%y(_@Nl8G8Tw-?O_9o$|v~ z@)-FaJ3*eDzjE$#Idj8`7USc?^SZCwggztAym<#E&5!{Q%mt8I(Rqn}wwV9sXOmiy ziiP;RlZ=l$z!Xj%Zw=d|G;451ymNUOj@|XmNwHl;|aNe29bT}rGLjd zUw?>RBKy%0at*ypTCpE&$9mEk?Pfo2m-`~ioS;>A=j2w90?XA{uZ~pwbsWBZGStW< zKTeyGj5Z_NMl#xryhTs>;a;>Ug-3ciGZ^({Y9XZ{3#)}pqUm&AA0|Y`@_r}*3DF6a z5?)D=v$aOfjBLwVX<`zg`^WSKF-8J{iG!O1&PrOSWz$^cTh`Z>&R?O?L%ojmN7vXc=&pNsY4RjsoNww(E z7=dy7BV8%Qlvwu2J=y6ThAN@TWFp!{&Y^vzqnt_FB8U5_`;u0hD2K9YJ7!P%c61c` z8i)kqYfmx~@GommGIKJ8Z%R4TNiK(4_BvXi>TR3(hcaAAxnv&s>)u5rVE=7&*@H1< z6vtRsk#YXVx=2y)5{o4L_=%gAeBn5RxEN)js!noaJGt&e)lnrWgs$NwcMV+Nt}17i z(2a@LNalG(3B(%77x(G(2Tzf~Ny8PUWA!qOGO*+dLoq$6y$opVp;W`G20T_hX+X3& ziXoL^!op9@F|;|q`T9JwmT8+8$s8$4m#^a>tbXh=Km_PA)B3~n^Rg` z!p{-d0Hgwb_v*fPe_{7GhvL-$PAVX8JIQuwzckS`PnvidBk(3^UZ<~G z&68;n&v|~u=l97G*MO^jW?#py;ED1VS{gfyV){x2UN%;R8OTOf;a(E@_C&&Yv3p9= zvp6^^t$Xiy^;pZgg;|}Be*VS#9U2wZX>;(ZLCzRAv`SKf{if^a@S#-_5-ScKjj4T% zGGeHW`*J+_l-zQXUt>upv?B^hKi59|Nsv3!AGLUAw?Dq%f10f&IVo@F^j90`_7nG~ z$W{KUwV&riJDjURzjIxaGhOqg2~-TaQ9VG=3qZOhzXB#`Cis^GA;^*H%N*1oq_wvX zqV4TvA3AzgkgX*UOShao2Y>&kbI9<%{heq?`1MavOL8c;uN4Psw5yZ&e4B~P=*68n z{=2YoQq!w(kPQ}~K(2rP+11&VPf5RH64U;jLntXy?W;FScP%sbrt z{@jlT-91Ojk@L9Hy{>}>bizON*fEmU5lOk{+_%ZruG@McO$Syk@bwA-E4A+R5s{u< zt5x}hdfOyI`;nLzTlc|!FSPDO;7hH04SY1K1bnC5#OW+LBFsR}WGnt`5`ej^PUN$& zFv~tP%*(PDpchf@@An+bUhMcJ!e}ZBp8%ORR0!Hpo$YtIHN?XV)tHc2rZ*9VrKdty?6Bwvro~YodKj-YdFE9ImKpA? zt7(QlMz7`G9(Qrl6Y19AUU~1gG`o^T988p=oX>^mz9Jtt4d7a zv5F>rIdRF-%X>AO(JXsZ+HnTWxfG53KP_oGbB#E|E>bakWZ}d4OD52~u6b7;mo%P{ zzaX{gs(!_~&+I&YoY_MF(hq!Zhg0i4RP*75GJEJn+LxeF~cj8KbrD|BBjZPDsrMFY5qD z$R7WL7(N!0v-oRf5{#bUc^Gd_#HEQ*P2x%IG8P{bs_tJ!m<9?yGz27gV z{^dpYBd7YK?qo+KExaG-=#NqmX6*=nI@~*F^^#rWE?{oyzDcPt9OCHw4Dkt`%m=GT zh2kv5#7P8xo(7*FN}Ld}gE0~}o1brzp~>#ykKAO?drSu8iJhcKPamJX{l{4nNq!Bp z>^j&QS8w0MKNLIfbs5~h6V-X=NgrqT44XX2&+Pj0)c{U)dKe0Gs$En<_;P~VgXuW57kQW7gd z6RAG$nKIMv@%nq+2KMicH=_+Db4A|~o1Dp}*p0q$lJ3v@o=$lYFj)=sWE+Kv`%`eM ziSs!bhUng8hY)s%2;t%{!e?*FdOlS#f&jdNKZ4@YYctx)?7>CkN3ULcixxRioc!M3 z-VOKU_x8N~HrIFGl+9ccHx~6>Q3n$^;tN#3Qtiv8DStbhO)3>8j-EcJC)P4S2D^glu8jL+o-5KX-38R-N)a14{=(y_s$aAaz$>2mSwzPmL;$ z-AT9;-6_<}FjR}yH*LZrZDil-lMLCepwfL@!0M<@l_wYe~GU={#^esVlotBV3Z zD5v@v{6#B2kv+430>c_&@ZKKj=_qPScj-DBq>E}bclr8-y|1#n*kwQibRgbEXanf! zUy{OKOdF~@IHj9(eTWRLX0P0|a1g&obwWG-z(snG$Y=L3qQ!^I3+U{I%klVuj`@$T@rtr*s4K8pXUTw1>40AUJcwQY9CZf(OrLiK?}1`4 zfEf}gHx1RgUQ)dr92ViZRJSgDv|eW|nMD3{21G`+$J4vW-wY&YS}%C(!qMSl``2r| zbnT~y`+di2Pp}R*l)i-^u&NU8V8)Xq{Yxtmg}2kD%%9kQ(1h`W`c1@=)NA6zzDYgD zzn)EJv9S1Gr2=BJFiQX_U`C$-oedr30ejAHScvV?ZqR{|XMJM5qDA#suOk~uLv~dA z(N1!U7W?B!G6v;YP#%|K^n1~s@A1MkJ!s|p6fhKqY!;~q#nZCuM~|f4WRitULd(!{ zo^3Ef8l$9u1P1m!{-BH$WZlDFhC714;+8_4hBx37ii6(tE&$#D7M~oKAc|Pt;e}?4 zR8`J`jcE|&lb+E}IQ_%$GBGn-xc2U2%7U;EGm}N$6Ij4Xse<{DC%_&KvBX(YEmF2n z;TSGPa4h_-!bav;ptvjP9czmRiSaAucLc3HD;Ki#pEQ(g)NNfqvRBN68O1=p@!Pj= z-~J#}**$b_%)kNb-Z7wlWFzX2Lk{dqxKs|sBfMnBl42Ac_gUh;ZA)eV$SiiKKck%D zJ%Y+X3hefHVVSo96|kdBkEJ!6$rKgIC3q=M2jx8jksa}Z#1aM=M+b47H*xDLC{;^r zRsmC8A7LQ_&w_=jzNpfn8eg6%18P!SGCg_fG-yfa^WUMYHCd+zyMCQ}Gw$QgJ%MVT zJW9?SKiH#Po9;c@w&_7WA^(t|e^3B=Sco>R!Ks^1pW4xS=z0$y-mhJ+5hMB* zZI%6t9zJ^q$Ovh*+}TreHWGws3*;q)`&1OB^T=f|AYQGG_yy))=l%)p&6gZKCA*Vd z3Zb~-a?GqXDwmi%wpgf|ta;$6yXyBTb*GG4FmvwQQN*+`X9-%Y7|0?tjx5G8WHy@W z{skQ;jnJ`PfEZtv9!S;x_q%PS2dp+9k2nWfL|?Y*!oUjAkfRzj-Ne9(P`oyh*mv0b zo$Aj`?B^9pT$-?5;jLae5N|UOQnn*;UCcB~PV-t%VpfK6eEW7Z^vwLWtJ)+j96PH2 z_3L<$(@FaiH=lmEM`F~4s(t!2q%Df&OwT(ZD${v{!vNK6jSxFHC5m>xxY&)vM~q=0{UZW3zfR9+4KpgRSULfz;6 zvsIr)Ygxa#RTS0=R2F}rhVptrM=0|!3ca4aAS)SEqJv5?-g{3}8=tpM73iRXQGENk zHmFDk71%a7Soxi;x9?DayY6+A! z=u&Gs5nWvmACAYsOUzPP#c;V)P4QBLwDy5Psh;+0dYQM^i42uF`!z@kHQP&GFRZth zyfIRz3$xn7>=K;=`;jB0ldgKMhH^-3`Q|-#u35eXe~L3J)vB4@J@w+ni!Eds%d)P$ ztD38tbmi~N%!rhE&1bAzG~He!t46Qd^?J1IzQ^5C_TMD4E+GI|mExb@B_zrxj39Oi z35OSS2?1Vc7sgJ!9{j&|33*Ub+2OIsIu?3)$lC#Qb-VcDU@_lXi@wx z-Xp~`U5>r&o6cSAzRmp`QO|kXw-F0f3}K~1PsPi#c2FrbsA&|&nv>!^o0hNKylKVq zEyr@kO5;b#sP5)Hdp50q>%jg^fx9<Un4j zy#bFoJOh@)7LdyHLh%Qk$6Hk1>#Dgtlx>2dMwe&an*Z0mP|&si)e8kf8UQ{ag_U`$ zb<_*qYK@=wR_g$r?^~^@QN!PAZBNtVUcGu9BX1heh~s3@(O{IhZtK>G=m|+G3ZgYpniiiG##y7yE-~=(u6nW^lLx0X2S}A zp%sPyh?EExh=rbNXk5HUt_6DgbfSDbri=oR7i_vf@U$8Y#e%~$N}%bmM4cDJoVc}j zS92=B)mJPCYBDTm-mbh=d;j`=ZI${V)6*JCiEs4k+i2;e@o((hQ0?09q;q*|`4x@R z#{nQn2jI9D-&P$Z+Q+=6P4)s7WZ`Yq_yE~|4s{?c@dUij-4Rb;3sT9R=2b7{;SE*K zcaavGV8=x7{G%w}{3Ghd;5#aj_7<9vxIA%7qLh88ZDQ|48p4G{BRgd!woPOS5{b9y zC_mDh9VRjcLOn8x+7ktontU6cm2M{17?p1@R6Sj5GG(ce$X{fQ*NvI;_R_`M=8V}e zbJhm(OIlXFp;=k$&e?lc!}Z2x)R{4K(!^mi>ST-?lAG(kW$#wCYBxLD+o@AZ)vAoY zH7G2gT1^$YcRk4Kbmi4!(z{!E-2!NLS4p?8chCqG{@DQ#qGWxg)jq&7XJ zx~H2Aoe=u1ez$4!_RLxI4!(KIvTS0%*0%aJ?DcA+^jZt2PT00%-78;yjaIeaSEEtW zdaY|^G%TsxtIBPIuK#!Mhty$Nqi{9uKjl&22K!vDMQ9&NCxJMg6yVYB<%+|-5&u8k zoddMwNEC)|rC<8l){bpHjBVStv9>*49E^{~8FOvheXusi=+55$t4?jI^VUbZ<2(6s za|^i@RO+7|?iEgSUFv7uZ*8}a1mfu%BI{wwHmBiXxoml_{4n1u@4~$@IRCvexIyf1 zH@NS?WthuvVs)DV%pA3kG4q4+WljLjQNG$*4=Z0kg7dAeW5oXxn8Fxoz{1zLvpUt3 z$DY&-g2 zcfWmKhSa~w$lzhe48)w_7a&_cY1#K$^p#tufLO9`QS^^$(LXju|1Uitcz#E`Co8<} zkon;t7pK@gLs zZqSW2y_%j8Wt2!vI(Y_TX=X0{z#j8rJZ6QQVy-I9uhaZ0FtIk}RW8EGHY zpk}Hbp1fTxUT`nEuGCkK@4)}xK-LX?B|1>H`CLMk)=yt9?yQ1NGw6<*UO{(NL1!3r zqNeB4ex~zc=nXZzZy>_t2M98_?#r4naw~FEM=$ zBA4_Ex2y`^35tG<>Dv*xr02R*5xGexhmg2rN$q^}f|jZm{2+UQ-OR~V@j@vUy|9() zvz6#q<|mBR{j_SA4?vr<#A_IInWk6JhgJBlWzdZ^y_!Oz%;&qNL0g)hD{S;$(|6sF z(@fR{lra%`g(_zz^Rc5x7QFlE%Z02e;F+o}}!0)fA zm$lDmcJ(0PW1AT4%bJ~g6;WOc+alytq83yX6LqAk=o4z~6WajQTOBf>c9{e)@9J8TG@YQ{7+$7}QS}zrUJZ)_z&DbLXSX23sfO zG?n@005kX5=b642boX1&8ySIVoo!YUS#vz>bU%Ue-sPOE(i49H$38q+oMLwMiw_eW8=?g+-kH7bHznD@4p9_jwy+RySDL2R@gD@aY~pN#8Gxa~i~ z{!NM4#@!t3UtmN1A7e)|Ro4ssSC;x(5nmt2*J64T=#}&VTE_eYIoo^Hh-1|uQvF~n z?7Fbg&al_$?fqdl(6OcBXdC3wM5*XtWX_oDz~Ef$-GX$hf6VMD=<7c})ph6Jy{^L9f_C1g=%@W>3w(QZ%hPDoz9hA_^dHN+qjBZasRX~&6Iao` zqy!5aGB8<1s287VIgh|o??hg_CNfJDia}62pLK^77rtc0Z4X%Cfh>6*Awkt6lLDvl zCEj#jRDSs}9aYvJeK@i=_*;~$L`Hbp{W?OlRfy0d;}9o@PQJP&a{S`S?=D78>=BX4 zV$=4(>aeifON(5Wh7iSdMt;j9QW+-~c0TOZynQtCTLJ8wd3z=7LfCh+-OoNuK`P2Y zhGM&|{WRMpuqU_|;<8|u%5zU|&&i=*0dK0j!~g(z+G1c}U<9H9KvQyp!Y~lSP&CzM zPws!bzJ}$Pe97QynsfVvJ*P)^L*Pvkmzy?80(^Gjb(y?9U~gaqfYGD zL7Ew@avaywMH5z+1ZO^-njL($;K#^hVlizwBzQQWo0`qXO z^70>)Us6LlDLb2#^Q=7sus}HebA17?-Un;|0RR910wWS<$EZAC4?Oh%83+IX0002Q z@DVNm0002h0aEPxB>mM1TnKXj000R90ssI20001Z+GAj3U|`Sr$HTzDnf*)UpCe}s zPy_`q<^lkAl?5bt+HI5rkR4kTMOWW@Zucm*?Y!8wlVNPzwv9o3+qSL3w{6>slb6#y zFHTpjI@jv6x81`O5}$Xx5L1U-a~V_R8zzYMyRVq+sxZtOMV5Jm4dxx{+nrRBrS$S% zpt8A+zNQn~Z9|NXpQ+rYWGd-OD`lgyROzkEP{x{SZ1R4jiIkwLtRi0;vcY~wr=UKg zT{b0M8W*|tOmiK$NVX|cwZ4d1?p`i3J-AU85_75Ap2J0fr+xP*+jM-DC{B>$+V>s< zH6k9g01oW(u=`v3p3>vE|MSF;XhA5xs~aXPfyuFx?IX8Q<2=@A*KW!7;S&xBD+S< z`~WNLN34>iT5rzlyMqFkM4spoVWXUaEC%(|51s-X%xg)%rBX`}^4D|He93j%xmV9XCViM5e!md|5y} zSs4FR>pA}0RQ12pIXmNjL~GB|J+Eh-lm_nxg~HD@;A+1a8@=b4>^((G?+sem(#)}y z=w_2>VP0j2yM3F3AGgxomX=* z^nk>9pN%|2-zoHsFz*sRQ#ek?yW0|8a&O{JVLn$W^r6T{)H}lSMrYKVIHh+ze?rsM z!oDasRr`@o=-DH$(A*5iL>{W%8s^H$Jx{F{zEM%CpXZ&|u~QymjmEJW*PZ}4(N52J z+G1c}NPxrH3`ZHA7!NVUG68ym2k1DW004k(&$i9z>|o>d-$QNNwr$(CZQHhO+kNWH zcbc45NNYozPdiF`PA^MOrx(yC()TmujG>H^%ph|n^B4BTGnX0F1uey$U zmHM+Ls%fj)pgFGPYg5`W+V{FDx@~%$K1YAWz%i^ex{NVnWfR+EHPtsQHhnj@GLJIf zvG6P|OMS~Y%T3EuYdNdl8nMo`F>R%`y>_X+kE77B%_(sXbUt+cNgI@IO|O~2*LBhj+=JX_JW9_{&u-5jFXSEUz3YR0fzVuNCv*mSkl!HxdqLHLHU$?7GYStD zCI8)4%rA}<_bL8R5-yok@}bmRx)^4|DYy~b4ITl{f!D!D;hXRqgn`OLDz+Tkhh4+o;w)T)dvO@A ziFd^N;#2Tt_#XT+{*ow1Xb3-1OjILU5dDbp#ByREae;V7mLa8N23bT_C6AD2$S33* z@(U0G2XKQhfB+0?f`*_a=m>g(fnX$<2xfwXU?n&JPJjzkI_0BcRDxcuBl^d{O*k{AYrm;3wn>eZrn_B|?7z9f#AZ#WE zK86Y?n;A)*1&PhdpvKS!WwQar*Fe}nogoaz09DRIc0>Ub1kk&bzkt}7#J0v!+wR_d zY7(7#W;xW+HPcs9Q8iRpv1BO(lhMZ66jC_BDgT!_U@0G9`m(-#GTuLMk2a z(P6Z3EmbumEtyqG)bytBMJaZmrlTzkELgT`)9w$S&41VC|6L1%pliosFcDbrrW^f8 zx0I}-uaa(4Ewz%iaE&gya_-Qv8;`N`^4-!GC=WIC0001Z+GAj50E7Qo3@Hp)001f< z0nq?>+C9!gdPG4KhT*EVZCkNzJDJADB*rApJlIIkTt=4COXxm-Yw|u{oqG$vs=8lR z$C6wlsN+d3Cv)1~=CD)8WOXdZyBk9eJ!MX?INTaEqlD9ajeZkKRGW#LV_u5}CD~gU zYH*^Y!|j#5vbEXXxE&>b+h6Prq7-+#^PPT_^6PHBJX76n&vm*{>iUq&q(W)Ny6U_J zDwfn~r1V(d#KVbgJo#+mSIJ+nY~t6+XE5ZVAGz1_8g8&C0 z41!Y|)4wH*+m8ae10tmUnp~}5yP9#gA`DVNF*BOS0Y>w>ga1DzsmPdVr%5`xDS$ti zQB-219H$}7!$layc9d(?WbKd8AOxbmN*8fP4V%M@*R{|nC_g?hLp$D)*x}H@WP=%3 zyUyNg9*sf~y*>WC?fr`86`B8{m^A&OjgxplC~^}@rj!vJWI`tMk{zGl)L-}yZH5^r zhOc38Lb)Ob?{pR5IQfuR^r)x*|NHg24_$bVhd6%%#3h8~L$btkF zyed_3QZJ<{9>53i2dA4Or}n=?kYHvP%=zUi#8kdAE{oC`XUXP;EMOY&b>dt!FNHRw zpXw01kAy>Y_X{9kfS+5x4O&28w804|HqirNFseq>h=@fqU_q3O5vf!;BFp+7Mgb%hHqMulpJsa^St|DU1A9R3GN;K<}BS1&0CeOAhNUK)S#h72-!1JgjbLmnTHHG8h9Kxc;zT9P)-4?8@3Uj6%5bGU;{FR9j-T&D%+nHPG z1c!2ntUFG3FGb^AxaN|esCNFWv^z6vYjbVsi_DeZWxV@9J1;~pzXb1=_z7LBraVQE)wMuIxcdL8+S|Sh3iKDX z_|nWzT8C6rF3JJ9L3F5cRf><`4ut_XfYSOOYPE@yLx>y6}Hl>Hj@Q(e2}g}GZG}9_TegGahLNq zzeqHD^`2=6L4pJsL>}TE=WnTvks9z^zXjbH?XsLzptgAk7E%K$ubm!a`*)$g+NPB_ z;sAMW+gMd)@9uq%J!5~`{s;&d0wFNobp%0h9DaPh1tB6A01A@}nqv;AP9128C7^os zphk_L6;^@PSqEy@0orC8XqR1}-S&d^I}SSOB|kO8Pb00f!?0!X+BfZg~0v8h1v>^W5>K=S;mX~jTtvY@66NMHc4SRerO;^$VC z0XhHzKrjdZ#ysV01#>wJ!27LsbEG=L4Q8gUuSeITYfazUU;kt4pS`nR z-B|YD7E-+izg2>gY<^bl)y2}(f$CeU)~d~~s$G8%d;@cn7FjQZO&=eZe^&F?qlb|2 z(WaIWt}3Ft^3lU9kMQn*BNay$9yxmyNoPl!HhWUzF|T7e$4+e8^OeW!maylv_#Xu&CN(c? z8X5wGKtf@{S%?x%Di&EwNXsNiWg}g3nQ1%OwCw5RC{IqB*bTg|?X}xW21o{p3 zTQ}ye>i&l5@lDIf%E>D$YL4-lLqyDonV0W~6cvuOtNUu6h{=dVlo)B-d$KCiFN5s{ z+)cOZ&W6~`XPLm(L~?PGq_!M*baGRmc|_j?Zq7Db5mOL}C^6Ek(qDr^Y)oKlBDpw8 zQmf!IV4?|Ra-+pH*y&OxR_=@AoHwE{B^7lgj8NcnDIO%>y?nM^BM=A#0^zK{afWk? zZ%zuLg|Rf85D$uv%2N?*(IT5c(_3Dc4>qmq?)Ns4Na}yX4NHq42(^!+Eu-qM?Jq`P!{zq$v2f`S$vAjo<)>3aFf+EWWUoF;Ib%6lZr^o_)^i@cauatsojt12_}OyL-`woM|XUox$0%R_nDj1HSfbo)33mW%8R+cBkpW)5}y}w4*TwvJWvG6a)%G zLA@j?jyGT}kZBl?;cSZ6n4#8-ZkA9BbK?6z5jSpf({9(Dr$<(u zi)HTaJr8;IU)9hDnApfSAEu3jW05$7NE1sUdm1J~^7G;XRvl;godP0ZGrS-V!n-33 zs{}*9porr{c(3YsOYbpkNf1BMc%0Z~Cb7B%@ocGPjV(Y1C)9lun9h?3O*J)XXlkXs zNmu$AU~F2e8_|^YkFqO%*oh!iEJr(~0c zRr+i2#sr8YGNoDBW^=f_EY4QhWcI4hh&w71tc2Ab5hM~(J(`IaZ$GIgjh>A~=d5bu zuIzg2)1N^yM8CnrP28?K8)lI*8iU0xc+(&d2=wmI3x*zJ%~Oe07F(-qvTd=J>eh3Z zOlP@=1-gY6*>+9!z7$7o;K3Q9%Gz<2v?)fL_~*tF+tzL8rC9DPmR2Tr3oRSxbZN)squydD z9S-Hz6ExaF!~XE59fSY?000009s{WA5<$-CzFs(*(LkZ?euI8o6I>r)A)+*q5+$am z^hlbX&uAuX@XIv)91ePzKqQeV&Fax?4wsk3*(#gNUaMm>S3r#F%g`_KUohGX_SL7a zb_1~(4Atnwvp+;v)w%;t20K&Gg%Fp*(AZWhGnqD+0bgepeK`%}CzRd?+On0NYW`{J zZm;?-XlyS-S9PM;SGWD`)^)#iH$`8!oNT;-ZaLKyXBz7)7Z)1uQtKcLgt`c!>b4WZ zlVTc^iF5GWU2XEt(~(D}NtEC;1<6FP%+l+nEuge}=J!BdTh&*kv3!PVbuzUt!v6Af z^-Oo4^wr>G?+w)8RG*ybwX+;t=)Fs&K^gGui`7>j1baMSqq=IVLoqjt!xFrRh>9Sw zTabj)Bnuca>0}$%#;FPYMP>^JGwkh2oRjY@3X9&^>GjJ@cx&>uDXqr*JnG6*pFv}g zdxaoR6AW1X@1G5+L%-8_c*Fz`b)XDS3=yf-;QNNkB5ffqHiq_NoOiKZ{~H@K_2)<-Q)Wp|9?{`^>I9kC<;k>)!u4pIHm!-3kFQYG zwfa%%!O5e|ADf&!y26`uS9FJ+BI@WlU7yyj$$2xF3av&$vrqIdv2#=wHoG^x{wOxk zoeT-(;cD5|uoNbXVsXP}!KB}69(mEyh{+Z`ac;jlRSnPquPJjY+Q>B5{q6(&KBjlZ z3wC7%Fco`2bup32wP&4Ef>sbbtr!#!|G?=Q4ov^B=Hd1sA(R=R=eaSkvxaFz1=~v!q zsA#ZDhCE&g!gOP(hIZoLB)M9awh`S&U320=(M@)n)_{yB0aQb+OomB8 zsMHgh!wJ4)Y#|<<7;;ZIZYO9a^;x)%AhT1F>NF`Mh6l}AZXrvjjOMws+(OnanfS|! zVCELl%58U=?z(%zi6T}X0ENf_i6;+k=#+wzIzlj=m}6!T33i5&p=L#F2*2nE{dR(7 zL)6ghj3-8R8%p+I9p65&55^xWhe4J=kQ_ylV5}1YB^Ls7F@i+FO*AIC3_P(=a|QHV z1)8g&#1La+xJBc_g?lW_2QD#6387IrAe@H~ zDp_(D!cz$E6Am~DCJfBrV+sp=2bmZJijhHBK*0hk4M7=V%Q~Tevl$(_nS8k#5Gy6b zDnYHrq<~nD1lq*ZE>oK&&>;)kPRy~IgMRFB5UQ87$RUTJ`UM>k>S$WxnB!0bLY)?B zP|%P>&b^?FuA>JRAzXw(XdLSiR70QxfdR|Wayf`w5#45GYur(c4w_jahJ{gqG6W?M zn3zIag1IvBI|K#_Y^MY7(cCzi*tzuz3Kw+aVs#I5udbk+vA%2`>_~zpU7TAY6tpo6 zDztk&DNF`R?vtDvi}z0sZiYN8A-0wI@ZfYkIw5ZHvB@!3qJvM95OxnUDPXjadf(UQ zCl@kj=5t z3KcERBZxR@MN8?iFVX)ZQ50(^dZKq0gcWuk_v^Gw&y37Wp`VLVOu`ZZAs_|tw;z~f zYU<5`kcb&Eb0U+vIK;-f{bYw`_bFkDabQMDh(Q_as z09^#f$@fj)=-`ufs)Vn?m))E*0J!K82@xO&Sp4U}Z{Wez#s*~IrvO0jJV-J!XecbA z6(c|&*6x2|-z*4)7(i~J4*TqP(vWMOcw?OIlG2W~q4uB+m%P*!Rtc3?E!BN7B0DTQ zDm&d)wzZ3P)gIYP`z))G?OP#oi;L0!@$vsJ#sNT1ro$Hd9WdY=qo>|>P4Wcu2H2J5 zQsI?YYl=ft>y&xD>kNI0fOj}#3ZC-yQ4qFnF*t77X>VU4q zA$99Xyn}ij@=p>RPGXYuC0Tz`Qjk<ueV8142(Q~<)qa9n1s^2AA|_l0;7yCS!a!Mm0|8)};vr;A z-0LRz(i6|o__A&2xI3bEJxxiH;$r(!7)nz94J0eJ@jxndGeD91ctnZ6a4}kM3KQf$Y8RO(68V0i@LK>*!~zl@6KX{~>tkmTSeo0O;{R za}R*=_W=7apf>|o9R-v|@XO|hC{VBvff(WFR5Dku4P0g@>MBFzQXvoxG-C0T=J3G< z31p4~b6)q5`8064fr18VAfhL*7Fx_akGj1OG%IeJn}6_xMN;(a6vtRog2a zp?^NHi9_Iq&kvsEXATkf0y&#S_+fgwprg?euShAd5+AjFc7-8==6Az-Y&2D^P5{m9 z-}yJQtX*9KkWqwc7A(JC{MKhvcT- zwJUQG@4SRK#AQ2;Bn!_(O>XK{Q%TOeP;*86FknjRx|G3J#~k&g5;wiWwp^=lYlImy(LOu!D|pX>DK0NLm_gQ z&elHk%~%7%klKsEn96Z$(;8f;Hn*{)^ZHmkY4cd*e3OfCqFZ~Vn0zJvFGieRt>^y# zJ{3>%Hrdwr-`o9Sf`MczWORMnkQ2J3PK-splvmOA z`sUioa+0a~u#h{`6eliN6=gYI1!F-%vSKQbRUv^G zd4L%mV6g@fxpUE<7l%H>w=r#>BzZ>bIhQf@GgC_2Q>SmU5#2U?)L8}VXIgQ&cM-_uh2`LqQ?(oWP8{03z|;)dgw+O$*%skL}!6E*r6gy*)yJC&yI__JPck9K@mt z2c1O?fDAe%#->s#jK#-!;|WpO1#eF5l?3;xCkdl_R4WSFH@3!6r(EV zA=-zb(+wpuXxl*d;r65-(GDO=33O-TEpJ=cS7?#7)Rn#wegV!(qaNfhD`a^o5{u!a zvA~I(yv++7iUu%s3H@1<;!i{?c6lekIo0@__=j4-R=dc~_A8DE3bs=ga_Ayvc_vk) z!EzwHbMp_n5wvSEM_0oRvC(r&9h`swo#riS-DO0Nx8b1tEO^V~Cd6R*Nllr`r%{G{ThpM^HN50Z^;- zS|VU9^0xYe(0>k+x?MI09&*I!e{WuAX<5YMQGgX+DI%OqJ0sOgy%JK|Fe_`GM$myT zCnu&wgr~a4q$G_TC%ZRu=n|&nay_U~staqDKmq1_9EF8;{m_oQ(5E86Ob#dkUgJ6X z(4zjfD$riDaDzIZq>)D#LSGI}9??M;XOa)q0lDN*re=j?>@JKI?;dE?$AFG&fry`@ zG(B$fCtMJPrSZh4w#X*coSw9P9T0N0e;N#vksZ)KjMcOd4K`YM2%Ro2ALy~hd;R5M%luW+}i~ilMQh{ z+0JuM?BaNo7>-#M<4JLO8_5Cg2Wh-Y@6{5jY!Dw~@^o)4Sh;Mo`l#LqII_^C;g}rU zhr9&}nUwlobf*o4fl}i0FtZS~(g|D)-GSc}cqZ5>MF$*PTemw+t0+0jMcuL;F7mRd zU+!{kkkIt)KhW>iWs4$4K@$QiUw2Me0O?_U!avZeTICt0HkK3x_b#5+N3jn`q}p?n zW=gvRH;l(hNc|tYHVt`DF*{tdSfHk-^3?{l_zfx`ZSQu5nS^l83~E+Iw#cmcrzf}g zsD8)wlj^hio|fJ`hU9h-8aB;2RJLLsH7VAhkCY1zP7OtY+t4?rXqlfNv!uzL@e`wh zbrGNvt(nTHfR3Oh<+{!3?!R(>dbRf^!tF=CDlWFbemRAEdzS~S%LM!JBv3lG!Dt>3 zuD@kqV@rFM8|Yct(0enI(7`FC=ZJJ&&-^;|#f|b;cI7S9)4Liz0}ZfQ!lAbLC0>7v zY}Ni#i#)IS-IZv@=)JQ4`FvHNr9pO&iT~|oaq&I*d(-lx4(QIEXPt86-_E{Ym{=GT z7!wiX86EkbuEi-NT!-P)y0JYZIa@n3Fa7Y#0DXW#&+|k1rZtY@c zXX)U2%h=x4_5_%3bse2dw#swQ42x^Io8lI2#<6VQT;SHOjAWxwWs!ElR&sVmIQ9ck zO8cW@2{Nz}&4ui~Rw6|sZ(;XvKA5mH3YgvI7EX<~d;i$Oz}?x*$~B-uygx&pS<5>t zlj`)2RP)7>VXBsw8{IV^pa9a;Z9C;8H73LKt2MDo+}Y#>q3UNc6RyVOq;x&gl$9x6 z%FFts#!9{Q#W0mAuqiGzyQc1`+j0Xf=GiOecR5+7UB`1#s4%Kmv0LVL*k4!QULe09 zcYp4tzMyhGpQ*7*cQEj|$^?ZSe+oJP3THl)cNG*pD=NwVuODR(GqABWH?^}t+t@2l zktdZO-v~&?F!+P!UGYe?SCvyFIyD5FRzLw5_=m4B?1$fO9g8FWlT#W(Zg7?hu_{gg zrB}vA#wI5QQxZ`?B6jd$IDO~WgEPV8j^Jy!%jA2+Igxiy@1J@(0_4+haY<>osS*{D0c-@8^aJ`S5(5T{3pwU!!z&P;VSAeaZUbeN!r9g^c2slCx7$4p2U!b z6EytPVw++{zWlwm{^f5`t)y5Q{UJ3YE{2@?j7U0voEJwNi9v^j#$rZdF*uDkK?GX; z)LW6Kg()8%rR6;XTS3jUL#hKI=PoEehU_gp6|+foRk8`Vn=yNz+(FNxG)L%Q9bN(+ zNX)c05)H^21MJ)t|78DVf7K79s5f79!RTpSF#3zEUpvFJdSmVomXNbWGtzL?#<&P5P2;{* z!f*vc&NtmhSrvmQB=7|e&V|O*MqI-v(zxVx{-@uCg^Thy1}5t5JKh`pziR2x!Lh`E z^dA+D-8<6nukrqSK(L`e4YHKEaoa$=wf9iYCp&h`tt!gSZ{&W3&(c1({M^RjFrbxY ze7^j;rmwcw8?M=GHW;Y4&I^a`Dl{%W`~{yO57z%Z8)=-J?J+gFG6bTK-D`bC9>`lg zQMOShAS0{S?sVIlIf2IG!)2p-2IU*ev?1%swuZ@P0O^;ruYWo63+&;3LtZ6*Uf}JX zL3*CMK6Tj(Ndx^{p2Io;MxNy6_#Zpe9s?tfr8gPe<6qaY?{`LjKE85XlZ=iF$1`#2 zI_QS3g;f_|Z%#++iQ8Ga^6a(iu7%5-m7>W~j_2mN3g*5F+P+rgN{@)s6n2CA6&?o3 z(Oxm=8jnl_oj4Q=3BBEs4t=7cKVp$@dLFaQBs+S$r8-JXKt`8GB^Ht$p^|MJIOyRq z_WmDmOT!QdzHs|G!q?Q&_ur4m!n5b-ylrlLvpTtcNABQ6v7*k(qvEjzxfHNo0))AeY@KhH!@1VtC85Q8n zj&==Qrv)@64#+(IQX_~iTF*L}U(YJ1)1$-fcy||ee~+GC%TTj>#9e=XS?uR`x$wc- z@zu5L@O%U%^+$2S zJYH8dpiOcnIcNVW-d+*CDOBP4!wO5mx74o>XLW-5-f*nk{6Yg=qg>#CH>P66lQQvo z0@Crm=(2|dq|2IW@&C0YES8^#rLRjSLP_#?#BqKiD)SWj8Hfr#s3J){3$HH<9#Kis zJ#39h)&xAaHks54ZV%V*MB$=%9QJrZFKi0IM~#Ya4+b)^GZin zb>u&124|lW1W?Z74BEoV+P1Ku97p?=u_w8bkUPXZzq* z5`5!0ovz-%XMN9@?nss6SBkmeD4KBWQ~5`N-~XHSCK%?Fd^>^OK*&i?wTVREoA|0c z{Ircef@ND$o|zNbc=|X~W_AvnHQ>XWJqsL34D|IcvP$CvfCC>Ur2;SjiZzy{%Y2}( zXJt*dv^J4#fK@a#bk!oZro7Y%kc@h%neFVJZpOq1(doU`&i|^j%I%pkth{UL#Q!=; zWu##IiAnT@znvN}jgNb~=D|~oz`zXefJoO!FDWa~9&jF;m?$#BiUR~*dKbn|#ud)G z@TIQ;$0NLg!`N1I2tc?wUaF=1dD~F@R9s&8z2F_<@7>0dJxTRH@9Dd;#(p$R4madZ z5^yR z{wS(w^b-)}0r0ahp>5{F&7)5{)5p+-7R1jMn0z#SIPRL3?@z5}gVbGsc+ZFT%&pQs zXSH+DG#c?!%SE-{vpM(E=)lZBljT5ogs+ElsEx6{->q}Tbsmlc&!WTLImTu{N^{U> zUU!^tNMML{jKU*Rfyur}Ut@j~r`9nS83#F?u%5mi0XOxj=xEA3w{LxR95}Mk-hGQI z1Q2^}|7wZ3^8YqN!yd>sz>YNt4X5^x2a;&m(!2e)`%98^*g@Bu=WhlBL66o$#B8P9 zRYd-m^f*b(UByO9#PtX2>2n^1(HFtu2Retx?)&Gx4=5kI&3G zRagc_1P1d5JbFFdGyUcvq_^++Jq@*-4n4kq@BP=|(}8;Xi0|KhdU|f6%^>QDW~jo> zJ$;@(#;5)6{q7$(dH!_itL5}-cJB@^y`Jfrc|AYcv)iYs=P)bD9ePdxxh*3LbhdMk2OiYN)F#)f8Gr zZUHkhq;h^KwxOUXw;->uB6(`20$s??D`b~M*Q`tjRc7br73!yx@Nw(o=x5`Y*!6#6 zSI5vV#?i5>rbt$=(tyh(WUee9Pm8TD;*J2v%sDO| zYsKp;72PTn#hc)gt)+@c@#d8gZ`%c$&4Sd5a0tR6MJyj%MkYTk2?=+eKU1MOs@KUYX7CT=b+rp@%Jo5uQL* zekaW#t-C8iDQ9^T!x2~Av|*;Ex+Cb8GFCxlYD!F0Sdd3fVhT!pE)Gc#Qg$;|hhI`2 z327ju7u4aSa7@kO%lXkikk|5-VKxp-TL+k-gALr&&PMhY zq>-ag6xEKYlhRuqqg!UWJkcP3_ZC#RdNYe#3QYsP2m zyLf|r6#$d}Y|d=F zUK(nws6+WWSP3Od{qWMaw512AMmINJ2qqDf&T;)Q=&Gcx!+kZ+6faeoKMP$hMQTJ4 z6j&tt7(-J-Q#J?o&0*L94uk8vC>2^aW?w^wtq-TQ@L*;p0`Z80fOhrF=ZAXaHy0hX zPl5b=r|dQ@Qx!vC9&W6{tJH)*)3v1YY!wHcs50q0>r6QeSMKm5_h4yJ;ve9>0suxH zJ$UkCL1Eg9oD2fkn|OqLynC=Q`go+(SRu$fQ5vp#9q!uAcFweGe=@Y-+;+)JeP)%a zq8sGxj?l31>0~*xoV_SZ4oFm>^AOJuonxTX$%;F0`$w)!?&7_wnuGQalU6AIa4%G{ zm)W6Y(Q)7W%XoS^a}oUT0P-noP%yi+nwb@CFm2svp|@qCOB;f*U@O~m5n!CZrKzu@ zX3x72YSwA$-1($f!j|?$*%Nw;OB02E_jYdfYYOFcCMR)!olGxE^igl25LTHEvF%9| zRVG1K1NRJW z7fGy8#Fb21W&ed;s~J*(RJ_SdH<{zhbH3SZ!&%2FL%*>11^N_}}C@a!B997$)Et zLsL!6aXf}KY%D(Fj?0AN`{ff72{qcpKXZ>qsf)NdM_1sj`P*TH;I^4Ef&E_znRcPl2cQwjDFVNHntPQE-QA~GqLS9o$V6xIEqXxc`>>=PE zrT$oG>&#O7j>wgTg+-W@{Col!C!bq&rXTYNhN{(eGkLGhEIln6Hx0tTqEFO zD;F6h`@6)GZ}j?ne!V{}_+is3m|f&LavR6up$abSs8fJS%IIj9h9q3)b= zFgqnR?shWj7?&~pAw2K@g1_fNaE&o)ge$bR)VXW>|KIqllsry4_OGPjnRS#fQht1P z`%;}qmMI^%wM&`Ue>C~Q&k1vW#NAoP`n#_>)eb2CGFR*yy5SSj{VIYFd@kiy>@}1Y zQBg%j$`-bFNv1`zq)ei{txQa8T{B2>0yrVp3N0xSZEY`=kSJ@DTL74ATE@1A`$ji9 zq{RS^xN~H?cQCDO_dCX3MoH+^_W^1~j(ZYaVgI|AxqPP{gPv|28$r_oOlepBm1ekn z7oPxH!|ShenA&$o z8YG{QVXxFlEFTvL`;UeETC+L{au0H5-c3#sPoUK$40cu9TfWDTHHg4n?%O-L#W@ny z$7TmA0!If=Hy7!FE|WI%^-nc(e>w9?KTS_eZmPRB3zSx$5gi-wli*p{+{?FAt}WKk z+0$PC;H(S&OF>TYw0ZOiPGVc~{df2VL?P8?KajGrvOj@d=CT+es`Y;^f5JbCd=$R$ z_@#s@C_MLP>36rRGtS1kb77_wmSdw*sbWpNLSbQX(F~SR(^!?!NhHv_xViK?j{?}> zi+2^b?R>F5ic!)e2CDQ$^|rv8sPIuHYl6RXX_H8s<#|BTet><9J%TM=r%i_@ny>Iz zi&lTZm+&5i44C}@No{Sj1pkKU6&(WEo7M{)r2Xo-8m{Tef8}Fmax1Vq<$KE&7oJF+ zn;C{Yl93*GN9AGo2zyVZ402BV7|Ua;a%_m-W7iY^V|XvQL<7a7Jit-JA<1u2o`Je`X9zTD!ehi`P1?&=zpyK z+_f`)2j1ac4Wa(-Apg2~2^bKHP6;SXo;~)29nSg~Imw_o?wClYz0j1d<%r~G!Z&`J zSK@y^U4EOi7#=r_+4I9-J;Etvr!w7ITtzb|`Lqn?n!<+A&r5A+$@?Naf}1OI00H!= zHlt|yV$Hc@_?s^C);9unwCe4C?(y&5kSo!ZVWsb<=E0)@=Amv*U-VyjM|p>+qB~E0 zXvWV4(la#MWLYRS5o<`AJUE%pV}DJ1O$*R@D*x7*s5eL$?%r|;dRO2Qauv}!_3b~j z|19*07*A#k<)T`Agx>M44UFSP5*N_IcxTfB-f)zXCpC-gcHDt|-RkzJA5S>x1k=Ic+(2 zfh~$8BcrC<2xb=!gge445#|SiLLIv&z{s9JKv$<1`w^6k*e zz9;=?7H^IHFUDmOf_l}R4(02tYcGrU|Le>u?ko)?w-x~J%j=+}59dyiKh6p#MfCG$ z*1|4?mELU^tPjZxrG@4blB$9@L0LCz$EWlsCYv0qhNq3krt7-+0#PwYC!d%QWB@AG z*$EXJ3@!E(QS=ZN{s@dbr8reo^!;vQh7bvDOiDo~oXw(<>14*)gn!1eM=_&$0lD$U zN2SO)q~!RGpBv5=L@n%}MrAq|U2v3FS;|sNP6!DMGJn+fh#3LE0KFE+BuvzHZU}Wt zhyxp6!64AUotZfzLJdTD3{1N`>W(Hp^5POpEhPigqnR6^o<4zG9=iu70&H*FV#;(e z1g?F&9cDM-Uk{1D^=vMon6|X05>8=lHki69$-ZWgsvY2K=mWorvS0RDXkeI z(3HD%S+owo~XJ8DKwwPKPXHAAhq1fFv1Q`>FY zkCVmz1_7l3^`rISg80~9BO%b4u8rb>oS|xCFqHcx}E&2{2KerwqL(4Eq)I~>CVA9enFlQ8Xjf@)E@VvjC3_Zg*6+ur`HjYr!21^b8Rp zW(ggMxciPVHK#p97wA*`;o=R2ibKWap-_3_#w$wmSH4Y{I~begYW3ufwv7_6{7V?; z?9J4#K0JOK-le;{_88DdR7i#mxXc|Af&nB%^rWP{GK0L(-%Ln5`)*Zp8D6vQ3YN>r zV#!?Jews#_ypMSQU>Dnn@@$BFe0Rd+6xSouQx^n>?*JVeZFN$vVN%OK(cdrs{18lP zIXe}0c>e{!E-k_uf1n zzZvat$uX}3um&$z_{Zu2$@U81k9pz4Ctsa>eRAyNo0D&+D(@l{lK+5cS^{VaKM!Pz zE5DN5@>^(ZKf-$Ff$KXvM}ymPgN zN|A#oJ40t`r=Dl$>bbH~G_PcCb{WguuL)EwEvI8_swpe^zma?0FdM@9zyTVy*O9?5JM>U?LSNK)gqt>r?iVj;Urla^z;$vDO?{hnvJn zq`0EM-Tq`eut$R*VHTxW>S@_9W2BIZ?%Ny@+JVK2-f1#i+~?S~PsC>jFR9QO&3vpw z3x9AiAQloY6~37_x6&qGXrlANR@pNYXRSygVb)1vWRBpKoGw{SnYC0D`$i+-wjDI8g`9LPcP-D%8T zfZjX4X$JU(c;;dM^TzkNxA@D)pgDm2YkZc#f%z|h955(bbX+#e)4${)2PF8}2M_6Y zD3KoU*9}8|y~9NM)F6Fj%6o0pAT#ae#I18Xd*#JvzN~*&wlOMmQ$Htcz;~dmkl&8` zxmx!k9RiKP8fVuA*y;L@<`f64WLvN!{x$VC=qrKMyZ+R1|M~>~{DV-r(CaN)1Zz`% zl>xs^%X<04#s@KGzqsGx0)Rd^ZnH5D-5XhEh-17ycf9wh%@fJ}XX3LT=pS29mhUJ4 zpPPfJVaHKpR_sMTNK*Ws@KeI* z0vW!Av6Gw>&onn8h3%27K2KP7_cy#dh8uWuk0SU$HSOKurO=9Gc$aA$c`3%X#qiCp zbeyt5ZYOCJoZ+l!w=-Ej;=E^b@4Sy$3$0sH-+bVQ#Um3;Hon8ydWC#K@NI}9SgYZJ z+_>VEQk~R^;{hHdd&X>JamO301?coh#W*o&j8ZKfsu;91paP|+p#>#c_Nb$QM9=U{ zO^i3Ya=mglj4l?3W8aA9edl=AXI9o{%SQBZVJJ7tO2!;z6`N&iYz>-MSl{MmR~m7b zHe>j5@}vNKxJ5K4RO=DLwbpO`Mi`o8wRNPe+lEp+;BndB$@{sLw{!6nkSm*=zEo zip#gc03I?jQ`YdJnMgEjjVhV)9$3d*2`+VE;=$?#>X71RA(j`g9Y?jcku(!XAipNT z_iJckhlXG^7711X<(HxAeK~5usBM4Xy{sj*{HXmkAt_w%TH_M4&LpAQ)5mk(={l6v z5;#m(lIifDka{^V6rpXz$t0Z;y*8B=pG=@64F$<4p`iYiW@?3vK<(|jaEvDcC{TJ zS<`YIL-?oHsX2AjmB%4Oa?KG-$8$q^ekw7wl~v3>ns8ZdC+?u8n%xiPSAUQlb&+-@ zki%3f4d(6{2Wvz-G|&%Ovc5P={ZZpq)cc@9{?Zf-<~>9cufV7n)v%NH;p_nDU=Sp=-i0BR*fAwA;b|7rak6??b8HhI{LN894Hvkzh#}7IY9}%F)yWw6#J6fA(D?=Ar{p8M0KRxv&8eBL z+%G8~1k-K|@>Fr7Ig4!uegST1%;v zsu(J(Ob+3AmT?+G6RtWH@1@ok9}?2`X>E!<+7@!cLVuQtT81jy$OaIs!(iDXD*Q~; zUEcCeo-_Oupa~f4Yw6B(hfp6}8)=X>@TLAy%!NF4=LR<)aQdaBIar1c0IFDFgQC!* zXW+{MNdnl#2S}gH4_hqE+lu z&`{MDX?!RX!5NewE3RlkhQgv7ihiy($z~z;QozirVQgJ;UQqiKJhK8k5}$MK${1X- zM3l;x5et32Y@Sl1>hZ3q9X4F3hH)@%vGj-qV~mw*U1hrC-O`ptj1koBc^c459G(hN zqg}UMv2YITf(BZb=RsFO)L^qAB>;Pm{?^T;(2iL)9%(gaC~v#u>nP#lVt}MR@iX|$ z(+nzeU!?$Ql91e_;p1LY(<`l|PFH0U*eeIZ5M$n|ry|Ao(Tm@kaEKj(*mh;ml#^O^ zJa#bFxos@e!-vKl(H4|DTD0fpjJF&Xjo~}_jIim`y(dRsxjlV^wLLm!j|EPl*HZLn z_E9W=0M>B7XZmBY7sht}qB6xxaBtXk6KzM=(SV@7C7G_1$ZC{DHS8&s%-G4JvaK;| zbln9O;={LreT#g2(HJcVc*iYS$l8bGm5!G%nre`F?(ZS$c{sq|n509GNZO`~_onlZ za&)xJoNCbVFOnsmO{>1 zh&G!YM`e|ib}RuO!GN5g|k%WATu7>Z!fv@dhtJh_W{ z&wiof>quMM#gIYTtzi2nJaW(^RU}Q>+SmcF90K=o85>?^`7G zw&EGWmQ)FD zd&pdR*Uu*`0k>JbPcv9pXpKaEMKg)l|4%ll{PUVSO2`)yj(8*zTQmXNG3 zLNA1Z*>_{+#p}unB<7FL$C$ZIn!^V?tUiRBuk!PQiTGh>gZ@$S9v?j=)ho_ws45ph zl}0$F-$nvP)CyjkFuhuzCC5e=Ho29V1C->#h$d~;?|^K{9!tpFJBYN0UcZ_24>v(v z&m!pTzX1OoAn$8-*#z6cb?`072}*+b!OEb>zXfC<a*~*?m983NAHR-&{ zSB<;c2f_s!n%~=9$@M`V-fM?*opL6zh@MX#+$VQE@_yf`!n-7iQf%>%S=RLBMlQ-{ zt11xn`suT7AOm`+kPAuDnkpku!hpZC-7hI8pT~b$GCg61f2_a4uw`hZ^>i^;fG40i zEuBy$hVFoPAh~&Ym$V+J`-a&Zq-oZoR+gXx%|7a9c@0AU;^P~XsPi>y`~xA5ehbH$ z;+zbk>~$rolOA)|8RL^>2OKl_5Iq)3>=$|uv+5BT;O&5gvLlwwq zwIWxchGXOoM~O{ZG7@=61oD|s?&Aa{+D0(^l=9^go;>lJJYaDDHVY^6Ln4=V=|zl> z{eCopGO$*45u7R5O$xy}pnEorUVSn&?)01f97kCm^OU81qyoeB<$x|NTkwmroGk5W)Hh6^)$H z=awXB7ymF5{4u!S$R*CKzVBO@e=_S z?c|_oGGw&~)lR7)6!k?s9{^Z}B2w6bxy34FH4vPvAL~+<;ol!0j+KJ@gCIvB ztBF6GNa6)+$w8)maz7TBh=)E|&y%rI?*gMRT7`FzpLqZVW;e-u-jQG7WUF3cwC*(DF1_k%T z*x0*I%egpnDiTn;B#IG&AYhmP%q~NLaOPx$*xbm3yceHP-jsIgUZgqLT?HBS` zE`<2Y`3?|Coh~~;8}DhTv6@y+(44%P`!Y0Qz7Ucn;)F^SYHc^|W8Risa4(0rHY73x zqC|aBOH85mjmfGYu#FiFEfy#Mt9muaDquoYXke;l;5EZuW0W|;C`d;SB#OKw+Grr9cLy%R)*%Pbq`CqhES=z0Phjo0sRBrZ&$WQ>eCoHG_uH^*+N@ zyNkEi`}N7&YeikWzy5VXe$_*ZD?eIp>nLe{zA56?xl1(MY_9EB@$daeNs9BYqPKFX4jMYfPbqh%rTm)k@~}1^*8PmO68ttHUw~I z5%uyO^(v+86TdyHu(uwM+ahXMVvBIM&;(9ejC7-@n6v42PYvs<6rZpwiMkwG_fWP- zi-Yv0R?tC)BI-+|5?*w(j-9sc#n?(hIVNb0U{8RA=cs_uz71O!vjZ?tw)-T)2mCi( zVz!;Px{>#95ibfmFQJd^?7+$mHQmk>^bDK2&^9U#w;|5hkVstUCDK@o#VZxV^7p{s z1L86I+~K-`&Aa8FOgU~75d@$lVpI~>(6;p;#$%h4^9HP|c3bYs z4VK0oNi6S9S42ZN1bzIRgME(O`GQ~kKmUKU`8`h={VHoNwqp)7@{jE|62guVvXdkk z(+*8IZklvPl^mRDT!Odb<@0Jo{Q>`|{%7)cgeo_if2wgAviR5GRf@o;*!bKA zi$~j70=4i;U?as)Hbf@=vIVX$ml5CcBJ65X`;GRzpo=eUr3}YKhw0Kv>5-Ul{~${h zNDoGOa!71rKdT3IpOHvu$Gk1dj%&8_@F(rAu+y8gO;Y!%BG4+;6#I}WUcY@*#sdS| z%xFZXo|j^WT@Zis^xjQ;FPpxg2DG%5)rSGofT5lz-=rWlLA)02y7XNs99+AvI-U5} zKi(bwa(FxtG99!C{P;M4nO{C80THIRhJjy`7HVtYgcKcjW6r63R7IetM(>(8=5eoL z!k#9u+uRM(_KUJar|U73lc3IPz4&x3a`}d4bQ5Cw4i+Bv<?3c3UlFNG`l4X0ZUqurf@Wk3!Bd^VOABf5fkiPTW_;vDuXgd=E@sy)U;7X*7G6a0 zyX~dDD!4}1fUUXVdGOqGOnRPi$))j2b!mqAI)Fsm)vj&-X%Iq zHVTIsZ&|VEVpf$pIwowTR($Lxda=J?aHksy`|&4ZLOS z<7fB--UInrYTyL1^BHHAVf4dy=XMRCpvs-W?})pN|D4-3z;6^!z$$LytpkpR@zxr* z>OxFI%sV)mZN*mM1lzOB||%DV)L|R0n}p@6m6@G2CFs_-ifvw zuIO(rt^d)-&+8xS`<2kYS@RbW^RNc>jc?Y(?W)M@$byV2-dam($3+s>oTyZ0Ua@F# zp@f7iU?F#L0Jwx1v&@%Wd+@tRVtQ=nb2atT6X)Vg^%O-{&kh-0*x9-ce&Ng}=XKd> zvV6=1%w~SVo<+@+?zqu5p$*!6mxH%&z?T2l1{n?=g>&=#pMf+8XARP~6Ot_R zk`27)H(o#0v`s&Dc*0Toc{Y5pv&hmHRZo2eUOrOu`qJUmufKc3XZcr3__!!yV&-;E z%d~L%k(#yX$81k{EzAzFL+lV^kqBZ@kaayOY|Z|W=G^we6G(D^Y_e@2IECv+bfufD zYK&4FMG=Q#--o5Nw1Z|;j{jfIrn|MpwhbOXt7QDew$$UA8u5SV%eUo~4D{qwee5S3 z^NUA~wFv>0LPl73RVeq;uQ*Miy=Waw&D;dDOPyPNoG;@8XV~rf!;?%rnJKl@I~Z3x z+mFRqJaNS+oE9FHk=kJF^7vH$9(1Ar2%wi8W-0(T7H8fmz;RI%>XXS#Q4Nj^GtvaY zlvJ{y+Oe{#P=xf=9I&Ed>P<~p93K&5S4PS_nIc`JBcbZOVS&RgjCwv|P!%=jU6Od` zd^C*Wy^GP)KBmr>L@)(u5(Nex0;ScMK(H=bMVzR(Md#E6Mt`bw5Qq&duEK`JBWD9p+03ZN-*{Q!jd|j5B`u&}5eh2^nU;c@!QULfV$-n!1 z;;-96IftqNLJrM7Q*nrY1hr56;E;3eBy}w0b1JcGv3| zF=a@lCtGs6Xi>Ytp*ON9z0jOy**ZitKg+ulaE>*CR^Lf%u9o&pg64|dALH5Eq3sQ>l`6aH%r6%S zwNygINNIN{t5I@Qn$uWV(BR@wDJ^I$tXw{uU)AQ+Y6|37*+gNiz8ZGSDSg;?EirR}pteV1AN5#2D#TAU>=8D{iR zA**Hcw}y%vOBL2dt@TvHa!O?FGNW2dss;(Q!Qv*-yy`V|MbP#qTKjzZ)?;?RXKv{k zMmNLwZNkVh^H2ljp=O3f%XRFrcF?hApBEF5O6m-2mPdd^SMvQ$e|u&>HFq*tdd*I6y2w?~ar+EGOl zeT#)90O+$W@H@0?{JprS%YZ34#ywZLb%By@A*j>g)-GunJ2kZ`C9P0uZ>MaZdDcp~ zhg8-K21;v*P1Q+U$0%2}=WTvE+)hrkStK#Mc}ft+OU#Sm!+~L>i(59WmC7^tiSCHL zoi^{B-|5Jle{$zKa}N6%)XbDmd+Q~+ZqMHQ6`nbJ7BO+Y+?=^&&7#dFnY~YFUY&<; z?9EvbamFlSVq(jTCRf40cG_DV>=)Mu!uU5s@mts|}zt`N4(HW>|_ zdvY0MJGGWDqWub(u(03?Tp8S0%2mo0%g9{Yt##R}fDXKXtU{;l&{)0ZC)V8^3qXKw z(M%*B1q1*T07Gs@1px%pp>a+*0hff5mqqoEO-p;4Dz(9;Uf9XXO`fyH@-8ZuY@La@T-{}J;-)+*P+4CebXyGx z+6NPkrNkxAxstGzWY)7{y=-3E^4i-;vf5|Fcu6H!T;3!zT`}nn&Rz7=v*FM-Z1K;O zeS1y`VD)bKFT2`ncBk@)rQ$B)q;2t<-Bmor%baCl)6g%XFZxNAvj68(v%<;vlWpoX bySsRqZ&<7&`?lLMA)cbT#c7<5ldc8;lw&6L literal 0 HcmV?d00001 diff --git a/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.eot b/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..8b7e034543f3922e90946e11bc1f1c59bcf92a1a GIT binary patch literal 25435 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%0DDYhOk>ICg;bF9iO3gI-KEd8tqVrPggpzB1b>oZ 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 HF2>}5x&*rp literal 0 HcmV?d00001 diff --git a/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.svg b/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.svg new file mode 100644 index 0000000000..627f5a368c --- /dev/null +++ b/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.ttf b/app/src/common/css/fonts/Roboto-Regular/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5b3dbb3c9cfcf08a9ab3f307064588cde2b1e72e GIT binary patch literal 53440 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

7?9z@vn|B?1PD9RB> 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 bRvG*5TspXhHo`OR-8IXTBr#@?C { + const { trackEvent } = useTracking(); + const createTrackingFunction = (eventInfo) => (eventInfo ? () => trackEvent(eventInfo) : null); + + return ( +

    + {items && + Object.keys(items).map((key) => ( + + {items[key].name} + + ))} +
+ ); +}; +NavMenu.propTypes = { + items: PropTypes.objectOf( + PropTypes.shape({ + name: PropTypes.string, + link: PropTypes.object, + component: PropTypes.node, + eventInfo: PropTypes.object, + mobileDisabled: PropTypes.bool, + }), + ).isRequired, +}; diff --git a/app/src/pages/inside/projectSettingsPageContainer/navMenu/navMenu.scss b/app/src/pages/inside/projectSettingsPageContainer/navMenu/navMenu.scss new file mode 100644 index 0000000000..810919ffb9 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/navMenu/navMenu.scss @@ -0,0 +1,38 @@ +/*! + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.menu { + display: flex; + flex-direction: column; + background: $COLOR--bg-000; +} + +.item { + padding: 12px 16px; + font-family: $FONT-ROBOTO-REGULAR; + font-size: 13px; + line-height: 20px; + color: $COLOR--almost-black; + text-transform: capitalize; + text-decoration: none; + white-space: pre; + overflow: hidden; + text-overflow: ellipsis; +} + +.active { + background: $COLOR--bg-100; +} diff --git a/app/src/pages/inside/projectSettingsPageContainer/navigation/index.js b/app/src/pages/inside/projectSettingsPageContainer/navigation/index.js new file mode 100644 index 0000000000..91283c35a1 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/navigation/index.js @@ -0,0 +1,17 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { Navigation } from './navigation'; diff --git a/app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.jsx b/app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.jsx new file mode 100644 index 0000000000..76449139fa --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.jsx @@ -0,0 +1,48 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames/bind'; +import { ScrollWrapper } from 'components/main/scrollWrapper'; +import { NavMenu } from '../navMenu'; +import styles from './navigation.scss'; + +const cx = classNames.bind(styles); + +export const Navigation = ({ items, title }) => { + return ( + + {title &&
{title}
} + +
+ ); +}; +Navigation.propTypes = { + items: PropTypes.objectOf( + PropTypes.shape({ + name: PropTypes.string, + link: PropTypes.object, + component: PropTypes.node, + eventInfo: PropTypes.object, + mobileDisabled: PropTypes.bool, + }), + ).isRequired, + title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]), +}; +Navigation.defaulProps = { + title: '', +}; diff --git a/app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.scss b/app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.scss new file mode 100644 index 0000000000..45352cb578 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/navigation/navigation.scss @@ -0,0 +1,26 @@ +/*! + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.header { + position: sticky; + top: 0; + padding: 42px 16px 24px; + background: $COLOR--bg-000; + font-family: $FONT-ROBOTO-MEDIUM; + font-size: 15px; + line-height: 24px; + color: $COLOR--almost-black; +} diff --git a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx index 5be353f222..a63f0055fe 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx +++ b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx @@ -1,5 +1,5 @@ /* - * Copyright 2019 EPAM Systems + * Copyright 2022 EPAM Systems * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,39 +14,161 @@ * limitations under the License. */ -import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { FormattedMessage } from 'react-intl'; -import { PROJECT_SETTINGS_TAB_PAGE, projectIdSelector } from 'controllers/pages'; -import { PageLayout, PageHeader } from 'layouts/pageLayout'; -import { SettingsPage } from 'pages/common/settingsPage'; - -@connect((state) => ({ - projectId: projectIdSelector(state), -})) -export class ProjectSettingsPageContainer extends Component { - static propTypes = { - projectId: PropTypes.string.isRequired, - }; - - breadcrumbs = [ - { - title: , - }, - ]; - - createTabLink = (tabName) => ({ - type: PROJECT_SETTINGS_TAB_PAGE, - payload: { projectId: this.props.projectId, settingsTab: tabName }, - }); - - render() { - return ( - - - - +import React, { useCallback, useMemo } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { FormattedMessage, useIntl } from 'react-intl'; +import classNames from 'classnames/bind'; +import { + PROJECT_SETTINGS_TAB_PAGE, + projectIdSelector, + settingsTabSelector, +} from 'controllers/pages'; +import { SettingsLayout } from 'layouts/settingsLayout'; +import { + ANALYSIS, + DEFECT, + DEMO_DATA, + GENERAL, + INTEGRATIONS, + NOTIFICATIONS, + PATTERN_ANALYSIS, +} from 'common/constants/settingsTabs'; +import { SETTINGS_PAGE_EVENTS } from 'components/main/analytics/events'; +import { IntegrationsTab } from 'pages/common/settingsPage/integrationsTab'; +import { NotificationsTab } from 'pages/common/settingsPage/notificationsTab'; +import { DefectTypesTab } from 'pages/common/settingsPage/defectTypesTab'; +import { AutoAnalysisTab } from 'pages/common/settingsPage/autoAnalysisTab'; +import { PatternAnalysisTab } from 'pages/common/settingsPage/patternAnalysisTab'; +import { DemoDataTab } from 'pages/common/settingsPage/demoDataTab'; +import { canSeeDemoData } from 'common/utils/permissions'; +import { ExtensionLoader } from 'components/extensionLoader'; +import { uiExtensionSettingsTabsSelector } from 'controllers/plugins'; +import { activeProjectRoleSelector, userAccountRoleSelector } from 'controllers/user'; +import { Navigation } from 'pages/inside/projectSettingsPageContainer/navigation'; +import { GeneralTab } from 'pages/common/settingsPage/generalTab/generalTab'; +import { ScrollWrapper } from 'components/main/scrollWrapper'; +import { messages } from './messages'; +import styles from './projectSettingsPageContainer.scss'; + +const cx = classNames.bind(styles); + +export const ProjectSettingsPageContainer = () => { + const { formatMessage } = useIntl(); + const dispatch = useDispatch(); + const extensions = useSelector(uiExtensionSettingsTabsSelector); + const projectId = useSelector(projectIdSelector); + const activeTab = useSelector(settingsTabSelector); + const userRole = useSelector(activeProjectRoleSelector); + const accountRole = useSelector(userAccountRoleSelector); + + const createTabLink = useCallback( + (tabName) => ({ + type: PROJECT_SETTINGS_TAB_PAGE, + payload: { projectId, settingsTab: tabName }, + }), + [projectId], + ); + + const extensionsConfig = useMemo(() => { + return extensions.reduce( + (acc, extension) => ({ + ...acc, + [extension.name]: { + name: extension.title || extension.name, + link: createTabLink(extension.name), + component: , + mobileDisabled: true, + eventInfo: SETTINGS_PAGE_EVENTS.extensionTabClick(extension.title || extension.name), + }, + }), + {}, ); - } -} + }, [createTabLink, extensions]); + + const config = useMemo(() => { + const tabsConfig = { + [GENERAL]: { + name: formatMessage(messages.general), + link: createTabLink(GENERAL), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.GENERAL_TAB, + mobileDisabled: true, + }, + [INTEGRATIONS]: { + name: formatMessage(messages.integrations), + link: createTabLink(INTEGRATIONS), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.INTEGRATIONS_TAB, + }, + [NOTIFICATIONS]: { + name: formatMessage(messages.notifications), + link: createTabLink(NOTIFICATIONS), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.NOTIFICATIONS_TAB, + mobileDisabled: true, + }, + [DEFECT]: { + name: formatMessage(messages.defect), + link: createTabLink(DEFECT), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.DEFECT_TYPE_TAB, + mobileDisabled: true, + }, + [ANALYSIS]: { + name: formatMessage(messages.analysis), + link: createTabLink(ANALYSIS), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.AUTO_ANALYSIS_TAB, + mobileDisabled: true, + }, + [PATTERN_ANALYSIS]: { + name: formatMessage(messages.patternAnalysis), + link: createTabLink(PATTERN_ANALYSIS), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.PATTERN_ANALYSIS_TAB, + mobileDisabled: true, + }, + [DEMO_DATA]: { + name: formatMessage(messages.demoData), + link: createTabLink(DEMO_DATA), + component: , + eventInfo: SETTINGS_PAGE_EVENTS.DEMO_DATA_TAB, + mobileDisabled: true, + }, + }; + if (!canSeeDemoData(accountRole, userRole)) { + delete tabsConfig[DEMO_DATA]; + } + Object.keys(extensionsConfig).forEach((tab) => { + if (tabsConfig[tab]) { + tabsConfig[tab].component = extensionsConfig[tab].component; + + delete extensionsConfig[tab]; + } + }); + return { ...tabsConfig, ...extensionsConfig }; + }, [accountRole, extensionsConfig, createTabLink, userRole]); + + const navigation = useMemo(() => { + const title = ; + return ; + }, [config]); + + const content = useMemo(() => { + if (!activeTab || !config[activeTab]) { + const firstItemName = Object.keys(config)[0]; + dispatch(config[firstItemName].link); + return null; + } + return config[activeTab].component; + }, [activeTab, config]); + + return ( + + +
{null}
+
{content}
+
+
+ ); +}; diff --git a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss new file mode 100644 index 0000000000..e476f63fc3 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss @@ -0,0 +1,24 @@ +/*! + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.header { + position: sticky; + top: 0; +} + +.content { + padding: 33px 32px 0; +} diff --git a/app/src/routes/constants.js b/app/src/routes/constants.js index ab8ac0c689..93cfee6816 100644 --- a/app/src/routes/constants.js +++ b/app/src/routes/constants.js @@ -53,6 +53,7 @@ import { UNIQUE_ERRORS_PAGE, } from 'controllers/pages'; import { AdminUiExtensionPage } from 'pages/admin/adminUiExtensionPage'; +import { RawContentAppLayout } from 'layouts/appLayout/rawContentAppLayout'; export const ANONYMOUS_ACCESS = 'anonymous'; export const ADMIN_ACCESS = 'admin'; @@ -73,8 +74,14 @@ export const pageRendering = { PROJECT_LAUNCHES_PAGE: { component: LaunchesPage, layout: AppLayout }, PROJECT_MEMBERS_PAGE: { component: ProjectMembersPageContainer, layout: AppLayout }, PROJECT_SANDBOX_PAGE: { component: SandboxPage, layout: AppLayout }, - PROJECT_SETTINGS_PAGE: { component: ProjectSettingsPageContainer, layout: AppLayout }, - PROJECT_SETTINGS_TAB_PAGE: { component: ProjectSettingsPageContainer, layout: AppLayout }, + PROJECT_SETTINGS_PAGE: { + component: ProjectSettingsPageContainer, + layout: RawContentAppLayout, + }, + PROJECT_SETTINGS_TAB_PAGE: { + component: ProjectSettingsPageContainer, + layout: RawContentAppLayout, + }, PROJECT_USERDEBUG_PAGE: { component: LaunchesPage, layout: AppLayout }, PROJECT_USERDEBUG_TEST_ITEM_PAGE: { component: TestItemPage, layout: AppLayout }, ADMINISTRATE_PAGE: { component: ProjectsPage, layout: AdminLayout, access: ADMIN_ACCESS }, From 7da6ae5cc7dc3fa428b06d8090054271793f20ba Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Fri, 15 Apr 2022 17:21:18 +0300 Subject: [PATCH 054/284] EPMRPP-76491 || project settings header (#3069) * EPMRPP-76491 || project settings header * EPMRPP-76491 || code review fixes - 1 * EPMRPP-76491 || code review fixes - 2 * EPMRPP-76491 || code review fixes - 2 --- .../header/header.jsx | 44 +++++++++++++++++++ .../header/header.scss | 35 +++++++++++++++ .../header/index.js | 17 +++++++ .../projectSettingsPageContainer.jsx | 19 ++++---- .../projectSettingsPageContainer.scss | 1 + 5 files changed, 108 insertions(+), 8 deletions(-) create mode 100644 app/src/pages/inside/projectSettingsPageContainer/header/header.jsx create mode 100644 app/src/pages/inside/projectSettingsPageContainer/header/header.scss create mode 100644 app/src/pages/inside/projectSettingsPageContainer/header/index.js diff --git a/app/src/pages/inside/projectSettingsPageContainer/header/header.jsx b/app/src/pages/inside/projectSettingsPageContainer/header/header.jsx new file mode 100644 index 0000000000..7e4c55f242 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/header/header.jsx @@ -0,0 +1,44 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames/bind'; +import styles from './header.scss'; + +const cx = classNames.bind(styles); + +export const Header = ({ title, titleNode, children }) => { + return ( +
+
+ {title} + {titleNode} +
+ {children} +
+ ); +}; +Header.propTypes = { + title: PropTypes.string, + titleNode: PropTypes.node, + children: PropTypes.node, +}; +Header.defaultProps = { + title: '', + titleNode: null, + children: null, +}; diff --git a/app/src/pages/inside/projectSettingsPageContainer/header/header.scss b/app/src/pages/inside/projectSettingsPageContainer/header/header.scss new file mode 100644 index 0000000000..89fd145628 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/header/header.scss @@ -0,0 +1,35 @@ +/*! + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.container { + padding: 0 32px; + border-bottom: 1px solid $COLOR--e-100; + background: $COLOR--bg-000; + box-sizing: border-box; +} + +.header { + display: flex; + min-height: 36px; + padding: 28px 0 25px; +} + +.title { + font-family: $FONT-REGULAR; + font-size: 20px; + line-height: 31px; + color: $COLOR--almost-black; +} diff --git a/app/src/pages/inside/projectSettingsPageContainer/header/index.js b/app/src/pages/inside/projectSettingsPageContainer/header/index.js new file mode 100644 index 0000000000..bad7cbc161 --- /dev/null +++ b/app/src/pages/inside/projectSettingsPageContainer/header/index.js @@ -0,0 +1,17 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { Header } from './header'; diff --git a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx index a63f0055fe..b47f83fd3b 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx +++ b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx @@ -47,6 +47,7 @@ import { activeProjectRoleSelector, userAccountRoleSelector } from 'controllers/ import { Navigation } from 'pages/inside/projectSettingsPageContainer/navigation'; import { GeneralTab } from 'pages/common/settingsPage/generalTab/generalTab'; import { ScrollWrapper } from 'components/main/scrollWrapper'; +import { Header } from 'pages/inside/projectSettingsPageContainer/header'; import { messages } from './messages'; import styles from './projectSettingsPageContainer.scss'; @@ -86,7 +87,7 @@ export const ProjectSettingsPageContainer = () => { }, [createTabLink, extensions]); const config = useMemo(() => { - const tabsConfig = { + const navConfig = { [GENERAL]: { name: formatMessage(messages.general), link: createTabLink(GENERAL), @@ -137,16 +138,16 @@ export const ProjectSettingsPageContainer = () => { }, }; if (!canSeeDemoData(accountRole, userRole)) { - delete tabsConfig[DEMO_DATA]; + delete navConfig[DEMO_DATA]; } - Object.keys(extensionsConfig).forEach((tab) => { - if (tabsConfig[tab]) { - tabsConfig[tab].component = extensionsConfig[tab].component; + Object.keys(extensionsConfig).forEach((key) => { + if (navConfig[key]) { + navConfig[key].component = extensionsConfig[key].component; - delete extensionsConfig[tab]; + delete extensionsConfig[key]; } }); - return { ...tabsConfig, ...extensionsConfig }; + return { ...navConfig, ...extensionsConfig }; }, [accountRole, extensionsConfig, createTabLink, userRole]); const navigation = useMemo(() => { @@ -166,7 +167,9 @@ export const ProjectSettingsPageContainer = () => { return ( -
{null}
+
+
+
{content}
diff --git a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss index e476f63fc3..23d3c2c54b 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss +++ b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.scss @@ -17,6 +17,7 @@ .header { position: sticky; top: 0; + z-index: $Z-INDEX-DEFAULT; } .content { From 21bed4df345effbd66d5398f3786ec56d7b261f2 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Fri, 15 Apr 2022 18:39:07 +0300 Subject: [PATCH 055/284] EPMRPP-76472 || New registration extension point, invalid token message fix (#3071) * EPMRPP-76472 || New registration extension point, invalid token message fix * EPMRPP-76472 || Code review fixes - 1 * EPMRPP-76472 || Code review fixes - 2 * EPMRPP-76472 || Code review fixes - 3 Co-authored-by: Artsiom Sadouski --- app/localization/translated/be.json | 7 ++- app/localization/translated/ru.json | 7 ++- app/localization/translated/uk.json | 7 ++- app/src/components/main/navLink/index.js | 6 +- .../plugins/uiExtensions/constants.js | 1 + .../controllers/plugins/uiExtensions/index.js | 1 + .../plugins/uiExtensions/selectors.js | 5 ++ .../pageBlocks/loginBlock/loginBlock.jsx | 2 +- .../registrationPage/registrationPage.jsx | 9 +++ .../registrationPageContainer.jsx | 60 +++++++++++++++---- app/webpack/base.config.js | 4 ++ 11 files changed, 88 insertions(+), 21 deletions(-) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index fcf480e12e..dae20367ac 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -1559,12 +1559,15 @@ "RegistrationForm.passwordPlaceholder": "Пароль", "RegistrationForm.register": "Зарэгістраваць", "RegistrationForm.reset": "Скінуць", + "RegistrationPage.again": " зноў", "RegistrationPage.coupleMinutes": "Гэта зойме ўсяго некалькі хвілін, каб пачаць", + "RegistrationPage.login": "Увайсці", "RegistrationPage.oops": "Ой,", + "RegistrationPage.or": "або ", "RegistrationPage.registration": "запоўніце рэгістрацыйную форму", "RegistrationPage.tokenExpired": "Гэта запрашэнне скончылася або ўжо выкарыстоўваецца", "RegistrationPage.tokenNotProvided": "запрашэнне не было прадастаўлена ў параметрах URL", - "RegistrationPage.visit": "Наведайце", + "RegistrationPage.visit": "Наведайце ", "RegistrationPage.welcome": "Дабро запрашаем,", "RemoveIndexModal.contentHeaderMessage": "Вы ўпэўнены, што жадаеце выдаліць усю інфармацыю з ElasticSearch?", "RemoveIndexModal.headerRemoveIndexModal": "Выдаліць індэкс", @@ -1811,6 +1814,7 @@ "UnlinkIssueModal.unlinkIssue": "Адвязаць праблему", "UnlinkIssueModal.unlinkModalConfirmationText": "Вы ўпэўненыя, што жадаеце адвязаць праблемы ў САХ?", "UnlinkIssueModal.unlinkSuccessMessage": "Паспяхова завершана!", + "UpdateAnalysisSettings.allMessagesShouldMatch": "пераключэнне 'Усе часопісы з 3 ці больш радкамі павінны супадаць'", "UpdateAnalysisSettings.analysisProps": "параметры Аўта-аналізу:", "UpdateAnalysisSettings.analyzeMode": "Стратэгія Аўто-Аналізу", "UpdateAnalysisSettings.autoAnalyze": "пераключэнне Аўтааналізатара", @@ -1820,7 +1824,6 @@ "UpdateAnalysisSettings.numberOfLogLines": "Колькасць радкоў лога", "UpdateAnalysisSettings.numbersInErrorLog": "выдаліць лічбы ў часопісе памылак", "UpdateAnalysisSettings.uniqueError": "пераключэнне ўнікальных памылак", - "UpdateAnalysisSettings.allMessagesShouldMatch": "пераключэнне 'Усе часопісы з 3 ці больш радкамі павінны супадаць'", "UpdateAnalysisSettings.updated": "абнавіў", "UserBlock.adminBadge": "Адміністратар", "UserBlock.administrate": "Адміністраваць", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index 19cebf6872..b567585735 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -1559,12 +1559,15 @@ "RegistrationForm.passwordPlaceholder": "Пароль", "RegistrationForm.register": "Зарегистрироваться", "RegistrationForm.reset": "Очистить", + "RegistrationPage.again": " опять", "RegistrationPage.coupleMinutes": "Старт займет всего пару минут", + "RegistrationPage.login": "Войти", "RegistrationPage.oops": "Упс,", + "RegistrationPage.or": "или ", "RegistrationPage.registration": "заполните форму регистрации", "RegistrationPage.tokenExpired": "это приглашение просрочено или уже используется", "RegistrationPage.tokenNotProvided": "ключ приглашения не обнаружен в URL параметрах", - "RegistrationPage.visit": "Посетите", + "RegistrationPage.visit": "Посетите ", "RegistrationPage.welcome": "Добро пожаловать,", "RemoveIndexModal.contentHeaderMessage": "Вы уверены, что хотите удалить всю информацию из ElasticSearch?", "RemoveIndexModal.headerRemoveIndexModal": "Удалить индекс", @@ -1811,6 +1814,7 @@ "UnlinkIssueModal.unlinkIssue": "Открепить ошибку", "UnlinkIssueModal.unlinkModalConfirmationText": "Вы уверены, что хотите открепить ошибки в СОД?", "UnlinkIssueModal.unlinkSuccessMessage": "Завершено успешно!", + "UpdateAnalysisSettings.allMessagesShouldMatch": "переключение 'Все журналы с 3 или более строками должны совпадать'", "UpdateAnalysisSettings.analysisProps": "параметры Авто-Анализа:", "UpdateAnalysisSettings.analyzeMode": "Стратегия Авто-Анализа", "UpdateAnalysisSettings.autoAnalyze": "переключение Автоанализатора", @@ -1820,7 +1824,6 @@ "UpdateAnalysisSettings.numberOfLogLines": "Количество строк лога", "UpdateAnalysisSettings.numbersInErrorLog": "удалить цифры в журнале ошибок", "UpdateAnalysisSettings.uniqueError": "переключение уникальных ошибок", - "UpdateAnalysisSettings.allMessagesShouldMatch": "переключение 'Все журналы с 3 или более строками должны совпадать'", "UpdateAnalysisSettings.updated": "обновил", "UserBlock.adminBadge": "Администратор", "UserBlock.administrate": "Администрировать", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index 7d3c5c4cf4..b83001edb5 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -1559,12 +1559,15 @@ "RegistrationForm.passwordPlaceholder": "Пароль", "RegistrationForm.register": "Зареєструватися", "RegistrationForm.reset": "Очистити", + "RegistrationPage.again": " знову", "RegistrationPage.coupleMinutes": "Старт займе всього пару хвилин", + "RegistrationPage.login": "Увійти", "RegistrationPage.oops": "Упс", + "RegistrationPage.or": "або ", "RegistrationPage.registration": "заповніть форму реєстрації", "RegistrationPage.tokenExpired": "це запрошення прострочено або вже використовується", "RegistrationPage.tokenNotProvided": "ключ до запрошення не виявлено параметри URL-адресу", - "RegistrationPage.visit": "Відвідайте", + "RegistrationPage.visit": "Відвідайте ", "RegistrationPage.welcome": "Ласкаво просимо", "RemoveIndexModal.contentHeaderMessage": "Ви впевнені, що хочете видалити всю інформацію з Elasticsearch в?", "RemoveIndexModal.headerRemoveIndexModal": "Видалити індекс", @@ -1811,6 +1814,7 @@ "UnlinkIssueModal.unlinkIssue": "Помилку відкріпити", "UnlinkIssueModal.unlinkModalConfirmationText": "Ви впевнені, що хочете відкріпити помилки в BTS?", "UnlinkIssueModal.unlinkSuccessMessage": "Завершено успішно!", + "UpdateAnalysisSettings.allMessagesShouldMatch": "переключення 'Всі журнали з 3 або більше рядками повинні збігатися'", "UpdateAnalysisSettings.analysisProps": "параметри Авто-Аналізу:", "UpdateAnalysisSettings.analyzeMode": "Авто-Стратегія Аналізу", "UpdateAnalysisSettings.autoAnalyze": "Автоанализатора перемикання", @@ -1820,7 +1824,6 @@ "UpdateAnalysisSettings.numberOfLogLines": "Кількість рядків лода", "UpdateAnalysisSettings.numbersInErrorLog": "вилучити цифри в журналі помилок", "UpdateAnalysisSettings.uniqueError": "перемикання унікальних помилок", - "UpdateAnalysisSettings.allMessagesShouldMatch": "переключення 'Всі журнали з 3 або більше рядками повинні збігатися'", "UpdateAnalysisSettings.updated": "оновив", "UserBlock.adminBadge": "Адміністратор", "UserBlock.administrate": "Адмініструвати", diff --git a/app/src/components/main/navLink/index.js b/app/src/components/main/navLink/index.js index e8b251d589..b92f166037 100644 --- a/app/src/components/main/navLink/index.js +++ b/app/src/components/main/navLink/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { NavLinkWrapper as NavLink } from './navLinkWrapper'; +import { NavLinkWrapper as NavLink } from './navLinkWrapper'; + +export { NavLink }; + +export default NavLink; diff --git a/app/src/controllers/plugins/uiExtensions/constants.js b/app/src/controllers/plugins/uiExtensions/constants.js index 3fc9b5fa4d..eff4f83c99 100644 --- a/app/src/controllers/plugins/uiExtensions/constants.js +++ b/app/src/controllers/plugins/uiExtensions/constants.js @@ -12,6 +12,7 @@ export const EXTENSION_TYPE_UNIQUE_ERROR_GRID_CELL_COMPONENT = export const EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT = 'uiExtension:uniqueErrorGridHeaderCellComponent'; export const EXTENSION_TYPE_LOGIN_PAGE = 'uiExtension:loginPage'; +export const EXTENSION_TYPE_REGISTRATION_PAGE = 'uiExtension:registrationPage'; export const COMMAND_GET_FILE = 'getFile'; export const COMMAND_GET_ISSUE_TYPES = 'getIssueTypes'; diff --git a/app/src/controllers/plugins/uiExtensions/index.js b/app/src/controllers/plugins/uiExtensions/index.js index 30699b6e6f..6713c4223d 100644 --- a/app/src/controllers/plugins/uiExtensions/index.js +++ b/app/src/controllers/plugins/uiExtensions/index.js @@ -12,5 +12,6 @@ export { uniqueErrorGridCellComponentSelector, uniqueErrorGridHeaderCellComponentSelector, uiExtensionLoginPageSelector, + uiExtensionRegistrationPageSelector, } from './selectors'; export { uiExtensionsReducer } from './reducer'; diff --git a/app/src/controllers/plugins/uiExtensions/selectors.js b/app/src/controllers/plugins/uiExtensions/selectors.js index 7bbf55ce43..b1382fca53 100644 --- a/app/src/controllers/plugins/uiExtensions/selectors.js +++ b/app/src/controllers/plugins/uiExtensions/selectors.js @@ -11,6 +11,7 @@ import { EXTENSION_TYPE_UNIQUE_ERROR_GRID_CELL_COMPONENT, EXTENSION_TYPE_UNIQUE_ERROR_GRID_HEADER_CELL_COMPONENT, EXTENSION_TYPE_LOGIN_PAGE, + EXTENSION_TYPE_REGISTRATION_PAGE, } from './constants'; import { domainSelector, @@ -81,3 +82,7 @@ export const uiExtensionLoginPageSelector = createExtensionSelectorByType( EXTENSION_TYPE_LOGIN_PAGE, enabledPublicPluginNamesSelector, ); +export const uiExtensionRegistrationPageSelector = createExtensionSelectorByType( + EXTENSION_TYPE_REGISTRATION_PAGE, + enabledPublicPluginNamesSelector, +); diff --git a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx index 3e3e7038b8..1fd4739574 100644 --- a/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx +++ b/app/src/pages/outside/loginPage/pageBlocks/loginBlock/loginBlock.jsx @@ -62,7 +62,7 @@ export const LoginBlock = () => { ) : null} {extensions && extensions.length !== 0 ? ( extensions.map((extension) => ( - + )) ) : ( diff --git a/app/src/pages/outside/registrationPage/registrationPage.jsx b/app/src/pages/outside/registrationPage/registrationPage.jsx index fae0dfffc1..9f6727d7b3 100644 --- a/app/src/pages/outside/registrationPage/registrationPage.jsx +++ b/app/src/pages/outside/registrationPage/registrationPage.jsx @@ -18,6 +18,9 @@ import classNames from 'classnames/bind'; import PropTypes from 'prop-types'; import { referenceDictionary } from 'common/utils'; import { defineMessages, FormattedMessage } from 'react-intl'; +import React from 'react'; +import Link from 'redux-first-router-link'; +import { LOGIN_PAGE } from 'controllers/pages'; import { BlockHeader } from '../common/pageBlockContainer/blockHeader'; import { RegistrationPageSection } from './registrationPageSection'; import { RegistrationFailBlock } from './registrationFailBlock'; @@ -111,6 +114,12 @@ const TokenErrorSection = ({ tokenProvided }) => ( ReportPortal.io +
+ + + + +
); diff --git a/app/src/pages/outside/registrationPage/registrationPageContainer.jsx b/app/src/pages/outside/registrationPage/registrationPageContainer.jsx index cb02ace30f..e0bd604e90 100644 --- a/app/src/pages/outside/registrationPage/registrationPageContainer.jsx +++ b/app/src/pages/outside/registrationPage/registrationPageContainer.jsx @@ -14,28 +14,43 @@ * limitations under the License. */ -import { Component } from 'react'; +import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { connectRouter, fetch } from 'common/utils'; import { loginAction } from 'controllers/auth'; import { showNotification, NOTIFICATION_TYPES } from 'controllers/notification'; import { URLS } from 'common/urls'; +import { uiExtensionRegistrationPageSelector } from 'controllers/plugins/uiExtensions'; +import { ExtensionLoader } from 'components/extensionLoader'; +import { pagePropertiesSelector } from 'controllers/pages'; import { RegistrationPage } from './registrationPage'; -@connect(null, { - loginAction, - showNotification, -}) +const TYPE_SIGNUP = 'signup'; + +@connect( + (state) => ({ + extensions: uiExtensionRegistrationPageSelector(state), + pageProps: pagePropertiesSelector(state), + }), + { + loginAction, + showNotification, + }, +) @connectRouter(({ uuid }) => ({ uuid })) export class RegistrationPageContainer extends Component { static propTypes = { uuid: PropTypes.string, loginAction: PropTypes.func.isRequired, showNotification: PropTypes.func.isRequired, + extensions: PropTypes.array, + pageProps: PropTypes.object, }; static defaultProps = { uuid: undefined, + extensions: [], + pageProps: {}, }; state = { @@ -90,13 +105,32 @@ export class RegistrationPageContainer extends Component { render() { const uuid = this.props.uuid; - return !uuid || this.state.isLoadingFinished ? ( - - ) : null; + const { + extensions, + pageProps: { type }, + } = this.props; + + return ( + !uuid || + (this.state.isLoadingFinished && + (type === TYPE_SIGNUP && extensions.length !== 0 ? ( + extensions.map((extension) => ( + + )) + ) : ( + + ))) + ); } } diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index 823ae7643b..e5200da465 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -101,6 +101,7 @@ module.exports = { './FieldErrorHint': './src/components/fields/fieldErrorHint', './BigButton': './src/components/buttons/bigButton', './InputOutside': './src/components/inputs/inputOutside', + './NavLink': './src/components/main/navLink', }, shared: { react: { @@ -121,6 +122,9 @@ module.exports = { 'redux-form': { singleton: true, }, + 'redux-first-router': { + singleton: true, + }, classnames: { singleton: true, }, From 971ed311d2f3ab14431309a6137505c92729d446 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Mon, 18 Apr 2022 11:49:35 +0300 Subject: [PATCH 056/284] EPMRPP-76473 || Share components and loginAction for plugins (#3072) Co-authored-by: Artsiom Sadouski --- app/src/components/fields/fieldBottomConstraints/index.js | 6 +++++- .../controllers/plugins/uiExtensions/createImportProps.js | 2 ++ .../outside/common/pageBlockContainer/blockHeader/index.js | 6 +++++- .../registrationPage/registrationPageSection/index.js | 6 +++++- app/webpack/base.config.js | 3 +++ 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/components/fields/fieldBottomConstraints/index.js b/app/src/components/fields/fieldBottomConstraints/index.js index b373ca8110..c1d181b951 100644 --- a/app/src/components/fields/fieldBottomConstraints/index.js +++ b/app/src/components/fields/fieldBottomConstraints/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { FieldBottomConstraints } from './fieldBottomConstraints'; +import { FieldBottomConstraints } from './fieldBottomConstraints'; + +export { FieldBottomConstraints }; + +export default FieldBottomConstraints; diff --git a/app/src/controllers/plugins/uiExtensions/createImportProps.js b/app/src/controllers/plugins/uiExtensions/createImportProps.js index c837ccff60..7a3eea2e58 100644 --- a/app/src/controllers/plugins/uiExtensions/createImportProps.js +++ b/app/src/controllers/plugins/uiExtensions/createImportProps.js @@ -168,6 +168,7 @@ import { publicPluginsSelector, createGlobalNamedIntegrationsSelector, } from 'controllers/plugins/selectors'; +import { loginAction } from 'controllers/auth'; const BUTTONS = { GhostButton, @@ -280,6 +281,7 @@ export const createImportProps = (pluginName) => ({ updateLaunchLocallyAction, updatePagePropertiesAction, showDefaultErrorNotification, + loginAction, }, selectors: { pluginRouteSelector, diff --git a/app/src/pages/outside/common/pageBlockContainer/blockHeader/index.js b/app/src/pages/outside/common/pageBlockContainer/blockHeader/index.js index bd3b747358..d2b4dc6d4b 100644 --- a/app/src/pages/outside/common/pageBlockContainer/blockHeader/index.js +++ b/app/src/pages/outside/common/pageBlockContainer/blockHeader/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { BlockHeader } from './blockHeader'; +import { BlockHeader } from './blockHeader'; + +export { BlockHeader }; + +export default BlockHeader; diff --git a/app/src/pages/outside/registrationPage/registrationPageSection/index.js b/app/src/pages/outside/registrationPage/registrationPageSection/index.js index 7a648195a5..ceb7b872f8 100644 --- a/app/src/pages/outside/registrationPage/registrationPageSection/index.js +++ b/app/src/pages/outside/registrationPage/registrationPageSection/index.js @@ -14,4 +14,8 @@ * limitations under the License. */ -export { RegistrationPageSection } from './registrationPageSection'; +import { RegistrationPageSection } from './registrationPageSection'; + +export { RegistrationPageSection }; + +export default RegistrationPageSection; diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index e5200da465..e491914365 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -102,6 +102,9 @@ module.exports = { './BigButton': './src/components/buttons/bigButton', './InputOutside': './src/components/inputs/inputOutside', './NavLink': './src/components/main/navLink', + './FieldBottomConstraints': './src/components/fields/fieldBottomConstraints', + './RegistrationPageSection': './src/pages/outside/registrationPage/registrationPageSection', + './BlockHeader': './src/pages/outside/common/pageBlockContainer/blockHeader', }, shared: { react: { From 3f409da8177b15f2b6d8112cee38c56d001e6a30 Mon Sep 17 00:00:00 2001 From: Mikhail Sidarkevich <42434528+chivekrodis@users.noreply.github.com> Date: Mon, 18 Apr 2022 16:35:10 +0300 Subject: [PATCH 057/284] EPMRPP-76662 || fix project setting header, crash on reload for plugins (#3073) --- .../inside/projectSettingsPageContainer/header/header.scss | 1 + .../projectSettingsPageContainer.jsx | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/pages/inside/projectSettingsPageContainer/header/header.scss b/app/src/pages/inside/projectSettingsPageContainer/header/header.scss index 89fd145628..c6429f5c04 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/header/header.scss +++ b/app/src/pages/inside/projectSettingsPageContainer/header/header.scss @@ -32,4 +32,5 @@ font-size: 20px; line-height: 31px; color: $COLOR--almost-black; + text-transform: capitalize; } diff --git a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx index b47f83fd3b..281249a06e 100644 --- a/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx +++ b/app/src/pages/inside/projectSettingsPageContainer/projectSettingsPageContainer.jsx @@ -168,7 +168,7 @@ export const ProjectSettingsPageContainer = () => {
-
+
{content}
From 6b839176ad8366b3223a3dc45e823a52f07365bf Mon Sep 17 00:00:00 2001 From: Ilya Date: Tue, 19 Apr 2022 03:36:01 +0300 Subject: [PATCH 058/284] Add caching headers. Fix WMF files caching (#3075) * Add caching headers. Fix WMF files caching * Fix indentation --- app/webpack/base.config.js | 1 - nginx.conf | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/webpack/base.config.js b/app/webpack/base.config.js index e491914365..8ef2ebcf71 100644 --- a/app/webpack/base.config.js +++ b/app/webpack/base.config.js @@ -95,7 +95,6 @@ module.exports = { }), new ModuleFederationPlugin({ name: 'main_app', - filename: 'main_app.js', exposes: { './FieldProvider': './src/components/fields', './FieldErrorHint': './src/components/fields/fieldErrorHint', diff --git a/nginx.conf b/nginx.conf index 6f5b82d778..72fe91fb8c 100644 --- a/nginx.conf +++ b/nginx.conf @@ -34,16 +34,20 @@ http { #fallback location / { + add_header Cache-Control "no-cache"; + add_header X-Frame-Options "DENY"; try_files $uri /index.html; } # media, fonts location ~* ([^/\\&\?]+\.+(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2))$ { + add_header Cache-Control "public, must-revalidate"; try_files $uri /media/$1 404; } # assets location ~* ([^/\\&\?]+\.+(js|css|ico))$ { + add_header Cache-Control "public, must-revalidate"; try_files $uri /$1 404; } From 2a7da5d28ac8cddea5e7108131f8277d8c998e2d Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:25:28 +0300 Subject: [PATCH 059/284] EPMRPP-76492 || Tabs component (#3061) * EPMRPP-76492 || Tabs component * EPMRPP-76492 || code review fixes - 1 Co-authored-by: Aleksandr Zyabrev --- app/src/common/css/variables/newColors.scss | 1 + app/src/components/main/tabs/index.js | 17 ++++ app/src/components/main/tabs/tabs.jsx | 95 +++++++++++++++++++++ app/src/components/main/tabs/tabs.scss | 45 ++++++++++ 4 files changed, 158 insertions(+) create mode 100644 app/src/components/main/tabs/index.js create mode 100644 app/src/components/main/tabs/tabs.jsx create mode 100644 app/src/components/main/tabs/tabs.scss diff --git a/app/src/common/css/variables/newColors.scss b/app/src/common/css/variables/newColors.scss index 74668d4be5..68c4b4b395 100644 --- a/app/src/common/css/variables/newColors.scss +++ b/app/src/common/css/variables/newColors.scss @@ -37,3 +37,4 @@ $COLOR--almost-black: #3f3f3f; $COLOR--bg-100: #f7f7f8; $COLOR--bg-000: #ffffff; $COLOR--e-100: #e3e7ec; +$COLOR--topaz-2: #00829b; diff --git a/app/src/components/main/tabs/index.js b/app/src/components/main/tabs/index.js new file mode 100644 index 0000000000..103fe6e97d --- /dev/null +++ b/app/src/components/main/tabs/index.js @@ -0,0 +1,17 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { Tabs } from './tabs'; diff --git a/app/src/components/main/tabs/tabs.jsx b/app/src/components/main/tabs/tabs.jsx new file mode 100644 index 0000000000..183c66410e --- /dev/null +++ b/app/src/components/main/tabs/tabs.jsx @@ -0,0 +1,95 @@ +/* + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import PropTypes from 'prop-types'; +import classNames from 'classnames/bind'; + +import React, { useEffect, useState } from 'react'; +import { NavLink } from 'components/main/navLink'; +import styles from './tabs.scss'; + +const cx = classNames.bind(styles); + +export const Tabs = ({ config, activeTab }) => { + const [activeTabIndex, setActiveTabIndex] = useState(Object.keys(config).indexOf(activeTab) || 0); + + useEffect(() => { + if (activeTab) { + setActiveTabIndex(Object.keys(config).indexOf(activeTab)); + } + }, [activeTab, config]); + + const activeTabKey = Object.keys(config)[activeTabIndex]; + const activeTabInfo = config[activeTabKey]; + + const onClickTab = (index) => { + setActiveTabIndex(index); + }; + + const renderLinkTab = (item, index) => { + return ( + onClickTab(index)} + > + {config[item].name} + + ); + }; + + const renderDefaultTab = (item, index) => { + return ( +
onClickTab(index)} + className={cx('tab', { 'active-tab': activeTabIndex === index })} + > + {config[item].name} +
+ ); + }; + + return ( +
+
+ {Object.keys(config).map((item, index) => { + return config[item].link ? renderLinkTab(item, index) : renderDefaultTab(item, index); + })} +
+
{activeTabInfo.component}
+
+ ); +}; + +Tabs.propTypes = { + activeTab: PropTypes.string, + config: PropTypes.objectOf( + PropTypes.shape({ + name: PropTypes.node, + link: PropTypes.object, + component: PropTypes.Element, + eventInfo: PropTypes.object, + mobileDisabled: PropTypes.bool, + }), + ), +}; +Tabs.defaultProps = { + activeTab: '', + config: {}, +}; diff --git a/app/src/components/main/tabs/tabs.scss b/app/src/components/main/tabs/tabs.scss new file mode 100644 index 0000000000..fe10008487 --- /dev/null +++ b/app/src/components/main/tabs/tabs.scss @@ -0,0 +1,45 @@ +/*! + * Copyright 2022 EPAM Systems + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.tabs { + display: flex; +} + +.tab { + position: relative; + font-family: $FONT-ROBOTO-BOLD; + line-height: 24px; + font-size: 15px; + color: $COLOR--almost-black; + margin-right: 24px; + text-decoration: none; + cursor: pointer; +} + +.active-tab { + color: $COLOR--topaz-2; + &:before { + position: absolute; + bottom: -8px; + left: 0; + right: 0; + border-radius: 1px; + display: block; + height: 3px; + background: $COLOR--topaz-2; + content: ''; + } +} From 316f9e0bc5d2289a1c2a0809719f984bc4a867af Mon Sep 17 00:00:00 2001 From: Aleksandr Zyabrev <40700843+oranje322@users.noreply.github.com> Date: Tue, 19 Apr 2022 10:27:32 +0300 Subject: [PATCH 060/284] EPMRPP-76394 || fix vulnerabilities (#3074) Co-authored-by: Aleksandr Zyabrev --- app/package-lock.json | 280 +++++++++++++++++++++++++++--------------- app/package.json | 2 +- 2 files changed, 179 insertions(+), 103 deletions(-) diff --git a/app/package-lock.json b/app/package-lock.json index 70fa0e814f..96995fc870 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -4342,9 +4342,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "slash": { @@ -5325,10 +5325,13 @@ } }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } }, "normalize-path": { "version": "3.0.0", @@ -5438,6 +5441,18 @@ } } }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, "webpack": { "version": "4.43.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", @@ -5467,6 +5482,30 @@ "terser-webpack-plugin": "^1.4.3", "watchpack": "^1.6.1", "webpack-sources": "^1.4.1" + }, + "dependencies": { + "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" + } + } + } + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } } } @@ -7004,15 +7043,23 @@ } }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "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": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" + }, + "dependencies": { + "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 + } } }, "ajv-errors": { @@ -7517,9 +7564,9 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, "requires": { "lodash": "^4.17.14" @@ -7625,9 +7672,9 @@ }, "dependencies": { "follow-redirects": { - "version": "1.14.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", - "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" } } }, @@ -9801,9 +9848,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "is-fullwidth-code-point": { @@ -12691,9 +12738,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "cross-spawn": { @@ -13893,24 +13940,10 @@ "dev": true }, "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "dev": true, - "requires": { - "debug": "=3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } - } + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true }, "for-in": { "version": "1.0.2", @@ -16252,9 +16285,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true } } @@ -17082,9 +17115,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "strip-ansi": { @@ -17472,12 +17505,6 @@ "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", @@ -17536,15 +17563,23 @@ "dev": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "dependencies": { + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + } } }, "jsx-ast-utils": { @@ -18197,9 +18232,9 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "lodash._getnative": { "version": "3.9.1", @@ -18501,6 +18536,14 @@ "requires": { "loader-utils": "^1.2.3", "marked": "^0.7.0" + }, + "dependencies": { + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", + "dev": true + } } }, "markdown-table": { @@ -18848,9 +18891,9 @@ } }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", "dev": true }, "minimist-options": { @@ -18936,9 +18979,9 @@ } }, "moment": { - "version": "2.25.3", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.25.3.tgz", - "integrity": "sha512-PuYv0PHxZvzc15Sp8ybUCoQ+xpyPWvjOuK72a5ovzp2LI32rJXOiIfyoFoYvG3s6EwwrdkMyWuRiEHSZRLJNdg==" + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" }, "moo": { "version": "0.4.3", @@ -19232,9 +19275,9 @@ } }, "node-forge": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.2.1.tgz", - "integrity": "sha512-Fcvtbb+zBcZXbTTVwqGA5W+MKBj56UjVRevvchv5XrcyXbmNdesfZL37nlcWOfpgHhgmxApw3tQbTr4CqNmX4w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true }, "node-gyp": { @@ -21374,9 +21417,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true } } @@ -21394,9 +21437,9 @@ "dev": true }, "prismjs": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.25.0.tgz", - "integrity": "sha512-WCjJHl1KEWbnkQom1+SzftbtXMKQoezOCYs5rECqMN+jP+apI7ftoflyqigqzopSO3hMhTEb0mFClA8lkolgEg==" + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" }, "private": { "version": "0.1.8", @@ -22119,9 +22162,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true } } @@ -24194,9 +24237,9 @@ "dev": true }, "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "requires": { "glob": "^7.0.0", @@ -24560,6 +24603,24 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } } } }, @@ -25131,6 +25192,14 @@ "react-element-to-jsx-string": "^14.0.2", "string-raw": "^1.0.1", "vuex": "^3.1.0" + }, + "dependencies": { + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", + "dev": true + } } }, "stream": { @@ -25498,9 +25567,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "braces": { @@ -26270,15 +26339,15 @@ } }, "react-syntax-highlighter": { - "version": "15.4.5", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.4.5.tgz", - "integrity": "sha512-RC90KQTxZ/b7+9iE6s9nmiFLFjWswUcfULi4GwVzdFVKVMQySkJWBuOmJFfjwjMVCo0IUUuJrWebNKyviKpwLQ==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz", + "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==", "requires": { "@babel/runtime": "^7.3.1", "highlight.js": "^10.4.1", "lowlight": "^1.17.0", - "prismjs": "^1.25.0", - "refractor": "^3.2.0" + "prismjs": "^1.27.0", + "refractor": "^3.6.0" } }, "redux": { @@ -26293,13 +26362,20 @@ } }, "refractor": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.5.0.tgz", - "integrity": "sha512-QwPJd3ferTZ4cSPPjdP5bsYHMytwWYnAN5EEnLtGvkqp/FCCnGsBgxrm9EuIDnjUC3Uc/kETtvVi7fSIVC74Dg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", + "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==", "requires": { "hastscript": "^6.0.0", "parse-entities": "^2.0.0", - "prismjs": "~1.25.0" + "prismjs": "~1.27.0" + }, + "dependencies": { + "prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" + } } }, "reselect": { @@ -27218,9 +27294,9 @@ } }, "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -28832,9 +28908,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true }, "is-fullwidth-code-point": { @@ -28892,9 +28968,9 @@ } }, "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", "dev": true, "requires": { "async-limiter": "~1.0.0" diff --git a/app/package.json b/app/package.json index f0d32fed07..9f6ec5da8d 100644 --- a/app/package.json +++ b/app/package.json @@ -49,7 +49,7 @@ "intl": "1.2.5", "intl-locales-supported": "1.8.4", "marked": "0.7.0", - "moment": "2.25.3", + "moment": "^2.29.3", "object.values": "1.1.1", "perf-cascade": "2.5.4", "polyfill-array-includes": "2.0.0", From cdcd4b33ec53aad09a1ac7f12807aafad75dc496 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Wed, 20 Apr 2022 18:38:05 +0300 Subject: [PATCH 061/284] EPMRPP-76685 || Failed token message style fix (#3076) Co-authored-by: Artsiom Sadouski --- app/src/pages/outside/registrationPage/registrationPage.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/pages/outside/registrationPage/registrationPage.scss b/app/src/pages/outside/registrationPage/registrationPage.scss index 03140c53c9..e21a6b78ce 100644 --- a/app/src/pages/outside/registrationPage/registrationPage.scss +++ b/app/src/pages/outside/registrationPage/registrationPage.scss @@ -148,6 +148,7 @@ font-family: $FONT-REGULAR; font-size: 16px; color: $COLOR--steel-grey; + line-height: 1.375; } .backlink { color: $COLOR--tealish; From a7bcb0305cf60e218a4349f58db74df1fa56da24 Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Thu, 21 Apr 2022 18:08:16 +0300 Subject: [PATCH 062/284] EPMRPP-76676 || Registration button during request disabling (#3078) Co-authored-by: Artsiom Sadouski --- .../registrationForm/registrationForm.jsx | 6 ++++-- .../outside/registrationPage/registrationPage.jsx | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/pages/outside/registrationPage/registrationForm/registrationForm.jsx b/app/src/pages/outside/registrationPage/registrationForm/registrationForm.jsx index 00dc2cc38c..6d66cd39ac 100644 --- a/app/src/pages/outside/registrationPage/registrationForm/registrationForm.jsx +++ b/app/src/pages/outside/registrationPage/registrationForm/registrationForm.jsx @@ -83,11 +83,13 @@ export class RegistrationForm extends Component { handleSubmit: PropTypes.func.isRequired, autofill: PropTypes.func.isRequired, email: PropTypes.string, + loading: PropTypes.bool, }; static defaultProps = { submitForm: () => {}, email: '', + loading: false, }; componentDidMount = () => { @@ -107,7 +109,7 @@ export class RegistrationForm extends Component { }); render() { - const { handleSubmit, intl } = this.props; + const { handleSubmit, intl, loading } = this.props; const { formatMessage } = intl; return ( @@ -177,7 +179,7 @@ export class RegistrationForm extends Component {
- +
diff --git a/app/src/pages/outside/registrationPage/registrationPage.jsx b/app/src/pages/outside/registrationPage/registrationPage.jsx index 9f6727d7b3..43856bb94c 100644 --- a/app/src/pages/outside/registrationPage/registrationPage.jsx +++ b/app/src/pages/outside/registrationPage/registrationPage.jsx @@ -40,7 +40,13 @@ const messages = defineMessages({ }, }); -export const RegistrationPage = ({ tokenActive, tokenProvided, email, onRegistrationSubmit }) => { +export const RegistrationPage = ({ + tokenActive, + tokenProvided, + email, + onRegistrationSubmit, + loading, +}) => { const backgroundClasses = { background: true, failed: !tokenProvided || !tokenActive, @@ -67,7 +73,7 @@ export const RegistrationPage = ({ tokenActive, tokenProvided, email, onRegistra {tokenProvided && tokenActive ? (
- +
) : ( @@ -82,12 +88,14 @@ RegistrationPage.propTypes = { tokenProvided: PropTypes.bool, email: PropTypes.string, onRegistrationSubmit: PropTypes.func, + loading: PropTypes.bool, }; RegistrationPage.defaultProps = { tokenActive: false, tokenProvided: false, email: '', onRegistrationSubmit: () => {}, + loading: false, }; const TokenErrorSection = ({ tokenProvided }) => ( @@ -125,7 +133,9 @@ const TokenErrorSection = ({ tokenProvided }) => ( ); TokenErrorSection.propTypes = { tokenProvided: PropTypes.bool, + loading: PropTypes.bool, }; TokenErrorSection.defaultProps = { tokenProvided: false, + loading: false, }; From 6d1fdc45c24e0206a347328e0080af7de50e933a Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Wed, 27 Apr 2022 10:12:49 +0300 Subject: [PATCH 063/284] EPMRPP-76542 || Integrations section hiding depending on flag (#3079) * EPMRPP-76542 || Integrations section hiding depending on flag * EPMRPP-76542 || Code review fixes - 1 * EPMRPP-76542 || Code review fixes - 2 Co-authored-by: Artsiom Sadouski --- .../instancesSection/instancesSection.jsx | 82 +++++++++++-------- 1 file changed, 46 insertions(+), 36 deletions(-) diff --git a/app/src/components/integrations/containers/integrationInfoContainer/instancesSection/instancesSection.jsx b/app/src/components/integrations/containers/integrationInfoContainer/instancesSection/instancesSection.jsx index dfb955d356..991409d393 100644 --- a/app/src/components/integrations/containers/integrationInfoContainer/instancesSection/instancesSection.jsx +++ b/app/src/components/integrations/containers/integrationInfoContainer/instancesSection/instancesSection.jsx @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - import React, { Component, Fragment } from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; @@ -294,27 +293,68 @@ export class InstancesSection extends Component { accountRole, userRole, isGlobal, + pluginDetails: { metadata }, } = this.props; const isProjectIntegrationsExists = !!projectIntegrations.length; const disabled = !canUpdateSettings(accountRole, userRole); const globalIntegrationMessage = this.multiple ? messages.globalIntegrations : messages.globalIntegration; + const isIntegrationsAllowed = + metadata && metadata.isIntegrationsAllowed !== undefined + ? metadata.isIntegrationsAllowed + : true; return (
- {isProjectIntegrationsExists && !isGlobal && ( + {isIntegrationsAllowed && ( + {isProjectIntegrationsExists && !isGlobal && ( + + + {this.multiple && !disabled && ( +
+ + {formatMessage(messages.addIntegrationButtonTitle)} + +
+ )} +
+ )} - {this.multiple && !disabled && ( + {!globalIntegrations.length && ( +

+ {formatMessage(messages.noGlobalIntegrationMessage)} +

+ )} + {(this.multiple || !globalIntegrations.length) && !disabled && isGlobal && (
{formatMessage(messages.addIntegrationButtonTitle)} @@ -323,36 +363,6 @@ export class InstancesSection extends Component { )} )} - - {!globalIntegrations.length && ( -

- {formatMessage(messages.noGlobalIntegrationMessage)} -

- )} - {(this.multiple || !globalIntegrations.length) && !disabled && isGlobal && ( -
- - {formatMessage(messages.addIntegrationButtonTitle)} - -
- )} {isGlobal && !this.builtin && (

From bf48737f943b886a31cccf3b3fa2ed7f87c32a4a Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Wed, 27 Apr 2022 19:13:54 +0300 Subject: [PATCH 064/284] EPMRPP-76606 || Disable tooltip and message from plugin details (#3080) * EPMRPP-76606 || Disable tooltip and message from plugin details * EPMRPP-76606 || code review fixes - 1 * EPMRPP-76606 || code review fixes - 2 Co-authored-by: Artsiom Sadouski --- app/localization/translated/be.json | 3 ++- app/localization/translated/ru.json | 3 ++- app/localization/translated/uk.json | 3 ++- .../infoSection/infoSection.jsx | 9 +++++++-- .../integrationInfoContainer.jsx | 1 + .../pluginsItem/pluginsItem.jsx | 19 +++++++++++++++---- .../pluginsTabs/installedTab/installedTab.jsx | 15 ++++++++++----- 7 files changed, 39 insertions(+), 14 deletions(-) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index dae20367ac..37883b4e02 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -1378,7 +1378,7 @@ "PhotoControls.uploadError": "Не ўдалося абнавіць фота", "PhotoControls.uploadPhoto": "Запампаваць Фотаздымак", "PhotoControls.wasDeleted": "Фота паспяхова выдалена", - "PluginItem.disablePluginMessage": "Вы ўпэўнены, што хочаце адключыць плагін {pluginName}? Калі вы адключыце плагін, інфармацыя пра яго будзе хавацца ў наладах праекта, і карыстальнікі не змогуць з ім ўзаемадзейнічаць", + "PluginItem.disablePluginMessage": "Вы ўпэўнены, што хочаце адключыць плагін {pluginName}? Калі вы адключыце плагін, інфармацыя пра яго будзе хавацца ў {pluginLocation}, і карыстальнікі не змогуць з ім ўзаемадзейнічаць", "PluginItem.disablePluginTitle": "Адключыць плагін", "PluginItem.disabledPluginMessage": "Плагін быў адключаны", "PluginItem.enablePluginMessage": "Вы ўпэўнены, што хочаце уключыць плагін {pluginName}?", @@ -1596,6 +1596,7 @@ "ServerSettingsTabs.updateAuthSuccess": "Налады інтэграцыі OAuth абноўлены", "ServiceVersionItem.newVersion": "Даступны новыя версіі: {newVersion}", "ServiceVersionsBlock.currentVersion": "Бягучая версія", + "SettingsPage.analysis": "Аўтааналіз", "SettingsPage.analyzer": "Аналайзер", "SettingsPage.defect": "Тыпы дэфектаў", "SettingsPage.demoData": "Дэма-дадзеныя", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index b567585735..c0abcc79e4 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -1378,7 +1378,7 @@ "PhotoControls.uploadError": "Не удалось обновить фото", "PhotoControls.uploadPhoto": "Загрузить Фото", "PhotoControls.wasDeleted": "Фото успешно удалено", - "PluginItem.disablePluginMessage": "Вы действительно хотите отключить плагин {pluginName}? Если вы отключите плагин, информация о нем будет скрыта в настройках проекта, и пользователи не смогут с ним взаимодействовать", + "PluginItem.disablePluginMessage": "Вы действительно хотите отключить плагин {pluginName}? Если вы отключите плагин, информация о нем будет скрыта в {pluginLocation}, и пользователи не смогут с ним взаимодействовать", "PluginItem.disablePluginTitle": "Отключить плагин", "PluginItem.disabledPluginMessage": "Плагин был отключен", "PluginItem.enablePluginMessage": "Вы действительно хотите включить плагин {pluginName}?", @@ -1596,6 +1596,7 @@ "ServerSettingsTabs.updateAuthSuccess": "Настройки интеграции OAuth обновлены", "ServiceVersionItem.newVersion": "Доступна новая версия: {newVersion}", "ServiceVersionsBlock.currentVersion": "Текущая версия", + "SettingsPage.analysis": "Автоанализ", "SettingsPage.analyzer": "Аналайзер", "SettingsPage.defect": "Типы дефектов", "SettingsPage.demoData": "Демо данные", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index b83001edb5..be159978cf 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -1378,7 +1378,7 @@ "PhotoControls.uploadError": "Фото Не вдалося оновити", "PhotoControls.uploadPhoto": "Фото Завантажити", "PhotoControls.wasDeleted": "Фото успішно видалено", - "PluginItem.disablePluginMessage": "Ви впевнені, що хочете вимкнути плагін {pluginName}? Якщо ви вимкнете плагін, інформація про нього буде прихована в Налаштуваннях проекту, і користувачі не можуть взаємодіяти з ним", + "PluginItem.disablePluginMessage": "Ви впевнені, що хочете вимкнути плагін {pluginName}? Якщо ви вимкнете плагін, інформація про нього буде прихована в {pluginLocation}, і користувачі не можуть взаємодіяти з ним", "PluginItem.disablePluginTitle": "Вимкнути плагін", "PluginItem.disabledPluginMessage": "Плагін був відключений", "PluginItem.enablePluginMessage": "Ви впевнені, що хочете увімкнути плагін {pluginName}?", @@ -1596,6 +1596,7 @@ "ServerSettingsTabs.updateAuthSuccess": "Налаштування інтеграції з OAuth оновлено", "ServiceVersionItem.newVersion": "Доступна новая версия: {newVersion}", "ServiceVersionsBlock.currentVersion": "Поточна версія", + "SettingsPage.analysis": "Автоаналіз", "SettingsPage.analyzer": "Аналайзер", "SettingsPage.defect": "Типи дефектів", "SettingsPage.demoData": "Демо дані", diff --git a/app/src/components/integrations/containers/integrationInfoContainer/infoSection/infoSection.jsx b/app/src/components/integrations/containers/integrationInfoContainer/infoSection/infoSection.jsx index 0053c41859..335c7a7c06 100644 --- a/app/src/components/integrations/containers/integrationInfoContainer/infoSection/infoSection.jsx +++ b/app/src/components/integrations/containers/integrationInfoContainer/infoSection/infoSection.jsx @@ -48,6 +48,7 @@ export class InfoSection extends Component { onToggleActive: PropTypes.func, showToggleConfirmationModal: PropTypes.func, isGlobal: PropTypes.bool, + pluginDetails: PropTypes.object, }; static defaultProps = { @@ -56,6 +57,7 @@ export class InfoSection extends Component { onToggleActive: () => {}, showToggleConfirmationModal: () => {}, isGlobal: false, + pluginDetails: {}, }; state = { @@ -106,10 +108,11 @@ export class InfoSection extends Component { data: { name }, title, showToggleConfirmationModal, + pluginDetails: { pluginLocation }, } = this.props; const { isEnabled } = this.state; - showToggleConfirmationModal(isEnabled, title || name, this.toggleActiveHandler); + showToggleConfirmationModal(isEnabled, title || name, this.toggleActiveHandler, pluginLocation); }; render() { @@ -120,6 +123,7 @@ export class InfoSection extends Component { version, description, isGlobal, + pluginDetails: { disabledPluginTooltip }, } = this.props; const { expanded, withShowMore, isEnabled } = this.state; const isPartiallyShown = withShowMore && !expanded; @@ -147,7 +151,8 @@ export class InfoSection extends Component { title={ isEnabled ? '' - : formatMessage(PLUGIN_DISABLED_MESSAGES_BY_GROUP_TYPE[groupType], { + : disabledPluginTooltip || + formatMessage(PLUGIN_DISABLED_MESSAGES_BY_GROUP_TYPE[groupType], { name: title, }) } diff --git a/app/src/components/integrations/containers/integrationInfoContainer/integrationInfoContainer.jsx b/app/src/components/integrations/containers/integrationInfoContainer/integrationInfoContainer.jsx index 6573424335..fc685b329a 100644 --- a/app/src/components/integrations/containers/integrationInfoContainer/integrationInfoContainer.jsx +++ b/app/src/components/integrations/containers/integrationInfoContainer/integrationInfoContainer.jsx @@ -91,6 +91,7 @@ export class IntegrationInfoContainer extends Component { onToggleActive={onToggleActive} showToggleConfirmationModal={showToggleConfirmationModal} isGlobal={isGlobal} + pluginDetails={details} /> { const { - data: { name, enabled }, + data: { + name, + enabled, + details: { pluginLocation }, + }, showToggleConfirmationModal, } = this.props; const pluginName = PLUGIN_NAME_TITLES[name] || name; - showToggleConfirmationModal(enabled, pluginName, this.toggleActiveHandler); + showToggleConfirmationModal(enabled, pluginName, this.toggleActiveHandler, pluginLocation); }; render() { const { intl: { formatMessage }, - data: { name, uploadedBy, enabled, groupType, details: { version } = {} }, + data: { + name, + uploadedBy, + enabled, + groupType, + details: { version, disabledPluginTooltip } = {}, + }, toggleable, } = this.props; const pluginName = PLUGIN_NAME_TITLES[name] || name; @@ -115,7 +125,8 @@ export class PluginsItem extends Component { title={ enabled ? '' - : formatMessage(PLUGIN_DISABLED_MESSAGES_BY_GROUP_TYPE[groupType], { name: pluginName }) + : disabledPluginTooltip || + formatMessage(PLUGIN_DISABLED_MESSAGES_BY_GROUP_TYPE[groupType], { name: pluginName }) } >
diff --git a/app/src/pages/admin/pluginsPage/pluginsTabs/installedTab/installedTab.jsx b/app/src/pages/admin/pluginsPage/pluginsTabs/installedTab/installedTab.jsx index 2478b737fa..a22210d4fc 100644 --- a/app/src/pages/admin/pluginsPage/pluginsTabs/installedTab/installedTab.jsx +++ b/app/src/pages/admin/pluginsPage/pluginsTabs/installedTab/installedTab.jsx @@ -67,7 +67,7 @@ const messages = defineMessages({ disablePluginMessage: { id: 'PluginItem.disablePluginMessage', defaultMessage: - 'Are you sure you want to disable a plugin {pluginName}? If you disable plugin, information about it will be hidden on the Project Settings and users can not interact with it', + 'Are you sure you want to disable a plugin {pluginName}? If you disable plugin, information about it will be hidden on the {pluginLocation} and users can not interact with it', }, enablePluginTitle: { id: 'PluginItem.enablePluginTitle', @@ -153,7 +153,7 @@ export class InstalledTab extends Component { }); }; - showDisablePluginModal = (pluginName, callback) => { + showDisablePluginModal = (pluginName, pluginLocation, callback) => { const { intl: { formatMessage }, } = this.props; @@ -161,7 +161,7 @@ export class InstalledTab extends Component { this.props.showModalAction({ id: 'confirmationModal', data: { - message: formatMessage(messages.disablePluginMessage, { pluginName }), + message: formatMessage(messages.disablePluginMessage, { pluginName, pluginLocation }), onConfirm: callback, dangerConfirm: true, title: formatMessage(messages.disablePluginTitle), @@ -171,9 +171,14 @@ export class InstalledTab extends Component { }); }; - showToggleConfirmationModal = (isEnabled, pluginName, callback) => { + showToggleConfirmationModal = ( + isEnabled, + pluginName, + callback, + pluginLocation = 'Project Settings', + ) => { isEnabled - ? this.showDisablePluginModal(pluginName, callback) + ? this.showDisablePluginModal(pluginName, pluginLocation, callback) : this.showEnablePluginModal(pluginName, callback); }; From d9b2e08a139f4631eecebf0cdcad3a2b4e72790c Mon Sep 17 00:00:00 2001 From: tr1ble <43150561+tr1ble@users.noreply.github.com> Date: Thu, 28 Apr 2022 16:27:16 +0300 Subject: [PATCH 065/284] EPMRPP-76850 || App footer links (#3084) Co-authored-by: Artsiom Sadouski --- app/localization/translated/be.json | 2 ++ app/localization/translated/ru.json | 2 ++ app/localization/translated/uk.json | 2 ++ app/src/common/utils/referenceDictionary.js | 2 ++ app/src/layouts/common/footer/footer.jsx | 18 +++++++++++++++--- 5 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/localization/translated/be.json b/app/localization/translated/be.json index 37883b4e02..8ca8611bdb 100644 --- a/app/localization/translated/be.json +++ b/app/localization/translated/be.json @@ -691,6 +691,8 @@ "Footer.copyright": "Усе правы абаронены.", "Footer.documentation": "Дакументацыя", "Footer.git": "Мы на GitHub", + "Footer.notice": "Паведамленне аб канфідэнцыяльнасці", + "Footer.privacy": "Палітыка прыватнасці", "Footer.slack": "Паразмаўляем у Slack", "ForceUpdateModal.additionalText": "Калі ласка, аўтарызуйцеся зноўку, каб прымяніць змены!", "ForceUpdateModal.header": "Увага!", diff --git a/app/localization/translated/ru.json b/app/localization/translated/ru.json index c0abcc79e4..3ef5b44be6 100644 --- a/app/localization/translated/ru.json +++ b/app/localization/translated/ru.json @@ -691,6 +691,8 @@ "Footer.copyright": "Все права защищены", "Footer.documentation": "Документация", "Footer.git": "Мы на GitHub", + "Footer.notice": "Уведомление о конфиденциальности", + "Footer.privacy": "Политика конфиденциальности", "Footer.slack": "Пообщайтесь с нами на Slack", "ForceUpdateModal.additionalText": "Пожалуйста, авторизуйтесь заново, чтобы применить изменения!", "ForceUpdateModal.header": "Внимание!", diff --git a/app/localization/translated/uk.json b/app/localization/translated/uk.json index be159978cf..826ac32fbb 100644 --- a/app/localization/translated/uk.json +++ b/app/localization/translated/uk.json @@ -691,6 +691,8 @@ "Footer.copyright": "Всі права захищені", "Footer.documentation": "Документація", "Footer.git": "Ми на Гітхабі", + "Footer.notice": "Повідомлення про конфіденційність", + "Footer.privacy": "Політика конфіденційності", "Footer.slack": "Поспілкуйтеся з нами на слабину", "ForceUpdateModal.additionalText": "Будь ласка, авторизуйтеся заново, щоб застосувати зміни!", "ForceUpdateModal.header": "Увага!", diff --git a/app/src/common/utils/referenceDictionary.js b/app/src/common/utils/referenceDictionary.js index f74de5eb30..08ed85306c 100644 --- a/app/src/common/utils/referenceDictionary.js +++ b/app/src/common/utils/referenceDictionary.js @@ -25,4 +25,6 @@ export const referenceDictionary = { rpSlack: 'https://reportportal-slack-auto.herokuapp.com/', rpEmail: 'mailto:support@reportportal.io', rpEpam: 'https://www.epam.com/', + rpEpamPolicy: 'https://privacy.epam.com/core/interaction/showpolicy?type=PrivacyPolicy', + rpEpamNotice: 'https://privacy.epam.com/core/interaction/showpolicy?type=CommonPrivacyNotice', }; diff --git a/app/src/layouts/common/footer/footer.jsx b/app/src/layouts/common/footer/footer.jsx index 48b2591d2f..e2140308b5 100644 --- a/app/src/layouts/common/footer/footer.jsx +++ b/app/src/layouts/common/footer/footer.jsx @@ -14,14 +14,14 @@ * limitations under the License. */ -import React, { Component } from 'react'; +import React, { Component, Fragment } from 'react'; import track from 'react-tracking'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import classNames from 'classnames/bind'; import { FormattedMessage } from 'react-intl'; import { FOOTER_EVENTS } from 'components/main/analytics/events'; -import { uiBuildVersionSelector } from 'controllers/appInfo'; +import { uiBuildVersionSelector, authExtensionsSelector } from 'controllers/appInfo'; import { referenceDictionary } from 'common/utils/referenceDictionary'; import styles from './footer.scss'; @@ -29,6 +29,7 @@ const cx = classNames.bind(styles); @connect((state) => ({ buildVersion: uiBuildVersionSelector(state), + authExtensions: authExtensionsSelector(state), })) @track() export class Footer extends Component { @@ -38,9 +39,10 @@ export class Footer extends Component { trackEvent: PropTypes.func, getTrackingData: PropTypes.func, }).isRequired, + authExtensions: PropTypes.object.isRequired, }; render() { - const { buildVersion, tracking } = this.props; + const { buildVersion, tracking, authExtensions } = this.props; return (