commit f1f8301bc840db9f8add20cd791919caab07731a
Author: sun__lin <1142226789@qq.com>
Date: Fri Feb 6 18:43:18 2026 +0800
1
diff --git a/.browserslistrc b/.browserslistrc
new file mode 100644
index 0000000..214388f
--- /dev/null
+++ b/.browserslistrc
@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not dead
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..ab1a421
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,28 @@
+module.exports = {
+ root: true,
+ env: {
+ node: true
+ },
+ 'extends': [
+ 'plugin:vue/vue3-essential',
+ 'eslint:recommended'
+ ],
+ parserOptions: {
+ parser: 'babel-eslint'
+ },
+ rules: {
+ 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
+ },
+ overrides: [
+ {
+ files: [
+ '**/__tests__/*.{j,t}s?(x)',
+ '**/tests/unit/**/*.spec.{j,t}s?(x)'
+ ],
+ env: {
+ mocha: true
+ }
+ }
+ ]
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1b1267a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+# ---> VisualStudioCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+!.vscode/*.code-snippets
+
+# Local History for Visual Studio Code
+.history/
+
+# Built Visual Studio Code Extensions
+*.vsix
+
+/node_modules
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..3b66410
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "git.ignoreLimitWarning": true
+}
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..580f83b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# iMES_Vue
+
+MES前端项目,VUE3
\ No newline at end of file
diff --git a/Vue3版本使用说明.txt b/Vue3版本使用说明.txt
new file mode 100644
index 0000000..47ad173
--- /dev/null
+++ b/Vue3版本使用说明.txt
@@ -0,0 +1,7 @@
+前端vue3环境配置,如果没有安装过环境:
+ 1、先卸载原来vue2脚手架
+ npm uninstall vue-cli -g
+ 2、安装vue3脚手架
+ npm install -g @vue/cli (如果安装很慢,切换成taobao镜像 npm config set registry https://registry.npm.taobao.org)
+ 3、回滚原来vue2脚手架(vue init webpack test)
+ npm i -g @vue/cli-init
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..e955840
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ presets: [
+ '@vue/cli-plugin-babel/preset'
+ ]
+}
diff --git a/build.bat b/build.bat
new file mode 100644
index 0000000..10da9ff
--- /dev/null
+++ b/build.bat
@@ -0,0 +1 @@
+npm run build
\ No newline at end of file
diff --git a/config/buttons.js b/config/buttons.js
new file mode 100644
index 0000000..119932e
--- /dev/null
+++ b/config/buttons.js
@@ -0,0 +1,84 @@
+
+let buttons = [{
+ name: "查 询",
+ value: 'Search',
+ icon: 'el-icon-search',
+ class: '',
+ type: 'primary',
+ onClick: function () {
+ this.search();
+ }
+},
+{
+ name: "新 建",
+ icon: 'el-icon-plus',
+ value: 'Add',
+ class: '',
+ // plain:true,
+ type: 'success',
+ // plain:true,
+ onClick: function () {
+ this.add();
+ }
+},{
+ name: "编 辑",
+ icon: 'el-icon-edit',
+ value: 'Update',
+ // plain:true,
+ class: '',
+ type: 'primary',
+ onClick: function () {
+ this.edit();
+ }
+}, {
+ name: "删 除",
+ icon: 'el-icon-delete',
+ class: '',
+ value: 'Delete',
+ type: 'danger',
+ onClick: function () {
+ this.del();
+ }
+}, {
+ name: "审 核",
+ icon: 'el-icon-check',
+ class: '',
+ value: 'Audit',
+ plain:true,
+ type: 'primary',
+ onClick: function () {
+ this.audit();
+ }
+},
+{
+ name: "导 入",
+ icon: 'el-icon-top',
+ class: '',
+ type:'success',
+ plain:true,
+ value: 'Import',
+ onClick: function () {
+ this.import();
+ }
+}, {
+ name: "导 出",
+ icon: 'el-icon-bottom',
+ type:'success',
+ plain:true,
+ value: 'Export',
+ onClick: function () {
+ this.export();
+ }
+}
+// , {
+// name: "数据结构",
+// icon: 'ios-cog',
+// class: '',
+// value: '',
+// onClick: function () {
+// this.openViewColumns();
+// }
+// }
+]
+
+export default buttons
\ No newline at end of file
diff --git a/install.bat b/install.bat
new file mode 100644
index 0000000..b66c116
--- /dev/null
+++ b/install.bat
@@ -0,0 +1 @@
+npm install
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e25915c
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,33772 @@
+{
+ "name": "imes.vue3",
+ "version": "0.1.0",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "imes.vue3",
+ "version": "0.1.0",
+ "dependencies": {
+ "@chenfengyuan/vue-qrcode": "^2.0.0",
+ "@element-plus/icons-vue": "^2.1.0",
+ "@microsoft/signalr": "^6.0.4",
+ "axios": "^0.21.1",
+ "core-js": "^3.6.5",
+ "echarts": "^5.0.2",
+ "element-plus": "^2.2.15",
+ "file-save": "^0.2.0",
+ "file-saver": "^2.0.5",
+ "less": "^4.1.1",
+ "magix": "^3.8.16",
+ "qrcode": "^1.5.1",
+ "qrcode.vue": "^3.3.3",
+ "qrcodejs2": "0.0.2",
+ "sortable.js": "^0.3.0",
+ "sortablejs": "^1.15.0",
+ "uuidv1": "^1.6.14",
+ "vue": "^3.2.37",
+ "vue-draggable-next": "^2.0.1",
+ "vue-i18n": "^9.13.1",
+ "vue-router": "^4.0.0-0",
+ "vuex": "^4.0.0-0",
+ "wangeditor": "^4.7.6"
+ },
+ "devDependencies": {
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@vue/cli-plugin-babel": "~4.5.0",
+ "@vue/cli-plugin-eslint": "~4.5.0",
+ "@vue/cli-plugin-router": "~4.5.0",
+ "@vue/cli-plugin-unit-mocha": "~4.5.0",
+ "@vue/cli-plugin-vuex": "~4.5.0",
+ "@vue/cli-service": "~4.5.0",
+ "@vue/compiler-sfc": "^3.0.0",
+ "@vue/test-utils": "^2.0.0-0",
+ "babel-eslint": "^10.1.0",
+ "chai": "^4.1.2",
+ "less": "^4.1.1",
+ "less-loader": "^7.3.0",
+ "stylus": "^0.54.7",
+ "stylus-loader": "^3.0.2"
+ }
+ },
+ "node_modules/@achrinza/node-ipc": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz",
+ "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==",
+ "dev": true,
+ "dependencies": {
+ "@node-ipc/js-queue": "2.0.3",
+ "event-pubsub": "4.3.0",
+ "js-message": "1.0.7"
+ },
+ "engines": {
+ "node": "8 || 10 || 12 || 14 || 16 || 17"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.18.5.tgz",
+ "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.18.5.tgz",
+ "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.18.2",
+ "@babel/helper-compilation-targets": "^7.18.2",
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helpers": "^7.18.2",
+ "@babel/parser": "^7.18.5",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.18.5",
+ "@babel/types": "^7.18.4",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/core/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.2.tgz",
+ "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.18.2",
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz",
+ "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz",
+ "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-explode-assignable-expression": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz",
+ "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.17.10",
+ "@babel/helper-validator-option": "^7.16.7",
+ "browserslist": "^4.20.2",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz",
+ "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-member-expression-to-functions": "^7.17.7",
+ "@babel/helper-optimise-call-expression": "^7.16.7",
+ "@babel/helper-replace-supers": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-create-regexp-features-plugin": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz",
+ "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "regexpu-core": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
+ "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
+ "dev": true,
+ "dependencies": {
+ "@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"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.4.0-0"
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz",
+ "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-explode-assignable-expression": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz",
+ "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz",
+ "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.17.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
+ "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.17.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz",
+ "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz",
+ "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-simple-access": "^7.17.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.18.0",
+ "@babel/types": "^7.18.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz",
+ "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz",
+ "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-remap-async-to-generator": {
+ "version": "7.16.8",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz",
+ "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-wrap-function": "^7.16.8",
+ "@babel/types": "^7.16.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz",
+ "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.18.2",
+ "@babel/helper-member-expression-to-functions": "^7.17.7",
+ "@babel/helper-optimise-call-expression": "^7.16.7",
+ "@babel/traverse": "^7.18.2",
+ "@babel/types": "^7.18.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz",
+ "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.18.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz",
+ "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz",
+ "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz",
+ "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
+ "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-wrap-function": {
+ "version": "7.16.8",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz",
+ "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-function-name": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.16.8",
+ "@babel/types": "^7.16.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.2.tgz",
+ "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.18.2",
+ "@babel/types": "^7.18.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz",
+ "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.5.tgz",
+ "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz",
+ "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz",
+ "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.13.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz",
+ "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-remap-async-to-generator": "^7.16.8",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-class-properties": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz",
+ "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-class-static-block": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz",
+ "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.12.0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-decorators": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz",
+ "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-replace-supers": "^7.18.2",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/plugin-syntax-decorators": "^7.17.12",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-dynamic-import": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz",
+ "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz",
+ "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-json-strings": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz",
+ "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz",
+ "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz",
+ "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-numeric-separator": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz",
+ "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz",
+ "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.17.10",
+ "@babel/helper-compilation-targets": "^7.17.10",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz",
+ "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-optional-chaining": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz",
+ "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-methods": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz",
+ "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-class-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz",
+ "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-create-class-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz",
+ "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-decorators": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz",
+ "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-import-assertions": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz",
+ "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz",
+ "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-arrow-functions": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz",
+ "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-async-to-generator": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz",
+ "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-remap-async-to-generator": "^7.16.8"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz",
+ "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-block-scoping": {
+ "version": "7.18.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz",
+ "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-classes": {
+ "version": "7.18.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz",
+ "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-environment-visitor": "^7.18.2",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-optimise-call-expression": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-replace-supers": "^7.18.2",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-computed-properties": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz",
+ "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-destructuring": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz",
+ "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-dotall-regex": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz",
+ "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-duplicate-keys": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz",
+ "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz",
+ "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-for-of": {
+ "version": "7.18.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz",
+ "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-function-name": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz",
+ "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-compilation-targets": "^7.16.7",
+ "@babel/helper-function-name": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-literals": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz",
+ "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-member-expression-literals": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz",
+ "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-amd": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz",
+ "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz",
+ "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-simple-access": "^7.18.2",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-systemjs": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz",
+ "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-umd": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz",
+ "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz",
+ "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-new-target": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz",
+ "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-object-super": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz",
+ "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7",
+ "@babel/helper-replace-supers": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-parameters": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz",
+ "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-property-literals": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz",
+ "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-regenerator": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz",
+ "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "regenerator-transform": "^0.15.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-reserved-words": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz",
+ "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz",
+ "integrity": "sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "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"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/plugin-transform-shorthand-properties": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz",
+ "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-spread": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz",
+ "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-sticky-regex": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz",
+ "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-template-literals": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz",
+ "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typeof-symbol": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz",
+ "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-escapes": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz",
+ "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-unicode-regex": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz",
+ "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-create-regexp-features-plugin": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.18.2.tgz",
+ "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.17.10",
+ "@babel/helper-compilation-targets": "^7.18.2",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-validator-option": "^7.16.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12",
+ "@babel/plugin-proposal-async-generator-functions": "^7.17.12",
+ "@babel/plugin-proposal-class-properties": "^7.17.12",
+ "@babel/plugin-proposal-class-static-block": "^7.18.0",
+ "@babel/plugin-proposal-dynamic-import": "^7.16.7",
+ "@babel/plugin-proposal-export-namespace-from": "^7.17.12",
+ "@babel/plugin-proposal-json-strings": "^7.17.12",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12",
+ "@babel/plugin-proposal-numeric-separator": "^7.16.7",
+ "@babel/plugin-proposal-object-rest-spread": "^7.18.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
+ "@babel/plugin-proposal-optional-chaining": "^7.17.12",
+ "@babel/plugin-proposal-private-methods": "^7.17.12",
+ "@babel/plugin-proposal-private-property-in-object": "^7.17.12",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.17.12",
+ "@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-import-assertions": "^7.17.12",
+ "@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.17.12",
+ "@babel/plugin-transform-async-to-generator": "^7.17.12",
+ "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
+ "@babel/plugin-transform-block-scoping": "^7.17.12",
+ "@babel/plugin-transform-classes": "^7.17.12",
+ "@babel/plugin-transform-computed-properties": "^7.17.12",
+ "@babel/plugin-transform-destructuring": "^7.18.0",
+ "@babel/plugin-transform-dotall-regex": "^7.16.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.17.12",
+ "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
+ "@babel/plugin-transform-for-of": "^7.18.1",
+ "@babel/plugin-transform-function-name": "^7.16.7",
+ "@babel/plugin-transform-literals": "^7.17.12",
+ "@babel/plugin-transform-member-expression-literals": "^7.16.7",
+ "@babel/plugin-transform-modules-amd": "^7.18.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.18.2",
+ "@babel/plugin-transform-modules-systemjs": "^7.18.0",
+ "@babel/plugin-transform-modules-umd": "^7.18.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12",
+ "@babel/plugin-transform-new-target": "^7.17.12",
+ "@babel/plugin-transform-object-super": "^7.16.7",
+ "@babel/plugin-transform-parameters": "^7.17.12",
+ "@babel/plugin-transform-property-literals": "^7.16.7",
+ "@babel/plugin-transform-regenerator": "^7.18.0",
+ "@babel/plugin-transform-reserved-words": "^7.17.12",
+ "@babel/plugin-transform-shorthand-properties": "^7.16.7",
+ "@babel/plugin-transform-spread": "^7.17.12",
+ "@babel/plugin-transform-sticky-regex": "^7.16.7",
+ "@babel/plugin-transform-template-literals": "^7.18.2",
+ "@babel/plugin-transform-typeof-symbol": "^7.17.12",
+ "@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.18.2",
+ "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.22.1",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-env/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/preset-modules": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz",
+ "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "dependencies": {
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime-corejs2": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.18.3.tgz",
+ "integrity": "sha512-r9L5eZChdP1DHSL+YwGEd7Rcs8Yk2KDOwSJ4cdB8ZAMolqiW7Qa9I1ir/05lte/i6N979PKYr5288OqoyZkabA==",
+ "dev": true,
+ "dependencies": {
+ "core-js": "^2.6.12",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime-corejs2/node_modules/core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
+ "dev": true,
+ "hasInstallScript": true
+ },
+ "node_modules/@babel/runtime-corejs3": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz",
+ "integrity": "sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==",
+ "dependencies": {
+ "core-js-pure": "^3.20.2",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz",
+ "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/parser": "^7.16.7",
+ "@babel/types": "^7.16.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.5.tgz",
+ "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.18.2",
+ "@babel/helper-environment-visitor": "^7.18.2",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/parser": "^7.18.5",
+ "@babel/types": "^7.18.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@babel/types": {
+ "version": "7.18.4",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.4.tgz",
+ "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@chenfengyuan/vue-qrcode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/@chenfengyuan/vue-qrcode/-/vue-qrcode-2.0.0.tgz",
+ "integrity": "sha512-33Cfr0zjbc3Dd8d5b1IgzXRAgXH0c2Gv19VI4snS25V/x9Z41eg769tC+Us1x+vqgQQhgD5YUjLnkpkrQfeMSw==",
+ "peerDependencies": {
+ "qrcode": "^1.5.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@ctrl/tinycolor": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
+ "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@element-plus/icons-vue": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+ "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.3.tgz",
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "dependencies": {
+ "@floating-ui/core": "^0.7.3"
+ }
+ },
+ "node_modules/@hapi/address": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz",
+ "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+ "deprecated": "Moved to 'npm install @sideway/address'",
+ "dev": true
+ },
+ "node_modules/@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz",
+ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
+ "deprecated": "This version has been deprecated and is no longer supported or maintained",
+ "dev": true
+ },
+ "node_modules/@hapi/hoek": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz",
+ "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+ "deprecated": "This version has been deprecated and is no longer supported or maintained",
+ "dev": true
+ },
+ "node_modules/@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz",
+ "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "deprecated": "Switch to 'npm install joi'",
+ "dev": true,
+ "dependencies": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "node_modules/@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz",
+ "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "deprecated": "This version has been deprecated and is no longer supported or maintained",
+ "dev": true,
+ "dependencies": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "node_modules/@intervolga/optimize-cssnano-plugin": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz",
+ "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==",
+ "dev": true,
+ "dependencies": {
+ "cssnano": "^4.0.0",
+ "cssnano-preset-default": "^4.0.0",
+ "postcss": "^7.0.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0"
+ }
+ },
+ "node_modules/@intervolga/optimize-cssnano-plugin/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/@intervolga/optimize-cssnano-plugin/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@intlify/core-base": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+ "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+ "dependencies": {
+ "@intlify/message-compiler": "9.13.1",
+ "@intlify/shared": "9.13.1"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/@intlify/message-compiler": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+ "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+ "dependencies": {
+ "@intlify/shared": "9.13.1",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/@intlify/shared": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+ "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==",
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
+ "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.14",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
+ "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "node_modules/@microsoft/signalr": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.6.tgz",
+ "integrity": "sha512-3dTLtgwEXUeE9R/3NZQslh1B2WbppeHVXdnpvSZc7Yz+tP5Yiw3KCVUHwKUVnYmd9/2v3DaI/pvCdihrss49zA==",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "eventsource": "^1.0.7",
+ "fetch-cookie": "^0.11.0",
+ "node-fetch": "^2.6.7",
+ "ws": "^7.4.5"
+ }
+ },
+ "node_modules/@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "dependencies": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@node-ipc/js-queue": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz",
+ "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==",
+ "dev": true,
+ "dependencies": {
+ "easy-stack": "1.0.1"
+ },
+ "engines": {
+ "node": ">=1.0.0"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir/node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "name": "@sxzz/popperjs-es",
+ "version": "2.11.7",
+ "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+ "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
+ "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^3.0.0",
+ "error-stack-parser": "^2.0.6",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@soda/friendly-errors-webpack-plugin/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@soda/get-current-script": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz",
+ "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==",
+ "dev": true
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "dev": true,
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.35",
+ "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz",
+ "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect-history-api-fallback": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
+ "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
+ "dev": true,
+ "dependencies": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.13",
+ "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.13.tgz",
+ "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
+ "dev": true,
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.18",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.17.29",
+ "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz",
+ "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*"
+ }
+ },
+ "node_modules/@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/http-proxy": {
+ "version": "1.17.9",
+ "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.9.tgz",
+ "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.14.184",
+ "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz",
+ "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q=="
+ },
+ "node_modules/@types/lodash-es": {
+ "version": "4.17.6",
+ "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
+ "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
+ "dev": true
+ },
+ "node_modules/@types/minimatch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz",
+ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+ "dev": true
+ },
+ "node_modules/@types/minimist": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz",
+ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+ "dev": true
+ },
+ "node_modules/@types/node": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.0.0.tgz",
+ "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==",
+ "dev": true
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "dev": true
+ },
+ "node_modules/@types/q": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz",
+ "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
+ "dev": true
+ },
+ "node_modules/@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz",
+ "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
+ "dev": true
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz",
+ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
+ "dev": true
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.13.10",
+ "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.13.10.tgz",
+ "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/source-list-map": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+ "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+ "dev": true
+ },
+ "node_modules/@types/tapable": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.8.tgz",
+ "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==",
+ "dev": true
+ },
+ "node_modules/@types/uglify-js": {
+ "version": "3.16.0",
+ "resolved": "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.16.0.tgz",
+ "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz",
+ "integrity": "sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA=="
+ },
+ "node_modules/@types/webpack": {
+ "version": "4.41.32",
+ "resolved": "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.32.tgz",
+ "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/@types/webpack-dev-server": {
+ "version": "3.11.6",
+ "resolved": "https://registry.npmmirror.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz",
+ "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/connect-history-api-fallback": "*",
+ "@types/express": "*",
+ "@types/serve-static": "*",
+ "@types/webpack": "^4",
+ "http-proxy-middleware": "^1.0.0"
+ }
+ },
+ "node_modules/@types/webpack-sources": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz",
+ "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.7.3"
+ }
+ },
+ "node_modules/@types/webpack-sources/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-jsx-merge-props": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
+ "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+ "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-transform-vue-jsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz",
+ "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "html-tags": "^2.0.0",
+ "lodash.kebabcase": "^4.1.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-plugin-transform-vue-jsx/node_modules/html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@vue/babel-preset-app": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-4.5.18.tgz",
+ "integrity": "sha512-P7ASKBNuz3IZxvO5VPsPGjRey4KRNMJ9Rav0nJ/v+m0ny6uUuwE03Xoli5G3mvdijUbtVZT7+/uULMCEg4bGew==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.0",
+ "@babel/helper-compilation-targets": "^7.9.6",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/plugin-proposal-class-properties": "^7.8.3",
+ "@babel/plugin-proposal-decorators": "^7.8.3",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3",
+ "@babel/plugin-transform-runtime": "^7.11.0",
+ "@babel/preset-env": "^7.11.0",
+ "@babel/runtime": "^7.11.0",
+ "@vue/babel-plugin-jsx": "^1.0.3",
+ "@vue/babel-preset-jsx": "^1.2.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3",
+ "core-js": "^3.6.5",
+ "core-js-compat": "^3.6.5",
+ "semver": "^6.1.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "*",
+ "core-js": "^3",
+ "vue": "^2 || ^3.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "core-js": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-preset-app/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@vue/babel-preset-jsx": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz",
+ "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==",
+ "dev": true,
+ "dependencies": {
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
+ "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
+ "@vue/babel-sugar-functional-vue": "^1.2.2",
+ "@vue/babel-sugar-inject-h": "^1.2.2",
+ "@vue/babel-sugar-v-model": "^1.2.3",
+ "@vue/babel-sugar-v-on": "^1.2.3"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-composition-api-inject-h": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz",
+ "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-composition-api-render-instance": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz",
+ "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-functional-vue": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz",
+ "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-inject-h": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz",
+ "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-v-model": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz",
+ "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "camelcase": "^5.0.0",
+ "html-tags": "^2.0.0",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-v-model/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vue/babel-sugar-v-model/node_modules/html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@vue/babel-sugar-v-on": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz",
+ "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "camelcase": "^5.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/babel-sugar-v-on/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@vue/cli-overlay": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.18.tgz",
+ "integrity": "sha512-PZW6WRbmWx/I+PaP7PdjZGscvtUiIq/pRU38p3GLKMl53InBer12549CEAhPicAF5c38gBzGu/ifoPSvlPSZyg==",
+ "dev": true
+ },
+ "node_modules/@vue/cli-plugin-babel": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.18.tgz",
+ "integrity": "sha512-Juiu3EgV228pKcfWu6vrABrrXYoMtanf4PlG6P2drPHf1LgVmaUp1g/K7IxdCc63IY9E+eCWjZ2ZEnQvxMSWOQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.11.0",
+ "@vue/babel-preset-app": "^4.5.18",
+ "@vue/cli-shared-utils": "^4.5.18",
+ "babel-loader": "^8.1.0",
+ "cache-loader": "^4.1.0",
+ "thread-loader": "^2.1.3",
+ "webpack": "^4.0.0"
+ },
+ "peerDependencies": {
+ "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+ }
+ },
+ "node_modules/@vue/cli-plugin-eslint": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.18.tgz",
+ "integrity": "sha512-UWacV26Ul+W61PwvMBv4Msh2h3Umr5FG0ApXFzLQTgyc/rCmXvhR53pW252zVZ2tf7s2n7xDFnp/mrCUrkb2tw==",
+ "dev": true,
+ "dependencies": {
+ "@vue/cli-shared-utils": "^4.5.18",
+ "eslint-loader": "^2.2.1",
+ "globby": "^9.2.0",
+ "inquirer": "^7.1.0",
+ "webpack": "^4.0.0",
+ "yorkie": "^2.0.0"
+ },
+ "peerDependencies": {
+ "@vue/cli-service": "^3.0.0 || ^4.0.0-0",
+ "eslint": ">= 1.6.0 < 7.0.0"
+ }
+ },
+ "node_modules/@vue/cli-plugin-router": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.18.tgz",
+ "integrity": "sha512-J2SJpi7OKy6NE5yUz7eubTnzc+k2LHEcI+c0W8i4UoUumIVSkAgvKWZPFqoy/QIqnQpwW/75CUjpLGf6Fht2wQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/cli-shared-utils": "^4.5.18"
+ },
+ "peerDependencies": {
+ "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+ }
+ },
+ "node_modules/@vue/cli-plugin-unit-mocha": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.18.tgz",
+ "integrity": "sha512-wxV7zzc3Bu3C9imV6P21hY/Bk81iVtRsQ1j5m1eIz28zKYHSOgdET7bKO8ExBkWIDApjPZ1gdfvJMLvm8Wd2/w==",
+ "dev": true,
+ "dependencies": {
+ "@vue/cli-shared-utils": "^4.5.18",
+ "jsdom": "^15.2.1",
+ "jsdom-global": "^3.0.2",
+ "mocha": "^6.2.2",
+ "mochapack": "^1.1.15"
+ },
+ "peerDependencies": {
+ "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+ }
+ },
+ "node_modules/@vue/cli-plugin-vuex": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.18.tgz",
+ "integrity": "sha512-8lnxtRJLa6Ki4FFYDtVA6Q4CRSjzWPXRkY7v8779nNq8eVLpGEyOtqDgu/VvNBs7EGKmveXZFNu8dUsfuTt7qA==",
+ "dev": true,
+ "peerDependencies": {
+ "@vue/cli-service": "^3.0.0 || ^4.0.0-0"
+ }
+ },
+ "node_modules/@vue/cli-service": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.18.tgz",
+ "integrity": "sha512-ACRfiyzQNT+3Ko8NdkyvKMsAJ7IziQcM+QvRzfHo11v4YllcQBbRxYsmnffvjaZfNBefQvJ1qX9FI+ggIlxYQA==",
+ "dev": true,
+ "dependencies": {
+ "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+ "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+ "@soda/get-current-script": "^1.0.0",
+ "@types/minimist": "^1.2.0",
+ "@types/webpack": "^4.0.0",
+ "@types/webpack-dev-server": "^3.11.0",
+ "@vue/cli-overlay": "^4.5.18",
+ "@vue/cli-plugin-router": "^4.5.18",
+ "@vue/cli-plugin-vuex": "^4.5.18",
+ "@vue/cli-shared-utils": "^4.5.18",
+ "@vue/component-compiler-utils": "^3.1.2",
+ "@vue/preload-webpack-plugin": "^1.1.0",
+ "@vue/web-component-wrapper": "^1.2.0",
+ "acorn": "^7.4.0",
+ "acorn-walk": "^7.1.1",
+ "address": "^1.1.2",
+ "autoprefixer": "^9.8.6",
+ "browserslist": "^4.12.0",
+ "cache-loader": "^4.1.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "cli-highlight": "^2.1.4",
+ "clipboardy": "^2.3.0",
+ "cliui": "^6.0.0",
+ "copy-webpack-plugin": "^5.1.1",
+ "css-loader": "^3.5.3",
+ "cssnano": "^4.1.10",
+ "debug": "^4.1.1",
+ "default-gateway": "^5.0.5",
+ "dotenv": "^8.2.0",
+ "dotenv-expand": "^5.1.0",
+ "file-loader": "^4.2.0",
+ "fs-extra": "^7.0.1",
+ "globby": "^9.2.0",
+ "hash-sum": "^2.0.0",
+ "html-webpack-plugin": "^3.2.0",
+ "launch-editor-middleware": "^2.2.1",
+ "lodash.defaultsdeep": "^4.6.1",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.transform": "^4.6.0",
+ "mini-css-extract-plugin": "^0.9.0",
+ "minimist": "^1.2.5",
+ "pnp-webpack-plugin": "^1.6.4",
+ "portfinder": "^1.0.26",
+ "postcss-loader": "^3.0.0",
+ "ssri": "^8.0.1",
+ "terser-webpack-plugin": "^1.4.4",
+ "thread-loader": "^2.1.3",
+ "url-loader": "^2.2.0",
+ "vue-loader": "^15.9.2",
+ "vue-style-loader": "^4.1.2",
+ "webpack": "^4.0.0",
+ "webpack-bundle-analyzer": "^3.8.0",
+ "webpack-chain": "^6.4.0",
+ "webpack-dev-server": "^3.11.0",
+ "webpack-merge": "^4.2.2"
+ },
+ "bin": {
+ "vue-cli-service": "bin/vue-cli-service.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "optionalDependencies": {
+ "vue-loader-v16": "npm:vue-loader@^16.1.0"
+ },
+ "peerDependencies": {
+ "@vue/compiler-sfc": "^3.0.0-beta.14",
+ "vue-template-compiler": "^2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/compiler-sfc": {
+ "optional": true
+ },
+ "less-loader": {
+ "optional": true
+ },
+ "pug-plain-loader": {
+ "optional": true
+ },
+ "raw-loader": {
+ "optional": true
+ },
+ "sass-loader": {
+ "optional": true
+ },
+ "stylus-loader": {
+ "optional": true
+ },
+ "vue-template-compiler": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/@vue/cli-service/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/@vue/cli-service/node_modules/ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dev": true,
+ "dependencies": {
+ "minipass": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/vue-loader-v16": {
+ "name": "vue-loader",
+ "version": "16.8.3",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+ "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ }
+ },
+ "node_modules/@vue/cli-service/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@vue/cli-shared-utils": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.18.tgz",
+ "integrity": "sha512-rYX8watG/+SFmkedXMZ3hJP+26/bz80f9zG9dMUfBMqTAqIDGICDtuP4H4QXZL3PCKI/HWFCMhRWf2wO4eGEPg==",
+ "dev": true,
+ "dependencies": {
+ "@achrinza/node-ipc": "9.2.2",
+ "@hapi/joi": "^15.0.1",
+ "chalk": "^2.4.2",
+ "execa": "^1.0.0",
+ "launch-editor": "^2.2.1",
+ "lru-cache": "^5.1.1",
+ "open": "^6.3.0",
+ "ora": "^3.4.0",
+ "read-pkg": "^5.1.1",
+ "request": "^2.88.2",
+ "semver": "^6.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "node_modules/@vue/cli-shared-utils/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
+ "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
+ "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
+ "dependencies": {
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
+ "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/reactivity-transform": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
+ "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@vue/component-compiler-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz",
+ "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==",
+ "dev": true,
+ "dependencies": {
+ "consolidate": "^0.15.1",
+ "hash-sum": "^1.0.2",
+ "lru-cache": "^4.1.2",
+ "merge-source-map": "^1.1.0",
+ "postcss": "^7.0.36",
+ "postcss-selector-parser": "^6.0.2",
+ "source-map": "~0.6.1",
+ "vue-template-es2015-compiler": "^1.9.0"
+ },
+ "optionalDependencies": {
+ "prettier": "^1.18.2 || ^2.0.0"
+ }
+ },
+ "node_modules/@vue/component-compiler-utils/node_modules/hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "node_modules/@vue/component-compiler-utils/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/@vue/component-compiler-utils/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/@vue/component-compiler-utils/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@vue/component-compiler-utils/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
+ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
+ },
+ "node_modules/@vue/preload-webpack-plugin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
+ "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "peerDependencies": {
+ "html-webpack-plugin": ">=2.26.0",
+ "webpack": ">=4.0.0"
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "dependencies": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@vue/reactivity-transform": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
+ "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
+ "dependencies": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "dependencies": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "dependencies": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ },
+ "peerDependencies": {
+ "vue": "3.2.37"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz",
+ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
+ },
+ "node_modules/@vue/test-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/@vue/test-utils/-/test-utils-2.0.0.tgz",
+ "integrity": "sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==",
+ "dev": true,
+ "peerDependencies": {
+ "vue": "^3.0.1"
+ }
+ },
+ "node_modules/@vue/web-component-wrapper": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
+ "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==",
+ "dev": true
+ },
+ "node_modules/@vueuse/core": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.1.1.tgz",
+ "integrity": "sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.15",
+ "@vueuse/metadata": "9.1.1",
+ "@vueuse/shared": "9.1.1",
+ "vue-demi": "*"
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.1.1.tgz",
+ "integrity": "sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog=="
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.1.1.tgz",
+ "integrity": "sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==",
+ "dependencies": {
+ "vue-demi": "*"
+ }
+ },
+ "node_modules/@webassemblyjs/ast": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+ "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+ "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-api-error": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+ "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-buffer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+ "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-code-frame": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+ "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-fsm": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+ "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-module-context": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+ "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/helper-wasm-section": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+ "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/ieee754": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+ "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+ "dev": true,
+ "dependencies": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "node_modules/@webassemblyjs/leb128": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+ "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+ "dev": true,
+ "dependencies": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/utf8": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+ "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+ "dev": true
+ },
+ "node_modules/@webassemblyjs/wasm-edit": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+ "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/helper-wasm-section": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-opt": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-gen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+ "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-opt": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+ "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/wasm-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+ "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+ "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-code-frame": "1.9.0",
+ "@webassemblyjs/helper-fsm": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@webassemblyjs/wast-printer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+ "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "node_modules/@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "node_modules/@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "node_modules/abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "dev": true
+ },
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz",
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-4.3.4.tgz",
+ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^6.0.1",
+ "acorn-walk": "^6.0.1"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peer": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/address": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/address/-/address-1.2.0.tgz",
+ "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "node_modules/ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": ">=5.0.0"
+ }
+ },
+ "node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
+ "dev": true
+ },
+ "node_modules/ansi-colors": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.3.tgz",
+ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-escapes/node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/ansi-html-community": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8.0"
+ ],
+ "bin": {
+ "ansi-html": "bin/ansi-html"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==",
+ "dev": true
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "node_modules/array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "dev": true,
+ "dependencies": {
+ "array-uniq": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array.prototype.reduce": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz",
+ "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/asn1.js/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ }
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/assert/node_modules/inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
+ "dev": true
+ },
+ "node_modules/assert/node_modules/util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.10.3.tgz",
+ "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "2.0.1"
+ }
+ },
+ "node_modules/assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/async": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz",
+ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "node_modules/async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true
+ },
+ "node_modules/async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "dev": true
+ },
+ "node_modules/async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true,
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "9.8.8",
+ "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz",
+ "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.12.0",
+ "caniuse-lite": "^1.0.30001109",
+ "normalize-range": "^0.1.2",
+ "num2fraction": "^1.2.2",
+ "picocolors": "^0.2.1",
+ "postcss": "^7.0.32",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ }
+ },
+ "node_modules/autoprefixer/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/autoprefixer/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz",
+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
+ "dev": true
+ },
+ "node_modules/axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "dependencies": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "node_modules/babel-eslint": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz",
+ "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+ "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "resolve": "^1.12.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "eslint": ">= 4.12.1"
+ }
+ },
+ "node_modules/babel-loader": {
+ "version": "8.2.5",
+ "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz",
+ "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==",
+ "dev": true,
+ "dependencies": {
+ "find-cache-dir": "^3.3.1",
+ "loader-utils": "^2.0.0",
+ "make-dir": "^3.1.0",
+ "schema-utils": "^2.6.5"
+ },
+ "engines": {
+ "node": ">= 8.9"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0",
+ "webpack": ">=2"
+ }
+ },
+ "node_modules/babel-loader/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/babel-loader/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+ "dev": true,
+ "dependencies": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz",
+ "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.13.11",
+ "@babel/helper-define-polyfill-provider": "^0.3.1",
+ "semver": "^6.1.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-corejs3": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
+ "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.3.1",
+ "core-js-compat": "^3.21.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-polyfill-regenerator": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz",
+ "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-define-polyfill-provider": "^0.3.1"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "node_modules/batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
+ "dev": true
+ },
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "dev": true,
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "node_modules/bfj": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz",
+ "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.5",
+ "check-types": "^8.0.3",
+ "hoopy": "^0.1.4",
+ "tryer": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz",
+ "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.10.3",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/body-parser/node_modules/qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
+ "dev": true,
+ "dependencies": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ }
+ },
+ "node_modules/bonjour/node_modules/array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/braces/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "dev": true
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true
+ },
+ "node_modules/browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "node_modules/browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "dependencies": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "dependencies": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "node_modules/browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "node_modules/browserify-sign": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz",
+ "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.3",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ }
+ },
+ "node_modules/browserify-sign/node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/browserify-sign/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "node_modules/browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "dependencies": {
+ "pako": "~1.0.5"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.0.tgz",
+ "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==",
+ "dev": true,
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001358",
+ "electron-to-chromium": "^1.4.164",
+ "node-releases": "^2.0.5",
+ "update-browserslist-db": "^1.0.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "dev": true,
+ "dependencies": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "node_modules/buffer-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/buffer-json/-/buffer-json-2.0.0.tgz",
+ "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==",
+ "dev": true
+ },
+ "node_modules/buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "dev": true
+ },
+ "node_modules/builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+ "dev": true
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/cacache": {
+ "version": "12.0.4",
+ "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz",
+ "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "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"
+ }
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "dependencies": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cache-loader": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/cache-loader/-/cache-loader-4.1.0.tgz",
+ "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==",
+ "dev": true,
+ "dependencies": {
+ "buffer-json": "^2.0.0",
+ "find-cache-dir": "^3.0.0",
+ "loader-utils": "^1.2.3",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0"
+ }
+ },
+ "node_modules/cache-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/cache-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "node_modules/call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==",
+ "dev": true
+ },
+ "node_modules/caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
+ "dev": true,
+ "dependencies": {
+ "caller-callsite": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001359",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz",
+ "integrity": "sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==",
+ "dev": true
+ },
+ "node_modules/case-sensitive-paths-webpack-plugin": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
+ "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
+ },
+ "node_modules/chai": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmmirror.com/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
+ "dev": true,
+ "dependencies": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.2",
+ "deep-eql": "^3.0.1",
+ "get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/charcodes": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/charcodes/-/charcodes-0.2.0.tgz",
+ "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "node_modules/check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/check-types": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz",
+ "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
+ "dev": true
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chokidar/node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/chokidar/node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/chokidar/node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "node_modules/chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
+ },
+ "node_modules/cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clean-css": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz",
+ "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "~0.6.0"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cli-highlight": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz",
+ "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^4.0.0",
+ "highlight.js": "^10.7.1",
+ "mz": "^2.4.0",
+ "parse5": "^5.1.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.0",
+ "yargs": "^16.0.0"
+ },
+ "bin": {
+ "highlight": "bin/highlight"
+ },
+ "engines": {
+ "node": ">=8.0.0",
+ "npm": ">=5.0.0"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/cli-highlight/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz",
+ "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+ "dev": true
+ },
+ "node_modules/cli-highlight/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-highlight/node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz",
+ "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz",
+ "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+ "dev": true,
+ "dependencies": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clipboardy/node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "dev": true,
+ "dependencies": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "dev": true
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/connect-history-api-fallback": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "node_modules/consolidate": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz",
+ "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.1.1"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
+ "dev": true
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-disposition/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "node_modules/content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz",
+ "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "node_modules/copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "dev": true,
+ "dependencies": {
+ "is-what": "^3.14.1"
+ }
+ },
+ "node_modules/copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "dependencies": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
+ "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
+ "dev": true,
+ "dependencies": {
+ "cacache": "^12.0.3",
+ "find-cache-dir": "^2.1.0",
+ "glob-parent": "^3.1.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "minimatch": "^3.0.4",
+ "normalize-path": "^3.0.0",
+ "p-limit": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^4.0.0",
+ "webpack-log": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz",
+ "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "node_modules/copy-webpack-plugin/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/copy-webpack-plugin/node_modules/slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.23.3",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.23.3.tgz",
+ "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==",
+ "hasInstallScript": true
+ },
+ "node_modules/core-js-compat": {
+ "version": "3.23.3",
+ "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.23.3.tgz",
+ "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.21.0",
+ "semver": "7.0.0"
+ }
+ },
+ "node_modules/core-js-compat/node_modules/semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/core-js-pure": {
+ "version": "3.23.3",
+ "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.23.3.tgz",
+ "integrity": "sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==",
+ "hasInstallScript": true
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cosmiconfig/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ }
+ },
+ "node_modules/create-ecdh/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "dependencies": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "node_modules/create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "dependencies": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/css": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmmirror.com/css/-/css-2.2.4.tgz",
+ "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.5.2",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.1",
+ "timsort": "^0.3.0"
+ },
+ "engines": {
+ "node": ">4"
+ }
+ },
+ "node_modules/css-declaration-sorter/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/css-declaration-sorter/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/css-loader": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-3.6.0.tgz",
+ "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/css-loader/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/css-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/css-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/css-loader/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/css-loader/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/css-loader/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/css-parse": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/css-parse/-/css-parse-2.0.0.tgz",
+ "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
+ "dev": true,
+ "dependencies": {
+ "css": "^2.0.0"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "node_modules/css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "dev": true
+ },
+ "node_modules/css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz",
+ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssnano": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz",
+ "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^5.0.0",
+ "cssnano-preset-default": "^4.0.8",
+ "is-resolvable": "^1.0.0",
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/cssnano-preset-default": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
+ "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
+ "dev": true,
+ "dependencies": {
+ "css-declaration-sorter": "^4.0.1",
+ "cssnano-util-raw-cache": "^4.0.1",
+ "postcss": "^7.0.0",
+ "postcss-calc": "^7.0.1",
+ "postcss-colormin": "^4.0.3",
+ "postcss-convert-values": "^4.0.1",
+ "postcss-discard-comments": "^4.0.2",
+ "postcss-discard-duplicates": "^4.0.2",
+ "postcss-discard-empty": "^4.0.1",
+ "postcss-discard-overridden": "^4.0.1",
+ "postcss-merge-longhand": "^4.0.11",
+ "postcss-merge-rules": "^4.0.3",
+ "postcss-minify-font-values": "^4.0.2",
+ "postcss-minify-gradients": "^4.0.2",
+ "postcss-minify-params": "^4.0.2",
+ "postcss-minify-selectors": "^4.0.2",
+ "postcss-normalize-charset": "^4.0.1",
+ "postcss-normalize-display-values": "^4.0.2",
+ "postcss-normalize-positions": "^4.0.2",
+ "postcss-normalize-repeat-style": "^4.0.2",
+ "postcss-normalize-string": "^4.0.2",
+ "postcss-normalize-timing-functions": "^4.0.2",
+ "postcss-normalize-unicode": "^4.0.1",
+ "postcss-normalize-url": "^4.0.1",
+ "postcss-normalize-whitespace": "^4.0.2",
+ "postcss-ordered-values": "^4.1.2",
+ "postcss-reduce-initial": "^4.0.3",
+ "postcss-reduce-transforms": "^4.0.2",
+ "postcss-svgo": "^4.0.3",
+ "postcss-unique-selectors": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/cssnano-preset-default/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/cssnano-preset-default/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/cssnano-util-raw-cache/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/cssnano-util-raw-cache/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/cssnano/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/cssnano/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csso/node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ },
+ "node_modules/csstype": {
+ "version": "2.6.20",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz",
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+ },
+ "node_modules/cyclist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz",
+ "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
+ "dev": true
+ },
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-1.1.0.tgz",
+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.2.0",
+ "whatwg-url": "^7.0.0"
+ }
+ },
+ "node_modules/data-urls/node_modules/tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/data-urls/node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/data-urls/node_modules/whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.5",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
+ "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
+ },
+ "node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "dependencies": {
+ "type-detect": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/deep-equal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz",
+ "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "dev": true,
+ "dependencies": {
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-gateway": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz",
+ "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^3.3.0"
+ },
+ "engines": {
+ "node": "^8.12.0 || >=9.7.0"
+ }
+ },
+ "node_modules/default-gateway/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/execa": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz",
+ "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": "^8.12.0 || >=9.7.0"
+ }
+ },
+ "node_modules/default-gateway/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/default-gateway/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/default-gateway/node_modules/p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/default-gateway/node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==",
+ "dev": true,
+ "dependencies": {
+ "clone": "^1.0.2"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "dependencies": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/define-property/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/define-property/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/define-property/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz",
+ "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/del/node_modules/globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/del/node_modules/globby/node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/des.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz",
+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "dev": true
+ },
+ "node_modules/diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmmirror.com/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "node_modules/diffie-hellman/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/dijkstrajs": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
+ "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
+ },
+ "node_modules/dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz",
+ "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
+ "dev": true
+ },
+ "node_modules/dns-packet": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz",
+ "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
+ "dev": true,
+ "dependencies": {
+ "ip": "^1.1.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
+ "dev": true,
+ "dependencies": {
+ "buffer-indexof": "^1.0.0"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "dependencies": {
+ "utila": "~0.4"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "node_modules/domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4",
+ "npm": ">=1.2"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "node_modules/domexception": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/domexception/-/domexception-1.0.1.tgz",
+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+ "dev": true,
+ "dependencies": {
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/domhandler/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "node_modules/domhelpers": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/domhelpers/-/domhelpers-0.1.0.tgz",
+ "integrity": "sha512-VZYqemdYgtxO3oI3L9o3Zdf9GmQAiFV9SP3Sccf7cVbEQtMrYBENyWnrW61Ejnsv4KldzzLs0UjHNbemTff8ZA=="
+ },
+ "node_modules/domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
+ "dev": true
+ },
+ "node_modules/duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+ "dev": true
+ },
+ "node_modules/duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/easy-stack": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
+ "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "dev": true,
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/echarts": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz",
+ "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==",
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "5.3.2"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "node_modules/ejs": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.170",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz",
+ "integrity": "sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==",
+ "dev": true
+ },
+ "node_modules/element-plus": {
+ "version": "2.2.15",
+ "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.15.tgz",
+ "integrity": "sha512-SMIx8xKB1YawT9JocyFhbs3Av2rXFfxrCVTLMYS0DK0xnW+fKvwjZngLfwF6MyRzXIuzNW17XFtu0iP3tlJHbA==",
+ "dependencies": {
+ "@ctrl/tinycolor": "^3.4.1",
+ "@element-plus/icons-vue": "^2.0.6",
+ "@floating-ui/dom": "^0.5.4",
+ "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+ "@types/lodash": "^4.14.182",
+ "@types/lodash-es": "^4.17.6",
+ "@vueuse/core": "^9.1.0",
+ "async-validator": "^4.2.5",
+ "dayjs": "^1.11.3",
+ "escape-html": "^1.0.3",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "lodash-unified": "^1.0.2",
+ "memoize-one": "^6.0.0",
+ "normalize-wheel-es": "^1.2.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "node_modules/elliptic/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/encode-utf8": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+ "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/enhanced-resolve/node_modules/memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz",
+ "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "dev": true,
+ "dependencies": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4.3.0 <5.0.0 || >=5.10"
+ }
+ },
+ "node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "node_modules/errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "dependencies": {
+ "prr": "~1.0.1"
+ },
+ "bin": {
+ "errno": "cli.js"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "dev": true,
+ "dependencies": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.20.1.tgz",
+ "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "regexp.prototype.flags": "^1.4.3",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "dependencies": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "1.14.3",
+ "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz",
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+ "dev": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=4.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
+ }
+ },
+ "node_modules/eslint-loader": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz",
+ "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==",
+ "deprecated": "This loader has been deprecated. Please use eslint-webpack-plugin",
+ "dev": true,
+ "dependencies": {
+ "loader-fs-cache": "^1.0.0",
+ "loader-utils": "^1.0.2",
+ "object-assign": "^4.0.1",
+ "object-hash": "^1.1.4",
+ "rimraf": "^2.6.1"
+ },
+ "peerDependencies": {
+ "eslint": ">=1.6.0 <7.0.0",
+ "webpack": ">=2.0.0 <5.0.0"
+ }
+ },
+ "node_modules/eslint-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/eslint-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/eslint/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/eslint/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/eslint/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eslint/node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/espree/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-pubsub": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz",
+ "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "dev": true
+ },
+ "node_modules/events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/eventsource": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.2.tgz",
+ "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "dependencies": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/express": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.18.1.tgz",
+ "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.0",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.10.3",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/express/node_modules/qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dev": true,
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extend-shallow/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/external-editor/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "dependencies": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ]
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
+ "dependencies": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "dev": true,
+ "dependencies": {
+ "websocket-driver": ">=0.5.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/fetch-cookie": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz",
+ "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==",
+ "dependencies": {
+ "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/figgy-pudding": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
+ "dev": true
+ },
+ "node_modules/figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "flat-cache": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/file-loader": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-4.3.0.tgz",
+ "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^1.2.3",
+ "schema-utils": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0"
+ }
+ },
+ "node_modules/file-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/file-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/file-save": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/file-save/-/file-save-0.2.0.tgz",
+ "integrity": "sha512-teMqpbPLBDAHEDAPYEb8fGfng4S6eGZcsN0CLM1ow0w1vtqTMBwNmd82dEc81O3C1BEs1EY8L18Ma6Q6O++v1A==",
+ "dependencies": {
+ "mkdirp": "~0.5.0"
+ }
+ },
+ "node_modules/file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
+ "node_modules/file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fill-range/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "dev": true,
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-cache-dir/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/flat": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/flat/-/flat-4.1.1.tgz",
+ "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "~2.0.3"
+ },
+ "bin": {
+ "flat": "cli.js"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flat-cache/node_modules/rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/flat/node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.1",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz",
+ "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+ "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
+ "dev": true
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globby": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz",
+ "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^1.0.2",
+ "dir-glob": "^2.2.2",
+ "fast-glob": "^2.2.6",
+ "glob": "^7.1.3",
+ "ignore": "^4.0.3",
+ "pify": "^4.0.1",
+ "slash": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "node_modules/growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmmirror.com/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.x"
+ }
+ },
+ "node_modules/gzip-size": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz",
+ "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
+ "dev": true,
+ "dependencies": {
+ "duplexer": "^0.1.1",
+ "pify": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz",
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+ "dev": true
+ },
+ "node_modules/har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "deprecated": "this library is no longer supported",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/hash-base/node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/hash-base/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "node_modules/hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
+ "dev": true
+ },
+ "node_modules/hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
+ "dev": true
+ },
+ "node_modules/highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "dev": true,
+ "dependencies": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "node_modules/hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz",
+ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "node_modules/hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz",
+ "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
+ "dev": true
+ },
+ "node_modules/hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz",
+ "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
+ "dev": true
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-encoding": "^1.0.1"
+ }
+ },
+ "node_modules/html-entities": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz",
+ "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+ "dev": true
+ },
+ "node_modules/html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz",
+ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "bin": {
+ "html-minifier": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/html-minifier/node_modules/commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ },
+ "node_modules/html-tags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz",
+ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/html-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==",
+ "deprecated": "3.x is no longer supported",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=6.9"
+ },
+ "peerDependencies": {
+ "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "node_modules/html-webpack-plugin/node_modules/toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz",
+ "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==",
+ "dev": true
+ },
+ "node_modules/html-webpack-plugin/node_modules/util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "node_modules/htmlparser2/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "node_modules/http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
+ "dev": true
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
+ "dev": true
+ },
+ "node_modules/http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dev": true,
+ "dependencies": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-middleware": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz",
+ "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==",
+ "dev": true,
+ "dependencies": {
+ "@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"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/http-proxy-middleware/node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.3.7"
+ }
+ },
+ "node_modules/https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+ "dev": true
+ },
+ "node_modules/human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.12.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/icss-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz",
+ "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.14"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/icss-utils/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/icss-utils/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
+ "node_modules/iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
+ "dev": true
+ },
+ "node_modules/ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
+ "dev": true,
+ "dependencies": {
+ "import-from": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
+ "dev": true,
+ "dependencies": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "dependencies": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/import-local/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/import-local/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/import-local/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/import-local/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-local/node_modules/pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
+ "dev": true
+ },
+ "node_modules/infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz",
+ "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inquirer/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/inquirer/node_modules/cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "dependencies": {
+ "restore-cursor": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inquirer/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/inquirer/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/inquirer/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inquirer/node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/inquirer/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/inquirer/node_modules/restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inquirer/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dev": true,
+ "dependencies": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/internal-ip/node_modules/default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
+ "dev": true
+ },
+ "node_modules/ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "dependencies": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "dev": true,
+ "dependencies": {
+ "ci-info": "^1.5.0"
+ },
+ "bin": {
+ "is-ci": "bin.js"
+ }
+ },
+ "node_modules/is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz",
+ "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
+ "dev": true,
+ "dependencies": {
+ "css-color-names": "^0.0.4",
+ "hex-color-regex": "^1.1.0",
+ "hsl-regex": "^1.0.0",
+ "hsla-regex": "^1.0.0",
+ "rgb-regex": "^1.0.1",
+ "rgba-regex": "^1.0.0"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.3"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-data-descriptor/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-descriptor/node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "dev": true,
+ "dependencies": {
+ "is-path-inside": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "dev": true,
+ "dependencies": {
+ "path-is-inside": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "node_modules/is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "node_modules/is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "dev": true
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
+ "dev": true
+ },
+ "node_modules/javascript-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
+ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
+ "dev": true
+ },
+ "node_modules/js-message": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
+ "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+ "dev": true
+ },
+ "node_modules/jsdom": {
+ "version": "15.2.1",
+ "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-15.2.1.tgz",
+ "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==",
+ "dev": true,
+ "dependencies": {
+ "abab": "^2.0.0",
+ "acorn": "^7.1.0",
+ "acorn-globals": "^4.3.2",
+ "array-equal": "^1.0.0",
+ "cssom": "^0.4.1",
+ "cssstyle": "^2.0.0",
+ "data-urls": "^1.1.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.11.1",
+ "html-encoding-sniffer": "^1.0.2",
+ "nwsapi": "^2.2.0",
+ "parse5": "5.1.0",
+ "pn": "^1.1.0",
+ "request": "^2.88.0",
+ "request-promise-native": "^1.0.7",
+ "saxes": "^3.1.9",
+ "symbol-tree": "^3.2.2",
+ "tough-cookie": "^3.0.1",
+ "w3c-hr-time": "^1.0.1",
+ "w3c-xmlserializer": "^1.1.2",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^7.0.0",
+ "ws": "^7.0.0",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "peerDependencies": {
+ "canvas": "^2.5.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsdom-global": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/jsdom-global/-/jsdom-global-3.0.2.tgz",
+ "integrity": "sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==",
+ "dev": true,
+ "peerDependencies": {
+ "jsdom": ">=10.0.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/tough-cookie": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-3.0.1.tgz",
+ "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
+ "dev": true,
+ "dependencies": {
+ "ip-regex": "^2.1.0",
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsdom/node_modules/tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/jsdom/node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/jsdom/node_modules/whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz",
+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsprim": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "dev": true,
+ "dependencies": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz",
+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+ "dev": true
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/klona": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz",
+ "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/launch-editor": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.4.0.tgz",
+ "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.6.1"
+ }
+ },
+ "node_modules/launch-editor-middleware": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz",
+ "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==",
+ "dev": true,
+ "dependencies": {
+ "launch-editor": "^2.4.0"
+ }
+ },
+ "node_modules/less": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
+ "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
+ "dev": true,
+ "dependencies": {
+ "copy-anything": "^2.0.1",
+ "parse-node-version": "^1.0.1",
+ "tslib": "^2.3.0"
+ },
+ "bin": {
+ "lessc": "bin/lessc"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "optionalDependencies": {
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "source-map": "~0.6.0"
+ }
+ },
+ "node_modules/less-loader": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-7.3.0.tgz",
+ "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==",
+ "dev": true,
+ "dependencies": {
+ "klona": "^2.0.4",
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "peerDependencies": {
+ "less": "^3.5.0 || ^4.0.0",
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/less-loader/node_modules/schema-utils": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz",
+ "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/loader-fs-cache": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
+ "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==",
+ "dev": true,
+ "dependencies": {
+ "find-cache-dir": "^0.1.1",
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "node_modules/loader-fs-cache/node_modules/find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==",
+ "dev": true,
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pkg-dir": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/loader-fs-cache/node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/loader-fs-cache/node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/loader-fs-cache/node_modules/pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.3.0 <5.0.0 || >=5.10"
+ }
+ },
+ "node_modules/loader-utils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz",
+ "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ },
+ "engines": {
+ "node": ">=8.9.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/lodash-unified": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz",
+ "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==",
+ "peerDependencies": {
+ "@types/lodash-es": "*",
+ "lodash": "*",
+ "lodash-es": "*"
+ }
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "dev": true
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "node_modules/lodash.defaultsdeep": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
+ "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
+ "dev": true
+ },
+ "node_modules/lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
+ "dev": true
+ },
+ "node_modules/lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==",
+ "dev": true
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "node_modules/lodash.transform": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz",
+ "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==",
+ "dev": true
+ },
+ "node_modules/lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "dev": true
+ },
+ "node_modules/log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/loglevel": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz",
+ "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmmirror.com/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+ "dev": true,
+ "dependencies": {
+ "get-func-name": "^2.0.0"
+ }
+ },
+ "node_modules/lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
+ "dev": true
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/magix": {
+ "version": "3.8.16",
+ "resolved": "https://registry.npmmirror.com/magix/-/magix-3.8.16.tgz",
+ "integrity": "sha512-aJPH4upWrJV6eDH4jZuoRo8vw1kUQUmxwhA6ukX4YeCrfaQ0xHA+KPGvSVcHE4NXg5P7tJFG/uDJBcrZpW1huw=="
+ },
+ "node_modules/make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+ "dev": true
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+ },
+ "node_modules/memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
+ "dev": true,
+ "dependencies": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "node_modules/merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz",
+ "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "dev": true,
+ "dependencies": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "bin": {
+ "miller-rabin": "bin/miller-rabin"
+ }
+ },
+ "node_modules/miller-rabin/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mini-css-extract-plugin": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
+ "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^1.1.0",
+ "normalize-url": "1.9.1",
+ "schema-utils": "^1.0.0",
+ "webpack-sources": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 6.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.4.0"
+ }
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.0.1",
+ "prepend-http": "^1.0.0",
+ "query-string": "^4.1.0",
+ "sort-keys": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "node_modules/minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "dev": true
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ },
+ "node_modules/minipass": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.3.tgz",
+ "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/minipass/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mocha": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/mocha/-/mocha-6.2.3.tgz",
+ "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "3.2.3",
+ "browser-stdout": "1.3.1",
+ "debug": "3.2.6",
+ "diff": "3.5.0",
+ "escape-string-regexp": "1.0.5",
+ "find-up": "3.0.0",
+ "glob": "7.1.3",
+ "growl": "1.10.5",
+ "he": "1.2.0",
+ "js-yaml": "3.13.1",
+ "log-symbols": "2.2.0",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.4",
+ "ms": "2.1.1",
+ "node-environment-flags": "1.0.5",
+ "object.assign": "4.1.0",
+ "strip-json-comments": "2.0.1",
+ "supports-color": "6.0.0",
+ "which": "1.3.1",
+ "wide-align": "1.1.3",
+ "yargs": "13.3.2",
+ "yargs-parser": "13.1.2",
+ "yargs-unparser": "1.6.0"
+ },
+ "bin": {
+ "_mocha": "bin/_mocha",
+ "mocha": "bin/mocha"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/mocha/node_modules/debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "dev": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/mocha/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mocha/node_modules/glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mocha/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mocha/node_modules/minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/mocha/node_modules/mkdirp": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.4.tgz",
+ "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/mocha/node_modules/ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "node_modules/mocha/node_modules/object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mocha/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mocha/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mocha/node_modules/supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mochapack": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmmirror.com/mochapack/-/mochapack-1.1.15.tgz",
+ "integrity": "sha512-/gOsgJk3CWlNiOdef7hrNhp37VpatB9IiWzSCxS2p8pG21R7NAKJBBsU5T0eUWT9oz1NQhyubXdQgh51U7oVZA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime-corejs2": "^7.0.0",
+ "chalk": "^2.4.2",
+ "chokidar": "^2.0.0",
+ "glob-parent": "5.1.0",
+ "globby": "^10.0.1",
+ "interpret": "^1.2.0",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "lodash": "^4.17.15",
+ "memory-fs": "^0.4.1",
+ "minimatch": "^3.0.4",
+ "nodent-runtime": "^3.2.1",
+ "normalize-path": "^3.0.0",
+ "progress": "^2.0.3",
+ "source-map-support": "^0.5.13",
+ "toposort": "^2.0.2",
+ "yargs": "14.0.0"
+ },
+ "bin": {
+ "mochapack": "bin/mochapack"
+ },
+ "peerDependencies": {
+ "mocha": ">=4 <=7",
+ "webpack": "^4.0.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/mochapack/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/mochapack/node_modules/anymatch/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+ "dev": true,
+ "dependencies": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "optionalDependencies": {
+ "fsevents": "^1.2.7"
+ }
+ },
+ "node_modules/mochapack/node_modules/chokidar/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/mochapack/node_modules/fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/fast-glob/node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/mochapack/node_modules/fast-glob/node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mochapack/node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mochapack/node_modules/fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/glob-parent": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/mochapack/node_modules/globby": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-10.0.2.tgz",
+ "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+ "dev": true,
+ "dependencies": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/mochapack/node_modules/is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mochapack/node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/mochapack/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mochapack/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mochapack/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mochapack/node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/mochapack/node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/mochapack/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mochapack/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mochapack/node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/mochapack/node_modules/yargs": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-14.0.0.tgz",
+ "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.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.1"
+ }
+ },
+ "node_modules/mout": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/mout/-/mout-0.11.1.tgz",
+ "integrity": "sha512-pK9VNiLE3QgGBrC/3ICAscwOLU7oTNeK2l32uqNAioBYtB2tQAfSsGDNChUlk7CP23126mc5lUt6+na9FlN8JA=="
+ },
+ "node_modules/move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "dev": true,
+ "dependencies": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ },
+ "bin": {
+ "multicast-dns": "cli.js"
+ }
+ },
+ "node_modules/multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
+ "dev": true
+ },
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/nan": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmmirror.com/nan/-/nan-2.16.0.tgz",
+ "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/needle": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz",
+ "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node_modules/no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node_modules/node-environment-flags": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
+ "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
+ "dev": true,
+ "dependencies": {
+ "object.getownpropertydescriptors": "^2.0.3",
+ "semver": "^5.7.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/node-forge": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz",
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ }
+ },
+ "node_modules/node-libs-browser/node_modules/punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.5.tgz",
+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
+ "dev": true
+ },
+ "node_modules/nodent-runtime": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz",
+ "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==",
+ "dev": true,
+ "hasInstallScript": true
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/normalize-wheel-es": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+ "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+ },
+ "node_modules/npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "node_modules/num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
+ "dev": true
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.1.tgz",
+ "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==",
+ "dev": true
+ },
+ "node_modules/oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz",
+ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true
+ },
+ "node_modules/object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.getownpropertydescriptors": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz",
+ "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==",
+ "dev": true,
+ "dependencies": {
+ "array.prototype.reduce": "^1.0.4",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "dev": true
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dev": true,
+ "dependencies": {
+ "is-wsl": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "dev": true,
+ "bin": {
+ "opener": "bin/opener-bin.js"
+ }
+ },
+ "node_modules/opn": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz",
+ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+ "dev": true,
+ "dependencies": {
+ "is-wsl": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/ora/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+ "dev": true
+ },
+ "node_modules/os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-retry": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz",
+ "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+ "dev": true,
+ "dependencies": {
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "node_modules/parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "dev": true,
+ "dependencies": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module/node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dev": true,
+ "dependencies": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.0.tgz",
+ "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
+ "dev": true
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "node_modules/path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
+ "node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/path-type/node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "dev": true,
+ "dependencies": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "dependencies": {
+ "pinkie": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/pn/-/pn-1.1.0.tgz",
+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "dev": true
+ },
+ "node_modules/pngjs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/pnp-webpack-plugin": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz",
+ "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==",
+ "dev": true,
+ "dependencies": {
+ "ts-pnp": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/portfinder": {
+ "version": "1.0.28",
+ "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz",
+ "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+ "dev": true,
+ "dependencies": {
+ "async": "^2.6.2",
+ "debug": "^3.1.1",
+ "mkdirp": "^0.5.5"
+ },
+ "engines": {
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.14",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.14.tgz",
+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
+ "dependencies": {
+ "nanoid": "^3.3.4",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-calc": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz",
+ "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.27",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "node_modules/postcss-calc/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-calc/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-colormin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "color": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-colormin/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-colormin/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-colormin/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-convert-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-convert-values/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-convert-values/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-convert-values/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-discard-comments": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-discard-comments/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-discard-comments/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-discard-duplicates/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-discard-duplicates/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-discard-empty/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-discard-empty/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-discard-overridden/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-discard-overridden/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
+ "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
+ "dev": true,
+ "dependencies": {
+ "cosmiconfig": "^5.0.0",
+ "import-cwd": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz",
+ "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^1.1.0",
+ "postcss": "^7.0.0",
+ "postcss-load-config": "^2.0.0",
+ "schema-utils": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/postcss-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/postcss-loader/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-loader/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-loader/node_modules/schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/postcss-merge-longhand": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+ "dev": true,
+ "dependencies": {
+ "css-color-names": "0.0.4",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "stylehacks": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-merge-longhand/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-merge-longhand/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-merge-rules": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "cssnano-util-same-parent": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0",
+ "vendors": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-merge-rules/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-merge-rules/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-minify-font-values/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-font-values/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-gradients": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "is-color-stop": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-minify-gradients/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-gradients/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-params": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+ "dev": true,
+ "dependencies": {
+ "alphanum-sort": "^1.0.0",
+ "browserslist": "^4.0.0",
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-minify-params/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-params/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-minify-params/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-selectors": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+ "dev": true,
+ "dependencies": {
+ "alphanum-sort": "^1.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-minify-selectors/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-minify-selectors/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss-modules-extract-imports/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-modules-extract-imports/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
+ "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
+ "dev": true,
+ "dependencies": {
+ "icss-utils": "^4.1.1",
+ "postcss": "^7.0.32",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss-modules-local-by-default/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-modules-local-by-default/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-modules-scope": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
+ "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/postcss-modules-scope/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-modules-scope/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-modules-values": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+ "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+ "dev": true,
+ "dependencies": {
+ "icss-utils": "^4.0.0",
+ "postcss": "^7.0.6"
+ }
+ },
+ "node_modules/postcss-modules-values/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-modules-values/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-charset": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-charset/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-charset/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-display-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-display-values/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-display-values/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-positions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-positions/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-positions/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-repeat-style": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-repeat-style/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-string": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+ "dev": true,
+ "dependencies": {
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-string/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-string/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-timing-functions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-timing-functions/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-unicode/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-unicode/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+ "dev": true,
+ "dependencies": {
+ "is-absolute-url": "^2.0.0",
+ "normalize-url": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-url/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-url/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-whitespace": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-normalize-whitespace/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-ordered-values": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-ordered-values/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-ordered-values/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-reduce-initial": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-reduce-initial/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-reduce-initial/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-reduce-transforms": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+ "dev": true,
+ "dependencies": {
+ "cssnano-util-get-match": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-reduce-transforms/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-reduce-transforms/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-svgo": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
+ "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
+ "dev": true,
+ "dependencies": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-svgo/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-svgo/node_modules/postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ },
+ "node_modules/postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+ "dev": true,
+ "dependencies": {
+ "alphanum-sort": "^1.0.0",
+ "postcss": "^7.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/postcss-unique-selectors/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/postcss-unique-selectors/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/pretty-error": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz",
+ "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.20",
+ "renderkid": "^2.0.4"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "dev": true
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "dev": true
+ },
+ "node_modules/pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "dev": true
+ },
+ "node_modules/psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ },
+ "node_modules/public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "dependencies": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "node_modules/public-encrypt/node_modules/bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "dependencies": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ }
+ },
+ "node_modules/pumpify/node_modules/pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz",
+ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6.0",
+ "teleport": ">=0.2.0"
+ }
+ },
+ "node_modules/qrcode": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.1.tgz",
+ "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
+ "dependencies": {
+ "dijkstrajs": "^1.0.1",
+ "encode-utf8": "^1.0.3",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ },
+ "bin": {
+ "qrcode": "bin/qrcode"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/qrcode.vue": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz",
+ "integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/qrcode/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qrcode/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcode/node_modules/cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "node_modules/qrcode/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/qrcode/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "node_modules/qrcode/node_modules/wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qrcode/node_modules/yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dependencies": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/qrcode/node_modules/yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qrcodejs2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmmirror.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
+ "integrity": "sha512-+Y4HA+cb6qUzdgvI3KML8GYpMFwB24dFwzMkS/yXq6hwtUGNUnZQdUnksrV1XGMc2mid5ROw5SAuY9XhI3ValA=="
+ },
+ "node_modules/qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
+ "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.x"
+ }
+ },
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "node_modules/randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dev": true,
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "node_modules/regenerate-unicode-properties": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+ "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ },
+ "node_modules/regenerator-transform": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+ "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6.5.0"
+ }
+ },
+ "node_modules/regexpu-core": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz",
+ "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==",
+ "dev": true,
+ "dependencies": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.0.1",
+ "regjsgen": "^0.6.0",
+ "regjsparser": "^0.8.2",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/regjsgen": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz",
+ "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
+ "dev": true
+ },
+ "node_modules/regjsparser": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz",
+ "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
+ "dev": true,
+ "dependencies": {
+ "jsesc": "~0.5.0"
+ },
+ "bin": {
+ "regjsparser": "bin/parser"
+ }
+ },
+ "node_modules/regjsparser/node_modules/jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ }
+ },
+ "node_modules/relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "dev": true
+ },
+ "node_modules/renderkid": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz",
+ "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
+ "dev": true,
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "node_modules/renderkid/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/renderkid/node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ }
+ },
+ "node_modules/renderkid/node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/renderkid/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/renderkid/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "node_modules/renderkid/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "node_modules/renderkid/node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "node_modules/renderkid/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+ "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
+ "dev": true,
+ "dependencies": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.5.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/request-promise-core": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz",
+ "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.19"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "peerDependencies": {
+ "request": "^2.34"
+ }
+ },
+ "node_modules/request-promise-native": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz",
+ "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
+ "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142",
+ "dev": true,
+ "dependencies": {
+ "request-promise-core": "1.1.4",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=0.12.0"
+ },
+ "peerDependencies": {
+ "request": "^2.34"
+ }
+ },
+ "node_modules/request-promise-native/node_modules/tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dev": true,
+ "dependencies": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/request/node_modules/tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dev": true,
+ "dependencies": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true
+ },
+ "node_modules/resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
+ "dev": true,
+ "dependencies": {
+ "resolve-from": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "dev": true
+ },
+ "node_modules/restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+ "dev": true,
+ "dependencies": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz",
+ "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
+ "dev": true
+ },
+ "node_modules/rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz",
+ "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
+ "dev": true
+ },
+ "node_modules/rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ }
+ },
+ "node_modules/ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "dependencies": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "node_modules/run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
+ "dev": true,
+ "dependencies": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "node_modules/rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.9.0"
+ },
+ "engines": {
+ "npm": ">=2.0.0"
+ }
+ },
+ "node_modules/rxjs/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "node_modules/saxes": {
+ "version": "3.1.11",
+ "resolved": "https://registry.npmmirror.com/saxes/-/saxes-3.1.11.tgz",
+ "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
+ "dev": true,
+ "dependencies": {
+ "xmlchars": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "dev": true,
+ "dependencies": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ }
+ },
+ "node_modules/select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
+ "dev": true
+ },
+ "node_modules/selfsigned": {
+ "version": "1.10.14",
+ "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz",
+ "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
+ "dev": true,
+ "dependencies": {
+ "node-forge": "^0.10.0"
+ }
+ },
+ "node_modules/semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "dependencies": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "node_modules/serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "dev": true,
+ "dependencies": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/serve-index/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dev": true,
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-index/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ },
+ "node_modules/serve-index/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/serve-index/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ },
+ "node_modules/serve-index/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "dev": true
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "node_modules/sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "bin": {
+ "sha.js": "bin.js"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz",
+ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
+ "dev": true
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "node_modules/simple-swizzle/node_modules/is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/snapdragon/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sockjs": {
+ "version": "0.3.24",
+ "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",
+ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "dev": true,
+ "dependencies": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^8.3.2",
+ "websocket-driver": "^0.7.4"
+ }
+ },
+ "node_modules/sockjs-client": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz",
+ "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^3.2.7",
+ "eventsource": "^2.0.2",
+ "faye-websocket": "^0.11.4",
+ "inherits": "^2.0.4",
+ "url-parse": "^1.5.10"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/sockjs-client/node_modules/eventsource": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz",
+ "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/sockjs/node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true,
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ },
+ "node_modules/sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sort-keys/node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sortable.js": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/sortable.js/-/sortable.js-0.3.0.tgz",
+ "integrity": "sha512-sAtcxX/ff9L334IKcFPnssFt7xVwsLVoaTft3iTyARBfNl42yq6JSJLbgpImO9/TRN51f5QP+6lRUsFjmz1reQ==",
+ "dependencies": {
+ "domhelpers": "^0.1.0",
+ "mout": "^0.11.0"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
+ "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
+ },
+ "node_modules/source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dev": true,
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+ "dev": true
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead"
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
+ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
+ "dev": true
+ },
+ "node_modules/spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz",
+ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ }
+ },
+ "node_modules/spdy-transport/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/spdy-transport/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/spdy-transport/node_modules/readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/spdy/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/spdy/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "node_modules/sshpk": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
+ "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
+ "dev": true,
+ "dependencies": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ },
+ "bin": {
+ "sshpk-conv": "bin/sshpk-conv",
+ "sshpk-sign": "bin/sshpk-sign",
+ "sshpk-verify": "bin/sshpk-verify"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ssri": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+ "dev": true,
+ "dependencies": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
+ "dev": true
+ },
+ "node_modules/stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "dev": true
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "dependencies": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+ "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+ "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stylehacks": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz",
+ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+ "dev": true,
+ "dependencies": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/stylehacks/node_modules/picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "node_modules/stylehacks/node_modules/postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "dependencies": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/stylehacks/node_modules/postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stylus": {
+ "version": "0.54.8",
+ "resolved": "https://registry.npmmirror.com/stylus/-/stylus-0.54.8.tgz",
+ "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
+ "dev": true,
+ "dependencies": {
+ "css-parse": "~2.0.0",
+ "debug": "~3.1.0",
+ "glob": "^7.1.6",
+ "mkdirp": "~1.0.4",
+ "safer-buffer": "^2.1.2",
+ "sax": "~1.2.4",
+ "semver": "^6.3.0",
+ "source-map": "^0.7.3"
+ },
+ "bin": {
+ "stylus": "bin/stylus"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/stylus-loader": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/stylus-loader/-/stylus-loader-3.0.2.tgz",
+ "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^1.0.2",
+ "lodash.clonedeep": "^4.5.0",
+ "when": "~3.6.x"
+ },
+ "peerDependencies": {
+ "stylus": ">=0.52.4"
+ }
+ },
+ "node_modules/stylus-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/stylus-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/stylus/node_modules/debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/stylus/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true,
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stylus/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/stylus/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/stylus/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "node_modules/table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/table/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/table/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/table/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz",
+ "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+ "dev": true,
+ "dependencies": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/terser-webpack-plugin": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
+ "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ },
+ "engines": {
+ "node": ">= 6.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "dependencies": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/terser-webpack-plugin/node_modules/schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/thread-loader": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz",
+ "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==",
+ "dev": true,
+ "dependencies": {
+ "loader-runner": "^2.3.1",
+ "loader-utils": "^1.1.0",
+ "neo-async": "^2.6.0"
+ },
+ "engines": {
+ "node": ">= 6.9.0 <7.0.0 || >= 8.9.0"
+ },
+ "peerDependencies": {
+ "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0"
+ }
+ },
+ "node_modules/thread-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/thread-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "dev": true
+ },
+ "node_modules/timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "dev": true,
+ "dependencies": {
+ "setimmediate": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
+ "dev": true
+ },
+ "node_modules/tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "dependencies": {
+ "os-tmpdir": "~1.0.2"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
+ "node_modules/to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
+ "dev": true
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/toposort": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz",
+ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==",
+ "dev": true
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz",
+ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
+ "dev": true
+ },
+ "node_modules/ts-pnp": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/ts-pnp/-/ts-pnp-1.2.0.tgz",
+ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
+ "node_modules/tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
+ "dev": true
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "dev": true
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dev": true,
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "node_modules/uglify-js": {
+ "version": "3.4.10",
+ "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz",
+ "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+ "dev": true,
+ "dependencies": {
+ "commander": "~2.19.0",
+ "source-map": "~0.6.1"
+ },
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/uglify-js/node_modules/commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
+ },
+ "node_modules/unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "node_modules/unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "dependencies": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-match-property-value-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/unicode-property-aliases-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
+ "dev": true
+ },
+ "node_modules/uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
+ "dev": true
+ },
+ "node_modules/unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "dependencies": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "node_modules/unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
+ "dev": true
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4",
+ "yarn": "*"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
+ "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
+ "dev": true,
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "browserslist-lint": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
+ "dev": true
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "dev": true
+ },
+ "node_modules/url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz",
+ "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ }
+ },
+ "node_modules/url-loader": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-2.3.0.tgz",
+ "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==",
+ "dev": true,
+ "dependencies": {
+ "loader-utils": "^1.2.3",
+ "mime": "^2.4.4",
+ "schema-utils": "^2.5.0"
+ },
+ "engines": {
+ "node": ">= 8.9.0"
+ },
+ "peerDependencies": {
+ "file-loader": "*",
+ "webpack": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "file-loader": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/url-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/url-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/url-loader/node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "node_modules/url/node_modules/punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+ "dev": true
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "2.0.3"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz",
+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
+ "dev": true,
+ "dependencies": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ }
+ },
+ "node_modules/util/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ },
+ "node_modules/utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
+ "dev": true
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "dev": true,
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/uuidv1": {
+ "version": "1.6.14",
+ "resolved": "https://registry.npmmirror.com/uuidv1/-/uuidv1-1.6.14.tgz",
+ "integrity": "sha512-34FVVCDDHzzcOglmrKbZP99+8/6StEzo3VU3MuKw0Mo0B/YBQ1bWNQU8s79ofNnrPlfI+7A9pkAdhmQ6CyLHFg=="
+ },
+ "node_modules/v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "dev": true,
+ "peer": true
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vendors": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz",
+ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
+ "dev": true
+ },
+ "node_modules/verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "dev": true,
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "node_modules/vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "node_modules/vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "node_modules/vue-demi": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+ "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-draggable-next": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/vue-draggable-next/-/vue-draggable-next-2.1.1.tgz",
+ "integrity": "sha512-f5lmA7t6LMaL4viR7dU30zzvqJzaKQs0ymL0Jy9UDT9uiZ2tXF3MzPzEvpTH2UODXZJkT+SnjeV1fXHMsgXLYA==",
+ "peerDependencies": {
+ "sortablejs": "^1.14.0",
+ "vue": "^3.2.2"
+ }
+ },
+ "node_modules/vue-hot-reload-api": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
+ "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
+ "dev": true
+ },
+ "node_modules/vue-i18n": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+ "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+ "dependencies": {
+ "@intlify/core-base": "9.13.1",
+ "@intlify/shared": "9.13.1",
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-loader": {
+ "version": "15.9.8",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz",
+ "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==",
+ "dev": true,
+ "dependencies": {
+ "@vue/component-compiler-utils": "^3.1.0",
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.1.0",
+ "vue-hot-reload-api": "^2.3.0",
+ "vue-style-loader": "^4.1.0"
+ },
+ "peerDependencies": {
+ "css-loader": "*",
+ "webpack": "^3.0.0 || ^4.1.0 || ^5.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "cache-loader": {
+ "optional": true
+ },
+ "vue-template-compiler": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-loader/node_modules/hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "node_modules/vue-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/vue-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/vue-router": {
+ "version": "4.0.16",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.16.tgz",
+ "integrity": "sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-style-loader": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
+ "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==",
+ "dev": true,
+ "dependencies": {
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.0.2"
+ }
+ },
+ "node_modules/vue-style-loader/node_modules/hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "node_modules/vue-style-loader/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/vue-style-loader/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/vue-template-es2015-compiler": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
+ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
+ "dev": true
+ },
+ "node_modules/vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.2"
+ }
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dev": true,
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
+ "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
+ "dev": true,
+ "dependencies": {
+ "domexception": "^1.0.1",
+ "webidl-conversions": "^4.0.2",
+ "xml-name-validator": "^3.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer/node_modules/webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "node_modules/wangeditor": {
+ "version": "4.7.15",
+ "resolved": "https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz",
+ "integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==",
+ "dependencies": {
+ "@babel/runtime": "^7.11.2",
+ "@babel/runtime-corejs3": "^7.11.2",
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/watchpack": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
+ "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ },
+ "optionalDependencies": {
+ "chokidar": "^3.4.1",
+ "watchpack-chokidar2": "^2.0.1"
+ }
+ },
+ "node_modules/watchpack-chokidar2": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
+ "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "chokidar": "^2.1.8"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "optionalDependencies": {
+ "fsevents": "^1.2.7"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "binary-extensions": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/watchpack-chokidar2/node_modules/readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "dev": true,
+ "dependencies": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "node_modules/wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/webpack": {
+ "version": "4.46.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz",
+ "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
+ "dev": true,
+ "dependencies": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/wasm-edit": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "acorn": "^6.4.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.5.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.3",
+ "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.3",
+ "watchpack": "^1.7.4",
+ "webpack-sources": "^1.4.1"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=6.11.5"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ },
+ "webpack-command": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-bundle-analyzer": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz",
+ "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1",
+ "bfj": "^6.1.1",
+ "chalk": "^2.4.1",
+ "commander": "^2.18.0",
+ "ejs": "^2.6.1",
+ "express": "^4.16.3",
+ "filesize": "^3.6.1",
+ "gzip-size": "^5.0.0",
+ "lodash": "^4.17.19",
+ "mkdirp": "^0.5.1",
+ "opener": "^1.5.1",
+ "ws": "^6.0.0"
+ },
+ "bin": {
+ "webpack-bundle-analyzer": "lib/bin/analyzer.js"
+ },
+ "engines": {
+ "node": ">= 6.14.4"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/webpack-bundle-analyzer/node_modules/ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dev": true,
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/webpack-chain": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz",
+ "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==",
+ "dev": true,
+ "dependencies": {
+ "deepmerge": "^1.5.2",
+ "javascript-stringify": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/webpack-dev-middleware": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+ "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+ "dev": true,
+ "dependencies": {
+ "memory-fs": "^0.4.1",
+ "mime": "^2.4.4",
+ "mkdirp": "^0.5.1",
+ "range-parser": "^1.2.1",
+ "webpack-log": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/webpack-dev-middleware/node_modules/mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/webpack-dev-server": {
+ "version": "3.11.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+ "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-html-community": "0.0.8",
+ "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.8",
+ "semver": "^6.3.0",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.21",
+ "sockjs-client": "^1.5.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"
+ },
+ "bin": {
+ "webpack-dev-server": "bin/webpack-dev-server.js"
+ },
+ "engines": {
+ "node": ">= 6.11.5"
+ },
+ "peerDependencies": {
+ "webpack": "^4.0.0 || ^5.0.0"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "dependencies": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "dependencies": {
+ "remove-trailing-separator": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+ "dev": true,
+ "dependencies": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "optionalDependencies": {
+ "fsevents": "^1.2.7"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "dependencies": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+ "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+ "dev": true,
+ "dependencies": {
+ "http-proxy": "^1.17.0",
+ "is-glob": "^4.0.0",
+ "lodash": "^4.17.11",
+ "micromatch": "^3.1.10"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/is-absolute-url": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/webpack-dev-server/node_modules/readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/webpack-dev-server/node_modules/ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dev": true,
+ "dependencies": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "node_modules/webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/webpack-merge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "dependencies": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/webpack/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/webpack/node_modules/loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/webpack/node_modules/schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "dev": true,
+ "dependencies": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-encoding/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/when": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmmirror.com/when/-/when-3.6.4.tgz",
+ "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
+ "dev": true
+ },
+ "node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "dependencies": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "node_modules/which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
+ },
+ "node_modules/wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "node_modules/wide-align/node_modules/ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/wide-align/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/wide-align/node_modules/string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "dependencies": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/wide-align/node_modules/strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "dependencies": {
+ "errno": "~0.1.7"
+ }
+ },
+ "node_modules/wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "mkdirp": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ws": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.8.tgz",
+ "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==",
+ "engines": {
+ "node": ">=8.3.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": "^5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
+ "node_modules/yargs-parser/node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs-unparser": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
+ "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
+ "dev": true,
+ "dependencies": {
+ "flat": "^4.1.0",
+ "lodash": "^4.17.15",
+ "yargs": "^13.3.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "node_modules/yargs/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yargs/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yorkie": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz",
+ "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "execa": "^0.8.0",
+ "is-ci": "^1.0.10",
+ "normalize-path": "^1.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yorkie/node_modules/cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "node_modules/yorkie/node_modules/execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.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"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yorkie/node_modules/get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yorkie/node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "node_modules/yorkie/node_modules/normalize-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz",
+ "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/yorkie/node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ },
+ "node_modules/zrender": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz",
+ "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==",
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
+ }
+ },
+ "dependencies": {
+ "@achrinza/node-ipc": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz",
+ "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==",
+ "dev": true,
+ "requires": {
+ "@node-ipc/js-queue": "2.0.3",
+ "event-pubsub": "4.3.0",
+ "js-message": "1.0.7"
+ }
+ },
+ "@ampproject/remapping": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz",
+ "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.16.7"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.18.5.tgz",
+ "integrity": "sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.18.5.tgz",
+ "integrity": "sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.1.0",
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.18.2",
+ "@babel/helper-compilation-targets": "^7.18.2",
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helpers": "^7.18.2",
+ "@babel/parser": "^7.18.5",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.18.5",
+ "@babel/types": "^7.18.4",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.1",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.2.tgz",
+ "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.18.2",
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "jsesc": "^2.5.1"
+ },
+ "dependencies": {
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ }
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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-compilation-targets": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz",
+ "integrity": "sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.17.10",
+ "@babel/helper-validator-option": "^7.16.7",
+ "browserslist": "^4.20.2",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz",
+ "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-member-expression-to-functions": "^7.17.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-create-regexp-features-plugin": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz",
+ "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "regexpu-core": "^5.0.1"
+ }
+ },
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz",
+ "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==",
+ "dev": true,
+ "requires": {
+ "@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": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz",
+ "integrity": "sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==",
+ "dev": true
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.9",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.16.7",
+ "@babel/types": "^7.17.0"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.7",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz",
+ "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.17.0"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz",
+ "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.16.7",
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-simple-access": "^7.17.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.18.0",
+ "@babel/types": "^7.18.0"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz",
+ "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==",
+ "dev": true
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.16.8",
+ "resolved": "https://registry.npmmirror.com/@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.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz",
+ "integrity": "sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.18.2",
+ "@babel/helper-member-expression-to-functions": "^7.17.7",
+ "@babel/helper-optimise-call-expression": "^7.16.7",
+ "@babel/traverse": "^7.18.2",
+ "@babel/types": "^7.18.2"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz",
+ "integrity": "sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.18.2"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmmirror.com/@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"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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-validator-identifier": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz",
+ "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==",
+ "dev": true
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.16.8",
+ "resolved": "https://registry.npmmirror.com/@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/helpers": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.2.tgz",
+ "integrity": "sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.16.7",
+ "@babel/traverse": "^7.18.2",
+ "@babel/types": "^7.18.2"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz",
+ "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.5.tgz",
+ "integrity": "sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw=="
+ },
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz",
+ "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz",
+ "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+ "@babel/plugin-proposal-optional-chaining": "^7.17.12"
+ }
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz",
+ "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-remap-async-to-generator": "^7.16.8",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz",
+ "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-proposal-class-static-block": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz",
+ "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz",
+ "integrity": "sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-replace-supers": "^7.18.2",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/plugin-syntax-decorators": "^7.17.12",
+ "charcodes": "^0.2.0"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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-export-namespace-from": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz",
+ "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz",
+ "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz",
+ "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz",
+ "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-numeric-separator": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.16.7",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz",
+ "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.17.10",
+ "@babel/helper-compilation-targets": "^7.17.10",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.17.12"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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-optional-chaining": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz",
+ "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-private-methods": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz",
+ "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz",
+ "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-create-class-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz",
+ "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmmirror.com/@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-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@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.14.5"
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz",
+ "integrity": "sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-import-assertions": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz",
+ "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@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-jsx": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz",
+ "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@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"
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz",
+ "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz",
+ "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-remap-async-to-generator": "^7.16.8"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz",
+ "integrity": "sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.18.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz",
+ "integrity": "sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.16.7",
+ "@babel/helper-environment-visitor": "^7.18.2",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-optimise-call-expression": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-replace-supers": "^7.18.2",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz",
+ "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz",
+ "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz",
+ "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.1",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz",
+ "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz",
+ "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz",
+ "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz",
+ "integrity": "sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-simple-access": "^7.18.2",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz",
+ "integrity": "sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz",
+ "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.18.0",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz",
+ "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.17.12",
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz",
+ "integrity": "sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz",
+ "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz",
+ "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "regenerator-transform": "^0.15.0"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz",
+ "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz",
+ "integrity": "sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.16.7",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "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": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz",
+ "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz",
+ "integrity": "sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.17.12",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz",
+ "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.17.12"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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/preset-env": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.18.2.tgz",
+ "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.17.10",
+ "@babel/helper-compilation-targets": "^7.18.2",
+ "@babel/helper-plugin-utils": "^7.17.12",
+ "@babel/helper-validator-option": "^7.16.7",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12",
+ "@babel/plugin-proposal-async-generator-functions": "^7.17.12",
+ "@babel/plugin-proposal-class-properties": "^7.17.12",
+ "@babel/plugin-proposal-class-static-block": "^7.18.0",
+ "@babel/plugin-proposal-dynamic-import": "^7.16.7",
+ "@babel/plugin-proposal-export-namespace-from": "^7.17.12",
+ "@babel/plugin-proposal-json-strings": "^7.17.12",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12",
+ "@babel/plugin-proposal-numeric-separator": "^7.16.7",
+ "@babel/plugin-proposal-object-rest-spread": "^7.18.0",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.16.7",
+ "@babel/plugin-proposal-optional-chaining": "^7.17.12",
+ "@babel/plugin-proposal-private-methods": "^7.17.12",
+ "@babel/plugin-proposal-private-property-in-object": "^7.17.12",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.17.12",
+ "@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-import-assertions": "^7.17.12",
+ "@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.17.12",
+ "@babel/plugin-transform-async-to-generator": "^7.17.12",
+ "@babel/plugin-transform-block-scoped-functions": "^7.16.7",
+ "@babel/plugin-transform-block-scoping": "^7.17.12",
+ "@babel/plugin-transform-classes": "^7.17.12",
+ "@babel/plugin-transform-computed-properties": "^7.17.12",
+ "@babel/plugin-transform-destructuring": "^7.18.0",
+ "@babel/plugin-transform-dotall-regex": "^7.16.7",
+ "@babel/plugin-transform-duplicate-keys": "^7.17.12",
+ "@babel/plugin-transform-exponentiation-operator": "^7.16.7",
+ "@babel/plugin-transform-for-of": "^7.18.1",
+ "@babel/plugin-transform-function-name": "^7.16.7",
+ "@babel/plugin-transform-literals": "^7.17.12",
+ "@babel/plugin-transform-member-expression-literals": "^7.16.7",
+ "@babel/plugin-transform-modules-amd": "^7.18.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.18.2",
+ "@babel/plugin-transform-modules-systemjs": "^7.18.0",
+ "@babel/plugin-transform-modules-umd": "^7.18.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12",
+ "@babel/plugin-transform-new-target": "^7.17.12",
+ "@babel/plugin-transform-object-super": "^7.16.7",
+ "@babel/plugin-transform-parameters": "^7.17.12",
+ "@babel/plugin-transform-property-literals": "^7.16.7",
+ "@babel/plugin-transform-regenerator": "^7.18.0",
+ "@babel/plugin-transform-reserved-words": "^7.17.12",
+ "@babel/plugin-transform-shorthand-properties": "^7.16.7",
+ "@babel/plugin-transform-spread": "^7.17.12",
+ "@babel/plugin-transform-sticky-regex": "^7.16.7",
+ "@babel/plugin-transform-template-literals": "^7.18.2",
+ "@babel/plugin-transform-typeof-symbol": "^7.17.12",
+ "@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.18.2",
+ "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.22.1",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmmirror.com/@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-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.3.tgz",
+ "integrity": "sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/runtime-corejs2": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.18.3.tgz",
+ "integrity": "sha512-r9L5eZChdP1DHSL+YwGEd7Rcs8Yk2KDOwSJ4cdB8ZAMolqiW7Qa9I1ir/05lte/i6N979PKYr5288OqoyZkabA==",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.6.12",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.18.3",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz",
+ "integrity": "sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==",
+ "requires": {
+ "core-js-pure": "^3.20.2",
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.16.7",
+ "resolved": "https://registry.npmmirror.com/@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.18.5",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.5.tgz",
+ "integrity": "sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.16.7",
+ "@babel/generator": "^7.18.2",
+ "@babel/helper-environment-visitor": "^7.18.2",
+ "@babel/helper-function-name": "^7.17.9",
+ "@babel/helper-hoist-variables": "^7.16.7",
+ "@babel/helper-split-export-declaration": "^7.16.7",
+ "@babel/parser": "^7.18.5",
+ "@babel/types": "^7.18.4",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.18.4",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.18.4.tgz",
+ "integrity": "sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.16.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@chenfengyuan/vue-qrcode": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/@chenfengyuan/vue-qrcode/-/vue-qrcode-2.0.0.tgz",
+ "integrity": "sha512-33Cfr0zjbc3Dd8d5b1IgzXRAgXH0c2Gv19VI4snS25V/x9Z41eg769tC+Us1x+vqgQQhgD5YUjLnkpkrQfeMSw==",
+ "requires": {}
+ },
+ "@ctrl/tinycolor": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
+ "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
+ },
+ "@element-plus/icons-vue": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+ "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
+ "requires": {}
+ },
+ "@floating-ui/core": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.3.tgz",
+ "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+ },
+ "@floating-ui/dom": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.4.tgz",
+ "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+ "requires": {
+ "@floating-ui/core": "^0.7.3"
+ }
+ },
+ "@hapi/address": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz",
+ "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+ "dev": true
+ },
+ "@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz",
+ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
+ "dev": true
+ },
+ "@hapi/hoek": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz",
+ "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+ "dev": true
+ },
+ "@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz",
+ "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz",
+ "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "@intervolga/optimize-cssnano-plugin": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz",
+ "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==",
+ "dev": true,
+ "requires": {
+ "cssnano": "^4.0.0",
+ "cssnano-preset-default": "^4.0.0",
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "@intlify/core-base": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz",
+ "integrity": "sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==",
+ "requires": {
+ "@intlify/message-compiler": "9.13.1",
+ "@intlify/shared": "9.13.1"
+ }
+ },
+ "@intlify/message-compiler": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz",
+ "integrity": "sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==",
+ "requires": {
+ "@intlify/shared": "9.13.1",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "@intlify/shared": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz",
+ "integrity": "sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ=="
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
+ "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
+ "dev": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.14",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
+ "dev": true
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.14",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
+ "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
+ "@microsoft/signalr": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.6.tgz",
+ "integrity": "sha512-3dTLtgwEXUeE9R/3NZQslh1B2WbppeHVXdnpvSZc7Yz+tP5Yiw3KCVUHwKUVnYmd9/2v3DaI/pvCdihrss49zA==",
+ "requires": {
+ "abort-controller": "^3.0.0",
+ "eventsource": "^1.0.7",
+ "fetch-cookie": "^0.11.0",
+ "node-fetch": "^2.6.7",
+ "ws": "^7.4.5"
+ }
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@node-ipc/js-queue": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz",
+ "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==",
+ "dev": true,
+ "requires": {
+ "easy-stack": "1.0.1"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ }
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@popperjs/core": {
+ "version": "npm:@sxzz/popperjs-es@2.11.7",
+ "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+ "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+ },
+ "@soda/friendly-errors-webpack-plugin": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
+ "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^3.0.0",
+ "error-stack-parser": "^2.0.6",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@soda/get-current-script": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz",
+ "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==",
+ "dev": true
+ },
+ "@types/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "dev": true,
+ "requires": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/connect": {
+ "version": "3.4.35",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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/express": {
+ "version": "4.17.13",
+ "resolved": "https://registry.npmmirror.com/@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.29",
+ "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz",
+ "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*"
+ }
+ },
+ "@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/http-proxy": {
+ "version": "1.17.9",
+ "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.9.tgz",
+ "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true
+ },
+ "@types/lodash": {
+ "version": "4.14.184",
+ "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz",
+ "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q=="
+ },
+ "@types/lodash-es": {
+ "version": "4.17.6",
+ "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
+ "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
+ "requires": {
+ "@types/lodash": "*"
+ }
+ },
+ "@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz",
+ "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
+ "dev": true
+ },
+ "@types/minimist": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz",
+ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "18.0.0",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.0.0.tgz",
+ "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==",
+ "dev": true
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "dev": true
+ },
+ "@types/q": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz",
+ "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
+ "dev": true
+ },
+ "@types/qs": {
+ "version": "6.9.7",
+ "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz",
+ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
+ "dev": true
+ },
+ "@types/serve-static": {
+ "version": "1.13.10",
+ "resolved": "https://registry.npmmirror.com/@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/source-list-map": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+ "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+ "dev": true
+ },
+ "@types/tapable": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.8.tgz",
+ "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==",
+ "dev": true
+ },
+ "@types/uglify-js": {
+ "version": "3.16.0",
+ "resolved": "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.16.0.tgz",
+ "integrity": "sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "@types/web-bluetooth": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz",
+ "integrity": "sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA=="
+ },
+ "@types/webpack": {
+ "version": "4.41.32",
+ "resolved": "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.32.tgz",
+ "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "@types/webpack-dev-server": {
+ "version": "3.11.6",
+ "resolved": "https://registry.npmmirror.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz",
+ "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==",
+ "dev": true,
+ "requires": {
+ "@types/connect-history-api-fallback": "*",
+ "@types/express": "*",
+ "@types/serve-static": "*",
+ "@types/webpack": "^4",
+ "http-proxy-middleware": "^1.0.0"
+ }
+ },
+ "@types/webpack-sources": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz",
+ "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-helper-vue-jsx-merge-props": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
+ "integrity": "sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==",
+ "dev": true
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz",
+ "integrity": "sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "@vue/babel-plugin-transform-vue-jsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz",
+ "integrity": "sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "html-tags": "^2.0.0",
+ "lodash.kebabcase": "^4.1.1",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-preset-app": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-4.5.18.tgz",
+ "integrity": "sha512-P7ASKBNuz3IZxvO5VPsPGjRey4KRNMJ9Rav0nJ/v+m0ny6uUuwE03Xoli5G3mvdijUbtVZT7+/uULMCEg4bGew==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.11.0",
+ "@babel/helper-compilation-targets": "^7.9.6",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/plugin-proposal-class-properties": "^7.8.3",
+ "@babel/plugin-proposal-decorators": "^7.8.3",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3",
+ "@babel/plugin-transform-runtime": "^7.11.0",
+ "@babel/preset-env": "^7.11.0",
+ "@babel/runtime": "^7.11.0",
+ "@vue/babel-plugin-jsx": "^1.0.3",
+ "@vue/babel-preset-jsx": "^1.2.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3",
+ "core-js": "^3.6.5",
+ "core-js-compat": "^3.6.5",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-preset-jsx": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz",
+ "integrity": "sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==",
+ "dev": true,
+ "requires": {
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
+ "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
+ "@vue/babel-sugar-functional-vue": "^1.2.2",
+ "@vue/babel-sugar-inject-h": "^1.2.2",
+ "@vue/babel-sugar-v-model": "^1.2.3",
+ "@vue/babel-sugar-v-on": "^1.2.3"
+ }
+ },
+ "@vue/babel-sugar-composition-api-inject-h": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz",
+ "integrity": "sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-composition-api-render-instance": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz",
+ "integrity": "sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-functional-vue": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz",
+ "integrity": "sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-inject-h": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz",
+ "integrity": "sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-v-model": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz",
+ "integrity": "sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "camelcase": "^5.0.0",
+ "html-tags": "^2.0.0",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-sugar-v-on": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz",
+ "integrity": "sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "camelcase": "^5.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/cli-overlay": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.18.tgz",
+ "integrity": "sha512-PZW6WRbmWx/I+PaP7PdjZGscvtUiIq/pRU38p3GLKMl53InBer12549CEAhPicAF5c38gBzGu/ifoPSvlPSZyg==",
+ "dev": true
+ },
+ "@vue/cli-plugin-babel": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.18.tgz",
+ "integrity": "sha512-Juiu3EgV228pKcfWu6vrABrrXYoMtanf4PlG6P2drPHf1LgVmaUp1g/K7IxdCc63IY9E+eCWjZ2ZEnQvxMSWOQ==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.11.0",
+ "@vue/babel-preset-app": "^4.5.18",
+ "@vue/cli-shared-utils": "^4.5.18",
+ "babel-loader": "^8.1.0",
+ "cache-loader": "^4.1.0",
+ "thread-loader": "^2.1.3",
+ "webpack": "^4.0.0"
+ }
+ },
+ "@vue/cli-plugin-eslint": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.18.tgz",
+ "integrity": "sha512-UWacV26Ul+W61PwvMBv4Msh2h3Umr5FG0ApXFzLQTgyc/rCmXvhR53pW252zVZ2tf7s2n7xDFnp/mrCUrkb2tw==",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.18",
+ "eslint-loader": "^2.2.1",
+ "globby": "^9.2.0",
+ "inquirer": "^7.1.0",
+ "webpack": "^4.0.0",
+ "yorkie": "^2.0.0"
+ }
+ },
+ "@vue/cli-plugin-router": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.18.tgz",
+ "integrity": "sha512-J2SJpi7OKy6NE5yUz7eubTnzc+k2LHEcI+c0W8i4UoUumIVSkAgvKWZPFqoy/QIqnQpwW/75CUjpLGf6Fht2wQ==",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.18"
+ }
+ },
+ "@vue/cli-plugin-unit-mocha": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.18.tgz",
+ "integrity": "sha512-wxV7zzc3Bu3C9imV6P21hY/Bk81iVtRsQ1j5m1eIz28zKYHSOgdET7bKO8ExBkWIDApjPZ1gdfvJMLvm8Wd2/w==",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.18",
+ "jsdom": "^15.2.1",
+ "jsdom-global": "^3.0.2",
+ "mocha": "^6.2.2",
+ "mochapack": "^1.1.15"
+ }
+ },
+ "@vue/cli-plugin-vuex": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.18.tgz",
+ "integrity": "sha512-8lnxtRJLa6Ki4FFYDtVA6Q4CRSjzWPXRkY7v8779nNq8eVLpGEyOtqDgu/VvNBs7EGKmveXZFNu8dUsfuTt7qA==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vue/cli-service": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.18.tgz",
+ "integrity": "sha512-ACRfiyzQNT+3Ko8NdkyvKMsAJ7IziQcM+QvRzfHo11v4YllcQBbRxYsmnffvjaZfNBefQvJ1qX9FI+ggIlxYQA==",
+ "dev": true,
+ "requires": {
+ "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+ "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+ "@soda/get-current-script": "^1.0.0",
+ "@types/minimist": "^1.2.0",
+ "@types/webpack": "^4.0.0",
+ "@types/webpack-dev-server": "^3.11.0",
+ "@vue/cli-overlay": "^4.5.18",
+ "@vue/cli-plugin-router": "^4.5.18",
+ "@vue/cli-plugin-vuex": "^4.5.18",
+ "@vue/cli-shared-utils": "^4.5.18",
+ "@vue/component-compiler-utils": "^3.1.2",
+ "@vue/preload-webpack-plugin": "^1.1.0",
+ "@vue/web-component-wrapper": "^1.2.0",
+ "acorn": "^7.4.0",
+ "acorn-walk": "^7.1.1",
+ "address": "^1.1.2",
+ "autoprefixer": "^9.8.6",
+ "browserslist": "^4.12.0",
+ "cache-loader": "^4.1.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "cli-highlight": "^2.1.4",
+ "clipboardy": "^2.3.0",
+ "cliui": "^6.0.0",
+ "copy-webpack-plugin": "^5.1.1",
+ "css-loader": "^3.5.3",
+ "cssnano": "^4.1.10",
+ "debug": "^4.1.1",
+ "default-gateway": "^5.0.5",
+ "dotenv": "^8.2.0",
+ "dotenv-expand": "^5.1.0",
+ "file-loader": "^4.2.0",
+ "fs-extra": "^7.0.1",
+ "globby": "^9.2.0",
+ "hash-sum": "^2.0.0",
+ "html-webpack-plugin": "^3.2.0",
+ "launch-editor-middleware": "^2.2.1",
+ "lodash.defaultsdeep": "^4.6.1",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.transform": "^4.6.0",
+ "mini-css-extract-plugin": "^0.9.0",
+ "minimist": "^1.2.5",
+ "pnp-webpack-plugin": "^1.6.4",
+ "portfinder": "^1.0.26",
+ "postcss-loader": "^3.0.0",
+ "ssri": "^8.0.1",
+ "terser-webpack-plugin": "^1.4.4",
+ "thread-loader": "^2.1.3",
+ "url-loader": "^2.2.0",
+ "vue-loader": "^15.9.2",
+ "vue-loader-v16": "npm:vue-loader@^16.1.0",
+ "vue-style-loader": "^4.1.2",
+ "webpack": "^4.0.0",
+ "webpack-bundle-analyzer": "^3.8.0",
+ "webpack-chain": "^6.4.0",
+ "webpack-dev-server": "^3.11.0",
+ "webpack-merge": "^4.2.2"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.8.3",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+ "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@vue/cli-shared-utils": {
+ "version": "4.5.18",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.18.tgz",
+ "integrity": "sha512-rYX8watG/+SFmkedXMZ3hJP+26/bz80f9zG9dMUfBMqTAqIDGICDtuP4H4QXZL3PCKI/HWFCMhRWf2wO4eGEPg==",
+ "dev": true,
+ "requires": {
+ "@achrinza/node-ipc": "9.2.2",
+ "@hapi/joi": "^15.0.1",
+ "chalk": "^2.4.2",
+ "execa": "^1.0.0",
+ "launch-editor": "^2.2.1",
+ "lru-cache": "^5.1.1",
+ "open": "^6.3.0",
+ "ora": "^3.4.0",
+ "read-pkg": "^5.1.1",
+ "request": "^2.88.2",
+ "semver": "^6.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
+ "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
+ "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
+ "requires": {
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
+ "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/reactivity-transform": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7",
+ "postcss": "^8.1.10",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-ssr": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
+ "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/component-compiler-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz",
+ "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==",
+ "dev": true,
+ "requires": {
+ "consolidate": "^0.15.1",
+ "hash-sum": "^1.0.2",
+ "lru-cache": "^4.1.2",
+ "merge-source-map": "^1.1.0",
+ "postcss": "^7.0.36",
+ "postcss-selector-parser": "^6.0.2",
+ "prettier": "^1.18.2 || ^2.0.0",
+ "source-map": "~0.6.1",
+ "vue-template-es2015-compiler": "^1.9.0"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/devtools-api": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
+ "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA=="
+ },
+ "@vue/preload-webpack-plugin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
+ "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vue/reactivity": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+ "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+ "requires": {
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/reactivity-transform": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
+ "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/compiler-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.25.7"
+ }
+ },
+ "@vue/runtime-core": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+ "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+ "requires": {
+ "@vue/reactivity": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/runtime-dom": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+ "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+ "requires": {
+ "@vue/runtime-core": "3.2.37",
+ "@vue/shared": "3.2.37",
+ "csstype": "^2.6.8"
+ }
+ },
+ "@vue/server-renderer": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+ "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+ "requires": {
+ "@vue/compiler-ssr": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz",
+ "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
+ },
+ "@vue/test-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/@vue/test-utils/-/test-utils-2.0.0.tgz",
+ "integrity": "sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==",
+ "dev": true,
+ "requires": {}
+ },
+ "@vue/web-component-wrapper": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
+ "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==",
+ "dev": true
+ },
+ "@vueuse/core": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.1.1.tgz",
+ "integrity": "sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==",
+ "requires": {
+ "@types/web-bluetooth": "^0.0.15",
+ "@vueuse/metadata": "9.1.1",
+ "@vueuse/shared": "9.1.1",
+ "vue-demi": "*"
+ }
+ },
+ "@vueuse/metadata": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.1.1.tgz",
+ "integrity": "sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog=="
+ },
+ "@vueuse/shared": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.1.1.tgz",
+ "integrity": "sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==",
+ "requires": {
+ "vue-demi": "*"
+ }
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+ "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+ "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+ "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+ "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+ "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+ "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+ "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+ "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+ "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+ "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+ "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+ "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/helper-wasm-section": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-opt": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+ "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+ "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+ "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+ "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-code-frame": "1.9.0",
+ "@webassemblyjs/helper-fsm": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+ "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "abab": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz",
+ "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==",
+ "dev": true
+ },
+ "abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "requires": {
+ "event-target-shim": "^5.0.0"
+ }
+ },
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ }
+ },
+ "acorn": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz",
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+ "dev": true
+ },
+ "acorn-globals": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-4.3.4.tgz",
+ "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==",
+ "dev": true,
+ "requires": {
+ "acorn": "^6.0.1",
+ "acorn-walk": "^6.0.1"
+ }
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {}
+ },
+ "acorn-walk": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz",
+ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==",
+ "dev": true
+ },
+ "address": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/address/-/address-1.2.0.tgz",
+ "integrity": "sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/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-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true,
+ "requires": {}
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
+ "dev": true
+ },
+ "ansi-colors": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.3.tgz",
+ "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.21.3"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true
+ }
+ }
+ },
+ "ansi-html-community": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz",
+ "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true
+ },
+ "array-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/array-equal/-/array-equal-1.0.0.tgz",
+ "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true
+ },
+ "array.prototype.reduce": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz",
+ "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.2",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ }
+ },
+ "asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.10.3.tgz",
+ "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "dev": true
+ },
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true,
+ "peer": true
+ },
+ "async": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz",
+ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "dev": true
+ },
+ "async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "9.8.8",
+ "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz",
+ "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.12.0",
+ "caniuse-lite": "^1.0.30001109",
+ "normalize-range": "^0.1.2",
+ "num2fraction": "^1.2.2",
+ "picocolors": "^0.2.1",
+ "postcss": "^7.0.32",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz",
+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
+ "dev": true
+ },
+ "axios": {
+ "version": "0.21.4",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-0.21.4.tgz",
+ "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
+ "requires": {
+ "follow-redirects": "^1.14.0"
+ }
+ },
+ "babel-eslint": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz",
+ "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "babel-loader": {
+ "version": "8.2.5",
+ "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz",
+ "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^3.3.1",
+ "loader-utils": "^2.0.0",
+ "make-dir": "^3.1.0",
+ "schema-utils": "^2.6.5"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz",
+ "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.3.1",
+ "core-js-compat": "^3.21.0"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "dev": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bfj": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz",
+ "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "check-types": "^8.0.3",
+ "hoopy": "^0.1.4",
+ "tryer": "^1.0.1"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "optional": true
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
+ "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz",
+ "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.10.3",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
+ "dev": true,
+ "requires": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+ "dev": true
+ }
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==",
+ "dev": true
+ },
+ "browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "dev": true
+ },
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz",
+ "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.3",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.0.tgz",
+ "integrity": "sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001358",
+ "electron-to-chromium": "^1.4.164",
+ "node-releases": "^2.0.5",
+ "update-browserslist-db": "^1.0.0"
+ }
+ },
+ "buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "buffer-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/buffer-json/-/buffer-json-2.0.0.tgz",
+ "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true
+ },
+ "cacache": {
+ "version": "12.0.4",
+ "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz",
+ "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+ "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",
+ "infer-owner": "^1.0.3",
+ "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"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "cache-loader": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/cache-loader/-/cache-loader-4.1.0.tgz",
+ "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==",
+ "dev": true,
+ "requires": {
+ "buffer-json": "^2.0.0",
+ "find-cache-dir": "^3.0.0",
+ "loader-utils": "^1.2.3",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==",
+ "dev": true
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+ "dev": true
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ },
+ "caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/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.30001359",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz",
+ "integrity": "sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==",
+ "dev": true
+ },
+ "case-sensitive-paths-webpack-plugin": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
+ "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "dev": true
+ },
+ "chai": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmmirror.com/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
+ "dev": true,
+ "requires": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.2",
+ "deep-eql": "^3.0.1",
+ "get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.0.5"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "charcodes": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/charcodes/-/charcodes-0.2.0.tgz",
+ "integrity": "sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==",
+ "dev": true
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
+ "dev": true
+ },
+ "check-types": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz",
+ "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "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.6.0"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "optional": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz",
+ "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.6.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-highlight": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz",
+ "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "highlight.js": "^10.7.1",
+ "mz": "^2.4.0",
+ "parse5": "^5.1.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.0",
+ "yargs": "^16.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz",
+ "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true
+ }
+ }
+ },
+ "cli-spinners": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz",
+ "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true
+ },
+ "clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz",
+ "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "requires": {
+ "is-docker": "^2.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true
+ },
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "dev": true,
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.43.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+ "dev": true
+ },
+ "consolidate": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz",
+ "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.1.1"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.2.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz",
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "dev": true
+ },
+ "copy-anything": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz",
+ "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+ "dev": true,
+ "requires": {
+ "is-what": "^3.14.1"
+ }
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true
+ },
+ "copy-webpack-plugin": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
+ "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.3",
+ "find-cache-dir": "^2.1.0",
+ "glob-parent": "^3.1.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "minimatch": "^3.0.4",
+ "normalize-path": "^3.0.0",
+ "p-limit": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^4.0.0",
+ "webpack-log": "^2.0.0"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz",
+ "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==",
+ "dev": true
+ }
+ }
+ },
+ "core-js": {
+ "version": "3.23.3",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.23.3.tgz",
+ "integrity": "sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q=="
+ },
+ "core-js-compat": {
+ "version": "3.23.3",
+ "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.23.3.tgz",
+ "integrity": "sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.21.0",
+ "semver": "7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz",
+ "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
+ "dev": true
+ }
+ }
+ },
+ "core-js-pure": {
+ "version": "3.23.3",
+ "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.23.3.tgz",
+ "integrity": "sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA=="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "dev": true
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmmirror.com/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": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmmirror.com/css/-/css-2.2.4.tgz",
+ "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "source-map": "^0.6.1",
+ "source-map-resolve": "^0.5.2",
+ "urix": "^0.1.0"
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
+ "dev": true
+ },
+ "css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.1",
+ "timsort": "^0.3.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "css-loader": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/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": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "css-parse": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/css-parse/-/css-parse-2.0.0.tgz",
+ "integrity": "sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==",
+ "dev": true,
+ "requires": {
+ "css": "^2.0.0"
+ }
+ },
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ }
+ },
+ "css-what": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz",
+ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
+ "dev": true
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz",
+ "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "cssnano-preset-default": "^4.0.8",
+ "is-resolvable": "^1.0.0",
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "cssnano-preset-default": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
+ "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
+ "dev": true,
+ "requires": {
+ "css-declaration-sorter": "^4.0.1",
+ "cssnano-util-raw-cache": "^4.0.1",
+ "postcss": "^7.0.0",
+ "postcss-calc": "^7.0.1",
+ "postcss-colormin": "^4.0.3",
+ "postcss-convert-values": "^4.0.1",
+ "postcss-discard-comments": "^4.0.2",
+ "postcss-discard-duplicates": "^4.0.2",
+ "postcss-discard-empty": "^4.0.1",
+ "postcss-discard-overridden": "^4.0.1",
+ "postcss-merge-longhand": "^4.0.11",
+ "postcss-merge-rules": "^4.0.3",
+ "postcss-minify-font-values": "^4.0.2",
+ "postcss-minify-gradients": "^4.0.2",
+ "postcss-minify-params": "^4.0.2",
+ "postcss-minify-selectors": "^4.0.2",
+ "postcss-normalize-charset": "^4.0.1",
+ "postcss-normalize-display-values": "^4.0.2",
+ "postcss-normalize-positions": "^4.0.2",
+ "postcss-normalize-repeat-style": "^4.0.2",
+ "postcss-normalize-string": "^4.0.2",
+ "postcss-normalize-timing-functions": "^4.0.2",
+ "postcss-normalize-unicode": "^4.0.1",
+ "postcss-normalize-url": "^4.0.1",
+ "postcss-normalize-whitespace": "^4.0.2",
+ "postcss-ordered-values": "^4.1.2",
+ "postcss-reduce-initial": "^4.0.3",
+ "postcss-reduce-transforms": "^4.0.2",
+ "postcss-svgo": "^4.0.3",
+ "postcss-unique-selectors": "^4.0.1"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
+ "dev": true
+ },
+ "cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
+ "dev": true
+ },
+ "cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+ "dev": true
+ },
+ "csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "requires": {
+ "css-tree": "^1.1.2"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ }
+ }
+ },
+ "cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==",
+ "dev": true
+ },
+ "cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dev": true,
+ "requires": {
+ "cssom": "~0.3.6"
+ },
+ "dependencies": {
+ "cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
+ "dev": true
+ }
+ }
+ },
+ "csstype": {
+ "version": "2.6.20",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz",
+ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+ },
+ "cyclist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz",
+ "integrity": "sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==",
+ "dev": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "data-urls": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/data-urls/-/data-urls-1.1.0.tgz",
+ "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "whatwg-mimetype": "^2.2.0",
+ "whatwg-url": "^7.0.0"
+ },
+ "dependencies": {
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+ },
+ "dayjs": {
+ "version": "1.11.5",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
+ "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
+ },
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==",
+ "dev": true
+ },
+ "deep-eql": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-3.0.1.tgz",
+ "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "^4.0.0"
+ }
+ },
+ "deep-equal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz",
+ "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "dev": true,
+ "requires": {
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
+ "dev": true
+ },
+ "default-gateway": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz",
+ "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==",
+ "dev": true,
+ "requires": {
+ "execa": "^3.3.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/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": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz",
+ "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.3.tgz",
+ "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "dev": true,
+ "requires": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz",
+ "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "dev": true
+ },
+ "des.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz",
+ "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "dev": true
+ },
+ "detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "dev": true
+ },
+ "diff": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmmirror.com/diff/-/diff-3.5.0.tgz",
+ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "dijkstrajs": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
+ "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
+ },
+ "dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz",
+ "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "dev": true,
+ "requires": {
+ "path-type": "^3.0.0"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz",
+ "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "^1.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "requires": {
+ "utila": "~0.4"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "domexception": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/domexception/-/domexception-1.0.1.tgz",
+ "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==",
+ "dev": true,
+ "requires": {
+ "webidl-conversions": "^4.0.2"
+ },
+ "dependencies": {
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ }
+ }
+ },
+ "domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ }
+ }
+ },
+ "domhelpers": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/domhelpers/-/domhelpers-0.1.0.tgz",
+ "integrity": "sha512-VZYqemdYgtxO3oI3L9o3Zdf9GmQAiFV9SP3Sccf7cVbEQtMrYBENyWnrW61Ejnsv4KldzzLs0UjHNbemTff8ZA=="
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+ "dev": true
+ },
+ "dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "easy-stack": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
+ "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==",
+ "dev": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "dev": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "echarts": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz",
+ "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==",
+ "requires": {
+ "tslib": "2.3.0",
+ "zrender": "5.3.2"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "dev": true
+ },
+ "ejs": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.4.170",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz",
+ "integrity": "sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==",
+ "dev": true
+ },
+ "element-plus": {
+ "version": "2.2.15",
+ "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.15.tgz",
+ "integrity": "sha512-SMIx8xKB1YawT9JocyFhbs3Av2rXFfxrCVTLMYS0DK0xnW+fKvwjZngLfwF6MyRzXIuzNW17XFtu0iP3tlJHbA==",
+ "requires": {
+ "@ctrl/tinycolor": "^3.4.1",
+ "@element-plus/icons-vue": "^2.0.6",
+ "@floating-ui/dom": "^0.5.4",
+ "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+ "@types/lodash": "^4.14.182",
+ "@types/lodash-es": "^4.17.6",
+ "@vueuse/core": "^9.1.0",
+ "async-validator": "^4.2.5",
+ "dayjs": "^1.11.3",
+ "escape-html": "^1.0.3",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "lodash-unified": "^1.0.2",
+ "memoize-one": "^6.0.0",
+ "normalize-wheel-es": "^1.2.0"
+ }
+ },
+ "elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true
+ },
+ "encode-utf8": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+ "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz",
+ "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "dev": true,
+ "requires": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "es-abstract": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.20.1.tgz",
+ "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.1",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.4",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "regexp.prototype.flags": "^1.4.3",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ }
+ },
+ "es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
+ "escodegen": {
+ "version": "1.14.3",
+ "resolved": "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz",
+ "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==",
+ "dev": true,
+ "requires": {
+ "esprima": "^4.0.1",
+ "estraverse": "^4.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1",
+ "source-map": "~0.6.1"
+ }
+ },
+ "eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true,
+ "peer": true
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "peer": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "peer": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "peer": true
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "eslint-loader": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz",
+ "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==",
+ "dev": true,
+ "requires": {
+ "loader-fs-cache": "^1.0.0",
+ "loader-utils": "^1.0.2",
+ "object-assign": "^4.0.1",
+ "object-hash": "^1.1.4",
+ "rimraf": "^2.6.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz",
+ "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true
+ },
+ "event-pubsub": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz",
+ "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==",
+ "dev": true
+ },
+ "event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+ },
+ "eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+ "dev": true
+ },
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.2.tgz",
+ "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA=="
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "express": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.18.1.tgz",
+ "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.0",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.10.3",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dev": true,
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "dev": true
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "fetch-cookie": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz",
+ "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==",
+ "requires": {
+ "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0"
+ }
+ },
+ "figgy-pudding": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "file-loader": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-4.3.0.tgz",
+ "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "schema-utils": "^2.5.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "file-save": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/file-save/-/file-save-0.2.0.tgz",
+ "integrity": "sha512-teMqpbPLBDAHEDAPYEb8fGfng4S6eGZcsN0CLM1ow0w1vtqTMBwNmd82dEc81O3C1BEs1EY8L18Ma6Q6O++v1A==",
+ "requires": {
+ "mkdirp": "~0.5.0"
+ }
+ },
+ "file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
+ "dev": true,
+ "optional": true
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/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": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "flat": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/flat/-/flat-4.1.1.tgz",
+ "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "~2.0.3"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "dev": true
+ }
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+ "dev": true,
+ "peer": true
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.15.1",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz",
+ "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA=="
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "dev": true
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "dev": true,
+ "peer": true
+ },
+ "functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
+ "dev": true
+ },
+ "get-intrinsic": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
+ "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
+ "dev": true
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ },
+ "globby": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz",
+ "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^1.0.2",
+ "dir-glob": "^2.2.2",
+ "fast-glob": "^2.2.6",
+ "glob": "^7.1.3",
+ "ignore": "^4.0.3",
+ "pify": "^4.0.1",
+ "slash": "^2.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "growl": {
+ "version": "1.10.5",
+ "resolved": "https://registry.npmmirror.com/growl/-/growl-1.10.5.tgz",
+ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
+ "dev": true
+ },
+ "gzip-size": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz",
+ "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
+ "dev": true,
+ "requires": {
+ "duplexer": "^0.1.1",
+ "pify": "^4.0.1"
+ }
+ },
+ "handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz",
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+ "dev": true
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "dev": true
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ }
+ }
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
+ "dev": true
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
+ "dev": true
+ },
+ "highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz",
+ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz",
+ "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
+ "dev": true
+ },
+ "hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz",
+ "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
+ "dev": true
+ },
+ "html-encoding-sniffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz",
+ "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
+ "dev": true,
+ "requires": {
+ "whatwg-encoding": "^1.0.1"
+ }
+ },
+ "html-entities": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz",
+ "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+ "dev": true
+ },
+ "html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz",
+ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "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"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ }
+ }
+ },
+ "html-tags": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz",
+ "integrity": "sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==",
+ "dev": true
+ },
+ "html-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==",
+ "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"
+ },
+ "dependencies": {
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==",
+ "dev": true,
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz",
+ "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==",
+ "dev": true
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dev": true,
+ "requires": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz",
+ "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==",
+ "dev": true,
+ "requires": {
+ "@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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/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": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==",
+ "dev": true
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ }
+ },
+ "icss-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz",
+ "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.14"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "optional": true
+ },
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
+ "dev": true,
+ "requires": {
+ "import-from": "^2.1.0"
+ }
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ }
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
+ "dev": true
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz",
+ "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ },
+ "dependencies": {
+ "default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ }
+ }
+ }
+ },
+ "internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==",
+ "dev": true
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/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-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz",
+ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.5.0"
+ }
+ },
+ "is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz",
+ "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
+ "dev": true,
+ "requires": {
+ "css-color-names": "^0.0.4",
+ "hex-color-regex": "^1.1.0",
+ "hsl-regex": "^1.0.0",
+ "hsla-regex": "^1.0.0",
+ "rgb-regex": "^1.0.1",
+ "rgba-regex": "^1.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+ "dev": true
+ },
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^2.1.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-what": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
+ "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+ "dev": true
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
+ "dev": true
+ },
+ "javascript-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
+ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
+ "dev": true
+ },
+ "js-message": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
+ "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+ "dev": true
+ },
+ "jsdom": {
+ "version": "15.2.1",
+ "resolved": "https://registry.npmmirror.com/jsdom/-/jsdom-15.2.1.tgz",
+ "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==",
+ "dev": true,
+ "requires": {
+ "abab": "^2.0.0",
+ "acorn": "^7.1.0",
+ "acorn-globals": "^4.3.2",
+ "array-equal": "^1.0.0",
+ "cssom": "^0.4.1",
+ "cssstyle": "^2.0.0",
+ "data-urls": "^1.1.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.11.1",
+ "html-encoding-sniffer": "^1.0.2",
+ "nwsapi": "^2.2.0",
+ "parse5": "5.1.0",
+ "pn": "^1.1.0",
+ "request": "^2.88.0",
+ "request-promise-native": "^1.0.7",
+ "saxes": "^3.1.9",
+ "symbol-tree": "^3.2.2",
+ "tough-cookie": "^3.0.1",
+ "w3c-hr-time": "^1.0.1",
+ "w3c-xmlserializer": "^1.1.2",
+ "webidl-conversions": "^4.0.2",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^7.0.0",
+ "ws": "^7.0.0",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-3.0.1.tgz",
+ "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==",
+ "dev": true,
+ "requires": {
+ "ip-regex": "^2.1.0",
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-7.1.0.tgz",
+ "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^1.0.1",
+ "webidl-conversions": "^4.0.2"
+ }
+ }
+ }
+ },
+ "jsdom-global": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/jsdom-global/-/jsdom-global-3.0.2.tgz",
+ "integrity": "sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==",
+ "dev": true,
+ "requires": {}
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/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.4.0",
+ "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "peer": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz",
+ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
+ "dev": true
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/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.4.0",
+ "verror": "1.10.0"
+ }
+ },
+ "killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz",
+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ },
+ "klona": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz",
+ "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==",
+ "dev": true
+ },
+ "launch-editor": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.4.0.tgz",
+ "integrity": "sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.6.1"
+ }
+ },
+ "launch-editor-middleware": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz",
+ "integrity": "sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==",
+ "dev": true,
+ "requires": {
+ "launch-editor": "^2.4.0"
+ }
+ },
+ "less": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz",
+ "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==",
+ "dev": true,
+ "requires": {
+ "copy-anything": "^2.0.1",
+ "errno": "^0.1.1",
+ "graceful-fs": "^4.1.2",
+ "image-size": "~0.5.0",
+ "make-dir": "^2.1.0",
+ "mime": "^1.4.1",
+ "needle": "^3.1.0",
+ "parse-node-version": "^1.0.1",
+ "source-map": "~0.6.0",
+ "tslib": "^2.3.0"
+ }
+ },
+ "less-loader": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmmirror.com/less-loader/-/less-loader-7.3.0.tgz",
+ "integrity": "sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==",
+ "dev": true,
+ "requires": {
+ "klona": "^2.0.4",
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "loader-fs-cache": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
+ "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^0.1.1",
+ "mkdirp": "^0.5.1"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "lodash-unified": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz",
+ "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==",
+ "requires": {}
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
+ "dev": true
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "lodash.defaultsdeep": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
+ "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
+ "dev": true
+ },
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
+ "dev": true
+ },
+ "lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
+ },
+ "lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
+ "dev": true
+ },
+ "lodash.transform": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz",
+ "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "loglevel": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz",
+ "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==",
+ "dev": true
+ },
+ "loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmmirror.com/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+ "dev": true,
+ "requires": {
+ "get-func-name": "^2.0.0"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "requires": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "magix": {
+ "version": "3.8.16",
+ "resolved": "https://registry.npmmirror.com/magix/-/magix-3.8.16.tgz",
+ "integrity": "sha512-aJPH4upWrJV6eDH4jZuoRo8vw1kUQUmxwhA6ukX4YeCrfaQ0xHA+KPGvSVcHE4NXg5P7tJFG/uDJBcrZpW1huw=="
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+ "dev": true
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "dev": true
+ },
+ "memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==",
+ "dev": true
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz",
+ "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+ "dev": true
+ },
+ "mini-css-extract-plugin": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
+ "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "normalize-url": "1.9.1",
+ "schema-utils": "^1.0.0",
+ "webpack-sources": "^1.1.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.0.1",
+ "prepend-http": "^1.0.0",
+ "query-string": "^4.1.0",
+ "sort-keys": "^1.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
+ },
+ "minipass": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.3.tgz",
+ "integrity": "sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "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"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "mocha": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/mocha/-/mocha-6.2.3.tgz",
+ "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "3.2.3",
+ "browser-stdout": "1.3.1",
+ "debug": "3.2.6",
+ "diff": "3.5.0",
+ "escape-string-regexp": "1.0.5",
+ "find-up": "3.0.0",
+ "glob": "7.1.3",
+ "growl": "1.10.5",
+ "he": "1.2.0",
+ "js-yaml": "3.13.1",
+ "log-symbols": "2.2.0",
+ "minimatch": "3.0.4",
+ "mkdirp": "0.5.4",
+ "ms": "2.1.1",
+ "node-environment-flags": "1.0.5",
+ "object.assign": "4.1.0",
+ "strip-json-comments": "2.0.1",
+ "supports-color": "6.0.0",
+ "which": "1.3.1",
+ "wide-align": "1.1.3",
+ "yargs": "13.3.2",
+ "yargs-parser": "13.1.2",
+ "yargs-unparser": "1.6.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.3.tgz",
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.4.tgz",
+ "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.1.tgz",
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.0.0.tgz",
+ "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "mochapack": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmmirror.com/mochapack/-/mochapack-1.1.15.tgz",
+ "integrity": "sha512-/gOsgJk3CWlNiOdef7hrNhp37VpatB9IiWzSCxS2p8pG21R7NAKJBBsU5T0eUWT9oz1NQhyubXdQgh51U7oVZA==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime-corejs2": "^7.0.0",
+ "chalk": "^2.4.2",
+ "chokidar": "^2.0.0",
+ "glob-parent": "5.1.0",
+ "globby": "^10.0.1",
+ "interpret": "^1.2.0",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "lodash": "^4.17.15",
+ "memory-fs": "^0.4.1",
+ "minimatch": "^3.0.4",
+ "nodent-runtime": "^3.2.1",
+ "normalize-path": "^3.0.0",
+ "progress": "^2.0.3",
+ "source-map-support": "^0.5.13",
+ "toposort": "^2.0.2",
+ "yargs": "14.0.0"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz",
+ "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+ "dev": true,
+ "requires": {
+ "@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"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "globby": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-10.0.2.tgz",
+ "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ }
+ },
+ "ignore": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz",
+ "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "yargs": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-14.0.0.tgz",
+ "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "decamelize": "^1.2.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.1"
+ }
+ }
+ }
+ },
+ "mout": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/mout/-/mout-0.11.1.tgz",
+ "integrity": "sha512-pK9VNiLE3QgGBrC/3ICAscwOLU7oTNeK2l32uqNAioBYtB2tQAfSsGDNChUlk7CP23126mc5lUt6+na9FlN8JA=="
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
+ "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"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "dev": true,
+ "requires": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "requires": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "nan": {
+ "version": "2.16.0",
+ "resolved": "https://registry.npmmirror.com/nan/-/nan-2.16.0.tgz",
+ "integrity": "sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==",
+ "dev": true,
+ "optional": true
+ },
+ "nanoid": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "peer": true
+ },
+ "needle": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz",
+ "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.6.3",
+ "sax": "^1.2.4"
+ }
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "requires": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node-environment-flags": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
+ "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
+ "dev": true,
+ "requires": {
+ "object.getownpropertydescriptors": "^2.0.3",
+ "semver": "^5.7.0"
+ }
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ },
+ "node-forge": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz",
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ }
+ }
+ },
+ "node-releases": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.5.tgz",
+ "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==",
+ "dev": true
+ },
+ "nodent-runtime": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz",
+ "integrity": "sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==",
+ "dev": true
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/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": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+ "dev": true
+ },
+ "normalize-wheel-es": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+ "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
+ "dev": true
+ },
+ "nwsapi": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.1.tgz",
+ "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==",
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "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.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-hash": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz",
+ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "dev": true
+ },
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz",
+ "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==",
+ "dev": true,
+ "requires": {
+ "array.prototype.reduce": "^1.0.4",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.20.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz",
+ "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.1"
+ }
+ },
+ "obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "dev": true
+ },
+ "opn": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz",
+ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==",
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "dev": true
+ },
+ "p-retry": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz",
+ "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+ "dev": true,
+ "requires": {
+ "retry": "^0.12.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "dev": true,
+ "requires": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz",
+ "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
+ "dev": true
+ },
+ "parse5": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.0.tgz",
+ "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==",
+ "dev": true
+ },
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "requires": {
+ "parse5": "^6.0.1"
+ },
+ "dependencies": {
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ }
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
+ }
+ }
+ },
+ "pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "dev": true
+ },
+ "pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "pn": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/pn/-/pn-1.1.0.tgz",
+ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==",
+ "dev": true
+ },
+ "pngjs": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+ },
+ "pnp-webpack-plugin": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz",
+ "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==",
+ "dev": true,
+ "requires": {
+ "ts-pnp": "^1.1.6"
+ }
+ },
+ "portfinder": {
+ "version": "1.0.28",
+ "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz",
+ "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.2",
+ "debug": "^3.1.1",
+ "mkdirp": "^0.5.5"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "8.4.14",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.14.tgz",
+ "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
+ "requires": {
+ "nanoid": "^3.3.4",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "postcss-calc": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz",
+ "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.27",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.2"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-colormin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "color": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-convert-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-load-config": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+ "dev": true,
+ "requires": {
+ "css-color-names": "0.0.4",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "stylehacks": "^4.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "cssnano-util-same-parent": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0",
+ "vendors": "^1.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "is-color-stop": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-params": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "browserslist": "^4.0.0",
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-modules-local-by-default": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-modules-scope": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
+ "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^6.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-modules-values": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+ "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.0.0",
+ "postcss": "^7.0.6"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-normalize-charset": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-normalize-display-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-positions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-repeat-style": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-string": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-timing-functions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+ "dev": true,
+ "requires": {
+ "is-absolute-url": "^2.0.0",
+ "normalize-url": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-whitespace": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-reduce-transforms": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
+ "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-svgo": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
+ "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "postcss": "^7.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
+ "dev": true
+ },
+ "prettier": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz",
+ "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
+ "dev": true,
+ "optional": true
+ },
+ "pretty-error": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz",
+ "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.20",
+ "renderkid": "^2.0.4"
+ }
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
+ "dev": true
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "dev": true
+ },
+ "psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmmirror.com/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+ "dev": true
+ }
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz",
+ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "dev": true
+ },
+ "qrcode": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.1.tgz",
+ "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
+ "requires": {
+ "dijkstrajs": "^1.0.1",
+ "encode-utf8": "^1.0.3",
+ "pngjs": "^5.0.0",
+ "yargs": "^15.3.1"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "qrcode.vue": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz",
+ "integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==",
+ "requires": {}
+ },
+ "qrcodejs2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmmirror.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz",
+ "integrity": "sha512-+Y4HA+cb6qUzdgvI3KML8GYpMFwB24dFwzMkS/yXq6hwtUGNUnZQdUnksrV1XGMc2mid5ROw5SAuY9XhI3ValA=="
+ },
+ "qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "dev": true
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ }
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==",
+ "dev": true
+ },
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz",
+ "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.9",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
+ "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ },
+ "regenerator-transform": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz",
+ "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true,
+ "peer": true
+ },
+ "regexpu-core": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz",
+ "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.0.1",
+ "regjsgen": "^0.6.0",
+ "regjsparser": "^0.8.2",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.0.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz",
+ "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz",
+ "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "dev": true
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "dev": true
+ },
+ "renderkid": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz",
+ "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
+ "dev": true,
+ "requires": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ }
+ },
+ "css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true
+ },
+ "request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.5.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "request-promise-core": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz",
+ "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.19"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz",
+ "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
+ "dev": true,
+ "requires": {
+ "request-promise-core": "1.1.4",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ },
+ "dependencies": {
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ }
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
+ "dev": true,
+ "requires": {
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
+ "rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz",
+ "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
+ "dev": true
+ },
+ "rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz",
+ "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ },
+ "dependencies": {
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "saxes": {
+ "version": "3.1.11",
+ "resolved": "https://registry.npmmirror.com/saxes/-/saxes-3.1.11.tgz",
+ "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==",
+ "dev": true,
+ "requires": {
+ "xmlchars": "^2.1.1"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==",
+ "dev": true
+ },
+ "selfsigned": {
+ "version": "1.10.14",
+ "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz",
+ "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
+ "dev": true,
+ "requires": {
+ "node-forge": "^0.10.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dev": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+ "dev": true
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz",
+ "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
+ "dev": true
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "dev": true
+ }
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "peer": true
+ }
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sockjs": {
+ "version": "0.3.24",
+ "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",
+ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "dev": true,
+ "requires": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^8.3.2",
+ "websocket-driver": "^0.7.4"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "dev": true
+ }
+ }
+ },
+ "sockjs-client": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz",
+ "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "eventsource": "^2.0.2",
+ "faye-websocket": "^0.11.4",
+ "inherits": "^2.0.4",
+ "url-parse": "^1.5.10"
+ },
+ "dependencies": {
+ "eventsource": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz",
+ "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+ "dev": true
+ }
+ }
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true
+ }
+ }
+ },
+ "sortable.js": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/sortable.js/-/sortable.js-0.3.0.tgz",
+ "integrity": "sha512-sAtcxX/ff9L334IKcFPnssFt7xVwsLVoaTft3iTyARBfNl42yq6JSJLbgpImO9/TRN51f5QP+6lRUsFjmz1reQ==",
+ "requires": {
+ "domhelpers": "^0.1.0",
+ "mout": "^0.11.0"
+ }
+ },
+ "sortablejs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
+ "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "dev": true
+ },
+ "sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+ },
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.11",
+ "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
+ "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
+ "dev": true
+ },
+ "spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz",
+ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ }
+ }
+ },
+ "spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "sshpk": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
+ "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
+ "stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "dev": true
+ },
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
+ "dev": true
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+ "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+ "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+ }
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "dev": true
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true
+ },
+ "stylehacks": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz",
+ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/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.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "stylus": {
+ "version": "0.54.8",
+ "resolved": "https://registry.npmmirror.com/stylus/-/stylus-0.54.8.tgz",
+ "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==",
+ "dev": true,
+ "requires": {
+ "css-parse": "~2.0.0",
+ "debug": "~3.1.0",
+ "glob": "^7.1.6",
+ "mkdirp": "~1.0.4",
+ "safer-buffer": "^2.1.2",
+ "sax": "~1.2.4",
+ "semver": "^6.3.0",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true
+ }
+ }
+ },
+ "stylus-loader": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/stylus-loader/-/stylus-loader-3.0.2.tgz",
+ "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.0.2",
+ "lodash.clonedeep": "^4.5.0",
+ "when": "~3.6.x"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ }
+ },
+ "symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true,
+ "peer": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "peer": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true
+ },
+ "terser": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz",
+ "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "peer": true
+ },
+ "thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "requires": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "requires": {
+ "thenify": ">= 3.1.0 < 4"
+ }
+ },
+ "thread-loader": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz",
+ "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==",
+ "dev": true,
+ "requires": {
+ "loader-runner": "^2.3.1",
+ "loader-utils": "^1.1.0",
+ "neo-async": "^2.6.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+ "dev": true
+ },
+ "timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==",
+ "dev": true
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "dev": true
+ },
+ "toposort": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz",
+ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
+ }
+ },
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz",
+ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
+ "dev": true
+ },
+ "ts-pnp": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/ts-pnp/-/ts-pnp-1.2.0.tgz",
+ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
+ "dev": true
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
+ },
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "dev": true
+ },
+ "uglify-js": {
+ "version": "3.4.10",
+ "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz",
+ "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.19.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
+ }
+ }
+ },
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
+ "dev": true
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
+ "dev": true
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "dev": true
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "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.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true
+ },
+ "update-browserslist-db": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz",
+ "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==",
+ "dev": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/url/-/url-0.11.0.tgz",
+ "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==",
+ "dev": true
+ }
+ }
+ },
+ "url-loader": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-2.3.0.tgz",
+ "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "mime": "^2.4.4",
+ "schema-utils": "^2.5.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true
+ }
+ }
+ },
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz",
+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ }
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
+ "dev": true
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
+ },
+ "uuidv1": {
+ "version": "1.6.14",
+ "resolved": "https://registry.npmmirror.com/uuidv1/-/uuidv1-1.6.14.tgz",
+ "integrity": "sha512-34FVVCDDHzzcOglmrKbZP99+8/6StEzo3VU3MuKw0Mo0B/YBQ1bWNQU8s79ofNnrPlfI+7A9pkAdhmQ6CyLHFg=="
+ },
+ "v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+ "dev": true,
+ "peer": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true
+ },
+ "vendors": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz",
+ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+ "dev": true
+ },
+ "vue": {
+ "version": "3.2.37",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+ "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+ "requires": {
+ "@vue/compiler-dom": "3.2.37",
+ "@vue/compiler-sfc": "3.2.37",
+ "@vue/runtime-dom": "3.2.37",
+ "@vue/server-renderer": "3.2.37",
+ "@vue/shared": "3.2.37"
+ }
+ },
+ "vue-demi": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
+ "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+ "requires": {}
+ },
+ "vue-draggable-next": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/vue-draggable-next/-/vue-draggable-next-2.1.1.tgz",
+ "integrity": "sha512-f5lmA7t6LMaL4viR7dU30zzvqJzaKQs0ymL0Jy9UDT9uiZ2tXF3MzPzEvpTH2UODXZJkT+SnjeV1fXHMsgXLYA==",
+ "requires": {}
+ },
+ "vue-hot-reload-api": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
+ "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
+ "dev": true
+ },
+ "vue-i18n": {
+ "version": "9.13.1",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz",
+ "integrity": "sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==",
+ "requires": {
+ "@intlify/core-base": "9.13.1",
+ "@intlify/shared": "9.13.1",
+ "@vue/devtools-api": "^6.5.0"
+ }
+ },
+ "vue-loader": {
+ "version": "15.9.8",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz",
+ "integrity": "sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==",
+ "dev": true,
+ "requires": {
+ "@vue/component-compiler-utils": "^3.1.0",
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.1.0",
+ "vue-hot-reload-api": "^2.3.0",
+ "vue-style-loader": "^4.1.0"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "vue-router": {
+ "version": "4.0.16",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.16.tgz",
+ "integrity": "sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0"
+ }
+ },
+ "vue-style-loader": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
+ "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==",
+ "dev": true,
+ "requires": {
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.0.2"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ }
+ }
+ },
+ "vue-template-es2015-compiler": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
+ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
+ "dev": true
+ },
+ "vuex": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz",
+ "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
+ "requires": {
+ "@vue/devtools-api": "^6.0.0-beta.11"
+ }
+ },
+ "w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dev": true,
+ "requires": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "w3c-xmlserializer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz",
+ "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==",
+ "dev": true,
+ "requires": {
+ "domexception": "^1.0.1",
+ "webidl-conversions": "^4.0.2",
+ "xml-name-validator": "^3.0.0"
+ },
+ "dependencies": {
+ "webidl-conversions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
+ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
+ "dev": true
+ }
+ }
+ },
+ "wangeditor": {
+ "version": "4.7.15",
+ "resolved": "https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz",
+ "integrity": "sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==",
+ "requires": {
+ "@babel/runtime": "^7.11.2",
+ "@babel/runtime-corejs3": "^7.11.2",
+ "tslib": "^2.1.0"
+ }
+ },
+ "watchpack": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
+ "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^3.4.1",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0",
+ "watchpack-chokidar2": "^2.0.1"
+ }
+ },
+ "watchpack-chokidar2": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
+ "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chokidar": "^2.1.8"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "optional": true
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ }
+ }
+ },
+ "wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "dev": true,
+ "requires": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "webpack": {
+ "version": "4.46.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz",
+ "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/wasm-edit": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "acorn": "^6.4.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.5.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.3",
+ "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.3",
+ "watchpack": "^1.7.4",
+ "webpack-sources": "^1.4.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "webpack-bundle-analyzer": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz",
+ "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1",
+ "bfj": "^6.1.1",
+ "chalk": "^2.4.1",
+ "commander": "^2.18.0",
+ "ejs": "^2.6.1",
+ "express": "^4.16.3",
+ "filesize": "^3.6.1",
+ "gzip-size": "^5.0.0",
+ "lodash": "^4.17.19",
+ "mkdirp": "^0.5.1",
+ "opener": "^1.5.1",
+ "ws": "^6.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true
+ },
+ "ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
+ },
+ "webpack-chain": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz",
+ "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "^1.5.2",
+ "javascript-stringify": "^2.0.1"
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+ "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+ "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.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
+ "dev": true
+ }
+ }
+ },
+ "webpack-dev-server": {
+ "version": "3.11.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+ "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+ "dev": true,
+ "requires": {
+ "ansi-html-community": "0.0.8",
+ "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.8",
+ "semver": "^6.3.0",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.21",
+ "sockjs-client": "^1.5.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": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+ "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+ "dev": true,
+ "requires": {
+ "http-proxy": "^1.17.0",
+ "is-glob": "^4.0.0",
+ "lodash": "^4.17.11",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "is-absolute-url": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "webpack-merge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+ "dev": true
+ },
+ "whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.24"
+ },
+ "dependencies": {
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ }
+ }
+ },
+ "whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==",
+ "dev": true
+ },
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "when": {
+ "version": "3.6.4",
+ "resolved": "https://registry.npmmirror.com/when/-/when-3.6.4.tgz",
+ "integrity": "sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "dev": true
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "peer": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "ws": {
+ "version": "7.5.8",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.8.tgz",
+ "integrity": "sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==",
+ "requires": {}
+ },
+ "xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
+ "dev": true
+ },
+ "xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "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"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ }
+ }
+ },
+ "yargs-unparser": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
+ "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
+ "dev": true,
+ "requires": {
+ "flat": "^4.1.0",
+ "lodash": "^4.17.15",
+ "yargs": "^13.3.0"
+ }
+ },
+ "yorkie": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz",
+ "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.8.0",
+ "is-ci": "^1.0.10",
+ "normalize-path": "^1.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.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"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/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"
+ }
+ },
+ "normalize-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz",
+ "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "dev": true
+ }
+ }
+ },
+ "zrender": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz",
+ "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==",
+ "requires": {
+ "tslib": "2.3.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..2e56840
--- /dev/null
+++ b/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "imes.vue3",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
+ "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
+ "test:unit": "vue-cli-service test:unit",
+ "lint": "vue-cli-service lint"
+ },
+ "dependencies": {
+ "@chenfengyuan/vue-qrcode": "^2.0.0",
+ "@element-plus/icons-vue": "^2.1.0",
+ "@microsoft/signalr": "^6.0.4",
+ "axios": "^0.21.1",
+ "core-js": "^3.6.5",
+ "echarts": "^5.0.2",
+ "element-plus": "^2.2.15",
+ "file-save": "^0.2.0",
+ "file-saver": "^2.0.5",
+ "less": "^4.1.1",
+ "magix": "^3.8.16",
+ "qrcode": "^1.5.1",
+ "qrcode.vue": "^3.3.3",
+ "qrcodejs2": "0.0.2",
+ "sortable.js": "^0.3.0",
+ "sortablejs": "^1.15.0",
+ "uuidv1": "^1.6.14",
+ "vue": "^3.2.37",
+ "vue-draggable-next": "^2.0.1",
+ "vue-i18n": "^9.13.1",
+ "vue-router": "^4.0.0-0",
+ "vuex": "^4.0.0-0",
+ "wangeditor": "^4.7.6"
+ },
+ "devDependencies": {
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@vue/cli-plugin-babel": "~4.5.0",
+ "@vue/cli-plugin-eslint": "~4.5.0",
+ "@vue/cli-plugin-router": "~4.5.0",
+ "@vue/cli-plugin-unit-mocha": "~4.5.0",
+ "@vue/cli-plugin-vuex": "~4.5.0",
+ "@vue/cli-service": "~4.5.0",
+ "@vue/compiler-sfc": "^3.0.0",
+ "@vue/test-utils": "^2.0.0-0",
+ "babel-eslint": "^10.1.0",
+ "chai": "^4.1.2",
+ "less": "^4.1.1",
+ "less-loader": "^7.3.0",
+ "stylus": "^0.54.7",
+ "stylus-loader": "^3.0.2"
+ },
+ "eslintConfig": {
+ "root": true,
+ "env": {
+ "node": true
+ },
+ "extends": [
+ "plugin:vue/essential",
+ "@vue/standard"
+ ],
+ "rules": {
+ "indent": [
+ 1,
+ 4
+ ]
+ },
+ "parserOptions": {
+ "parser": "babel-eslint"
+ }
+ },
+ "eslintIgnore": [
+ "*"
+ ]
+}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..df351fa
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..a59f8b9
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+ We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
+ Please enable it to continue.
+
+
+
+ <% if (process.env.NODE_ENV === 'production' ) { %>
+
+ <% } %>
+
+
+
diff --git a/run.bat b/run.bat
new file mode 100644
index 0000000..eb1cffd
--- /dev/null
+++ b/run.bat
@@ -0,0 +1 @@
+npm run serve
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..c186357
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
diff --git a/src/api/http.js b/src/api/http.js
new file mode 100644
index 0000000..d508166
--- /dev/null
+++ b/src/api/http.js
@@ -0,0 +1,315 @@
+import axios from 'axios'
+import store from '../store/index'
+// import {getCurrentInstance} from 'vue'
+import { useRouter, useRoute } from 'vue-router'
+//const router = useRouter();
+axios.defaults.timeout = 50000;
+axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
+
+import { ElLoading as Loading, ElMessage as Message } from 'element-plus';
+
+
+let loadingInstance;
+let loadingStatus = false;
+if (process.env.NODE_ENV == 'development') {
+ axios.defaults.baseURL = 'http://localhost:9991/';
+}
+else if (process.env.NODE_ENV == 'debug') {
+ axios.defaults.baseURL = 'http://localhost:9991/';
+}
+
+else if (process.env.NODE_ENV == 'production') {
+ axios.defaults.baseURL = 'http://120.48.150.78:8881/';
+}
+if (!axios.defaults.baseURL.endsWith('/')) {
+ axios.defaults.baseURL+="/";
+}
+let ipAddress = axios.defaults.baseURL;
+let webAddress = "https://imes.625sc.com";
+axios.interceptors.request.use((config) => {
+ return config;
+}, (error) => {
+ return Promise.reject(error);
+});
+
+axios.interceptors.response.use((res) => {
+
+ closeLoading();
+
+ checkResponse(res);
+
+ return Promise.resolve(res);
+}, (error) => {
+ closeLoading();
+ let httpMessage = '';
+ if (error.response) {
+ if (error.response.status == '401') {
+ if (error.response.data && error.response.data.code == 401) {
+ toLogin();
+ return;
+ }
+
+ }
+ if (error.response.status == '404') {
+ httpMessage = "未找到请求地址";
+ }
+ else if (error.response.data && error.response.data.message) {
+ httpMessage = error.response.data.message;
+ }
+ }
+ else {
+ httpMessage = '服务器处理异常'
+ }
+ redirect(httpMessage);
+ return Promise.reject(error.response || {}, httpMessage);
+});
+function closeLoading () {
+ if (loadingInstance) {
+ loadingInstance.close();
+ }
+ if (loadingStatus) {
+ loadingStatus = false;
+ if (loadingInstance) {
+ loadingInstance.close();
+ }
+ }
+
+}
+function checkResponse (res) {
+ //刷新token
+ if (!res.headers) {
+ if (res.getResponseHeader("vol_exp") == "1") {
+ replaceToken();
+ }
+ }
+ else if (res.headers.vol_exp == "1") {
+ replaceToken();
+ }
+}
+
+const _Authorization = 'Authorization';
+
+function showLoading (loading) {
+ if (!loading || loadingStatus) {
+ return;
+ }
+ loadingInstance = Loading.service({
+ lock: true,
+ text: 'Loading',
+ customClass:"http-loading",
+ background: typeof loading == "string" ? loading : '正在处理.....',
+ background: 'rgba(58, 61, 63, 0.32)'
+ });
+}
+
+function getToken () {
+ return store.getters.getToken();
+}
+
+/*
+ url
+ params请求后台的参数,如:{name:123,values:['a','b','c']}
+ loading是否显示遮罩层,可以传入true.false.及提示文本
+ config配置信息,如{timeout:3000,headers:{token:123}}
+*/
+function post (url, params, loading, config) {
+ showLoading(loading);
+ axios.defaults.headers[_Authorization] = getToken();
+ return new Promise((resolve, reject) => {
+ axios.post(url, params, config)
+ .then(response => {
+ resolve(response.data);
+ }, err => {
+ reject(err && err.data && err.data.message ? err.data.message : '服务器处理异常');
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+}
+
+//=true异步请求时会显示遮罩层,=字符串,异步请求时遮罩层显示当前字符串
+function get (url, param, loading, config) {
+ showLoading(loading);
+ axios.defaults.headers[_Authorization] = getToken();
+ return new Promise((resolve, reject) => {
+ axios.get(url, config)
+ .then(response => {
+ resolve(response.data)
+ }, err => {
+ reject(err)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+}
+
+//url:url地址
+//params:请求参数
+//fileName:下载的文件名
+//loading:是否显示加载状态
+function download (url, params, fileName, loading,callback) {
+ fileName = fileName.replace(">", ">").replace("<", "<");
+ post(url, params, loading, { responseType: 'blob' }).then(content => {
+ const blob = new Blob([content])
+ if ('download' in document.createElement('a')) { // 非IE下载
+ const elink = document.createElement('a')
+ elink.download = fileName
+ elink.style.display = 'none'
+ elink.href = URL.createObjectURL(blob)
+ document.body.appendChild(elink)
+ elink.click()
+ URL.revokeObjectURL(elink.href) // 释放URL 对象
+ document.body.removeChild(elink)
+ } else { // IE10+下载
+ navigator.msSaveBlob(blob, fileName)
+ }
+ callback&&callback();
+ })
+}
+
+
+function createXHR () {
+ if (XMLHttpRequest) {
+ return new XMLHttpRequest();
+ }
+ if (ActiveXObject) {
+ if (typeof arguments.callee.activeXString != "string") {
+ var versions = [
+ "MSXML2.XMLHttp.6.0",
+ "MSXML2.XMLHttp",
+ "MSXML2.XMLHttp.3.0"
+ ];
+ for (var i = 0; i < versions.length; i++) {
+ try {
+ new ActiveXObject(versions[i]);
+ arguments.callee.activeXString = versions[i];
+ break;
+ } catch (e) {
+ console.log(e);
+ }
+ }
+ }
+ return new ActiveXObject(arguments.callee.activeXString);
+ }
+}
+
+function redirect (responseText, message) {
+ try {
+ let responseData = typeof responseText == 'string' ? JSON.parse(responseText) : responseText;
+ if ((responseData.hasOwnProperty('code') && responseData.code == 401)
+ || (responseData.data && responseData.data.code == 401)) {
+ closeLoading();
+ toLogin();
+ } else {
+ if (message) {
+ Message.error({
+ showClose: true,
+ message: message,
+ type: 'error'
+ });
+ }
+ }
+ } catch (error) {
+ console.log(error);
+ Message.error({
+ showClose: true,
+ message: responseText,
+ type: 'error'
+ });
+ }
+}
+
+
+function toLogin () {
+ // const vueinstance= getCurrentInstance();
+ if (window.location.hash) {
+ window.location.href = window.location.origin + '/#/login'
+ return
+ }
+ window.location.href = window.location.origin + '/login'
+ // router.push({ path: '/login', params: { r: Math.random() } });
+}
+//动态刷新token
+function replaceToken () {
+ ajax({
+ url: "/api/User/replaceToken",
+ param: {},
+ json: true,
+ success: function (x) {
+ if (x.status) {
+ let userInfo = store.getters.getUserInfo();
+ userInfo.token = x.data;
+ store.commit('setUserInfo', userInfo);
+ } else {
+ console.log(x.message);
+ toLogin();
+ }
+ },
+ errror: function (ex) {
+ console.log(ex);
+ toLogin();
+ },
+ type: "post",
+ async: false
+ });
+
+
+}
+
+function ajax (param) {
+ let httpParam =
+ Object.assign({
+ url: '', headers: {},
+ param: {}, json: true,
+ success: function () { },
+ errror: function () { },
+ type: 'post', async: true
+ }, param);
+
+ httpParam.url = axios.defaults.baseURL + httpParam.url.replace(/\/?/, '');
+ httpParam.headers[_Authorization] = getToken();
+ var xhr = createXHR();
+ xhr.onreadystatechange = function () {
+ if (xhr.status == 403 || xhr.status == 401) {
+ redirect(xhr.responseText);
+ return;
+ }
+ checkResponse(xhr);
+ if (xhr.readyState == 4 && xhr.status == 200) {
+ httpParam.success(httpParam.json ? JSON.parse(xhr.responseText) : xhr.responseText);
+ return;
+ }
+ if (xhr.status != 0 && xhr.readyState != 1) {
+ httpParam.errror(xhr);
+ }
+ };
+ //初始化请求
+ xhr.open(
+ httpParam.type,
+ httpParam.url,
+ httpParam.async
+ );
+ xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+ for (const key in httpParam.headers) {
+ xhr.setRequestHeader(key, httpParam.headers[key]);
+ }
+ let dataStr = '';
+ for (const key in httpParam.param) {
+ dataStr += key + "=" + httpParam.param[key];
+ }
+ try {
+ xhr.send(dataStr);
+ } catch (error) {
+ toLogin();
+ }
+}
+
+ajax.post = function (url, param, success, errror) {
+ ajax({ url: url, param: param, success: success, error: errror, type: 'post' })
+}
+ajax.get = function (url, param, success, errror) {
+ ajax({ url: url, param: param, success: success, error: errror, type: 'get' })
+}
+export default { post, get,download, ajax, ipAddress, webAddress }
diff --git a/src/api/permission.js b/src/api/permission.js
new file mode 100644
index 0000000..93c4ff5
--- /dev/null
+++ b/src/api/permission.js
@@ -0,0 +1,43 @@
+
+import http from '@/../src/api/http.js'
+import buttons from '@/../config/buttons.js'
+import store from '../store/index'
+import { useRouter } from 'vue-router'
+let permission = {
+ getMenu() {
+ return http.get("/api/getTreeMenu");
+ }, getButtons(path, extra, table, tableName) {//extra自定额外按钮
+ //table获取指定表的权限
+ if (table) { table = '/' + table; }
+ let permission = store.getters.getPermission(table || path);
+ if (!permission) {
+ permission = store.getters.getPermission(path.substring(1));
+ if (!permission) {
+ permission = store.getters.getPermission("/" + tableName);
+ if (!permission) {
+ to401();
+ return;
+ }
+ }
+ }
+
+ let permissions = permission.permission;//.split(',');
+ let gridButtons = buttons.filter(item => {
+ return !item.value || permissions.indexOf(item.value) != -1
+ });
+ if (extra && extra instanceof Array) {
+ gridButtons.push(...extra)
+ }
+ return gridButtons;
+ }, to401() {
+ to401();
+ }
+}
+function to401() {
+ const router = useRouter();
+ router.push({
+ path: '/401'
+ });
+}
+
+export default permission;
\ No newline at end of file
diff --git a/src/api/useTest.js b/src/api/useTest.js
new file mode 100644
index 0000000..d4d7be1
--- /dev/null
+++ b/src/api/useTest.js
@@ -0,0 +1,9 @@
+const tipxx = {
+ install: function (vue) {
+ alert(1);
+ vue.prototype.$tip = function () {
+ alert('测试use')
+ };
+ }
+}
+export default { tipxx }
\ No newline at end of file
diff --git a/src/assets/css/common.less b/src/assets/css/common.less
new file mode 100644
index 0000000..ac7a179
--- /dev/null
+++ b/src/assets/css/common.less
@@ -0,0 +1,75 @@
+*{
+ box-sizing:border-box;
+ -moz-box-sizing:border-box; /* Firefox */
+ -webkit-box-sizing:border-box; /* Safari */
+}
+.el-pager li{
+ font-weight: 100;
+ margin-right: 9px;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ min-width: 28px;
+}
+.el-pager li.active,.el-pager li:hover{
+ background: #ed4014;
+ color: white;
+}
+.el-pagination__editor.el-input .el-input__inner{
+ height: 23px;
+}
+
+
+.animated {
+ -webkit-animation-duration: 0.5s;
+ animation-duration: 0.5s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ }
+
+ @media (print), (prefers-reduced-motion) {
+ .animated {
+ -webkit-animation: unset !important;
+ animation: unset !important;
+ -webkit-transition: none !important;
+ transition: none !important;
+ }
+ }
+
+ @-webkit-keyframes fadeInDown {
+ from {
+ opacity: 1;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+ }
+
+ @keyframes fadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -100%, 0);
+ transform: translate3d(0, -100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+ }
+
+ .fadeInDown {
+ -webkit-animation-name: fadeInDown;
+ animation-name: fadeInDown;
+ }
+ .ivu-message{
+ z-index: 999999999 !important;
+ }
+ .ivu-form-item-content{
+ text-align: left;
+ }
\ No newline at end of file
diff --git a/src/assets/element-icon/fonts/element-icons.ttf b/src/assets/element-icon/fonts/element-icons.ttf
new file mode 100644
index 0000000..91b74de
Binary files /dev/null and b/src/assets/element-icon/fonts/element-icons.ttf differ
diff --git a/src/assets/element-icon/fonts/element-icons.woff b/src/assets/element-icon/fonts/element-icons.woff
new file mode 100644
index 0000000..02b9a25
Binary files /dev/null and b/src/assets/element-icon/fonts/element-icons.woff differ
diff --git a/src/assets/element-icon/icon.css b/src/assets/element-icon/icon.css
new file mode 100644
index 0000000..bf3ae3e
--- /dev/null
+++ b/src/assets/element-icon/icon.css
@@ -0,0 +1 @@
+@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}
\ No newline at end of file
diff --git a/src/assets/imgs/error-img.png b/src/assets/imgs/error-img.png
new file mode 100644
index 0000000..8fb21b7
Binary files /dev/null and b/src/assets/imgs/error-img.png differ
diff --git a/src/assets/imgs/error.png b/src/assets/imgs/error.png
new file mode 100644
index 0000000..8fb21b7
Binary files /dev/null and b/src/assets/imgs/error.png differ
diff --git a/src/assets/imgs/favicon.ico b/src/assets/imgs/favicon.ico
new file mode 100644
index 0000000..e12279c
Binary files /dev/null and b/src/assets/imgs/favicon.ico differ
diff --git a/src/assets/imgs/log.png b/src/assets/imgs/log.png
new file mode 100644
index 0000000..8397330
Binary files /dev/null and b/src/assets/imgs/log.png differ
diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png
new file mode 100644
index 0000000..cc0bd9f
Binary files /dev/null and b/src/assets/imgs/logo.png differ
diff --git a/src/assets/imgs/miniapp.png b/src/assets/imgs/miniapp.png
new file mode 100644
index 0000000..fb3b465
Binary files /dev/null and b/src/assets/imgs/miniapp.png differ
diff --git a/src/assets/imgs/qq.png b/src/assets/imgs/qq.png
new file mode 100644
index 0000000..adb2a1e
Binary files /dev/null and b/src/assets/imgs/qq.png differ
diff --git a/src/assets/imgs/wechat.jpg b/src/assets/imgs/wechat.jpg
new file mode 100644
index 0000000..cfb6136
Binary files /dev/null and b/src/assets/imgs/wechat.jpg differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..f3d2503
Binary files /dev/null and b/src/assets/logo.png differ
diff --git a/src/assets/script/common.js b/src/assets/script/common.js
new file mode 100644
index 0000000..8e8e8eb
--- /dev/null
+++ b/src/assets/script/common.js
@@ -0,0 +1,2 @@
+var test1 = function () { alert(11) }
+export { test1 }
\ No newline at end of file
diff --git a/src/assets/script/extend.js b/src/assets/script/extend.js
new file mode 100644
index 0000000..d34da65
--- /dev/null
+++ b/src/assets/script/extend.js
@@ -0,0 +1,5 @@
+//对vue参数进行扩展
+var extend = function (param) {
+ console.log(param)
+ }
+export { extend }
\ No newline at end of file
diff --git a/src/assets/script/printer_view.js b/src/assets/script/printer_view.js
new file mode 100644
index 0000000..0db8eb9
--- /dev/null
+++ b/src/assets/script/printer_view.js
@@ -0,0 +1,5 @@
+/*!Sea.js 2.2.3|https://github.com/seajs/seajs/blob/master/LICENSE.md*/
+((e,t)=>{if(e.seajs)return;let r=e.seajs={},i=r.data={},d=e=>t=>({}.toString.call(t)==`[object ${e}]`),o=d("String"),s=Array.isArray,l=d("Function"),a=0,n=()=>a++,h=/[^?#]*\//,p=/\/\.\//g,c=/\/[^/]+\/\.\.\//,f=/([^:/])\/\//g,g=e=>e.match(h)[0],u=e=>{for(e=e.replace(p,"/");e.match(c);)e=e.replace(c,"/");return e=e.replace(f,"$1/")},x=/^([^/:]+)(\/.+)$/,m=/^\/\/.|:\//,y=/^.*?\/\/.*?\//,w=(e,t)=>{if(!e)return"";let r=((e,t)=>{let r,d=e.charAt(0);if(m.test(e))r=e;else if("."===d)r=u((t?g(t):i.cwd)+e);else if("/"===d){let t=i.cwd.match(y);r=t?t[0]+e.substring(1):e}else r=i.base+e;return 0===r.indexOf("//")&&(r=location.protocol+r),r})(e=(e=>{let t=e.length-1,r=e.charAt(t);return"#"===r?e.substring(0,t):".js"===e.substring(t-2)||e.indexOf("?")>0||".css"===e.substring(t-3)||"/"===r?e:e+".js"})(e=(e=>{let t,r=i.paths;return r&&(t=e.match(x))&&o(r[t[1]])&&(e=r[t[1]]+t[2]),e})(e=(e=>{let t=i.alias;return t&&o(t[e])?t[e]:e})(e))),t);return r},_=document,b=g(_.URL),v=_.scripts,k=v[v.length-1],j=g(((L=k).hasAttribute?L.src:L.getAttribute("src",4))||b);var L;let Y,M,S,P=_.head,O=P.getElementsByTagName("base")[0],R=/\.css(?:\?|$)/i,z=+navigator.userAgent.replace(/.*(?:AppleWebKit|AndroidWebKit)\/(\d+).*/,"$1")<536,C=(e,t,r)=>{let d="onload"in e;if(r&&(z||!d))return void setTimeout((()=>{H(e,t)}),1);let o=()=>{e.onload=e.onerror=e.onreadystatechange=null,r||i.debug||P.removeChild(e),e=null,t()};d?(e.onload=o,e.onerror=o):e.onreadystatechange=()=>{/loaded|complete/.test(e.readyState)&&o()}},H=(e,t)=>{let r,i=e.sheet;if(z)i&&(r=!0);else if(i)try{i.cssRules&&(r=!0)}catch(e){"NS_ERROR_DOM_SECURITY_ERR"===e.name&&(r=!0)}setTimeout((()=>{r?t():H(e,t)}),20)},A=()=>{if(Y)return Y;if(M&&"interactive"===M.readyState)return M;let e=P.getElementsByTagName("script");for(let t=e.length;t--;){let r=e[t];if("interactive"===r.readyState)return M=r,M}},T=r.cache={},V={},N={},B={},F=1,I=2,q=3,X=4,$=5,W=6;function E(e,t){this.uri=e,this._hv=t||[],this.exports=null,this.status=0,this._hw={},this._hx=0}E.prototype.resolve=function(){let e=this,t=e._hv,r=[];for(let i=0,d=t.length;i=q)return;e.status=q;let t,r=e.resolve(),i=e._hx=r.length;for(let d=0;d{delete V[r],N[r]=!0,S&&(E.save(r,S),S=null);let e,t=B[r];for(delete B[r];e=t.shift();)e.load()},o=()=>{((e,t,r,i)=>{let d=R.test(e),o=_.createElement(d?"link":"script");r&&(o.charset=r),null!=i&&o.setAttribute("crossorigin",i),C(o,t,d,e),d?(o.rel="stylesheet",o.href=e):(o.async=!0,o.src=e),Y=o,O?P.insertBefore(o,O):P.appendChild(o),Y=null})(r,d,i.charset,i.crossorigin)};e?e[r]=o:o()},E.prototype.exec=function(){let e=this;if(e.status>=$)return e.exports;e.status=$;let r=e.uri,i=e=>E.get(i.resolve(e)).exec();i.resolve=e=>w(e,r),i.async=(e,t)=>(E.use(e,t,r+"__hz_"+n()),i);let d=e.factory,o=l(d)?d(i,e.exports={},e):d;return o===t&&(o=e.exports),delete e.factory,e.exports=o,e.status=W,o},E.define=function(e,r,i){let d=arguments.length;1===d?(i=e,e=t):2===d&&(i=r,s(e)?(r=e,e=t):r=t),!s(r)&&l(i)&&(r=[]);let o={id:e,uri:w(e),deps:r,factory:i};if(!o.uri&&_.attachEvent){let e=A();e&&(o.uri=e.src)}o.uri?E.save(o.uri,o):S=o},E.save=(e,t)=>{let r=E.get(e);r.statusT[e]||(T[e]=new E(e,t)),E.use=(t,r,i)=>{let d=E.get(i,s(t)?t:[t]);d._hy=()=>{let t=[],i=d.resolve();for(let e=0,r=i.length;e{E.use(e,t,i.cwd+"__fR_"+n())},e.define=E.define,r.require=e=>{let t=E.get(w(e));return t.status<$&&(t.onload(),t.exec()),t.exports},i.base=j,i.cwd=b,i.charset="utf-8",r.realpath=u,r.config=e=>{for(let t in e){let r=e[t];i[t]=r}return r}})(window),define("65",(()=>{let e=0,t="",r=[],i=null,d=window,o=Promise,s=document,l=d.setTimeout,a=encodeURIComponent,n="_";function h(){}let p,c,f=JSON.stringify,g=s.head,u=d.performance,x=u.now.bind(u),m="\x1e",y="mx5-",w="mx5-view",_="mx5-owner",b=t=>(t||n)+e++,v=e=>s.getElementById(e),k=(e,t)=>e.innerHTML=t,j=e=>e[0]==m,L={},Y={rootId:b(),retard:h,request:h,error(e){throw e}},M=e=>!e||"object"!=typeof e,S=(e,t,r,i)=>{if(e&&t&&!(i=!r&&e==t))try{i=16==(16&t.compareDocumentPosition(e))}catch{}return i},P=(e,t,r,i)=>{t?(i=e["\x1edL"])&&(i[t]=0):e["\x1edL"]=0},{assign:O,keys:R,hasOwnProperty:z,prototype:C}=Object,H=C.toString,A=e=>H.call(e).slice(8,-1),T=e=>"Object"==A(e),V=Array.isArray,N=g.getAttribute,B=(e,t)=>N.call(e,t),F=(e,t,r)=>{t&&!F[e]&&(F[e]=1,r=s.createElement("style"),k(r,t),g.appendChild(r))},I=(e,t,r,i)=>{try{i=V(t)?e.apply(r,t):e.call(r,t)}catch(e){Y.error(e)}return i},q=(e,t)=>e&&z.call(e,t),X=(e,r)=>{let i,d;if(M(r))i=r+t,j(i)&&(r=e.get(i));else for(i in r)d=r[i],d=X(e,d),r[i]=d;return r},$=(e,t)=>t.dL-e.dL;function W(e,t,r){(r=this).dL=[],r.dM=t||20,r.dN=r.dM+(e||50)}O(W.prototype,{get(e){let t=this.dL[m+e];return t&&(t.dL++,t=t.dM),t},set(e,t){let r=this,i=r.dL,d=m+e,o=i[d],s=r.dM;if(!o){if(i.length>r.dN)for(i.sort($);s--;)o=i.pop(),o.dL&&r.del(o.dN);o={dN:e},i.push(o),i[d]=o}o.dM=t,o.dL=1},del(e){e=m+e;let r=this.dL,i=r[e];i&&(i.dL=0,i.dM=t,delete r[e])},has(e){return q(this.dL,m+e)}});let E,K,D,U,Q,J,G={bubbles:!0,cancelable:!0},Z=[],ee=(e,...t)=>e.addEventListener(...t),te=(e,...t)=>e.removeEventListener(...t),re=(e,t,r,i,d,o)=>{let s={dL:d,dM:r,dN:t,dO:e,dP(e){d?I(r,e,o):r(e)}};Z.push(s),ee(e,t,s.dP,i)},ie=(e,t,r,i,d)=>{for(let o,s=Z.length;s--;)if(o=Z[s],o.dN==t&&o.dL==d&&o.dO==e&&o.dM==r){Z.splice(s,1),te(e,t,o.dP,i);break}},de=new W,oe=(e,t=1,r)=>(t&&de.has(e)?r=de.get(e):(r=I(Function(`return ${e}`)),t&&de.set(e,r)),r),se=decodeURIComponent,le=new W,ae=e=>{let r,i,d,o,s,l,a=le.get(e);if(!a){if(o={},s=e.indexOf("?"),-1==s?(r=e,l=t):(r=e.substring(0,s),l=e.substring(s+1)),l)for(s of l.split("&"))s&&([i,d=t]=s.split("="),o[se(i)]=j(d)?d:se(d));le.set(e,a={a:r,b:o})}return{path:a.a,params:O({},a.b)}},ne=new W,he=(e,t,r)=>(ne.has(e)?r=ne.get(e):(r=oe(e,0),e.includes(m)?X(t,r):ne.set(e,r)),r),pe=navigator.scheduling,ce=()=>{let e,t,r,d=x()+9,o=Y.retard;for(;;){if(!K){Q=E=i,0!=J&&o(J=0);break}if(U==K&&(U=i),D=K,r=K.dL,e=K.dM,t=K.dN,t&&I(t,e,r),K=K.dO,D=i,K&&(x()>d||pe&&pe.isInputPending())){1!=J&&o(J=1),l(ce);break}}},fe=(e,t,r,i,d)=>{d={dN:e,dL:r,dM:t},i?(Q?Q.dO=d:K=d,Q=d):((i=U||D)?(d.dO=i.dO,i.dO=d,Q==i&&(Q=d)):K?(d.dO=K,K=d):K=Q=d,U=d),E||(E=1,l(ce))},ge=(e,t,r)=>{fe(e,t,r,1)},ue=0,xe=(...e)=>new o((async t=>{let r=[];try{let i=Y.request;ue||i(1),ue++,seajs.use(e,((...e)=>{for(let t of e)r.push(t);ue--,ue||i(0),t(r)}))}catch(e){Y.error(e)}})),me=(e,t,r,i)=>(h.prototype=t.prototype,i=new h,O(i,r),i.constructor=e,e.prototype=i,e),ye=e=>e;let we,_e,be={fire(e,t){let r,d,o=this,s=o[m+e],l=0;if(t||(t={}),t.type=e,s)for(r=s.length;l{t.includes(m)&&(i=ve[e])&&(X(i._hA,r),r["\x1e"]&&(O(r,r["\x1e"]),delete r["\x1e"]))},je=(e,t,r)=>{let d,o;var s,l,a;t=t?e._hB[r?t:t.dM]:e.id,d=ve[t],d&&(o=d.pId,Me(d),(l=ve[s=t])&&(delete ve[s],(a=l.root).dL=0,a.dM=0,l.id=l.root=l.pId=l._hB=i),d=ve[o],d&&q(d._hB,t)&&(delete d._hB[t],d._hC=0))},Le=(e,t,r,i,d,o,s)=>{for(t=e._hD,d=e._hE;t.length;)[r,s,i]=t.shift(),r&&fe(i,(o=d[r])&&I(o,s,d))},Ye=(e,t,r)=>{let i,d,o;for(i in e._hB)t?(d=ve[i],o=d&&S(d.root,t,r)):o=1,o&&je(e,i,o)},Me=e=>{let{_hE:t,root:r,pId:i}=e;t&&(e._hE=0,t._hF&&(t._hF=0,P(t),t._hG&&Ye(e),t.fire("destroy"),bt(t,1),r&&e._hH&&t._hG&&k(r,e._hI))),e._hJ++},Se=async(e,t,r)=>{let i,d,o,s,l,{id:a,root:n,pId:h}=e;!e._hH&&n&&(e._hH=1,e._hI=n.innerHTML),Me(e),n&&t&&(i=ae(t),o=i.path,e.path=t,s=i.params,ke(h,t,s),e._hK=o,O(s,r),d=e._hJ,[l]=await xe(o),d==e._hJ&&l&&(Mt(l),o=new l(a,n,e,s),e._hE=o,bt(o),I(o.init,s,o),I(o._hP,[s,e._hI],o),o._hQ(),o._hG||o._hR||_t(o)))},Pe=e=>e.dM||(e.dM=b(_e));function Oe(e,t){let r=this,i=Pe(e);var d,o;r.id=i,r.root=e,r._hJ=1,r._hB={},r.pId=t,r._hD=[],r._hA=new Map,o=r,q(ve,d=i)||(ve[d]=o,o.root.dL=1)}O(Oe,{root:()=>we,all:()=>ve,byId:e=>ve[e],byNode:e=>ve[e.dM]}),O(Oe.prototype,{mount(e,t,r){let i,d=this,o=d.id,s=d._hB,l=Pe(e);return i=ve[l],i||(q(s,l)||(d._hC=0),s[l]=l,i=new Oe(e,o)),Se(i,t,r),i},unmount(...e){je(this,...e)},children(){return this._hC||(this._hC=R(this._hB))},parent(e,t){for(t=this,e=e>>>0||1;t&&e--;)t=ve[t.pId];return t},invoke(e,...t){let r,i,d=this,s=d._hD;return new o((o=>{(r=d._hE)&&r._hR?o((i=r[e])&&I(i,t,r)):s.push([e,t,o])}))}});let Re=new W,ze=/^([\w\-]+)\x1e(\d+)?(\x1e)?([^(]+)\(([\s\S]*?)\)$/,Ce={},He={},Ae={},Te={},Ve={capture:!0,passive:!1},Ne={capture:!0,passive:!0},Be={capture:!1,passive:!1},Fe={capture:!1,passive:!0},Ie=(e,d)=>{let o,s,l,a,n,h,c,f,g,u=[],x=e,m=B(e,y+d);if(m&&(n=Re.get(m),n||(n=m.match(ze)||r,n={v:n[1],b:0|n[2],t:n[3],n:n[4],i:n[5]},Re.set(m,n)),n=O({},n)),n&&!n.v||He[d]){if(f=x.dN,f==i){for(c=[x];x!=p&&(x=x.parentNode);){if(ve[s=x.dM]||(s=x.dN)){f=s;break}c.push(x)}for(m of c)m.dN=f||t}if(x=e.dM,ve[x]&&(g=f=x),f)do{if(o=ve[f],o&&(h=o._hE)){if(l=h._hS,a=l[d],a)for(x=a.length;x--;)s=a[x],l={r:s,v:f,n:s},s?!g&&e.matches(s)&&u.push(l):g&&u.push(l);if(h._hG&&!g)break}g=0}while(o&&(f=o.pId))}return n&&u.push(n),u},qe=e=>{let t,r,i,d,o,s,l,a,{target:n,type:h}=e,c=[];for(;n&&n!=p&&!e.cancelBubble&&(!(r=n.dO)||!r[h]);){if(a=1,n.nodeType==a){if(t=Ie(n,h),t.length)for(s of(c.length=0,t)){let{v:t,n:r,i:p,t:c,b:f}=s;0,i=ve[t],d=i&&i._hE,d&&d._hR&&d._hF&&(o=r+m+h,s=d[o],s&&(e.eventTarget=n,l=p?he(p,i._hA):L,e.params=l,I(s,e,d)),n==d.root||d._hS[h]||(c?a=f||a:(n=d.root,a=0)))}else c.push(n);a&&(i=n.dM,i&&(i=ve[i],d=i&&i._hE,d&&d._hT[h]&&(c.length=0)))}for(;a--;)n=n.parentNode}for(n of c)r=n.dO||(n.dO={}),r[h]=1},Xe=(e,t,r,i)=>{let d=0|Ce[e],o=Te[e]||(Te[e]={}),s=r?-1:1,l=r?ie:re;4&i&&(o[4]=(0|o[4])+s),8&i&&(o[8]=(0|o[8])+s),1&i&&(o[1]=(0|o[1])+s),2&i&&(o[2]=(0|o[2])+s);let a,n=Ae[e];a=o[2]?o[4]?Ve:Be:o[4]?Ne:Fe,d&&r!==d?a!=n&&(ie(p,e,qe,n),re(p,e,qe,a)):l(p,e,qe,r?n:a),Ae[e]=a,Ce[e]=d+s,t&&(He[e]=(0|He[e])+s)};let $e={"&":38,"<":60,">":62,'"':34,"'":39,"`":96},We=/[&<>"'\`]/g,Ee=e=>`${$e[e]};`,Ke=e=>(e+t).replace(We,Ee),De={"!":1,"'":7,"(":8,")":9,"*":"A"},Ue=e=>"%2"+De[e],Qe=/[!')(*]/g,Je=e=>a(e).replace(Qe,Ue),Ge=/[\\'"]/g,Ze=e=>(e+t).replace(Ge,"\\$&"),et=(e,t,r)=>(e.has(t)?r=e.get(t):(r=m+(r||e.dL++),e.has(r)||(e.set(t,r),e.set(r,t))),r),tt=(e,t,i)=>{if(e._hF&&(i=e._hG)){let d,o,{_hU:s,id:l,_hN:a,root:n}=e,h=ve[l],p={dL:[],dM:[],dN:0},c=h._hA;e._hV=0,e._hU={},t||e.fire("dompatch"),c.dL=0,c.clear(),o=i(a,it,l,Je,c,et,Ze,V),d=()=>{if(e._hW=o,e._hF)for(o of((i=p.dO||!e._hR)&&fe(_t,e),p.dL))fe(o._hQ,r,o);if(e._hX>1)e._hX=1,p.dM.length=0,fe(tt,[e,1]);else{for([o,l,c]of(e._hX=0,p.dM))o[l]!=c&&(o[l]=c);for(o of(e.fire("domready"),s=e._hY,s))o();s.length=0}},fe(gt,[n,e._hW,o,p,h,s,e,d])}},rt="textarea",it=(e,r,d,o)=>{let s;if(e){r=r||L;let l,a,h,p,c,f,g=t,u=1==d,x=o,y=o,_=0,b=`<${e}`,v=t,k=0;if(d&&1!=d)for(h of d){if(h.dM)a=h.dM+(h.dN?"/>":`>${h.dO}${h.dP}>`);else if(a=h.dO,h.dP==dt){if(!a)continue;a=Ke(a)}v+=a,f&&h.dP==dt&&f.dP==dt?f.dO+=h.dO:(h.dQ&&(p||(p={}),p[h.dQ]=(p[h.dQ]||0)+1,_++),x=x||h.dR,f=h,c||(c=[]),c.push(h))}for(l in o=o||L,r)a=r[l],!1!==a&&a!=i?(!0===a&&(r[l]=a=o[l]?a:t),"#"!=l&&"id"!=l&&l!=n||g||(g=a,"id"==l)?(l==w&&a&&(k=ae(a).path,g||(g=e+m+k)),"value"==l&&e==rt?v=a:"$"==l?(x=a,delete r[l]):b+=` ${l}="${a&&Ke(a)}"`):delete r[l]):o[l]||delete r[l];s={dO:v,dQ:g,dP:e,dS:k,dR:x,dT:o,dU:y,dM:b,dV:r,dW:c,dX:p,dY:_,dN:u}}else s={dP:d?m:dt,dO:r+t};return s};let dt=e;let ot="http://www.w3.org/",st={svg:`${ot}2000/svg`,math:`${ot}1998/Math/MathML`},lt=(e,r,i,d)=>{var o;let s,l,a,n,h,p=0,c=r.dT,f=r.dV;if(d)for(s in a=d.dT,n=d.dV,n)q(f,s)||(p=1,(h=a[s])?i?i.dM.push([e,h,t]):e[h]=t:e.removeAttribute(s));for(s in f)l=null!==(o=f[s])&&void 0!==o?o:t,(h=c[s])?d&&e[h]==l||(p=1,i?i.dM.push([e,h,l]):e[h]=l):d&&n[s]==l||(p=1,e.setAttribute(s,l));return p},at=(e,t,r)=>{let i,d=e.dP;return d==dt?i=s.createTextNode(e.dO):(i=s.createElementNS(st[d]||t.namespaceURI,d),lt(i,e,r),k(i,e.dO)),i},nt=(e,t,r,i,d)=>{let o,s,l,a={};for(o=i;o>=r;o--,d--)s=e[o],l=s.dQ,l&&(s=a[l]||(a[l]=[]),s.push(t[d]));return a},ht=(e,t)=>e.dQ&&t.dQ==e.dQ||!e.dQ&&!t.dQ&&e.dP==t.dP||e.dP==m||t.dP==m,pt=(e,t,r,i)=>{r&&((i=ve[e.dM])?je(i):Ye(t,e))},ct=(e,t,r,i,d,o)=>{d._hF&&(pt(e,r,1==e.nodeType),t.removeChild(e),--i.dN||fe(o))},ft=(e,t,r,i,d,o,s,l)=>{d._hF&&(t.dP==m?(Ye(s,e),k(e,t.dO)):e.insertBefore(at(t,e,o),r[i]),--o.dN||fe(l))},gt=(e,d,o,s,l,a,n,h)=>{if(n._hF)if(d){if(d.dR||d.dO!=o.dO){let p,c,f,g,u,x=d.dW||r,y=o.dW||r,w=o.dX||L,_=o.dY,b=d.dY,v=e.childNodes,j=0,Y=y.length,M=x.length-1,S=0,P=Y-1,O=(e,t)=>{if(w[e.dQ]&&(w[e.dQ]--,_--),c=u&&u[e.dQ],c)for(p=c.length;p--;)if(c[p]==t){c[p]=i;break}};let R,z=x[j],C=x[M],H=y[S],A=y[P],T=j,V=M;for(;j<=M&&S<=P;)if(z)if(C)if(ht(H,z))c=v[T],H.dP==m||z.dP==m?(s.dO=1,Ye(l,e),H.dP==m?(V=0,k(e,H.dO)):(k(e,t),e.appendChild(at(H,e,s)))):(s.dN++,fe(ut,[c,e,z,H,s,l,a,n,h])),O(z,c),T++,z=x[++j],H=y[++S];else if(ht(A,C))c=v[V],s.dN++,fe(ut,[c,e,C,A,s,l,a,n,h]),O(C,c),V--,C=x[--M],A=y[--P];else if(ht(A,z))c=v[T],e.insertBefore(c,v[V+1]),s.dN++,fe(ut,[c,e,z,A,s,l,a,n,h]),O(z,c),V--,z=x[++j],A=y[--P];else if(ht(H,C))c=v[V],e.insertBefore(c,v[T++]),s.dN++,fe(ut,[c,e,C,H,s,l,a,n,h]),O(C,c),C=x[--M],H=y[++S];else{for(!u&&_>0&&b>0&&(u=nt(x,v,j,M,V)),R=v[T],c=u&&u[H.dQ],g=i;c&&c.length&&!(g=c.pop()););if(g){if(f=z,g!=R){for(c=j+1,p=T+1;c<=M;c++){if(f=x[c],f&&v[p++]==g){x[c]=i;break}0}j--,e.insertBefore(g,R)}w[f.dQ]&&w[f.dQ]--,s.dN++,fe(ut,[g,e,f,H,s,l,a,n,h])}else u&&u[z.dQ]&&w[z.dQ]||ve[R.dM]&&!H.dS?(s.dO=1,e.insertBefore(at(H,e,s),R),j--,V++):(s.dN++,fe(ut,[R,e,z,H,s,l,a,n,h]));++T,z=x[++j],H=y[++S]}else C=x[--M];else z=x[++j];for(p=S,c=1;p<=P;p++,c++)f=y[p],s.dO=1,s.dN++,fe(ft,[e,f,v,V+c,n,s,l,h]);for(!Y&&z&&z.dP==m&&(V=v.length-1),p=V;p>=T;p--)s.dO=1,s.dN++,fe(ct,[v[p],e,l,s,n,h])}}else s.dO=1,k(e,o.dO);s.dN||fe(h)},ut=(e,t,r,i,d,o,s,l,a)=>{if(l._hF){let n=r.dV,h=i.dV;if(r.dR||r.dM!=i.dM||r.dO!=i.dO)if(r.dP==i.dP){if(r.dP==dt)d.dO=1,e.nodeValue=i.dO;else if(!n._||n._!=h._){let t,n,p,c,f,g,u,x=h[w],m=i.dO,y=r.dM!=i.dM||i.dU,b=ve[e.dM],v=x&&ae(x);if(y&&(y=lt(e,i,d,r),y&&(d.dO=1)),x&&b&&b._hK==v.path&&(c=b._hE)){if(g=m!=r.dO,u=x!=b.path,p=i.dR,!g&&!u&&p)for(p of(f=p.split(","),f))if("#"==p||q(s,p)){u=1;break}t=!c._hG,u||g?(p=c._hP,f=v.params,ke(h[_],x,f),b.path=x,b._hI=m,!1!==I(p,[f,m],c)&&d.dL.push(c)):t&&(t=h["mx5-nest"])}else t=1,n=b;n&&(d.dO=1,je(b)),t&&!i.dN&>(e,r,i,d,o,s,l,a)}}else d.dO=1,pt(e,o,1),t.replaceChild(at(i,t,d),e)}--d.dN||fe(a)},xt={},mt=O({get:e=>e?xt[e]:xt,set(e){O(xt,e)}},be),yt=/^(\$?)([^<]*)<([^>]+)>(?:\s*&(.+))?$/,wt=(e,t,r)=>(e.dL?r=e:((r=function(e,t){for(t of r.dL)I(t,e,this)}).dL=[e],r.dM=1),r.dL=r.dL.concat(t.dL||t),r),_t=e=>{let t,r;e._hF&&(r=e._hR,e._hR=1,t=e.owner,((e,t,r)=>{for(r of(t=t||e.root).querySelectorAll(`[mx5-view][mx5-owner="${e.id}"]`))r.dL||e.mount(r,B(r,w))})(t),r||fe(Le,t))},bt=(e,t)=>{let r,{_hT:i,_hS:d,_hZ:o,id:s}=e;for(r in i)Xe(r,d[r],t,i[r]);for(r of(i=t?ie:re,o))i(r.dL,r.dM,r.dN,r.dO,s,e)},vt={win:d,doc:s,root:t};function kt(...e){return O(this,...e),this}function jt(...e){let t=this,r=t.dL||(t.dL=[]);return((e,t,r)=>{let i,d,o,s,l={};for(d of e)for(i in d)o=d[i],s=l[i],"ctor"!=i?(yt.test(i)&&(s?o=wt(s,o):o.dM=1),l[i]=o):r.push(o);for(i in l)q(t,i)||(t[i]=l[i])})(e,t.prototype,r),t}let Lt=e=>function(...t){return this._hF&&I(e,t,this)},Yt=(e,t,r,i)=>{if(e)for(i of e)I(i,t,r)};let Mt=e=>{if(!e["\x1e"]){e["\x1e"]=1;let r,d,o,s,l,a,n,h,p,c,f,g=e.prototype,u={},x=[],y={};for(n in g)if(r=g[n],d=n.match(yt),d)for(h of([,a,o,s,f]=d,c=f?oe(f):Fe,s=s.split(","),s)){if(l=vt[o],p=0,c.passive||c.passive==i?p|=1:p|=2,c.capture?p|=4:p|=8,a){if(l){x.push({dN:r,dL:l,dM:h,dO:c});continue}l===t&&(o=t),l=y[h],l||(l=y[h]=[]),l[o]||(l[o]=1,l.push(o))}u[h]|=p,h=o+m+h,l=g[h],l?l.dM&&(r.dM?g[h]=wt(r,l):q(g,n)&&(g[h]=r)):g[h]=r}g._hQ!=g.render&&(g._hQ=g.render=Lt(g.render)),g._hT=u,g._hZ=x,g._hS=y,g._hP=g.assign,g._hG=g.tmpl}};function St(e,t,r,i,d){(d=this).root=t,d.owner=r,d.id=e,d._hF=1,d._hV=1,d._hN={},d._hU={},d._hX=0,d._hY=[],Yt(St.dL,i,d)}function Pt(){this.id=b("b"),this.dL={}}O(St,{merge:jt,extend:function e(t){let r=this,i=(t=t||{}).ctor;function d(e,t,o,s,l){r.call(l=this,e,t,o,s),i&&I(i,s,l),Yt(d.dL,s,l)}return d.merge=jt,d.extend=e,d.static=kt,me(d,r,t)}}),O(St.prototype,be,{init:h,render:h,assign:h,get(e,t){return t=this._hN,e&&(t=t[e]),t},set(e){let t,r,i,d,o=this,s=o._hN,l=o._hU,a=o._hV;for(i in e)t=e[i],r=s[i],d=!M(t)||r!=t,d&&(l[i]=1,a=1),s[i]=t;return o._hV=a,o},digest(e){return e=this.set(e),new o((t=>{e._hV?(e._hX++,e._hY.push(t),1==e._hX&&fe(tt,e)):e._hX?e._hY.push(t):t()}))},finale(){let e=this;return new o((t=>{e._hX?e._hY.push(t):t()}))},parse(e){return he(e,this.owner._hA)}}),O(Pt.prototype,{get(e,r){return((e,r,i)=>{if(e){let r,d=V(e)?e.slice():(e+t).split(".");for(;(r=d.shift())&&i;)i=i[r];r&&(i=c)}let d;return r!==c&&(d=A(r))!=A(i)&&(i=r),i})(e,r,this.dL)},set(e){O(this.dL,e)}});let Ot=(e,t,r)=>i=>{if(r=e[t]){delete e[t];for(let e of r)I(e,i,r.dL)}},Rt=(e,t,r,d,o)=>{if(e.dL)return e;if(e.dM)return e.enqueue(Rt.bind(e,e,t,r,d,o));e.dM=1,V(t)||(t=[t]);let s=e.constructor,l=0,a=s.dN,n=((e,t,r,d,o,s)=>{let l=[],a=i,n=0;return(h,p,c)=>{let f;n++;let g,u=h.dM,m=u.dL;if(l[p+1]=h,c?(a=c,f=1):s.has(m)||(m&&s.set(m,h),u.dM=x(),g=u.dN,g&&I(g,h,h),f=1),!r.dL){let t=n==d;t&&(r.dM=0,2==o&&(l[0]=a,I(e,l,r))),1==o&&I(e,[c||i,h,t,p],r)}f&&t.fire("end",{bag:h,error:c})}})(r,s,e,t.length,d,s.dO);for(let e of t)if(e){let t,[r,i]=s.get(e,o),d=r.dM.dL,h=n.bind(r,r,l++);d&&a[d]?a[d].push(h):i?(d&&(t=[h],t.dL=r,a[d]=t,h=Ot(a,d)),s.dP(r,h)):h()}return e};function zt(){this.id=b("s"),this.dQ=[]}O(zt.prototype,{all(e,t){return Rt(this,e,t,2)},save(e,t){return Rt(this,e,t,2,1)},one(e,t){return Rt(this,e,t,1)},enqueue(e){let t=this;return t.dL||(t.dQ.push(e),t.dequeue(t.dR)),t},dequeue(...e){let t,r=this;r.dM||r.dL||(r.dM=1,l((()=>{r.dM=0,r.dL||(t=r.dQ.shift(),t&&I(t,r.dR=e))})))},destroy(e){(e=this).dL=1,e.dQ=0}});let Ct=(e,t)=>[f(t),f(e)].join(m),Ht=O({add(e){let t,r=this.dS;for(t of(V(e)||(e=[e]),e))if(t){let{name:e,cache:i}=t;t.cache=0|i,r[e]=t}},create(e){let t=this.meta(e),r=0|e.cache||t.cache,i=new Pt;i.set(t),i.dM={dN:t.after,dL:r&&Ct(t,e)},T(e)&&i.set(e);let d=t.before;return d&&I(d,i,i),this.fire("begin",{bag:i}),i},meta(e){return this.dS[e.name||e]||e},get(e,t){let r,i,d=this;return t||(r=d.cached(e)),r||(r=d.create(e),i=1),[r,i]},cached(e){let t,r,i=this,d=i.dO,o=i.meta(e),s=0|e.cache||o.cache;if(s&&(r=Ct(o,e)),r){let e=i.dN[r];e?t=e.dL:(t=d.get(r),t&&x()-t.dM.dM>s&&(d.del(r),t=0))}return t}},be);zt.extend=(e,t,r)=>{function i(){zt.call(this)}return i.dP=e,i.dO=new W(t,r),i.dN={},i.dS={},O(i,Ht),me(i,zt)};let At=0;return{version:"5.1.0",config(e,...t){let r=Y;return e&&(r=T(e)?O(r,e,...t):r[e]),r},boot(e){var t,r;At||(At=1,O(Y,e),Se((we||(p=s.body,t=_e=Y.rootId,(r=v(t))||(r=p),we=new Oe(r)),we),Y.defaultView))},unboot(){At&&(At=0,we&&(je(we),we=i))},HIGH:1e3,LOW:-1e3,isObject:T,isArray:V,isFunction:e=>"Function"==A(e),isString:e=>"String"==A(e),isNumber:e=>"Number"==A(e),isPrimitive:M,isNumeric:e=>!isNaN(parseFloat(e))&&isFinite(e),attach:ee,detach:te,now:x,mix:O,toMap:(e,t)=>{let r,i={};if(e)for(r of e)i[t&&r?r[t]:r]=t?r:1+(0|i[r]);return i},toTry:I,toUrl:(e,r,i)=>{let d,o,s,l=[];for(o in r)d=r[o]+t,(d||q(i,o))&&(d=a(d),l.push(s=o+"="+d));return s&&(e+=(e&&(e.includes("?")?"&":"?"))+l.join("&")),e},parseUrl:ae,guid:b,use:xe,dispatch:(e,t,r)=>{let i=new Event(t,G);O(i,r),e.dispatchEvent(i)},guard:ye,type:A,has:q,inside:S,applyStyle:F,Cache:W,View:St,Vframe:Oe,State:mt,Service:zt,Event:be,mark:(e,t,r,i,d)=>(0!=e[d="\x1edL"]&&(r=e[d]||(e[d]={}),q(r,t)||(r[t]=x()),i=++r[t]),r=>(r=e[d])&&i===r[t]),keys:R,unmark:P,node:v,task:fe,lowTask:ge,taskFinale:()=>new o(fe),lowTaskFinale:()=>new o(ge),delay:e=>new o((t=>l(t,e)))}})),
+/*!report-desinger|https://github.com/xinglie/report-designer/blob/master/LICENSE*/
+(()=>{let e=document.currentScript.src.replace(/\/[^\/]+$/,"/"),t=document.body,r=(e,t)=>e.startsWith("_")?void 0:t,i=e=>(i._pl||(i._pl=new Promise((t=>{seajs.use(["65","6g/index","6h/6i"],(({applyStyle:i,config:d,View:o},s,l)=>{i("rd-dM","@font-face{font-family:rd-dL;src:url('//at.alicdn.com/t/font_890516_bq9orqwt3mc.woff2?t=1654333295288') format('woff2'),url('//at.alicdn.com/t/font_890516_bq9orqwt3mc.woff?t=1654333295288') format('woff'),url('//at.alicdn.com/t/font_890516_bq9orqwt3mc.ttf?t=1654333295288') format('truetype')}.rd-dL{font:400 normal normal 16px/1 rd-dL;display:inline-block;position:relative}.rd-dM{all:initial;display:block;box-sizing:border-box;font-size:14px;line-height:1.5;font-family:Arial,sans-serif}.rd-dM *{box-sizing:inherit}.rd-dM :after,.rd-dM :before{box-sizing:inherit}.rd-dM ::-moz-placeholder{color:#999}.rd-dM :-ms-input-placeholder{color:#999}.rd-dM ::placeholder{color:#999}.rd-dM ::-moz-selection{background:rgba(250,116,43,.2)}.rd-dM ::selection{background:rgba(250,116,43,.2)}.rd-dN *{cursor:inherit!important}.rd-dO{margin:0}.rd-dP,.rd-dQ{font-size:100%;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;caret-color:#FA742B;display:inline-block;height:22px;padding:1px 4px;border-radius:2px;box-sizing:border-box;box-shadow:none;border:1px solid #e6e6e6;background-color:#fff;color:#333;width:140px;max-width:100%;outline:0}.rd-dP:hover,.rd-dQ:hover{border-color:#ccc}.rd-dP:focus,.rd-dQ:focus,.rd-dR{outline:0;border-color:#fa742b}.rd-dQ{height:auto;overflow:auto;resize:none;padding:3px 4px;font-family:Arial,sans-serif;line-height:1.5}.rd-dS{outline:0}.rd-dP[disabled],.rd-dQ[disabled]{background-color:#f5f5f5;cursor:not-allowed;color:#999}.rd-dP:-moz-placeholder,.rd-dQ:-moz-placeholder{color:#a9a9a9;opacity:1}.rd-dP:-moz-focus-inner{border-style:none;padding:0}.rd-dP[disabled]:hover,.rd-dQ[disabled]:hover{cursor:not-allowed;border-color:#e6e6e6}.rd-dR:hover{border-color:#fa742b}.rd-dT{margin:0;outline:0;display:inline-block;font-weight:400;vertical-align:middle;background-image:none;background-color:#ccc;white-space:nowrap;padding:4px 14px;font-size:14px;line-height:1;border:0;color:#333;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rd-dU{font-weight:400}.rd-dT:focus,.rd-dT:hover{background-color:#bbb;color:#333}.rd-dV{background-color:#fa742b;color:#fff}.rd-dV:focus,.rd-dV:hover{background-color:#f96412;color:#fff}.rd-dT[disabled]{background-color:#f5f5f5;color:#999;cursor:not-allowed}.rd-dT[disabled]:hover{border-color:#e6e6e6;color:#999}.rd-dT:-moz-focus-inner{border-style:none;padding:0}.rd-dW{padding:8px 25px;border-bottom:1px solid rgba(230,230,230,.4);color:#333;margin:0;line-height:1.5}.rd-dX{margin-top:-20px}.rd-dY{height:10px;margin-top:10px;top:28px;box-shadow:0 0 6px #ccc}.rd-dZ{line-height:1.1}.rd-d0{padding:18px 25px}.rd-d1{height:10px;bottom:28px;margin-bottom:10px;box-shadow:0 0 6px #ccc}.rd-d2{padding:8px 25px;border-top:1px solid rgba(230,230,230,.4);min-height:40px}.rd-d3{margin-bottom:-20px}.rd-d4{padding:150px 0;margin:0 auto;width:150px;line-height:0}.rd-d4:after,.rd-d4:before,.rd-d5{content:\"\";width:14px;height:14px;background-color:#ccc;border-radius:100%;display:inline-block;-webkit-animation:rd-dL 1s infinite ease-in-out both;animation:rd-dL 1s infinite ease-in-out both}.rd-d4:before{-webkit-animation-delay:-.32s;animation-delay:-.32s}.rd-d5{margin:0 10px;-webkit-animation-delay:-.16s;animation-delay:-.16s}@-webkit-keyframes rd-dL{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}@keyframes rd-dL{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.rd-d6{display:inline-block;font-weight:400}.rd-d7{font-size:14px;margin:0;padding:0}.rd-d8{list-style-type:none;list-style-image:none;margin:0;padding:0}.rd-d9{color:#fa742b;text-decoration:none}.rd-d9:focus,.rd-d9:hover{color:#e25305}.rd-d9:active,.rd-d9:focus,.rd-d9:hover,.rd-d9:visited{outline:0}.rd-e_{border-style:none;height:auto;vertical-align:top}.rd-ea{margin-right:2px}.rd-eb{margin-left:5px}.rd-ec{transform:rotate(180deg)}.rd-ed{transform:rotate(90deg)}.rd-ee{transform:rotate(270deg)}.rd-ef{margin-right:5px}.rd-eg{margin-right:10px}.rd-eh{margin-left:10px}.rd-ei{padding-left:10px}.rd-ej{background-color:rgba(250,116,43,.6)}.rd-ek{background-color:#fff}.rd-el{width:100%}.rd-em{height:100%}.rd-en{max-width:100%}.rd-eo{max-height:100%}.rd-ep{text-align:right}.rd-eq{text-align:center}.rd-er{float:left}.rd-es{float:right}.rd-et{position:absolute}.rd-eu{position:relative}.rd-ev{pointer-events:none}.rd-ew{pointer-events:all}.rd-ex{margin:30px 0}html .rd-ey{display:none}.rd-ez{display:block}.rd-eA{display:inline-block}.rd-eB{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rd-eC{scrollbar-color:#FA742B #0000}.rd-eC::-webkit-scrollbar{height:4px;width:4px}.rd-eC::-webkit-scrollbar-corner{height:4px;width:4px}.rd-eC::-webkit-scrollbar-thumb{background:#fa742b;border-radius:2px}.rd-eC::-webkit-scrollbar-thumb:hover{background:#ec5706}.rd-eD{scrollbar-width:thin;scroll-behavior:smooth}.rd-eD::-webkit-scrollbar{height:2px;width:2px}.rd-eD::-webkit-scrollbar-corner{height:2px;width:2px}.rd-eE{white-space:nowrap;word-wrap:normal;overflow:hidden;text-overflow:ellipsis}.rd-eF{height:1px;margin:5px 0;background:linear-gradient(to right,#0000,#7d768454 50%,#0000)}.rd-eG{flex:1}.rd-eH{display:flex}.rd-eI{flex-direction:column}.rd-eJ{flex-shrink:0}.rd-eK{align-items:center}.rd-eL{transform:scaleX(-1)}.rd-eM{transform:scaleY(-1)}.rd-eN{position:-webkit-sticky;position:sticky}.rd-eO{top:0}.rd-eP{margin-bottom:4px}.rd-eQ{margin-top:4px}.rd-eR{width:60px}.rd-eS{width:140px}.rd-eT{width:113px}.rd-eU{width:220px}.rd-eV{height:100px}.rd-eW{height:1px}.rd-eX{height:4px}.rd-eY{width:1px}.rd-eZ{width:4px}.rd-e0{justify-content:space-between}.rd-e1{justify-content:center}.rd-e2{justify-content:flex-end}.rd-e3{flex-wrap:wrap}.rd-e4{color:#e6e6e6}.rd-e5{cursor:pointer}.rd-e6{cursor:move}.rd-e7{cursor:default}.rd-e8{cursor:text}.rd-e9{word-break:break-all}.rd-f_{word-break:keep-all}.rd-fa{border-collapse:collapse}.rd-fb{border:1px solid #000;padding:0}.rd-fc{background:rgba(250,116,43,.05)}.rd-fd{overflow:hidden;white-space:pre}.rd-fe{border:solid 2px #fa742b}.rd-ff,.rd-fg{border-right:solid 6px #fa742b;border-radius:2px}.rd-ff{right:-4px}.rd-fg{left:-4px}.rd-fh,.rd-fi{border-bottom:solid 6px #fa742b;border-radius:2px}.rd-fh{bottom:-4px}.rd-fi{top:-4px}.rd-fj{left:-1px;top:-1px;right:-1px;bottom:-1px}.rd-fk{left:0;top:0;right:0;bottom:0}.rd-fl{box-shadow:inset 2px 2px 10px rgba(0,0,0,.2);outline:#FA742B 2px solid;background-color:rgba(250,116,43,.1)}.rd-fm{width:80px}.rd-fn{width:220px}.rd-fo{background:rgba(250,116,43,.2)}.rd-fp{align-items:flex-start}.rd-fq{visibility:hidden}.rd-fr{width:36px;height:18px;display:inline-block;border-radius:2px;background:#ccc}.rd-fr::before{content:'';width:calc(50% - 4px);height:calc(100% - 4px);position:absolute;left:0;margin:2px;border-radius:2px;background:#fff;transition:all .25s}.rd-fs{border:solid 1px #fff}.rd-ft{transition:all .25s}.rd-fq:checked+.rd-fr{background:#fa742b}.rd-fq:checked+.rd-fr::before{left:100%;margin-left:calc(-50% + 2px)}.rd-fs{width:32px;height:16px}.rd-fs::before{width:calc(50% - 2px);height:calc(100% - 2px);margin:1px}.rd-fu:checked+.rd-fs{background:#fcb58f}.rd-fu:checked+.rd-fs::before{left:100%;margin-left:calc(-50% + 1px)}.rd-fq:disabled+.rd-fr{background:#e6e6e6;cursor:not-allowed}.rd-fv{width:20px;margin:0 1px;height:20px;line-height:20px;background:#e0e0e0;border-radius:2px}.rd-fv:hover{background:#ccc}.rd-fw,.rd-fw:hover{background:#fa742b;color:#fff}.rd-fx{opacity:0}.rd-fy{opacity:.6}.rd-fz{opacity:.4}.rd-fA .rd-fv,.rd-fA .rd-fv:hover{background:#e6e6e6}.rd-fA .rd-fw,.rd-fA .rd-fw:hover{background:#999}.rd-fB{cursor:not-allowed}.rd-fC{color:#333}.rd-fD{color:#fa742b}.rd-fE,.rd-fF{color:#999}.rd-fG{color:#666}.rd-fE:hover{color:#666}.rd-fH{overflow:hidden}.rd-fI{overflow:visible}.rd-fJ{overflow:auto}.rd-fK{overflow-y:scroll}.rd-fL{font-size:10px}.rd-fM{font-size:12px}.rd-fN{font-size:14px}.rd-fO{font-size:16px}.rd-fP{font-size:20px}.rd-fQ{font-size:26px}.rd-fR{right:2px}.rd-fS{right:0}.rd-fT{top:2px}.rd-fU{bottom:2px}.rd-fV{bottom:0}.rd-fW{border:dashed 1px #fa742b;display:none;z-index:2}.rd-fX{border:dotted 1px #999}.rd-fY{z-index:1}.rd-fZ{z-index:5}.rd-f0{z-index:6}.rd-f1{z-index:7}.rd-f2{z-index:8}.rd-f3{z-index:9}.rd-f4::before{width:100%;height:100%;content:attr(data-tip);position:absolute;display:flex;justify-content:center;align-items:center}.rd-f5::before{position:absolute;left:-11px;right:-11px;top:-7px;content:'';border-style:solid;border-width:7px;border-color:#0000 #fcb58f;height:15px}.rd-f6::before{left:-5px;right:-5px;top:-3px;border-width:3px;height:7px}.rd-f5::after{position:absolute;border-bottom:dashed 1px #fcb58f;left:-5px;right:-5px;top:0;content:''}.rd-f7{min-height:80px}.rd-f8{min-height:500px}.rd-f9{border-style:dashed}.rd-g_{contain:paint}.rd-ga{padding:4px}.rd-gb{padding:2px}.rd-gc{left:2px}.rd-gd{left:0}.rd-ge{border-radius:2px;padding:2px}.rd-gf{opacity:0}.rd-gf:focus{opacity:1}.rd-gg{transform:translateY(-50%)}.rd-gh{transform:translateX(-50%)}.rd-gi{touch-action:none}.rd-gj{scrollbar-gutter:stable}.rd-gk{content-visibility:auto}");let a=navigator.language.toLowerCase();try{let e=localStorage;e&&(a=e.getItem("rd.lang")||a)}catch{}d(e,{lang:a}),o.merge({ctor(){this.set({textReturn:l.ev,safeHTML:l.ew,i18n:s})},getValue(){let{id:e,type:t,props:i}=this.get();return{id:e,type:t,props:i,elementId:e,elementType:t,elementProps:JSON.stringify(i,r)}},getProps(){return this.get("props")},update(e){this.set({props:e}),this.render()},_el(e){e.preventDefault()},_hn(e){e.stopPropagation()},"_ho"(e){this._hn(e)}}),t()}))}))),i._pl),d=async e=>(await i(e),d._pl||(d._pl=new Promise((e=>{seajs.use(["65"],(({View:r,boot:i,toUrl:d,config:o})=>{let s=o("rootId");define("~/root",(()=>r.extend())),t.id||(t.id=s),i({defaultPath:"/rd",defaultView:"~/root",rootId:t.id,error(e){{let t=o("errorReportUrl");t&&(t=d(t,{error:e.message}),navigator.sendBeacon(t))}}}),e()}))}))),d._pl),o="rd-dM",s=async(e,t,r)=>{await d();let{config:i,node:s,isString:l,Vframe:a,State:n}=seajs.require("65"),h=s(i("rootId"));n.set({dP:r.unit||"px"});let p=a.byNode(h),c=e;if(l(c)&&(c=s(c.replace(/^#/,""))),c){c.classList.contains(o)||c.classList.add(o);let e=a.byNode(c);e&&e.path==t?(await e.invoke("assign",r),await e.invoke("render")):p.mount(c,t,r)}};window.printer={resolve:t=>seajs.realpath(e+t),setup:(e={})=>new Promise((async r=>{await d(e),seajs.use(["65","6g/index"],(({node:i,config:d,Vframe:s},l)=>{let a,n=e.rootId||"app",h=e.use||"index";if(a=i(n),d({appId:n,labelCols:e.labelCols||1,labelGap:e.labelGap||0}),"virtual"==e.use){if(!a){let e=document.createElement("div"),r="pointer-events:none;position:fixed;";r+="opacity:0;left:-500cm;top:-500cm",e.style.cssText=r,e.id=n,a=e,t.append(e)}}else{let t=e.siteName;document.title=t||l("ea")}a&&a.classList.add(o);let p=d("rootId");s.byNode(i(p)).mount(a,"8f/"+h),r()}))})),getHTML:e=>new Promise(((t,r)=>{seajs.use(["65"],(({config:i,node:d,Vframe:o})=>{let s=i("appId"),l=d(s);if(l){let i=o.byNode(l);i?i.invoke("_pk",e,t):r("can not find "+s)}else r("can not find "+s)}))})),config:d,element(e,t){s(e,`6r/${t.type}/index`,t)},getVframe:e=>new Promise(((t,r)=>{let i=20,d=e,{node:o,Vframe:s,isString:l}=seajs.require("65");l(d)&&(d=o(d.replace(/^#/,"")));let a=()=>{if(d){let e=s.byNode(d);e?t(e):(i--,i?setTimeout(a,50):r(new Error("can not find vframe")))}else r(new Error("can not find nodeOrId"))};setTimeout(a,50)})),page(e,t){s(e,"8f/page",t)},remove(e){let t=e,{node:r,Vframe:i,isString:d}=seajs.require("65");if(d(t)&&(t=r(t.replace(/^#/,""))),t){let e=i.byNode(t);if(e)return e.unmount(),!0}return!1},destroy(){seajs.use("65",(({unboot:e})=>{delete d._pl,e()}))}}})(),define("6g/index",["65","./8d"],((e,t,r)=>{let i=e("65"),d=e("./8d"),o={zh:d,"zh-cn":d},{has:s,config:l,Cache:a,isArray:n}=i,h=/\{(\d+)\}/g,p=new a(200,60);r.exports=(e,...t)=>{let r=(l("lang")||navigator.language).toLowerCase();s(o,r)||(r="zh");let i,d=o[r],a=[r,e,...t].join("\0");if(p.has(a))return p.get(a);if(n(e)){i="";for(let t of e)i+=s(d,t)?d[t]:t}else i=s(d,e)?d[e]:e,t.length&&(i=i.replace(h,((e,r,i)=>(r|=0,t.length>r?(i=t[r],s(d,i)?d[i]:i):e))));return p.set(a,i),i}})),define("6g/8d",[],((e,t,r)=>{r.exports={ex:"\u4e0b\u5bf9\u9f50",ev:"\u6c34\u5e73\u5c45\u4e2d\u5bf9\u9f50",et:"\u5de6\u5bf9\u9f50",ey:"\u5782\u76f4\u5c45\u4e2d\u5bf9\u9f50",eu:"\u53f3\u5bf9\u9f50",ew:"\u4e0a\u5bf9\u9f50",fG:"\u5feb\u6377\u952e\u5927\u5168",eU:"\u5173",eT:"\u5f00",eS:"\u81ea\u52a8\u4fdd\u5b58{0}",fH:"\u5143\u7d20\u95f4\u6c34\u5e73\u5747\u5206\u6392\u5217(\u6309\u4e0bShift\u952e\u5219\u4f7f\u7528\u5143\u7d20\u4e2d\u5fc3\u70b9\u8fdb\u884c\u5747\u5206)",fJ:"\u5143\u7d20\u5728\u8bbe\u8ba1\u533a\u5185\u6c34\u5e73\u5747\u5206\u6392\u5217(\u6309\u4e0bShift\u952e\u5219\u4f7f\u7528\u5143\u7d20\u4e2d\u5fc3\u70b9\u8fdb\u884c\u5747\u5206\u6216\u6309\u4e0bCtrl\u952e\u5728\u8bbe\u8ba1\u533a\u6c34\u5e73\u5c45\u4e2d)",fK:"\u5143\u7d20\u5728\u8bbe\u8ba1\u533a\u5185\u5782\u76f4\u5747\u5206\u6392\u5217(\u6309\u4e0bShift\u952e\u5219\u4f7f\u7528\u5143\u7d20\u4e2d\u5fc3\u70b9\u8fdb\u884c\u5747\u5206\u6216\u6309\u4e0bCtrl\u952e\u5728\u8bbe\u8ba1\u533a\u5782\u76f4\u5c45\u4e2d)",fI:"\u5143\u7d20\u95f4\u5782\u76f4\u5747\u5206\u6392\u5217(\u6309\u4e0bShift\u952e\u5219\u4f7f\u7528\u5143\u7d20\u4e2d\u5fc3\u70b9\u8fdb\u884c\u5747\u5206)",dN:"\u5220\u9664\u8f85\u52a9\u7ebf",dP:"\u70b9\u51fb\u9690\u85cf\u6240\u6709\u8f85\u52a9\u7ebf",dO:"\u6309\u4e0b\u62d6\u52a8\u53ef\u79fb\u52a8\u8f85\u52a9\u7ebf",dQ:"\u70b9\u51fb\u663e\u793a\u6240\u6709\u8f85\u52a9\u7ebf",ed:"\u5e94\u7528",ee:"\u53d6\u6d88",mL:"\u786e\u5b9a",mw:"\u7d2f\u8ba1\u5e73\u5747",mv:"\u672c\u9875\u5e73\u5747",mu:"\u672c\u5355\u5e73\u5747",l7:"\u6c42\u5e73\u5747",l8:"\u81ea\u5b9a\u4e49",hM:"\u70b9\u51fb\u9009\u4e2d\u5f53\u524d\u683c\u5b50",l5:"\u9759\u6001\u6587\u672c",mt:"\u672c\u9875\u7d2f\u8ba1",mr:"\u672c\u9875\u6c42\u548c",ms:"\u672c\u5355\u6c42\u548c",l6:"\u6c42\u548c",fB:"\u60a8\u786e\u8ba4\u6e05\u7a7a\u7f16\u8f91\u533a\u5185\u5bb9\u5417\uff1f",mX:"\u70b9\u51fb\u9009\u62e9\u56fe\u7247",e0:"\u70b9\u51fb\u663e\u793a{0}",mM:"\u5173\u95ed\u7a97\u53e3",l1:"\u6dfb\u52a0\u914d\u8272",lZ:"\u968f\u673a\u4e00\u4e2a\u989c\u8272",l0:"\u79fb\u9664\u5f53\u524d\u914d\u8272",fA:"\u60a8\u786e\u8ba4\u65b0\u5efa\u7f16\u8f91\u533a\u5185\u5bb9\u5417\uff1f",m0:'\u8bf7\u9009\u4e2d\u4e00\u4e2a\u652f\u6301\u6570\u636e\u7ed1\u5b9a\u7684\u7ec4\u4ef6\uff0c\u5982\u6570\u636e\u4e2d\u7684"\u5217\u8868\u683c"\u3001"\u5355\u5143\u683c"\u6216"\u67f1\u72b6\u56fe"',mK:"\u63d0\u793a",k4:"\u4e0b",k5:"\u5de6",j1:"\u5de6\u4e0b",jY:"\u5de6\u4e0a",k3:"\u53f3",j0:"\u53f3\u4e0b",jZ:"\u53f3\u4e0a",k2:"\u4e0a",kw:"\u5f27",go:"\u8bf7\u8f93\u5165\u6216\u7ed1\u5b9a\u6761\u5f62\u7801\u5185\u5bb9",fZ:"\u6761\u5f62\u7801",gp:"\u57fa\u5143",gq:"\u6279\u91cf\u6761\u7801",gy:"\u6279\u91cf\u6587\u672c",kC:"\u7535\u6c60",kI:"\u8d1d\u585e\u5c142",kJ:"\u8d1d\u585e\u5c143",gL:"\u65e5\u5386",gQ:"\u67f1\u72b6\u56fe",gU:"Chart.js",gW:"\u6f0f\u6597\u56fe",gY:"\u6298\u7ebf\u56fe",g1:"\u4eea\u8868\u76d8",g4:"\u997c\u56fe",g5:"\u96f7\u8fbe\u56fe",g6:"\u6563\u70b9\u56fe",g7:"\u5706\u5f62",g9:"\u65f6\u949f",hc:"\u73af\u5f62\u8fdb\u5ea6",h3:"\u66f2\u7ebf",gx:"\u8bf7\u7ed1\u5b9a\u6570\u636e",hg:"\u5355\u5143\u683c",hp:"\u5217\u8868\u683c",hy:"\u6570\u636e\u8868\u683c",hO:"\u81ea\u7531\u8868\u683c",hT:"\u6a2a\u7eb5\u91cd\u590d",hm:"\u5220\u9664\u7ed1\u5b9a\u5b57\u6bb5",kN:"\u692d\u5706",kO:"\u98ce\u6247",hV:"\u6ce8\u91ca",hY:"\u5361\u7247",hZ:"\u8fde\u63a5\u7ebf",h9:"\u6570\u636e",i_:"\u6570\u636e\u5e93",ia:"\u5224\u5b9a",ig:"\u5c55\u793a",ih:"\u6587\u6863",ii:"\u5916\u90e8\u6570\u636e",ij:"\u5185\u90e8\u5b58\u50a8",ik:"\u5faa\u73af\u9650\u503c",il:"\u4eba\u5de5\u8f93\u5165",im:"\u4eba\u5de5\u64cd\u4f5c",in:"\u8de8\u9875\u5f15\u7528",io:"\u5e76\u884c\u6a21\u5f0f",ip:"\u9884\u5907",iq:"\u8fc7\u7a0b",ir:"\u961f\u5217\u6570\u636e",is:"\u9875\u5185\u5f15\u7528",it:"\u5b50\u6d41\u7a0b",iu:"\u6761\u5e26",iv:"\u5f00\u59cb\u7ed3\u675f",iw:"\u590d\u9009\u6846",iH:"\u6570\u636e\u91c7\u96c6",iO:"\u4e0b\u62c9\u6846",iS:"\u8f93\u5165\u6846",iW:"\u5355\u9009\u6846",iX:"\u516c\u5f0f",iY:"\u51fd\u6570",jc:"H-Flex",i7:"\u70ed\u5ea6",jh:"HTML",m1:"\u539f\u59cb\u56fe\u7247\u5bbd\u9ad8",jo:"\u8bf7\u9009\u62e9\u6216\u7ed1\u5b9a\u56fe\u7247",ji:"\u56fe\u7247",h1:"\u76f4\u7ebf",jA:"\u6b63\u5728\u8f7d\u5165\u7b2c\u4e09\u65b9\u7ec4\u4ef6...",jr:"\u8fb9\u6846",js:"\u9884\u8bbe\u56fe\u7247",jt:"\u5730\u56fe",jD:"\u5e8f\u53f7\u5668",jF:"\u7f16\u8f91\u533a",kf:"\u9875\u7801\u5668",lk:"\u5706\u997c",h2:"\u6298\u7ebf",kU:"\u6298\u7ebf2",j_:"\u9875\u811a",jb:"\u9875\u5934",kg:"\u8fdb\u5ea6\u6761",ki:"\u8bf7\u8f93\u5165\u6216\u7ed1\u5b9a\u4e8c\u7ef4\u7801\u5185\u5bb9",gt:"\u4e8c\u7ef4\u7801",kj:"\u8bc4\u5206",km:"\u77e9\u5f62",ko:"\u8bf7\u9009\u62e9\u6216\u7ed1\u5b9a\u80cc\u666f\u56fe\u7247",kn:"\u80cc\u666f\u56fe",hU:"\u5bcc\u6587\u672c",kq:"\u6807\u5c3a",ln:"\u4fe1\u53f7",ku:"\u7b7e\u540d",lr:"\u626c\u58f0\u5668",kZ:"\u7bad\u5934",kK:"\u5927\u62ec\u53f7",k0:"\u6c14\u6ce1",kL:"\u5706",k8:"\u62d0\u89d2",k9:"\u5341\u5b57",l_:"\u7acb\u65b9\u4f53",ld:"\u5706\u67f1",lf:"\u53cc\u7bad\u5934",lw:"\u4e94\u89d2\u661f",kR:"\u7ebf\u6bb5",lj:"\u6708\u7259",kS:"\u591a\u8fb9\u5f62",lg:"\u56db\u8fb9\u5f62",ll:"\u661f\u661f",jd:"\u8868\u683c",je:"Tabs",lz:"\u6807\u7b7e",gK:"\u8bf7\u8f93\u5165\u6216\u7ed1\u5b9a\u5185\u5bb9",lA:"\u6587\u672c",lx:"\u4e09\u89d2\u5f62",jg:"V-Flex",lI:"\u8bf7\u8f93\u5165\u89c6\u9891\u5730\u5740",lC:"\u89c6\u9891",m2:"WabQR",ly:"WiFi",lJ:"Excel",e_:"\u6b63\u5728\u5bfc\u51fa...",eb:"\u5bfc\u51fa\u6210\u529f~",dU:"\u5fae\u8f6f\u6b63\u9ed1\u4f53",dV:"\u6977\u4f53",dW:"\u96b6\u4e66",dS:"\u9ed1\u4f53",dR:"\u5b8b\u4f53",dT:"\u5fae\u8f6f\u96c5\u9ed1",dX:"\u5e7c\u5706",dM:"\u6c34\u5e73",dL:"\u5782\u76f4",eH:"\u5e2e\u52a9",e3:"\u6dfb\u52a0<{0}>\u8f85\u52a9\u7ebf",e2:"\u6e05\u9664\u5168\u90e8\u8f85\u52a9\u7ebf",e6:"\u6e05\u7a7a\u7f16\u8f91\u533a",e4:"\u5220\u9664<{0}>\u8f85\u52a9\u7ebf",ff:"\u6dfb\u52a0<{0}>",fd:"\u5bf9\u9f50\u5143\u7d20",fu:"\u6c34\u5e73\u5747\u5206<\u591a\u4e2a\u5143\u7d20>",fv:"\u5782\u76f4\u5747\u5206<\u591a\u4e2a\u5143\u7d20>",fs:"\u526a\u5207<{0}>",ft:"\u514b\u9686<{0}>",fb:"\u9009\u4e2d<{0}>",fh:"\u7ec4\u5408\u5143\u7d20",fj:"\u7f16\u8f91\u9501\u5b9a<{0}>",fa:"\u53d6\u6d88\u9009\u4e2d<{0}>",fo:"\u4fee\u6539<{0}>\u63a7\u5236\u70b9",fp:"\u4fee\u6539<{0}>\u8c03\u6574\u70b9",fr:"\u4fee\u6539<{0}>\u5c5e\u6027",fq:"\u4fee\u6539<{0}>\u5c3a\u5bf8",fc:"\u79fb\u52a8<{0}>",fm:"\u7c98\u8d34<{0}>",fg:"\u5220\u9664<{0}>",fn:"\u65cb\u8f6c<{0}>",fe:"\u540c\u6b65\u5143\u7d20\u5c3a\u5bf8",fi:"\u53d6\u6d88\u7ec4\u5408\u5143\u7d20",fk:"\u53d6\u6d88\u7f16\u8f91\u9501\u5b9a<{0}>",fl:"\u8c03\u6574<{0}>Z\u8f74",fz:"\u663e\u793a\u81ea\u5b9a\u4e49\u6a21\u677f",fx:"\u663e\u793a\u6a21\u677f<{0}>",fy:"\u663e\u793aid\u4e3a{0}\u7684\u6a21\u677f",e1:"\u521d\u59cb\u72b6\u6001",e5:"\u79fb\u52a8<{0}>\u8f85\u52a9\u7ebf",f_:"\u65b0\u5efa\u7f16\u8f91\u533a",e7:"\u653e\u5927\u7f16\u8f91\u533a",e8:"\u7f29\u5c0f\u7f16\u8f91\u533a",e9:"\u8fd8\u539f\u7f16\u8f91\u533a",m3:"\u70b9\u51fb\u8fd8\u539f\u5230{0}",fw:"\u540c\u6b65<{0}>\u5c5e\u6027",mZ:"\u56fe\u7247\u5e93",mY:"\u83b7\u53d6\u56fe\u7247\u5c3a\u5bf8\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5\uff5e\uff5e",fT:"\u9006\u65f6\u9488\u65cb\u8f6c\u589e\u52a0{0}\u5ea6(\u6309\u4e0bshift\u952e\u5438\u9644\u5230{0}\u7684\u500d\u6570\u4e0a)",eF:"\u6e05\u7a7a\u683c\u5b50",ep:"\u6e05\u7a7a\u7f16\u8f91\u533a",fU:"\u987a\u65f6\u9488\u65cb\u8f6c\u589e\u52a0{0}\u5ea6(\u6309\u4e0bshift\u952e\u5438\u9644\u5230{0}\u7684\u500d\u6570\u4e0a)",ez:"\u7ec4\u5408",eA:"\u53d6\u6d88\u7ec4\u5408",eg:"\u590d\u5236",eh:"\u526a\u5207",eo:"\u5220\u9664",em:"\u514b\u9686",fQ:"\u5f53\u524d\u72b6\u6001\uff1a\u901a\u8fc7\u5c5e\u6027\u9762\u677f\u4fee\u6539\u5750\u6807\u65f6\uff0c\u7ec4\u5408\u4e2d\u7684\u5176\u5b83\u5143\u7d20\u4e0d\u968f\u7740\u4fee\u6539",fP:"\u5f53\u524d\u72b6\u6001\uff1a\u901a\u8fc7\u5c5e\u6027\u9762\u677f\u4fee\u6539\u5750\u6807\u65f6\uff0c\u7ec4\u5408\u4e2d\u7684\u5176\u5b83\u5143\u7d20\u968f\u7740\u4fee\u6539",fN:"\u7ec4\u5408\u9009\u4e2d\u5143\u7d20",eZ:"\u4ece\u672c\u5730\u6587\u4ef6\u5bfc\u5165",fR:"\u9501\u5b9a\u7f16\u8f91",el:"\u4e0b\u79fb\u4e00\u5c42",ek:"\u4e0a\u79fb\u4e00\u5c42",eq:"\u65b0\u5efa\u7f16\u8f91\u533a",en:"\u7c98\u8d34",er:"\u53cd\u9009",eY:"\u5bfc\u51fa\u5230\u672c\u5730\u6587\u4ef6",eW:"\u4fdd\u5b58\u5230\u670d\u52a1\u5668",ef:"\u5168\u9009",es:"\u5168\u9009(\u53ef\u79fb\u52a8)",eC:"\u9ad8\u4f5c\u4e3a\u5bbd",eE:"\u540c\u9ad8",eB:"\u5bbd\u4f5c\u4e3a\u9ad8",eD:"\u540c\u5bbd",ej:"\u79fb\u81f3\u5e95\u5c42",ei:"\u79fb\u81f3\u9876\u5c42",fO:"\u53d6\u6d88\u7ec4\u5408\u5143\u7d20",fS:"\u89e3\u9501\u7f16\u8f91",eQ:"\u591a\u4e2a\u5143\u7d20",lO:"\u5220\u9664\u5f53\u524d\u683c\u5b50",lU:"\u4e0b\u65b9\u6dfb\u52a0\u683c\u5b50",lM:"\u5de6\u4fa7\u6dfb\u52a0\u683c\u5b50",lN:"\u53f3\u4fa7\u6dfb\u52a0\u683c\u5b50",lT:"\u4e0a\u65b9\u6dfb\u52a0\u683c\u5b50",lV:"\u5de6\u4fa7\u6dfb\u52a0\u5217",lW:"\u53f3\u4fa7\u6dfb\u52a0\u5217",lL:"\u4e0b\u65b9\u6dfb\u52a0\u884c",lK:"\u4e0a\u65b9\u6dfb\u52a0\u884c",lY:"\u5411\u4e0b\u5408\u5e76\u683c\u5b50",lP:"\u5411\u5de6\u5408\u5e76\u683c\u5b50",lQ:"\u5411\u53f3\u5408\u5e76\u683c\u5b50",lX:"\u5411\u4e0a\u5408\u5e76\u683c\u5b50",lR:"\u62c6\u5206\u683c\u5b50",mI:"\u53ef\u4ee5\u8f93\u5165\u6216\u7c98\u8d34\u5341\u516d\u8fdb\u5236\u7684\u989c\u8272\u503c",mJ:"\u70b9\u51fb\u4f7f\u7528\u5438\u7ba1\u5438\u53d6\u989c\u8272",mN:"\u62d6\u52a8\u6570\u636e\u6e90\u5b57\u6bb5\u5230\u8fd9\u91cc",mG:"\u5782\u76f4\u5c45\u4e0b",mC:"\u6c34\u5e73\u5c45\u4e2d",mB:"\u6c34\u5e73\u5c45\u5de6",mF:"\u5782\u76f4\u5c45\u4e2d",mD:"\u6c34\u5e73\u5c45\u53f3",mE:"\u5782\u76f4\u5c45\u4e0a",mR:"\u52a0\u7c97",mS:"\u659c\u4f53",mV:"\u4e0a\u5212\u7ebf",mU:"\u5220\u9664\u7ebf",mT:"\u4e0b\u5212\u7ebf",mP:"\u5c45\u4e2d",mO:"\u5c45\u5de6",mQ:"\u5c45\u53f3",l2:"\u8bf7\u5148\u7ed1\u5b9a\u6570\u636e",mA:"\u9ad8\u5ea6\u5747\u5206",mz:"\u5bbd\u5ea6\u5747\u5206",mx:"\u70b9\u51fb\u9690\u85cf{0}\u8fb9\u6846",my:"\u70b9\u51fb\u663e\u793a{0}\u8fb9\u6846",mk:"\u5220\u9664\u5f53\u524d\u5217",mj:"\u5220\u9664\u5f53\u524d\u884c",mh:"\u5de6\u4fa7\u6dfb\u52a0\u5217",mi:"\u53f3\u4fa7\u6dfb\u52a0\u5217",mg:"\u4e0b\u65b9\u6dfb\u52a0\u884c",mf:"\u4e0a\u65b9\u6dfb\u52a0\u884c",mq:"\u5411\u4e0b\u5408\u5e76\u5355\u5143\u683c",mn:"\u5411\u5de6\u5408\u5e76\u5355\u5143\u683c",mo:"\u5411\u53f3\u5408\u5e76\u5355\u5143\u683c",mp:"\u5411\u4e0a\u5408\u5e76\u5355\u5143\u683c",ml:"\u6c34\u5e73\u62c6\u5206\u5355\u5143\u683c",mm:"\u5782\u76f4\u62c6\u5206\u5355\u5143\u683c",gA:"\u81ea\u52a8\u6362\u884c\uff1a",m4:"\u4e00\u952e\u540c\u6b65\u4e0b\u5217\u5c5e\u6027",eR:"\u57fa\u7840\u5c5e\u6027",fX:"\u5173\u95ed\u6240\u6709\u9762\u677f(Shift+Z)",fV:"\u5173\u95ed{0}\u9762\u677f(\u6570\u5b57\u952e{1})",m5:"\u6570\u636e\u6e90",m6:"\u6309\u4e0b\u79fb\u52a8\u9762\u677f",m7:"\u5143\u7d20",m8:"\u6309\u4e0b\u62d6\u52a8\u6539\u53d8\u9762\u677f\u5bbd\u5ea6",m9:"\u5c55\u5f00{0}\u9762\u677f(Shift+\u6570\u5b57\u952e{1})",n_:"\u70b9\u51fb\u67e5\u770b{0}\u7684\u8bf4\u660e",na:"\u6309\u4e0b\u62d6\u52a8\u6539\u53d8\u9762\u677f\u9ad8\u5ea6",fY:"\u6253\u5f00\u6240\u6709\u9762\u677f(Shift+Z)",fW:"\u6253\u5f00{0}\u9762\u677f(\u6570\u5b57\u952e{1})",nb:"\u6982\u89c8\u56fe",nc:"\u5c5e\u6027",nd:"\u53ea\u8bfb\u5143\u7d20\u4e0d\u80fd\u9009\u4e2d\u548c\u62d6\u52a8\u6392\u5e8f",ne:"\u5386\u53f2\u64cd\u4f5c",nf:"\u6298\u53e0{0}\u9762\u677f(Shift+\u6570\u5b57\u952e{1})",ng:"\u7ed3\u6784\u6811",jQ:"\u8bf7\u9009\u62e9",nh:"\u4e0d\u80fd\u653e\u7f6e",ni:"\u677e\u5f00\u653e\u5728\u683c\u5b50\u91cc",nj:"\u677e\u5f00\u653e\u5728\u7f16\u8f91\u533a",ho:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u683c\u5b50\u9ad8\u5ea6",hn:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u683c\u5b50\u5bbd\u5ea6",ie:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u63a7\u5236\u70b9",iN:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539Excel\u9876\u90e8\u6807\u9898\u9ad8\u5ea6",iM:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539Excel\u5de6\u4fa7\u6807\u9898\u5bbd\u5ea6",ic:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u5143\u7d20\u9ad8\u5ea6",if:"\u6309\u4e0b\u62d6\u52a8\u4e0e\u5176\u5b83\u5143\u7d20\u8fde\u7ebf",jC:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u8c03\u6574\u70b9",id:"\u6309\u4e0b\u62d6\u52a8\u65cb\u8f6c\u5143\u7d20",hN:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u7559\u767d\u9ad8\u5ea6",ib:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u5143\u7d20\u5bbd\u5ea6",jB:"\u6309\u4e0b\u62d6\u52a8\u4fee\u6539\u5143\u7d20\u5bbd\u5ea6\u548c\u9ad8\u5ea6",eG:"\u9884\u89c8",nk:"\u6d4f\u89c8\u5668\u6253\u5370",nl:"\u8f6c\u6362\u5185\u5bb9\u4e3a\uff1a",d4:"\u6bcf\u9875\u6253\u5370",d8:"\u5076\u6570\u9875\u6253\u5370",d5:"\u9996\u9875\u6253\u5370",d6:"\u5c3e\u9875\u6253\u5370",nm:"\u8bf7\u4f20\u9012 id \u53c2\u6570\u4e14\u914d\u7f6e getContentUrl \u6216\u8005\u5728\u8bbe\u8ba1\u5668\u4e2d\u6253\u5f00\u8be5\u9875\u9762",d7:"\u5947\u6570\u9875\u6253\u5370",nn:"\u6b63\u5728\u51c6\u5907\u57fa\u7840\u9875\u9762...",no:"RDS\u6253\u5370",np:"RDS\u8bbe\u7f6e",nq:"\u7b2c\u4e09\u65b9\u9759\u9ed8\u6253\u5370",nr:"\u72ec\u7acb\u4f7f\u7528\u6253\u5370\u9875\u9762",jf:"\u9009\u4e2d\uff1a",f4:"\u900f\u660e\u5ea6\uff1a",jT:"\u81ea\u9002\u5e94",hS:"\u884c\u9ad8\u68c0\u6d4b\uff1a",lF:"\u81ea\u52a8\u64ad\u653e\uff1a",j5:"\u80cc\u666f\u56fe\u7247\uff1a",j7:"\u5e73\u94fa\u65b9\u5f0f\uff1a",gE:"\u80cc\u666f\u989c\u8272\uff1a",kh:"\u8fdb\u5ea6\u989c\u8272\uff1a",i8:"\u67f1\u5b50\u4e2a\u6570\uff1a",i9:"\u67f1\u5b50\u5bbd\u5ea6\uff1a",f9:"\u7f16\u7801\u683c\u5f0f\uff1a",ns:"\u6279\u91cf<{0}>\u5c5e\u6027\u8bbe\u7f6e",kE:"\u5145\u7535\u4e2d\uff1a",kG:"\u7535\u91cf\u989c\u8272\uff1a",kH:"\u95ea\u7535\u989c\u8272\uff1a",kF:"\u7535\u6c60\u989c\u8272\uff1a",kD:"\u7535\u91cf\uff1a",f8:"\u7ed1\u5b9a\u5b57\u6bb5\uff1a",g0:"X\u8f74\u7ed1\u5b9a\uff1a",gZ:"Y\u8f74\u7ed1\u5b9a\uff1a",gJ:"\u8fb9\u6846\u989c\u8272\uff1a",g3:"\u5706\u89d2\uff1a",d0:"\u865a\u7ebf",dZ:"\u70b9\u7ebf",d1:"\u53cc\u8fb9\u6846",dY:"\u5b9e\u7ebf",gI:"\u8fb9\u6846\u7c7b\u578b\uff1a",gH:"\u8fb9\u6846\u5bbd\u5ea6\uff1a",lS:"\u8fb9\u6846\uff1a",hJ:"\u5e73\u5747\u5206\u914d",hK:"\u4e0d\u5206\u914d",hI:"\u5360\u6bd4\u5206\u914d",hH:"\u5bbd\u5ea6\u5206\u914d\uff1a",md:"\u683c\u5b50\u80cc\u666f\uff1a",l4:"\u683c\u5b50\u8ba1\u7b97\uff1a",l3:"\u683c\u5b50\u5185\u5bb9\uff1a",hG:"\u6570\u636e\u68c0\u6d4b\uff1a",hl:"\u683c\u5b50\u64cd\u4f5c\uff1a",hh:"\u683c\u5b50\u5747\u5206\uff1a",ja:"\u683c\u5b50\u9ad8\uff1a",hj:"\u683c\u5b50\u5bbd\u9ad8\uff1a",gR:"\u56fe\u8868\u6807\u9898\uff1a",h_:"\u8868\u76d8\u989c\u8272\uff1a",ha:"\u6307\u9488\u989c\u8272\uff1a",hb:"\u523b\u5ea6\u989c\u8272\uff1a",kB:"\u95ed\u5408\uff1a",gX:"\u914d\u8272\uff1a",gT:"\u989c\u8272\uff1a",h0:"\u8fde\u7ebf\u7c7b\u578b\uff1a",l9:"\u5185\u5bb9\u4f4d\u7f6e\uff1a",iE:"\u81ea\u52a8",iG:"\u9690\u85cf",iF:"\u663e\u793a",iD:"\u5185\u5bb9\u6ea2\u51fa\uff1a",lH:"\u663e\u793a\u63a7\u5236\uff1a",lm:"\u89d2\uff1a",le:"\u67f1\u4f53\u989c\u8272\uff1a",hP:"\u6570\u636e\u6e90\uff1a",iT:"\u9ed8\u8ba4\u6587\u672c\uff1a",i0:"\u7981\u7528\u7f29\u653e\uff1a",lq:"\u65ad\u7f51\u989c\u8272\uff1a",lB:"\u81ea\u52a8\u5c3a\u5bf8\uff1a",ix:"\u8bc6\u522b\u540d\u79f0\uff1a",iA:"\u5782\u76f4",iz:"\u6c34\u5e73",iy:"\u6392\u5217\u65b9\u5f0f\uff1a",j3:"\u62d6\u52a8\u78c1\u5438\uff1a",kA:"\u7ed3\u675f\u89d2\u5ea6\uff1a",h5:"\u7ed3\u675f\u7bad\u5934\uff1a",kt:"\u7ed3\u675f\u8fb9\u6846\uff1a",iJ:"\u6807\u9898\u80cc\u666f\uff1a",iL:"\u5de6\u6807\u9898\u5bbd\uff1a",iK:"\u9876\u6807\u9898\u9ad8\uff1a",iI:"Excel\u6807\u9898\uff1a",iQ:"\u6269\u5c55\u6837\u5f0f\uff1a",iP:"\u6269\u5c55\u6807\u8bb0\uff1a",g8:"\u586b\u5145\u989c\u8272\uff1a",ga:"\u586b\u5145\u65b9\u5f0f\uff1a",gG:"\u6392\u5217\uff1a",gd:"\u5b57\u4f53\uff1a",ge:"\u5b57\u53f7\uff1a",gi:"\u6587\u5b57\u6837\u5f0f\uff1a",hA:"\u6700\u540e\u663e\u5c3e\uff1a",gF:"\u6587\u5b57\u989c\u8272\uff1a",he:"\u8ba1\u7b97\u51fd\u6570\uff1a",gz:"\u663e\u793a\u683c\u5f0f\uff1a",lb:"\u524d\u90e8\u989c\u8272\uff1a",jU:"\u62c9\u4f38\u94fa\u6ee1",k1:"\u7f3a\u53e3\u65b9\u5411\uff1a",k6:"\u7f3a\u53e3\u4f4d\u7f6e\uff1a",k7:"\u7f3a\u53e3\u5927\u5c0f\uff1a",gr:"\u6c34\u5e73\u95f4\u9694\uff1a",hz:"\u521d\u59cb\u663e\u5934\uff1a",f3:"\u9ad8\uff1a",gl:"\u5e2e\u52a9\uff1a",hF:"\u9690\u85cf\u5c3e\uff1a",hB:"\u9690\u85cf\u5934\uff1a",hC:"\u9690\u85cf\u6807\u9898\uff1a",hR:"\u9690\u85cf\u8868\u5c3e\uff1a",hQ:"\u9690\u85cf\u8868\u5934\uff1a",hE:"\u9690\u85cf\u5408\u8ba1\uff1a",hf:"\u9ad8\u4eae\u989c\u8272\uff1a",kc:"\u56fe\u7247\u9ad8\uff1a",jl:"\u8fd8\u539f\u5c3a\u5bf8\uff1a",kb:"\u56fe\u7247\u5bbd\uff1a",jk:"\u56fe\u7247\uff1a",iB:"\u9009\u9879\u95f4\u8ddd\uff1a",gC:"\u5b57\u95f4\u8ddd\uff1a",gc:"\u7ebf\u6761\u989c\u8272\uff1a",hW:"\u865a\u7ebf\u95f4\u9694\uff1a",gD:"\u884c\u9ad8\uff1a",kX:"\u659c\u89d2",kW:"\u5c16\u89d2",kY:"\u5706\u89d2",kV:"\u62d0\u89d2\uff1a",hX:"\u6587\u5b57\uff1a",jq:"\u7ebf\u7c7b\u578b\uff1a",gf:"\u7ebf\u6761\u5bbd\uff1a",gn:"\u9501\u5b9a\u7f16\u8f91\uff1a",jp:"\u957f\uff1a",lG:"\u5faa\u73af\u64ad\u653e\uff1a",jz:"\u53cc\u51fb\u7f29\u653e\uff1a",jy:"\u80fd\u5426\u62d6\u52a8\uff1a",jw:"\u7eac\u5ea6\uff1a",jv:"\u7ecf\u5ea6\uff1a",jx:"\u663e\u793a\u7f29\u653e\uff1a",ju:"\u7f29\u653e\u7ea7\u522b\uff1a",iR:"\u591a\u9009\uff1a",iV:"\u591a\u884c\u6a21\u5f0f\uff1a",hL:"\u591a\u680f\u6253\u5370\uff1a",lv:"\u9759\u97f3\u989c\u8272\uff1a",ls:"\u9759\u97f3\uff1a",j8:"\u4e0d\u5e73\u94fa",gk:"\u5b98\u65b9\u7f51\u7ad9\uff1a",kd:"\u6c34\u5e73\u504f\u79fb\uff1a",ke:"\u5782\u76f4\u504f\u79fb\uff1a",nt:"\u64cd\u4f5c\uff1a",gV:"\u914d\u7f6e\uff1a",mb:"\u4e0b\u8fb9\u8ddd\uff1a",mc:"\u5de6\u8fb9\u8ddd\uff1a",ma:"\u53f3\u8fb9\u8ddd\uff1a",m_:"\u4e0a\u8fb9\u8ddd\uff1a",iZ:"\u7f51\u683c\uff1a",jP:"\u5e38\u7528\u7eb8\u5f20\uff1a",jX:"\u767e\u5206\u6bd4",jW:"\u7cbe\u786e\u503c",jS:"\u5168\u5c4f\u663e\u793a\uff1a",j4:"\u9875\u9762\u6807\u9898\uff1a",jV:"\u5706\u89d2\u5355\u4f4d\uff1a",jG:"\u5355\u4f4d\uff1a",jO:"\u7f16\u8f91\u533a\uff1a",kv:"\u7b7e\u5b57\u989c\u8272\uff1a",iU:"\u5360\u4f4d\u6587\u672c\uff1a",j6:"\u5957\u6253\uff1a",j2:"\u6253\u5370\u4efd\u6570\uff1a",f6:"\u6253\u5370\u8bbe\u7f6e\uff1a",gu:"\u6697\u8272\uff1a",gv:"\u4eae\u8272\uff1a",gw:"\u7ea0\u9519\u7ea7\u522b\uff1a",kM:"\u534a\u5f84\uff1a",nu:"\u53c2\u8003\uff1a",nv:"PNG\u56fe\u7247",nw:"SVG\u77e2\u91cf\u56fe",g_:"\u8f93\u51fa\u683c\u5f0f\uff1a",j9:"\u6a2a\u5411\u5e73\u94fa",k_:"\u5782\u76f4\u5e73\u94fa",ka:"\u53cc\u5411\u5e73\u94fa",kT:"\u53cd\u8f6c\uff1a",gB:"\u5bcc\u6587\u672c\uff1a",jm:"\u5782\u76f4\u955c\u50cf\uff1a",jn:"\u6c34\u5e73\u955c\u50cf\uff1a",f5:"\u65cb\u8f6c\u89d2\u5ea6\uff1a",lh:"\u6c34\u5e73\u5706\u89d2\uff1a",li:"\u5782\u76f4\u5706\u89d2\uff1a",kx:"\u6c34\u5e73\u534a\u5f84\uff1a",ky:"\u5782\u76f4\u534a\u5f84\uff1a",jR:"\u5206\u8fa8\u7387\uff1a",hD:"\u6bcf\u9875\u6807\u9898\uff1a",g2:"\u663e\u793a\u8fdb\u5ea6\uff1a",gb:"\u663e\u793a\u6587\u5b57\uff1a",lc:"\u4fa7\u90e8\u989c\u8272\uff1a",lp:"\u4fe1\u53f7\u5f3a\u5ea6\uff1a",lu:"\u97f3\u91cf\u989c\u8272\uff1a",kQ:"\u901f\u5ea6\uff1a",kp:"\u81ea\u52a8\u5206\u9875\uff1a",kk:"\u661f\u661f\u4e2a\u6570\uff1a",kl:"\u661f\u661f\u5927\u5c0f\uff1a",kz:"\u5f00\u59cb\u89d2\u5ea6\uff1a",h4:"\u5f00\u59cb\u7bad\u5934\uff1a",ks:"\u5f00\u59cb\u8fb9\u6846\uff1a",hw:"\u5076\u6570\u884c\uff1a",gO:"\u5185\u5bb9\u5b57\u53f7\uff1a",hx:"\u5947\u6570\u884c\uff1a",hv:"\u5185\u5bb9\u884c\u9ad8\uff1a",ht:"\u5185\u5bb9\u5bf9\u9f50\uff1a",d2:"\u5408\u5e76",hi:"\u8fb9\u6846\u884c\u4e3a\uff1a",d3:"\u5206\u79bb",hk:"\u8fb9\u6846\u663e\u793a\uff1a",hq:"\u5217\u5bbd\uff1a",hr:"\u7559\u767d\uff1a",gM:"\u8868\u5934\u5b57\u53f7\uff1a",gN:"\u8868\u5934\u80cc\u666f\uff1a",hu:"\u8868\u5934\u884c\u9ad8\uff1a",hs:"\u5feb\u6377\u76ae\u80a4\uff1a",gj:"\u6587\u5b57\u5bf9\u9f50\uff1a",f7:"\u5185\u5bb9\uff1a",gh:"\u6587\u5b57\u8ddd\u79bb\uff1a",h6:"\u7ebf\u4e0a\u4f4d\u7f6e\uff1a",gg:"\u6587\u5b57\u4f4d\u7f6e\uff1a",kr:"\u6587\u5b57\u89d2\u5ea6\uff1a",iC:"\u5185\u5bb9\u95f4\u8ddd\uff1a",me:"\u6587\u672c\uff1a",gS:"\u6807\u9898\u5bf9\u9f50\uff1a",gm:"\u5143\u7d20\u540d\u79f0\uff1a",la:"\u9876\u90e8\u989c\u8272\uff1a",nx:"\u7c7b\u578b\uff1a",jE:"\u9ed1\u767d\uff1a",gs:"\u5782\u76f4\u95f4\u9694\uff1a",hd:"\u503c\uff1a",lE:"\u6d77\u62a5\u5730\u5740\uff1a",lD:"\u89c6\u9891\u5730\u5740\uff1a",lt:"\u97f3\u91cf\uff1a",jj:"\u7f51\u7edc\u56fe\u7247\uff1a",gP:"\u5f00\u59cb\u65e5\u671f\uff1a",f2:"\u5bbd\uff1a",lo:"\u8054\u63a5\uff1a",kP:"\u65cb\u8f6c\uff1a",i2:"X\u8f74\u8303\u56f4\uff1a",i1:"X\u8f74\u6807\u9898\uff1a",i5:"X\u63d0\u793a\u7ebf\uff1a",h7:"\u6c34\u5e73\u504f\u79fb\uff1a",f0:"X\u5750\u6807\uff1a",i4:"Y\u8f74\u8303\u56f4\uff1a",i3:"Y\u8f74\u6807\u9898\uff1a",i6:"Y\u63d0\u793a\u7ebf\uff1a",h8:"\u5782\u76f4\u504f\u79fb\uff1a",f1:"Y\u5750\u6807\uff1a",ny:"H\u7ea7\u522b",nz:"L\u7ea7\u522b",nA:"M\u7ea7\u522b",nB:"Q\u7ea7\u522b",d9:"\u8bfb\u53d6\u5185\u5bb9\u5931\u8d25\uff1a",fM:"\u91cd\u505a(Ctrl+Y,Ctrl+Shift+Z)",mH:"\u6e05\u9664\u989c\u8272",nC:"\u70b9\u51fb\u5220\u9664\u5143\u7d20",nD:"\u70b9\u51fb\u5220\u9664\u5386\u53f2\u8bb0\u5f55",mW:"\u6e05\u9664\u56fe\u7247",nE:"\u6e05\u9664\u5173\u952e\u5b57",ec:"\u7f16\u8f91\u533a\u6570\u636e",fC:"\u4fdd\u5b58\u5931\u8d25",fD:"\u4fdd\u5b58\u6210\u529f~",eV:"\u4fdd\u5b58",fE:"\u8bf7\u9009\u62e9\u6570\u636e\u6e90",eX:"\u5feb\u6377\u952e\uff1a",fF:`\u884c\u5217 © 2018-${(new Date).getFullYear()} \u6388\u6743\u548c\u6e90\u7801\u8bf7\u8054\u7cfb\u4f5c\u8005\u5fae\u4fe1\uff1aqq84685009`,ea:"\u901a\u7528\u8bbe\u8ba1\u5668",nF:"\u7cfb\u7edf\u6b63\u5fd9...",eP:"\u6b63\u5728\u83b7\u53d6\u5185\u5bb9...",eI:"\u6a21\u677f",fL:"\u64a4\u9500(Ctrl+Z)",jI:"\u5398\u7c73(cm)",jL:"\u82f1\u5bf8(in)",jH:"\u6beb\u7c73(mm)",jM:"\u6d3e\u5361(pc)",jK:"\u78c5(pt)",jJ:"\u50cf\u7d20(px)",jN:"1/4\u6beb\u7c73(q)",eK:"Ctrl+\u52a0\u53f7",eJ:"\u653e\u5927",eM:"Ctrl+\u51cf\u53f7",eL:"\u7f29\u5c0f",eO:"Ctrl+\u6570\u5b570",eN:"\u8fd8\u539f"}})),define("64/70",["65"],((e,t,r)=>{let i=e("65"),{Service:d,toUrl:o,config:s,guid:l,State:a}=i,n=(e,t)=>{let r,i;return e.success?i=e.data:r=e.message||`\u63a5\u53e3${t}\u9519\u8bef`,{_gO:r,_gP:i}},h=d.extend(((e,t)=>{a.fire("e_",{_gQ:1});let r=e.get("_gR")||"GET",i=e.get("_fO"),d=e.get("_gq"),l=e.get("url"),h={Accept:"application/json","Content-type":"application/x-www-form-urlencoded;charset=utf-8"},p={method:r,credentials:"include"};e.get("_gS")||(p.headers=h);let c=s("version");i||(i={}),i.v=c,i&&(l=o(l,i)),d&&(p.body=d),((e,t)=>fetch(e,t).then((e=>{if(e.ok)return e.json();throw Error(e.statusText||"Network error")})))(l,p).then((r=>{a.fire("e_");let{_gO:i,_gP:d}=n(r,l);i?t({message:i}):(e.set({data:d}),t())})).catch((e=>{a.fire("e_"),t({message:e.message})}))}));h.add([{name:"_gT",url:s("getImageUrl")},{name:"_gA",url:s("getFieldUrl")},{name:"_fN",url:s("getTemplateUrl")},{name:"_go",url:s("saveContentUrl"),_gR:"post"},{name:"_gE",url:s("getContentUrl")},{name:"_gF",url:s("presetUrl")},{name:"_gU"},{name:"_gV",_gR:"post"}]),h._gW=n,r.exports=h})),define("64/68",["65","./67"],((e,t,r)=>{let i=e("65"),d=e("./67"),{State:o,node:s,config:l}=i,{sqrt:a,pow:n,atan:h,PI:p,sin:c,cos:f,min:g,max:u,atan2:x,tan:m,abs:y}=Math,w=p/180,_={tl:2,tm:2,tr:3,mr:3,br:0,bm:0,bl:1,ml:1},b=()=>s("_rd_sc").getBoundingClientRect();r.exports={dL:b,dP({x:e,y:t}){let r=b();return{x:e=e-r.x-scrollX,y:t=t-r.y-scrollY}},dR(e,{x:t,y:r,f:i}){let d=e;if(i)for(;d.parentNode&&"hod"!=d.dataset.as;)d=d.parentNode;let o=d.getBoundingClientRect();return{x:t=t-o.x-scrollX,y:r=r-o.y-scrollY}},dS({x:e,y:t}){let r=b();return{x:e=e+r.x+scrollX,y:t=t+r.y+scrollY}},dO(e){let t=e/o.get("dO");return d.dN(t)},dT:e=>e*o.get("dO"),dM({x:e,y:t,width:r,height:i,rotate:d}){d||(d=0);let o=a(n(r,2)+n(i,2))/2,s=r?180*h(i/r)/p:90,l=180-d-s,x=s-d,m=90-d,y=r/2,_=i/2,b=e+y,v=t+_,k={x:b+o*f(l*w),y:v-o*c(l*w)},j={x:b+o*f(x*w),y:v-o*c(x*w)},L={x:b-o*f(l*w),y:v+o*c(l*w)},Y={x:b-o*f(x*w),y:v+o*c(x*w)},M={x:b+_*f(m*w),y:v-_*c(m*w)},S={x:b+y*f(d*w),y:v+y*c(d*w)},P={x:b-_*c(d*w),y:v+_*f(d*w)},O={x:b-y*f(d*w),y:v-y*c(d*w)},R=g(k.x,j.x,L.x,Y.x),z=u(k.x,j.x,L.x,Y.x),C=g(k.y,j.y,L.y,Y.y),H=u(k.y,j.y,L.y,Y.y);return{_eo:[k,j,L,Y],_gX:[M,S,P,O],_es:z-R,_et:H-C,_eq:R,_fW:z,_er:C,_fX:H,_eH:b,_eI:v}},dU:(e,t)=>(360+180*x(e.y-t.y,e.x-t.x)/p)%360,dV:e=>_[e],dW(e,t,r){let i=a(n(e.x-t.x,2)+n(e.y-t.y,2));return{x:t.x+i*f(r*w),y:t.y+i*c(r*w)}},dX(e,t,r){let i=m(r*w);return{k:i,b:t-e*i}},dY(e,t,r,i){let d=(i-t)/(r-e);return{k:d,b:t-e*d}},dZ:(e,t)=>a(n(e.x-t.x,2)+n(e.y-t.y,2)),dQ(e,t){let[r,i]=e,[d,o]=t,s=((i.x-r.x)*(d.y-r.y)-(i.y-r.y)*(d.x-r.x))*((i.x-r.x)*(o.y-r.y)-(i.y-r.y)*(o.x-r.x)),l=((o.x-d.x)*(r.y-d.y)-(o.y-d.y)*(r.x-d.x))*((o.x-d.x)*(i.y-d.y)-(o.y-d.y)*(i.x-d.x));return s<0&&l<0},dN(e,t,r){let i=e.width/2,d=e.height/2,o=t.width/2,s=t.height/2,l=e.x+i,a=e.y+d,n=t.x+o,h=t.y+s,p=r?-1:1;return y(n-l)<=i+p*o&&y(h-a)<=d+p*s},d0({rows:e},t,r,i){for(let i of e){for(let e of r)null!=i[e]&&(i[e]*=t);for(let e of i.cols)for(let i of r)null!=e[i]&&(e[i]*=t)}i&&(i.rows=e)},d1(e,t,r){let i=[];for(let e of t){let t={...e,cols:[]};for(let e of r)null!=t[e]&&(t[e]=this.dO(t[e]));for(let i of e.cols){let e={...i};for(let t of r)null!=e[t]&&(e[t]=this.dO(e[t]));t.cols.push(e)}i.push(t)}e.rows=i},d2(e,t,r){for(let i of e){for(let e of r)null!=i[e]&&(i[e]=d.eL(i[e],t));for(let e of i.cols)for(let i of r)null!=e[i]&&(e[i]=d.eL(e[i],t))}}}})),define("64/67",["65","./6m"],((e,t,r)=>{let i=e("65"),d=e("./6m"),{State:o}=i,{round:s,pow:l,abs:a}=Math,n=document.body,h=1e-7,p={px:0,mm:2,cm:3,pt:2,in:3,pc:3,q:1},c={px:{dL:1,dM:1}},f=e=>{if(!c[e]){let t=document.createElement("div"),r=1e3;t.style.cssText=`width:${r}${e};position:absolute;left:-${r}${e};top:-10px`,n.appendChild(t);let i=t.clientWidth;n.removeChild(t);let d=r/i,o=i/r;c[e]={dL:d,dM:o}}},g=(e,t)=>(t=t||o.get("dP"),f(t),e*c[t].dM);r.exports={d0:50,dT:900,d1:1,d2:1,d3:1,d4:1,d5:1,dZ:1,d6:1,d7:[80,380,80,240],d8:793,d9:1122,e_:6e3,ea:6e3,eb:20,ec:5,ed:1,ee:d.dM,ef:d.dN|d.dO,dX:0,eg:200,dP:20,dO:500,dL:1,eh:4,ei:.5,ej:.5,ek:0,el:1e3,em:1,en:1,eo:0,dS:1,dR:10,ep:1,eq:5,er:8,es:45,et:4,eu:1,ev:1,dV:10,ew:3,ex:200,ey:0,ez:1,eA:1,eB:[{value:"SimSun",text:"dR"},{value:"SimHei",text:"dS"},{value:"Microsoft YaHei",text:"dT"},{value:"Microsoft JhengHei",text:"dU"},{value:"KaiTi",text:"dV"},{value:"LiSu",text:"dW"},{value:"YouYuan",text:"dX"},{value:"Arial",text:"Arial"},{value:"Times New Roman",text:"Times New Roman"},{value:"Tahoma",text:"Tahoma"},{value:"webdings",text:"Webdings"},{value:"Arial Black",text:"Arial Black"},{value:"Arial Narrow",text:"Arial Narrow"},{value:"Arial Unicode MS",text:"Arial Unicode MS"},{value:"monospace",text:"Monospace"},{value:"fantasy",text:"Fantasy"},{value:"cursive",text:"Cursive"}],eC:[{text:"dY",value:"solid"},{text:"dZ",value:"dotted"},{text:"d0",value:"dashed"},{text:"d1",value:"double"}],eD:[{text:"d2",value:"collapse"},{text:"d3",value:"separate"}],eE:[{text:"d4",value:"each"},{text:"d5",value:"first"},{text:"d6",value:"last"},{text:"d7",value:"odd"},{text:"d8",value:"even"}],eF:"mm",eG:1,dW:e=>(e=e||o.get("dP"),f(e),c[e].dL),eH:e=>(e=e||o.get("dP"),p[e]),dQ:{px:{_dU:0,.5:{space:200,step:10},1:{space:100,step:10},1.5:{space:70,step:10.5},2:{space:50,step:10},2.5:{space:40,step:10},3:{space:35,step:10.5},3.5:{space:28,step:9.8},4:{space:20,step:8}},mm:{_dU:0,.5:{space:151.2,step:7.56},1:{space:75.6,step:7.56},1.5:{space:49.14,step:7.371},2:{space:37.8,step:7.56},2.5:{space:30.24,step:7.56},3:{space:26.46,step:7.938},3.5:{space:21.168,step:7.4088},4:{space:15.12,step:6.048}},in:{_dU:2,.5:{space:192,step:9.6},1:{space:96,step:9.6},1.5:{space:67.2,step:10.08},2:{space:48,step:9.6},2.5:{space:38.4,step:9.6},3:{space:33.6,step:10.08},3.5:{space:26.88,step:9.408},4:{space:19.2,step:7.68}},pt:{_dU:0,.5:{space:213.28,step:10.664},1:{space:106.64,step:10.664},1.5:{space:74.648,step:11.1972},2:{space:53.32,step:10.664},2.5:{space:42.656,step:10.664},3:{space:37.324,step:11.1972},3.5:{space:29.8592,step:10.45072},4:{space:21.328,step:8.5312}},cm:{_dU:1,.5:{space:151.18,step:7.559},1:{space:75.59,step:7.559},1.5:{space:52.913,step:7.93695},2:{space:37.795,step:7.559},2.5:{space:30.236,step:7.559},3:{space:26.4565,step:7.93695},3.5:{space:21.1652,step:7.40782},4:{space:15.118,step:6.0472}},pc:{_dU:1,.5:{space:160,step:8},1:{space:80,step:8},1.5:{space:54.4,step:8.16},2:{space:40,step:8},2.5:{space:32,step:8},3:{space:27.2,step:8.16},3.5:{space:22.4,step:7.84},4:{space:16,step:6.4}},q:{_dU:0,.5:{space:151.2,step:7.56},1:{space:75.6,step:7.56},1.5:{space:51.03,step:7.6545},2:{space:37.8,step:7.56},2.5:{space:30.24,step:7.56},3:{space:24.57,step:7.371},3.5:{space:18.9,step:6.615},4:{space:15.12,step:6.048}}},dN(e,t,r){r=r||o.get("dP"),null==t&&(t=p[r]);let i=l(10,t);return s(e*=i)/i},dM:(e,t)=>(t=t||o.get("dP"),f(t),e*=c[t].dL),eI:h,eJ:(e,t)=>ea(e-t)(e=e||o.get("dP"),1/l(10,p[e])))(e));return t>.5&&(t=.5),t},eL(e,t,r){r=r||o.get("dP"),f(r),f(t);let i=c[r],d=c[t];return e*i.dM*d.dL}}})),define("64/6m",[],((e,t,r)=>{r.exports={dL:1,dP:2,dW:4,dO:1,dX:2,dN:4,dR:1,dM:2,dY:1,dU:2,dT:4,dV:8,dZ:16,d0:32,d1:64,dQ:128,d2:256,dS:512,d3:1024,d4:2048,d5:1,d6:2,d7:3,d8:4,d9:5,e_:6,ea:7,eb:8,ec:9,ed:10,ee:11,ef:12,eg:13,eh:14,ei:15,ej:16,ek:17,el:18,em:"color/series",en:"table/content",eo:"table/operate",ep:"table/border",eq:"table/size",er:"table/share",es:"box/style",et:"box/h-operate",eu:"box/v-operate",ev:"box/h-size",ew:"box/v-size",ex:"table/style",ey:"column/index",ez:"6u/items",eA:"ctable/operate",eB:"ctable/content",eC:"dtable/operate",eD:"dtable/content",eE:"ftable/operate",eF:"fx/index",eG:"fx/help",eH:"svg/kp",eI:"svg/mod",eJ:"tab/index",eK:"tag/index",eL:"unicolor/index",eM:"rule/index"}})),define("6r/barcode/index",["65","../../64/67","../../6h/barcode"],((e,t,r)=>{let i={class:"rd-e1 rd-eH rd-eK rd-em"},d=e("65"),o=e("../../64/67"),s=e("../../6h/barcode"),{View:l,mark:a,task:n,isArray:h}=d;r.exports=l.extend({tmpl:(e,t,r)=>{let d,o,s,l=[],{error:a,text:n,props:h,unit:p,render:c}=e;return(a||n)&&(s=[],a?(o=[t(0,a)],s.push(t("div",i,o))):"svg"==c?s.push(t("svg",{id:"_rd_"+r+"_bar",class:"rd-el rd-em rd-en rd-ev"})):(d="rd-e_ rd-en rd-eo","full"==h.fill&&(d+=" rd-el rd-em"),s.push(t("img",{id:"_rd_"+r+"_bar",class:d},1))),d="rd-et rd-fH rd-fY","auto"==h.fill&&(d+=" rd-eH rd-eK rd-e1"),l.push(t("div",{style:"left:"+h.x+p+";top:"+h.y+p+";height:"+h.height+p+";opacity:"+h.alpha+";width:"+h.width+p+";transform:rotate("+h.rotate+"deg)",class:d},s))),t(r,0,l)},assign(e){this.set(e);let{props:t}=e,{bind:r,text:i}=t;if(r.id){let e=r.fields[0];if(r._tip)i=r._tip;else if(r._data){let t=r._data;h(t)&&(t=t[0]),i=t[e.id]}else i=`[bind:${e.id}]`}this.set({text:i})},async render(){let e=a(this,"_dM"),{linewidth:t,height:r,format:i,showText:d,styleBold:l,styleItalic:h,color:p,textPosition:c,textAlign:f,font:g,textMargin:u,render:x,fontSize:m}=this.get("props");await this.digest({error:null,render:x});try{if(await s._h7(),e()){let s=this.get("text");s&&(e=a(this,"_h8"),n((()=>{if(e()){let e="";l&&(e="bold"),h&&(l&&(e+=" "),e+="italic"),m=o.dY(m),u=o.dY(u),t=o.dY(t),r=o.dY(r),JsBarcode(`#_rd_${this.id}_bar`,s,{height:r,lineColor:p,width:t,textPosition:c,textAlign:f,format:i,fontSize:m,fontOptions:e,displayValue:d,font:g,textMargin:u})}})))}}catch(t){e()&&this.digest({error:t})}}})})),define("6r/batch-barcode/index",["65","../../64/67","../../6h/barcode"],((e,t,r)=>{let i={class:"rd-e1 rd-eH rd-eK rd-em"},d=e("65"),o=e("../../64/67"),s=e("../../6h/barcode"),{View:l,mark:a,task:n,isArray:h}=d;r.exports=l.extend({tmpl:(e,t,r)=>{let d,o,s,l=[],{error:a,text:n,props:h,unit:p,render:c}=e;return(a||n)&&(s=[],a?(o=[t(0,a)],s.push(t("div",i,o))):"svg"==c?s.push(t("svg",{id:"_rd_"+r+"_bar",class:"rd-el rd-em rd-en rd-ev"})):(d="rd-e_ rd-en rd-eo","full"==h.fill&&(d+=" rd-el rd-em"),s.push(t("img",{id:"_rd_"+r+"_bar",class:d},1))),d="rd-et rd-fH rd-fY","auto"==h.fill&&(d+=" rd-eH rd-eK rd-e1"),l.push(t("div",{style:"left:"+h.x+p+";top:"+h.y+p+";height:"+h.height+p+";opacity:"+h.alpha+";width:"+h.width+p+";transform:rotate("+h.rotate+"deg)",class:d},s))),t(r,0,l)},assign(e){this.set(e);let{props:t}=e,{bind:r,text:i}=t;if(r.id){let e=r.fields[0];if(r._tip)i=r._tip;else if(r._data){let t=r._data;h(t)&&(t=t[0]),i=t[e.id]}else i=`[bind:${e.id}]`}this.set({text:i})},async render(){let e=a(this,"_dM"),{linewidth:t,height:r,format:i,showText:d,styleBold:l,styleItalic:h,color:p,textPosition:c,textAlign:f,font:g,textMargin:u,fontSize:x,render:m}=this.get("props");await this.digest({error:null,render:m});try{if(await s._h7(),e()){let s=this.get("text");s&&(e=a(this,"_h8"),n((()=>{if(e()){let e="";l&&(e="bold"),h&&(l&&(e+=" "),e+="italic"),x=o.dY(x),u=o.dY(u),t=o.dY(t),r=o.dY(r),JsBarcode(`#_rd_${this.id}_bar`,s,{height:r,lineColor:p,width:t,textPosition:c,textAlign:f,format:i,fontOptions:e,fontSize:x,displayValue:d,font:g,textMargin:u})}})))}}catch(t){e()&&this.digest({error:t})}}})})),define("6r/base/index",["65"],((e,t,r)=>{let i=e("65"),{View:d}=i;r.exports=d.extend({tmpl:(e,t,r)=>{let i,{props:d,unit:o}=e;return i=[t("div",{class:"rd-et rd-fY",style:"left:"+d.x+o+";top:"+d.y+o+";width:"+d.width+o+";height:"+d.height+o+";opacity:"+d.alpha+";transform:rotate("+d.rotate+"deg)"})],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/batch-qrcode/index",["65","../../6h/qrcode"],((e,t,r)=>{let i={class:"rd-e1 rd-eH rd-eK rd-em"},d=e("65"),o=e("../../6h/qrcode"),{View:s,mark:l,node:a,task:n,isArray:h}=d;r.exports=s.extend({tmpl:(e,t,r)=>{let d,o,s=[],{error:l,text:a,props:n,unit:h}=e;return(l||a)&&(o=[],l&&(d=[t(0,l)],o.push(t("div",i,d))),o.push(t("div",{id:"_rd_"+r+"_qr"})),s.push(t("div",{class:"rd-et rd-fH rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";height:"+n.height+h+";opacity:"+n.alpha+";width:"+n.width+h+";transform:rotate("+n.rotate+"deg)"},o))),t(r,0,s)},assign(e){this.set(e);let{props:t}=e,{bind:r,text:i}=t;if(r.id){let e=r.fields[0];if(r._tip)i=r._tip;else if(r._data){let t=r._data;h(t)&&(t=t[0]),i=t[e.id]}else i=`[\u7ed1\u5b9a:${e.name}]`}this.set({text:i})},async render(){let e=l(this,"_dM");await this.digest({error:null});try{if(await o._h7(),e()){let t=this.get("text")+"",r=this.get("props");if(t&&(t!=this._ic||r.colorDark!=this._id||r.colorLight!=this._ie||r.correctLevel!=this._if)){let i=this._ig;if(!i){let e=a(`_rd_${this.id}_qr`);i=new QRCode(e),this._ig=i}let d=l(this,"_ih");n((()=>{if(e()&&d()){i._htOption.colorDark=this._id=r.colorDark,i._htOption.colorLight=this._ie=r.colorLight,i._htOption.correctLevel=this._if=QRCode.CorrectLevel[r.correctLevel],i.makeCode(this._ic=t),this.root.querySelector("img").classList.add("rd-e_","rd-el","rd-en")}}))}}}catch(t){e()&&this.digest({error:t})}}})})),define("6r/calendar/index",["65","../../6c/6f/index"],((e,t,r)=>{let i={class:"rd-el rd-em rd-eq rd-fa"},d=e("65"),o=e("../../6c/6f/index"),{View:s}=d,l="\u65e5\u4e00\u4e8c\u4e09\u56db\u4e94\u516d".split("");r.exports=s.extend({tmpl:(e,t,r)=>{let d,o,s,l,a,n,h,{props:p,unit:c,weekText:f,weeks:g}=e;a=[],s=[];for(let e=null==f?void 0:f.length,r=0;r{o._d3(e)}))},assign(e){this.set(e);let t=e.props.weekStart,r=l.slice(t);t>0&&(r=r.concat(l.slice(0,t))),this.set({weekText:r,weekStart:t})},render(){let e=new Date,t=e.getFullYear(),r=e.getMonth()+1,i=e.getDate();e.setHours(0,0,0,0);let d,o=(7-this.get("weekStart")+new Date(t,r-1,1).getDay())%7,s=[],l=[],a=((e,t)=>32-new Date(e,t-1,32).getDate())(t,r);for(d=1;d<=o;d++)l.push({otherMonth:!0});for(d=1;d<=a;d++)l.push({year:t,day:d,month:r}),(d+o)%7==0&&(s.push(l),l=[]);let n=l.length;if(n){let e=7;for(d=n;d{let i=e("65"),d=e("../../6h/format"),{View:o,isArray:s}=i,{min:l}=Math;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,bw:a,safeHTML:n,text:h,textReturn:p}=e;return o=[t(0,s.richtext?n(h):p(h),1)],d="left:"+s.x+l+";top:"+s.y+l+";color:"+s.forecolor+";",s.background&&(d+="background:"+s.background+";"),d+="font-size:"+s.fontsize+l+";min-height:"+s.height+l+";letter-spacing:"+s.letterspacing+l+";opacity:"+s.alpha+";line-height:"+s.lineheight+";",s.styleBold&&(d+="font-weight:bold;"),s.styleItalic&&(d+="font-style:italic;"),(s.styleUnderline||s.styleStrike||s.styleOverline)&&(d+="text-decoration:",s.styleStrike?d+="line-through":s.styleOverline?d+="overline":d+="underline",d+=";"),d+="align-items:"+s.vpos+";justify-content:"+s.hpos+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg);font-family:"+s.fontfamily+";",a&&(d+="border:"+a+l+" "+s.bordertype+" "+s.bordercolor+";"),s.autoReturn?d+="word-break:break-all":d+="max-height:"+s.height+"px",i=[t("div",{class:"rd-eH rd-et rd-fH rd-fY",style:d},o)],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{text:r,bind:i,format:o,borderwidth:a,width:n,height:h}=t;if(i.id){let e=i.fields[0];if(i._tip)r=i._tip;else if(i._data){let t=i._data;s(t)&&(t=t[0]),r=t[e.id],r=d._ii(o,r,t)}else r=`[\u7ed1\u5b9a:${e.name}]`}let p=l(n,h)/2;a>p&&(a=p),this.set({bw:a,text:r})},render(){this.digest()}})})),define("6r/circle/index",["65"],((e,t,r)=>{let i=e("65"),{min:d}=Math;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,bw:l}=e;return d="border-radius:50%;left:"+o.x+s+";top:"+o.y+s+";",l&&(d+="border:"+l+s+" "+o.bordertype+" "+o.bordercolor+";"),o.fillcolor&&(d+="background:"+o.fillcolor+";"),d+="height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg)",i=[t("div",{class:"rd-et rd-fY",style:d})],t(r,0,i)},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:o}=t,s=d(i,o)/2;r>s&&(r=s),this.set(e),this.set({bw:r})},render(){this.digest()}})})),define("6r/clock/index",["65","../../6c/6f/index"],((e,t,r)=>{let i,d=e("65"),o=e("../../6c/6f/index"),{View:s,applyStyle:l,mark:a,node:n,State:h}=d;l("rd-e9",".rd-hu{border-radius:50%}.rd-hv{height:2px;border-radius:1px;width:calc(50% + 3px);top:calc(50% - 1px);left:calc(50% - 15px);transform-origin:15px center}.rd-hw{height:4px;border-radius:2px;width:calc(50% - 15px);top:calc(50% - 2px);left:calc(50% - 12px);transform-origin:12px center}.rd-hx{height:6px;border-radius:3px;width:calc(50% - 25px);top:calc(50% - 3px);left:calc(50% - 10px);transform-origin:10px center}.rd-hy{height:6px;background:#fff6;box-shadow:0 0 0 2px #0006;border-radius:50%;width:6px;top:calc(50% - 3px);left:calc(50% - 3px)}.rd-hA,.rd-hB,.rd-hC,.rd-hD,.rd-hE,.rd-hz{left:4px;top:calc(50% - 2px);height:4px;width:calc(100% - 8px);border-left:4px solid;border-right:4px solid}.rd-hA{transform:rotate(30deg)}.rd-hB{transform:rotate(60deg)}.rd-hC{transform:rotate(90deg)}.rd-hD{transform:rotate(120deg)}.rd-hE{transform:rotate(150deg)}"),r.exports=s.extend({tmpl:(e,t,r)=>{let d,o,s,{props:l,unit:a,scale:n}=e;return s=[t("div",{class:"rd-et rd-hz",style:"border-color:"+l.markColor}),t("div",{class:"rd-et rd-hA",style:"border-color:"+l.markColor}),t("div",{class:"rd-et rd-hB",style:"border-color:"+l.markColor}),t("div",{class:"rd-et rd-hC",style:"border-color:"+l.markColor}),t("div",{class:"rd-et rd-hD",style:"border-color:"+l.markColor}),t("div",{class:"rd-et rd-hE",style:"border-color:"+l.markColor}),t("div",{class:"rd-et rd-hx",id:"_rd_h_"+r,style:"background-color:"+l.handleColor}),t("div",{class:"rd-et rd-hw",id:"_rd_m_"+r,style:"background-color:"+l.handleColor}),t("div",{class:"rd-et rd-hv",id:"_rd_s_"+r,style:"background-color:"+l.handleColor})],i?s.push(i):s.push(i=t("div",{_:"cO",class:"rd-et rd-hy"})),o="left:"+l.x+a+";top:"+l.y+a+";height:"+l.height/n+a+";opacity:"+l.alpha+";width:"+l.width/n+a+";background-color:"+l.dialColor+";",1!=n&&(o+="transform:scale("+n+");transform-origin:0 0;"),d=[t("div",{class:"rd-et rd-fY rd-hu",style:o},s)],t(r,0,d)},assign(e){this.set(e)},async render(){let e=a(this,"_dM");if(await this.digest({scale:h.get("dO")||1}),e()){let e=n("_rd_s_"+this.id),t=n("_rd_m_"+this.id),r=n("_rd_h_"+this.id),i=()=>{let i=new Date,d=(1e3*i.getSeconds()+i.getMilliseconds())/1e3,o=(60*i.getMinutes()+d)/60,s=(60*i.getHours()+o)/60;e.style.transform=`rotate(${6*d-90}deg)`,t.style.transform=`rotate(${6*o-90}deg)`,r.style.transform=`rotate(${30*s-90}deg)`};o._d4(32,i),this.on("destroy",(()=>{o._d3(i)}))}}})})),define("6r/cprogress/index",["65","../../64/67","../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../64/67"),o=e("../../6h/format"),{View:s,isArray:l}=i,{max:a,PI:n}=Math;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,{props:a,unit:n,radius:h,border:p,center:c,d1:f,d2:g,text:u,value:x}=e;return s=[],s.push(t("circle",{cx:"50%",cy:"50%",r:h,fill:"none",stroke:a.background,"stroke-width":p},1)),d="",a.roundCap?d+="round":d+="butt",s.push(t("circle",{cx:"50%",cy:"50%",r:h,fill:"none",stroke:a.fillcolor,transform:"rotate(-90 "+c+" "+c+")","stroke-width":p,"stroke-dasharray":f+","+g,"stroke-linecap":d},1)),a.showText&&(o=[t(0,u||x+"%")],s.push(t("text",{x:"50%",y:"50%",style:"text-anchor:middle; dominant-baseline:middle","font-family":a.fontfamily,"font-size":a.fontsize+n,fill:a.forecolor},o))),l=[t("svg",{style:"width:"+a.width+n+";height:"+a.height+n+";opacity:"+a.alpha},s)],i=[t("div",{class:"rd-et",style:"left:"+a.x+n+";top:"+a.y+n},l)],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{bind:r,value:i,textFormat:s,width:h,border:p}=t;p=d.dY(p);let c="";if(r.id){let e=r.fields[0];if(r._tip)c=r._tip,i=60;else if(r._data){let d=r._data;l(d)&&(d=d[0]),i=d[e.id],i=o._ii(s,i,t),!isNaN(i)&&isFinite(i)||(i=0),i<0?i=0:i>100&&(i=100)}else c=`[\u7ed1\u5b9a:${e.name}]`,i=60}let f=d.dY(h),g=a((f-p)/2,0),u=2*n*g,x=u*(i/100),m=u-x;this.set({border:p,center:f/2,d1:x,d2:m,radius:g,value:i,text:c})},render(){this.digest()}})})),define("6r/data-coltable/consts",[],((e,t,r)=>{r.exports={_iH:120,_iI:200,_iJ:100}})),define("6r/data-coltable/index",["65"],((e,t,r)=>{let i,d,o=e("65");r.exports=o.View.extend({tmpl:(e,t,r)=>{let o,s,l,a,n,h,p,c,{props:f,unit:g}=e;if(p=[],f.bind&&f.bind.fields&&f.bind.fields.length){n=[];for(let e=f.bind.fields,r=null==e?void 0:e.length,i=0;i{e("../subs/barcode"),e("../subs/qrcode");let i=e("65"),d=e("../../64/67"),o=e("../../6h/format"),s=o._ii.bind(o);r.exports=i.View.extend({tmpl:(e,t,r,i,d,o)=>{let s,l,a,n,h,p,c,f,g,u,{props:x,unit:m,toUnit:y,format:w}=e;l="";let _=x.borderwidth,b=x.bordertype,v=x.bordercolor,k=x.borderdeed,j=x.rows,L=x.bind;l+=" ";let Y=("collapse"==k?1:2)*_;f=[];for(let e=null==j?void 0:j.length,s=0;sv&&(e=v),e+c>v&&(c=v-e),u>b&&(u=b),u+x>b&&(x=b-u),h=[],"text"==f.type?(f.bindKey?(l="",_=L._data&&L._data[f.bindKey],l+=" ",_=w(f.textFormat,_,L._data)):_=f.textContent,_&&(n=[t(0,_,1)],h.push(t("div",{class:!f.textAutoReturn&&"rd-eE"},n)))):"image"==f.type?(_=f.bindKey?L._data&&L._data[f.bindKey]:f.imageContent,_&&(a="",(f.imageRotateX||f.imageRotateY)&&(a+=";transform:",f.imageRotateX&&(a+="rotateX(180deg)"),f.imageRotateY&&(a+=" rotateY(180deg)")),h.push(t("img",{class:"rd-e_ rd-en rd-eo",src:_,style:a},1)))):"barcode"==f.type?(_=f.bindKey?L._data&&L._data[f.bindKey]:f.barcodeContent,_&&h.push(t("div",{$:"props","mx5-owner":r,class:"rd-eH",style:"height:"+(v-e-c)+m+";align-items:"+f.vpos,"mx5-view":"6r/subs/barcode?props="+o(d,f,"cO."+s+".cP."+g+".cQ")+"&value="+i(_)}))):"qrcode"==f.type?(_=f.bindKey?L._data&&L._data[f.bindKey]:f.qrcodeContent,_&&h.push(t("div",{$:"props","mx5-owner":r,style:"height:"+(v-e-c)+m,"mx5-view":"6r/subs/qrcode?props="+o(d,f,"cO."+s+".cP."+g+".cQ")+"&value="+i(_)}))):f.bindKey&&h.push(t(0,"[\u672a\u6307\u5b9a\u6570\u636e\u5904\u7406\u65b9\u5f0f]"+(null==_?"":_))),a="padding:"+e+m+" "+x+m+" "+c+m+" "+u+m+";width:"+b+m+";height:",f.textAutoReturn?a+="100%":a+=""+v+m,a+=";align-items:"+f.vpos+";justify-content:"+f.hpos+";opacity:"+f.alpha+";",f.background&&(a+="background:"+f.background+";"),"text"==f.type&&(a+="color:"+f.textForecolor+";letter-spacing:"+f.textLetterspacing+m+";",f.textStyleBold&&(a+="font-weight:bold;"),f.textStyleItalic&&(a+="font-style:italic;"),(f.textStyleUnderline||f.textStyleStrike||f.textStyleOverline)&&(a+="text-decoration:",f.textStyleStrike?a+="line-through":f.textStyleOverline?a+="overline":a+="underline",a+=";"),a+="font-family:"+f.textFontfamily+";font-size:"+f.textFontsize+m+";"),p.push(t("div",{class:"rd-eH rd-fH",style:a},h))}a="position:relative;width:"+f.width+m+";height:"+f.height+m+";border-left:"+(_?b:"dotted")+" "+_+m+" "+(_&&f.bLeft?v:"#0000")+";border-top:"+(_?b:"dotted")+" "+_+m+" "+(_&&f.bTop?v:"#0000")+";border-right:"+(_?b:"dotted")+" "+_+m+" "+(_&&f.bRight?v:"#0000")+";border-bottom:"+(_?b:"dotted")+" "+_+m+" "+(_&&f.bBottom?v:"#0000"),"text"!=f.type&&(a+=";vertical-align:","flex-start"==f.vpos?a+="top":"center"==f.vpos?a+="middle":"flex-end"==f.vpos&&(a+="bottom")),c.push(t("td",{class:"rd-e9 rd-fb",colspan:1!=f.colspan&&f.colspan,rowspan:1!=f.rowspan&&f.rowspan,style:a},p))}f.push(t("tr",0,c))}return g=[t("tbody",0,f)],u=[t("table",{class:"rd-el rd-fa",style:"border-collapse:"+k},g)],s=[t("div",{class:"rd-et rd-fY",style:"left:"+x.x+m+";top:"+x.y+m+";opacity:"+x.alpha+";width:"+x.width+m+";transform:rotate("+x.rotate+"deg)"},u)],t(r,0,s)},init(){this.set({toUnit:d.dM,format:s})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/data-dtable/index",["65","../../64/67","../../6h/format","../subs/barcode","../subs/qrcode"],((e,t,r)=>{e("../subs/barcode"),e("../subs/qrcode");let i=e("65"),d=e("../../64/67"),o=e("../../6h/format"),s=o._ii.bind(o),l=e=>(e+="").length?e[0].toUpperCase()+e.substring(1):e;r.exports=i.View.extend({tmpl:(e,t,r,i,d,o)=>{let s,l,a,n,h,p,c,f,g,u,x,m,{props:y,unit:w,toUnit:_,ftu:b,format:v}=e;l="",l+=" ";let k=y.borderwidth,j=y.bordertype,L=y.bordercolor,Y=y.borderdeed,M=y.rows,S=y.bind;l+=" ";let P,O=("collapse"==Y?1:2)*k;l+=" ",f=[];for(let e=null==M?void 0:M.length,s=0;sy&&(i=y),i+c>y&&(c=y-i),f>m&&(f=m),f+x>m&&(x=m-f),h=[],"text"==g.type)n=[t(0,g.textContent,1)],h.push(t("div",{class:!g.textAutoReturn&&"rd-eE"},n));else if("image"==g.type)g.imageContent&&(a="",(g.imageRotateX||g.imageRotateY)&&(a+=";transform:",g.imageRotateX&&(a+="rotateX(180deg)"),g.imageRotateY&&(a+=" rotateY(180deg)")),h.push(t("img",{class:"rd-e_ rd-en rd-eo",src:g.imageContent,style:a},1)));else if("barcode"==g.type)g.barcodeContent&&h.push(t("div",{$:"props","mx5-owner":r,class:"rd-eH",style:"height:"+(y-i-c)+w+";align-items:"+g.vpos,"mx5-view":"6r/subs/barcode?props="+o(d,g,"cO."+s+".cP."+u+".cS")}));else if("qrcode"==g.type)g.qrcodeContent&&h.push(t("div",{$:"props","mx5-owner":r,style:"height:"+(y-i-c)+w,"mx5-view":"6r/subs/qrcode?props="+o(d,g,"cO."+s+".cP."+u+".cS")}));else if(e.total){l="";let e=P[u];l+=" ";let r=b(g.type);"text"==g.type?(n=[t(0,g.textContent)],h.push(t("div",{class:!g.textAutoReturn&&"rd-eE"},n))):"custom"==g.type?(n=[t(0,v(g.textFormat,g.totalData,S._data,S._all))],h.push(t("div",{class:!g.textAutoReturn&&"rd-eE"},n))):null!=g.totalData[e.bindKey+r]&&(n=[t(0,v(g.textFormat,g.totalData[e.bindKey+r],g.totalData))],h.push(t("div",{class:!g.textAutoReturn&&"rd-eE"},n)))}a="padding:"+i+w+" "+x+w+" "+c+w+" "+f+w+";width:"+m+w+";",g.textAutoReturn&&(a+="min-"),a+="height:"+y+w+";align-items:"+g.vpos+";justify-content:"+g.hpos+";opacity:"+g.alpha+";",null!=g.textFontsize&&(a+="color:"+g.textForecolor+";letter-spacing:"+g.textLetterspacing+w+";",g.textStyleBold&&(a+="font-weight:bold;"),g.textStyleItalic&&(a+="font-style:italic;"),(g.textStyleUnderline||g.textStyleStrike||g.textStyleOverline)&&(a+="text-decoration:",g.textStyleStrike?a+="line-through":g.textStyleOverline?a+="overline":a+="underline",a+=";"),a+="font-family:"+g.textFontfamily+";font-size:"+g.textFontsize+w+";"),p.push(t("div",{class:"rd-eH rd-fH",style:a},h))}a="position:relative;width:"+g.width+w+";height:"+g.height+w+";border-left:"+(k?j:"dotted")+" "+k+w+" "+(k&&g.bLeft?L:"#0000")+";border-top:"+(k?j:"dotted")+" "+k+w+" "+(k&&g.bTop?L:"#0000")+";border-right:"+(k?j:"dotted")+" "+k+w+" "+(k&&g.bRight?L:"#0000")+";border-bottom:"+(k?j:"dotted")+" "+k+w+" "+(k&&g.bBottom?L:"#0000")+";",g.background&&(a+="background:"+g.background),c.push(t("td",{class:"rd-e9 rd-fH rd-fb",colspan:1!=g.colspan&&g.colspan,rowspan:1!=g.rowspan&&g.rowspan,style:a},p))}f.push(t("tr",0,c))}if(e.data){if(P=e.cols,S._data){let g=S._rHeights;for(let u=S._data,x=null==u?void 0:u.length,m=0;mk&&(c=k),c+f>k&&(f=k-c),g>b&&(g=b),g+m>b&&(m=b-g),h=[],"text"==e.type?(e.bindKey&&(l="",_=x[e.bindKey],l+=" ",_=v(e.textFormat,_,x)),_&&(n=[t(0,_,1)],h.push(t("div",{class:!e.textAutoReturn&&"rd-eE"},n)))):"image"==e.type?(e.bindKey&&(_=x[e.bindKey]),_&&(a="height:"+(k-c-f)+"px;",(e.imageRotateX||e.imageRotateY)&&(a+=";transform:",e.imageRotateX&&(a+="rotateX(180deg)"),e.imageRotateY&&(a+=" rotateY(180deg)")),h.push(t("img",{class:"rd-e_ rd-en rd-eo",src:_,style:a},1)))):"barcode"==e.type?(e.bindKey&&(_=x[e.bindKey]),_&&h.push(t("div",{$:"props","mx5-owner":r,class:"rd-eH",style:"height:"+(k-c-f)+w+";align-items:"+e.vpos,"mx5-view":"6r/subs/barcode?props="+o(d,e,"cO."+s+".cP."+u+".cS")+"&value="+i(_)}))):"qrcode"==e.type?(e.bindKey&&(_=x[e.bindKey]),_&&h.push(t("div",{$:"props","mx5-owner":r,style:"height:"+(k-c-f)+w,"mx5-view":"6r/subs/qrcode?props="+o(d,e,"cO."+s+".cP."+u+".cS")+"&value="+i(_)}))):e.bindKey&&h.push(t(0,"[\u672a\u6307\u5b9a\u6570\u636e\u5904\u7406\u65b9\u5f0f]"+_)),a="padding:"+c+w+" "+m+w+" "+f+w+" "+g+w+";width:"+b+w+";",e.textAutoReturn&&(a+="min-"),a+="height:"+k+w+";align-items:"+e.vpos+";justify-content:"+e.hpos+";opacity:"+e.alpha+";","text"==e.type&&(a+="color:"+e.textForecolor+";letter-spacing:"+e.textLetterspacing+w+";",e.textStyleBold&&(a+="font-weight:bold;"),e.textStyleItalic&&(a+="font-style:italic;"),(e.textStyleUnderline||e.textStyleStrike||e.textStyleOverline)&&(a+="text-decoration:",e.textStyleStrike?a+="line-through":e.textStyleOverline?a+="overline":a+="underline",a+=";"),a+="font-family:"+e.textFontfamily+";font-size:"+e.textFontsize+w+";"),p.push(t("div",{class:"rd-eH rd-fH",style:a},h))}a="position:relative;width:"+e.width+w+";border-left:"+(k?j:"dotted")+" "+k+w+" "+(k&&e.bLeft?L:"#0000")+";border-top:"+(k?j:"dotted")+" "+k+w+" "+(k&&e.bTop?L:"#0000")+";border-right:"+(k?j:"dotted")+" "+k+w+" "+(k&&e.bRight?L:"#0000")+";border-bottom:"+(k?j:"dotted")+" "+k+w+" "+(k&&e.bBottom?L:"#0000")+";",e.background&&(a+="background:"+e.background),c.push(t("td",{class:"rd-e9 rd-fb",colspan:1!=e.colspan&&e.colspan,rowspan:1!=e.rowspan&&e.rowspan,style:a},p))}f.push(t("tr",0,c))}}}else e.total?m=1:e.label&&(x=1)}return g=[t("tbody",0,f)],u=[t("table",{class:"rd-el rd-fa",style:"border-collapse:"+Y},g)],s=[t("div",{class:"rd-et rd-fY",style:"left:"+y.x+w+";top:"+y.y+w+";opacity:"+y.alpha+";width:"+y.width+w},u)],t(r,0,s)},init(){this.set({format:s,toPx:d.dY,toUnit:d.dM,ftu:l})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/data-ftable/index",["65","../../64/67","../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../64/67"),o=e("../../6h/format"),s=o._ii.bind(o),l=e=>(e+="").length?e[0].toUpperCase()+e.substring(1):e;r.exports=i.View.extend({tmpl:(e,t,r,i,d,o)=>{let s,l,a,n,h,p,c,f,g,{props:u,unit:x}=e;l="",l+=" ";let m=u.borderwidth,y=u.bordertype,w=u.bordercolor,_=u.borderdeed,b=u.rows,v=u.bind;l+=" ";h=[];for(let e=null==b?void 0:b.length,s=0;s{let i={class:"rd-eH"},d=e("65");r.exports=d.View.extend({tmpl:(e,t,r,d,o,s)=>{let l,a,n,h,{props:p,unit:c}=e;h=[];for(let e=p.rows,d=null==e?void 0:e.length,l=0;l{let i={checked:"checked"},d=e("65"),{View:o,node:s,dispatch:l,isArray:a,isObject:n}=d;r.exports=o.extend({tmpl:(e,t,r)=>{let d,o,s,l,a,n,{props:h,unit:p}=e;n=[];for(let e=h.items,r=null==e?void 0:e.length,d=0;d{let i,d;e("../subs/barcode"),e("../subs/qrcode");let o={class:"rd-e1 rd-eH rd-eK rd-eW rd-el rd-em"},s={class:"rd-eE"},l={value:"value"},a={selected:"selected"},n=e("65"),h=e("../../64/67"),p=e("../../6h/format"),c=e("../../6h/6i"),f=e("../../6h/table"),{View:g,mark:u,dispatch:x,node:m,mix:y}=n,w=p._ii.bind(p),_=(e,t)=>e.startsWith("_")?void 0:t,b=e=>{let t=0;for(let r of e)for(let e of r)e._i8&&(t+=e._i9);return t},v=e=>{let t=0,r=0,i=0;for(let r of e)for(let e of r)e._i8&&(t+=e._i9,i++);return i>0&&(r=t/i),r};r.exports=g.extend({tmpl:(e,t,r,n,h,p)=>{let c,f,g,u,x,m,y,w,_,b,v,k,{props:j,unit:L,readonly:Y,getMaxCol:M,excelTitle:S,toUnit:P,getSumByCell:O,format:R,calcSum:z,calcAvg:C,toPx:H}=e;f="";let A=j.borderwidth,T=j.bordertype,V=j.bordercolor,N=j.borderdeed,B=j.rows,F=j.readonly,I=j.excel,q=j.excelLeft,X=j.excelTop,$=j.excelBackground,W=j.excelForecolor;f+=" ";let E,K,D=("collapse"==N?1:2)*A;f+=" ",f+=" ";let U=0;f+=" ";let Q=Y||F;if(b=[],I){x=[],x.push(t("td",{class:"rd-e9 rd-fb",style:"height:"+X+L+";background:"+$+";border:"+(A?T:"dotted")+" "+A+L+" "+V}));let e=M(j);for(let r=0;rS&&(o=S),o+n>S&&(n=S-o),x>M&&(x=M),x+v>M&&(v=M-x),g=[],"text"==b.type)w=[t(0,b.textContent,1)],g.push(t("div",s,w));else if("image"==b.type)b.imageContent&&(y="",(b.imageRotateX||b.imageRotateY)&&(y+=";transform:",b.imageRotateX&&(y+="rotateX(180deg)"),b.imageRotateY&&(y+=" rotateY(180deg)")),g.push(t("img",{class:"rd-e_ rd-en rd-eo",src:b.imageContent,style:y},1)));else if("barcode"==b.type)b.barcodeContent&&g.push(t("div",{$:"props","mx5-owner":r,class:"rd-eH",style:"height:"+(S-o-n)+L+";align-items:"+b.vpos,"mx5-view":"6r/subs/barcode?props="+p(h,b,"cO."+c+".cP."+k+".cS")}));else if("qrcode"==b.type)b.qrcodeContent&&g.push(t("div",{$:"props","mx5-owner":r,style:"height:"+(S-o-n)+L,"mx5-view":"6r/subs/qrcode?props="+p(h,b,"cO."+c+".cP."+k+".cS")}));else if("input"==b.type)b.inputMultiline?(m="rd-el rd-em rd-dQ",b.inputClassName&&(m+=" "+b.inputClassName),g.push(t("textarea",{id:"ipt_"+r+"_"+c+"_"+k,readonly:!0===Q,style:"color:"+b.inputForecolor+";font-size:"+b.inputFontsize+L+";letter-spacing:"+b.inputLetterspacing+L+";font-family:"+b.inputFontfamily+";text-align:"+b.inputTextAlign,placeholder:b.inputplaceholder,"mx5-input":r+"\x1e_jg({cell:'"+p(h,b,"cO."+c+".cP."+k+".cS")+"'})",value:b.inputUserValue||b.inputText,class:m},0,l))):(m="rd-el rd-em rd-dP",b.inputClassName&&(m+=" "+b.inputClassName),g.push(t("input",{id:"ipt_"+r+"_"+c+"_"+k,readonly:!0===Q,style:"color:"+b.inputForecolor+";font-size:"+b.inputFontsize+L+";letter-spacing:"+b.inputLetterspacing+L+";font-family:"+b.inputFontfamily+";text-align:"+b.inputTextAlign,placeholder:b.inputPlaceholder,value:b.inputUserValue||b.inputText,"mx5-input":r+"\x1e_jg({cell:'"+p(h,b,"cO."+c+".cP."+k+".cS")+"'})",class:m},1,l)));else if("sum"==b.type||"custom"==b.type||"avg"==b.type){let e=O(b);"sum"==b.type?(w=[t(0,R(b.textFormat,z(e)),1)],g.push(t("div",s,w))):"avg"==b.type?(w=[t(0,R(b.textFormat,C(e)),1)],g.push(t("div",s,w))):(w=[t(0,R(b.textFormat,e),1)],g.push(t("div",s,w)))}else if("dropdown"==b.type){w=[];for(let e=b.dropdownItems,r=null==e?void 0:e.length,i=0;if.dL(e,1)._it,getSumByCell:e=>{let{rows:t}=this.get("props"),r={};for(let i of t)if(i.data)for(let t of i.cols){let i=t._j_;if(i>=e._j_&&i<=e._ja){r[i]||(r[i]=[]);let e,d=t.inputUserValue||t.inputText,o=parseInt(d,10);e=isNaN(o)?{_i9:0,_i8:0}:{_i9:o,_i8:1},r[i].push(e)}}let i=[];for(let e in r)i.push(r[e]);return i},calcSum:b,calcAvg:v})},assign(e){e.overrideProps&&y(e.props,e.overrideProps),f.dL(e.props,!0),e.overrideProps&&y(e.props,e.overrideProps),this.set(e)},async render(){let e=u(this,"_jb");await this.digest();let t=await this.getValue();e()&&!this._jc&&(this._jc=1,this._jd(t))},_jd(e){e||(e=this._je()),e.elementProps!=this._jf&&(this._jf=e.elementProps,delete e.id,delete e.type,x(this.root,"elementinput",e))},_je(){let e=this.get("props"),t=JSON.stringify(e,_),{rows:r}=e,i={head:[],label:[],data:[],total:[],foot:[]},d=[],o=e=>{let t=[];for(let r of e)if("form-input"==r.type){let{userValue:e,text:i,inputName:o}=r.props;null==e&&(e=i),t.push({type:"form-input",value:e,name:o});let s=m(r.id);s&&d.push({node:s.querySelector("input"),type:"form-input",value:e,name:o})}else t.push(null);return t};for(let e=0;e{let t=()=>{let r=this._je(),i=1;for(let e of r.elementInputs)if(!e.node){i=0;break}i?e(r):setTimeout(t,50)};setTimeout(t,50)}))},"_jg "(e){let{cell:t}=e.params,r=e.eventTarget;t.inputUserValue=r.value;let i=this.get("props");this.digest({props:i}),this._jd()},"_jg"(e){},"_jh"(e){e.stopImmediatePropagation(),this._jd()},"_ji"(e){let{ri:t}=e.params,r=this.get("props"),{rows:i}=r,d=i[t],o=0;for(let e of i){if(e.total)break;o++}f.dN(r,o,{},0);let s=i[o];s.data=!0,s.copy=!0;for(let e=d.cols.length;e--;){let t=d.cols[e],r=s.cols[e],i=JSON.parse(JSON.stringify(t));y(r,i)}f.dL(r),this.set({props:r}),this.render()},"_jj"(e){let{ri:t}=e.params,r=this.get("props");f.dO(r,t),f.dL(r),this.set({props:r}),this.render()}})})),define("6r/form-dropdown/index",["65"],((e,t,r)=>{let i={selected:"selected"},d=e("65"),{View:o,node:s,dispatch:l,isArray:a,isObject:n}=d;r.exports=o.extend({tmpl:(e,t,r)=>{let d,o,s,l,a,{props:n,unit:h}=e;l=[];for(let e=n.items,r=null==e?void 0:e.length,d=0;d{let i={value:"value"},d=e("65"),{View:o,node:s,dispatch:l,isArray:a}=d;r.exports=o.extend({tmpl:(e,t,r)=>{let d,o,s,{props:l,unit:a,readonly:n}=e;s=[];let h=n||l.readonly;return l.multiline?(o="rd-el rd-em rd-dQ",l.className&&(o+=" "+l.className),s.push(t("textarea",{id:"ipt_"+r,readonly:!0===h,style:"color:"+l.forecolor+";font-size:"+l.fontsize+a+";letter-spacing:"+l.letterspacing+a+";font-family:"+l.fontfamily+";text-align:"+l.textAlign,name:l.inputName,placeholder:l.placeholder,"mx5-input":r+"\x1e_jg()",value:l.userValue||l.text,class:o},0,i))):(o="rd-el rd-em rd-dP",l.className&&(o+=" "+l.className),s.push(t("input",{name:l.inputName,id:"ipt_"+r,readonly:!0===h,style:"color:"+l.forecolor+";font-size:"+l.fontsize+a+";letter-spacing:"+l.letterspacing+a+";font-family:"+l.fontfamily+";text-align:"+l.textAlign,placeholder:l.placeholder,value:l.userValue||l.text,"mx5-input":r+"\x1e_jg()",class:o},1,i))),d=[t("div",{class:"rd-eH rd-eK rd-et rd-fH rd-fY",style:"left:"+l.x+a+";top:"+l.y+a+";height:"+l.height+a+";opacity:"+l.alpha+";width:"+l.width+a+";transform:rotate("+l.rotate+"deg)"},s)],t(r,0,d)},assign(e){let{props:t}=e,{bind:r}=t;if(r&&r.id){let e=r.fields[0];if(r._tip)t.text=r._tip;else if(r._data){let i=r._data;a(i)&&(i=i[0]);let d=i[e.id];d.value&&(t.text=d.value),d.className&&(t.className=d.className),d.placeholder&&(t.placeholder=d.placeholder),d.markAs&&(t.markAs=d.markAs),d.inputName&&(t.inputName=d.inputName)}else t.text=`[\u7ed1\u5b9a:${e.name}]`}this.set(e)},render(){this.digest()},getValue(){let e=this.get("props"),t=s(`ipt_${this.id}`),r=this.get("id");return{id:r,type:"form-input",props:e,elementId:r,elementType:"form-input",elementProps:JSON.stringify(e),elementValue:e.userValue,elementName:e.inputName,elementInput:t}},"_jg "(e){this._hn(e);let{eventTarget:t}=e,r=t.value,i=this.get("props");i.userValue=r,l(this.root,"elementinput",{elementId:this.get("id"),elementType:"form-input",elementProps:JSON.stringify(i),elementValue:r,elementName:i.inputName,elementInput:t})}})})),define("6r/form-radio/index",["65"],((e,t,r)=>{let i={checked:"checked"},d=e("65"),{View:o,node:s,dispatch:l,isArray:a,isObject:n}=d;r.exports=o.extend({tmpl:(e,t,r)=>{let d,o,s,l,a,n,{props:h,unit:p}=e;n=[];for(let e=h.items,r=null==e?void 0:e.length,d=0;d{let i=e("65"),d=e("../../6h/mathjax"),{View:o,mark:s}=i;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,html:l}=e;return d=[t(0,l,1)],i=[t("div",{class:"rd-et rd-fH rd-fY",style:"left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);padding:2px;color:"+o.color+";font-size:"+o.fontsize+s},d)],t(r,0,i)},assign(e){this.set(e)},async render(){let e=s(this,"_dM");try{if(window.MathJax||await this.digest({html:"loading..."}),await d(),e()){let e=this.get("props").text,t=this._jl;e!=this._jm&&(this._jm=e,t=MathJax.tex2svg(e,{em:12,ex:6}).innerHTML,this._jl=t),this.digest({html:t})}}catch(t){e()&&this.digest({html:t})}}})})),define("6r/fx/index",["65","../../64/67","../../6h/fx"],((e,t,r)=>{let i=e("65"),d=e("../../64/67"),o=e("../../6h/fx"),{View:s,mark:l,node:a}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,html:a}=e;return d=[t(0,a)],o=[t("div",{class:"rd-et",id:"ld_"+r},d),t("div",{id:"fx_"+r})],i=[t("div",{class:"rd-et rd-fH rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";height:"+s.height+l+";opacity:"+s.alpha+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){this.set(e)},async render(){let e=l(this,"_dM");try{if(window.functionPlot?await this.digest():await this.digest({html:"loading..."}),await o(),e()){let{title:e,width:t,height:r,xAxisRange:i,xAxisTitle:o,yAxisRange:s,yAxisTitle:l,grid:n,zoom:h,xLine:p,yLine:c,data:f,annotations:g}=this.get("props"),u=a(`fx_${this.id}`),x=a(`ld_${this.id}`);u.innerHTML="",functionPlot({target:u,width:this._es=d.dY(t),height:this._et=d.dY(r),yAxis:{domain:s,label:this._jr=l},xAxis:{domain:i,label:this._jp=o},tip:{xLine:p,yLine:c},grid:n,disableZoom:h,title:this._jn=e,data:f,annotations:g}),x.innerHTML=" "}}catch(t){e()&&this.digest({html:t})}}})})),define("6r/hod-header/index",["65"],((e,t,r)=>{let i={class:"rd-eH"},d=e("65");r.exports=d.View.extend({tmpl:(e,t,r,d,o,s)=>{let l,a,n,h,{props:p,unit:c}=e;h=[];for(let e=p.rows,d=null==e?void 0:e.length,l=0;l{let i={class:"rd-e0 rd-eH rd-eK rd-em"},d=e("65"),o=e("../../6h/format"),{View:s,isArray:l}=d;r.exports=s.extend({tmpl:(e,t,r)=>{let d,o,s,l,{props:a,unit:n,value:h,step:p}=e;o=[];for(let e=0;e100&&(i=100)}else a=`[\u7ed1\u5b9a:${e.name}]`,i=60}this.set({step:1/s,value:i,text:a})},render(){this.digest()}})})),define("6r/hod-footer/index",["65"],((e,t,r)=>{let i={class:"rd-eH"},d=e("65");r.exports=d.View.extend({tmpl:(e,t,r,d,o,s)=>{let l,a,n,h,p,{props:c,unit:f,stage:g}=e;p=[];for(let e=c.rows,d=null==e?void 0:e.length,l=0;l{let i={class:"rd-el rd-em rd-eu rd-fH"},d=e("65");r.exports=d.View.extend({tmpl:(e,t,r,d,o,s)=>{let l,a,n,h,p,c,f,{props:g,unit:u}=e,x=g.borderwidth,m=g.bordertype,y=g.bordercolor,w=g.borderdeed,_=g.rows;p=[];for(let e=null==_?void 0:_.length,d=0;d{let i={class:"rd-eH"},d=e("65");r.exports=d.View.extend({tmpl:(e,t,r,d,o,s)=>{let l,a,n,h,{props:p,unit:c}=e;h=[];for(let e=p.rows,d=null==e?void 0:e.length,l=0;l{let i={class:"rd-eH rd-et rd-fJ rd-fY rd-f_ rd-ic"},d={class:"rd-et rd-fk rd-ib"},o={class:"rd-el rd-em rd-eu rd-fH"},s=e("65"),{View:l,applyStyle:a}=s;a("rd-gT",".rd-ib{box-shadow:0 -1px #d7dde4}.rd-ic{transform:translate(10px,-100%);width:calc(100% - 20px)}.rd-id{padding:2px 6px;color:#666}.rd-ie{color:#fa742b;border-bottom:solid 2px #fa742b}"),r.exports=l.extend({tmpl:(e,t,r,s,l,a)=>{let n,h,p,c,f,g,{props:u,unit:x}=e;g=[],c=[];for(let e=u.rows,i=null==e?void 0:e.length,d=0;d"(e){let{to:t}=e.params,r=this.get("props");t!=r.activeTab&&(r.activeTab=t,this.digest({props:r}))}})})),define("6r/hod-vflex/index",["65"],((e,t,r)=>{let i={class:"rd-eH rd-eI"},d=e("65");r.exports=d.View.extend({tmpl:(e,t,r,d,o,s)=>{let l,a,n,h,{props:p,unit:c}=e;h=[];for(let e=p.rows,d=null==e?void 0:e.length,l=0;l{let i=e("65"),d=e("../../6h/underscore"),o=e("../../6h/6i"),{View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s}=e;return d=[t(0,o.value,1)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+o.x+s+";top:"+o.y+s+";min-height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s},d)],t(r,0,i)},assign(e){let{props:t}=e;t.value=o.ew(t.value),this.set(e)},async render(){await d();let e=this.get("props"),{bind:t}=e;t.id&&t._data&&(e.value=_.template(e.value)({data:t._data,fields:t.fields})),this.digest()}})})),define("6r/image/index",["65"],((e,t,r)=>{let i=e("65"),{View:d,isArray:o}=i;r.exports=d.extend({tmpl:(e,t,r)=>{let i,d=[],{image:o,props:s,unit:l}=e;return o&&(i="left:"+s.x+l+";top:"+s.y+l+";height:"+s.height+l+";opacity:"+s.alpha+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg);",(s.rotateX||s.rotateY)&&(i+=";transform:",s.rotateX&&(i+="rotateX(180deg)"),s.rotateY&&(i+=" rotateY(180deg)")),d.push(t("img",{class:"rd-e_ rd-et rd-fY",src:o,style:i},1))),t(r,0,d)},assign(e){this.set(e);let{props:t}=e,{bind:r,image:i,webUrl:d}=t,s="";if(!i&&d&&(i=d),r.id){let e=r.fields[0];if(r._tip)s=r._tip;else if(r._data){let t=r._data;o(t)&&(t=t[0]),i=t[e.id]}else s=`[\u7ed1\u5b9a:${e.name}]`}this.set({image:i,text:s})},render(){this.digest()}})})),define("6r/line/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,{props:d,unit:o}=e;return i=[t("div",{class:"rd-et rd-fY",style:"left:"+d.x+o+";top:"+d.y+o+";border-top:"+d.height+o+" "+d.linetype+" "+d.color+";opacity:"+d.alpha+";width:"+d.width+o+";transform:rotate("+d.rotate+"deg)"})],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/map/index",["65","../../6h/map"],((e,t,r)=>{let i=e("65"),d=e("../../6h/map"),{View:o,mark:s,node:l}=i;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a,error:n,i18n:h}=e;return d="",d+=n?" "+n+" ":" "+h("jA")+" ",o=[t(0,d)],s=[t("div",{id:"tip_"+r,class:"rd-e1 rd-eH rd-eK rd-em"},o)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+l.x+a+";top:"+l.y+a+";height:"+l.height+a+";opacity:"+l.alpha+";width:"+l.width+a,id:"map_"+r},s)],t(r,0,i)},init(){this.on("destroy",(()=>{let e=this._jy;e&&e.remove()}))},assign(e){this.set(e)},async render(){let e=s(this,"_dM"),t=this.get("props");if(this._jz)this.digest({error:this._jz});else{if(await this.digest(),!this._jy)try{if(await d(),e()){let e=l(`map_${this.id}`),r=L.map(e,{zoom:t.zoom,center:[t.lat,t.lng],zoomControl:t.zoomCtrl,dragging:t.dragging,doubleClickZoom:t.doubleClickZoom});this._jy=r,L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'© OpenStreetMap contributors'}).addTo(r);let i=l(`tip_${this.id}`);i.parentNode.removeChild(i)}}catch(e){this.digest({error:this._jz=e})}}}})})),define("6r/number/index",["65"],((e,t,r)=>{let i=e("65"),d=/\{#\}/g,{pow:o}=Math;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,bw:a,text:n}=e;return o=[t(0,n)],d="left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";opacity:"+s.alpha+";transform:rotate("+s.rotate+"deg);align-items:"+s.vpos+";justify-content:"+s.hpos+";color:"+s.forecolor+";",s.background&&(d+="background:"+s.background+";"),d+="font-size:"+s.fontsize+l+";letter-spacing:"+s.letterspacing+l+";line-height:"+s.lineheight+";",s.styleBold&&(d+="font-weight:bold;"),s.styleItalic&&(d+="font-style:italic;"),(s.styleUnderline||s.styleStrike||s.styleOverline)&&(d+="text-decoration:",s.styleStrike?d+="line-through":s.styleOverline?d+="overline":d+="underline",d+=";"),d+="font-family:"+s.fontfamily+";",a&&(d+="border:"+a+l+" "+s.bordertype+" "+s.bordercolor+";"),i=[t("div",{class:"rd-eH rd-et rd-fY",style:d},o)],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{text:r,ext:i}=t;if(i._fill){let e,t=0;if(i.pad){let e;"AP"==i.fx?e=i.start+(i._total-1)*i.step:"GP"==i.fx&&(e=i.start*o(i.step,i._total)),t=(e+"").length}let s=i._index;i.reverse&&(s=i._total-s-1),"AP"==i.fx?e=i.start+s*i.step:"GP"==i.fx&&(e=i.start*o(i.step,s)),i.pad&&(e=(e+"").padStart(t,"0")),r=r.replace(d,e)}this.set({text:r})},render(){this.digest()}})})),define("6r/progressbar/index",["65","../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../6h/format"),{View:o,isArray:s}=i;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a,value:n,text:h}=e;return o=[],(l.showText||h)&&(d=[t(0,h||n+"%")],o.push(t("span",{class:"rd-et",style:"transform:translate(50%,-100%);right:0;color:"+l.textColor+";font-size:"+l.textFontsize+a},d))),s=[t("div",{style:"width:"+n+"%;background-color:"+l.barcolor+";border-radius:"+l.radius+a,class:"rd-em rd-eu"},o)],i=[t("div",{class:"rd-et",style:"left:"+l.x+a+";top:"+l.y+a+";height:"+l.height+a+";opacity:"+l.alpha+";width:"+l.width+a+";transform:rotate("+l.rotate+"deg);background-color:"+l.background+";border-radius:"+l.radius+a},s)],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{bind:r,value:i,textFormat:o}=t,l="";if(r.id){let e=r.fields[0];if(r._tip)l=r._tip,i=60;else if(r._data){let l=r._data;s(l)&&(l=l[0]),i=l[e.id],i=d._ii(o,i,t),!isNaN(i)&&isFinite(i)||(i=0),i<0?i=0:i>100&&(i=100)}else l=`[\u7ed1\u5b9a:${e.name}]`,i=60}this.set({value:i,text:l})},render(){this.digest()}})})),define("6r/pager/index",["65"],((e,t,r)=>{let i=e("65"),{has:d,View:o}=i,s=/\$\{([a-zA-z0-9_]+)\}/g;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,textReturn:a,text:n}=e;return o=[t(0,a(n),1)],d="left:"+s.x+l+";top:"+s.y+l+";color:"+s.forecolor+";",s.background&&(d+="background:"+s.background+";"),d+="font-size:"+s.fontsize+l+";height:"+s.height+l+";letter-spacing:"+s.letterspacing+l+";opacity:"+s.alpha+";",s.styleBold&&(d+="font-weight:bold;"),s.styleItalic&&(d+="font-style:italic;"),(s.styleUnderline||s.styleStrike||s.styleOverline)&&(d+="text-decoration:",s.styleStrike?d+="line-through":s.styleOverline?d+="overline":d+="underline",d+=";"),d+="align-items:"+s.vpos+";justify-content:"+s.hpos+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg);font-family:"+s.fontfamily,i=[t("div",{class:"rd-eH rd-et rd-fH rd-fY",style:d},o)],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{text:r,ext:i}=t;null==i._totalPage&&(i._totalPage="Y"),null==i._currentPage&&(i._currentPage="X"),r=r.replace(s,((e,t)=>d(i,"_"+t)?i["_"+t]:e)),this.set({text:r})},render(){this.digest()}})})),define("6r/rect/index",["65"],((e,t,r)=>{let i=e("65"),{min:d}=Math;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,bw:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";",l&&(d+="border:"+l+s+" "+o.bordertype+" "+o.bordercolor+";"),o.fillcolor&&(d+="background:"+o.fillcolor+";"),d+="height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.radius&&(d+="border-radius:"+o.radius+s+";"),i=[t("div",{class:"rd-et rd-fY",style:d})],t(r,0,i)},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:o}=t,s=d(i,o)/2;r>s&&(r=s),this.set(e),this.set({bw:r})},render(){this.digest()}})})),define("6r/rate/index",["65","../../6h/format"],((e,t,r)=>{let i,d={class:"rd-e0 rd-eH rd-eK rd-em"},o=e("65"),s=e("../../6h/format"),{View:l,isArray:a}=o;r.exports=l.extend({tmpl:(e,t,r)=>{let o,s,l,a,n,{props:h,unit:p,value:c}=e;l=[];for(let e=0;e100&&(i=100)}else o=`[\u7ed1\u5b9a:${e.name}]`,i=60}this.set({value:i,text:o})},render(){this.digest()}})})),define("6r/qrcode/index",["65","../../6h/qrcode"],((e,t,r)=>{let i={class:"rd-e1 rd-eH rd-eK rd-em"},d=e("65"),o=e("../../6h/qrcode"),{View:s,mark:l,node:a,task:n,isArray:h}=d;r.exports=s.extend({tmpl:(e,t,r)=>{let d,o,s=[],{error:l,text:a,props:n,unit:h}=e;return(l||a)&&(o=[],l&&(d=[t(0,l)],o.push(t("div",i,d))),o.push(t("div",{id:"_rd_"+r+"_qr"})),s.push(t("div",{class:"rd-et rd-fH rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";height:"+n.height+h+";opacity:"+n.alpha+";width:"+n.width+h+";transform:rotate("+n.rotate+"deg)"},o))),t(r,0,s)},assign(e){this.set(e);let{props:t}=e,{bind:r,text:i}=t;if(r.id){let e=r.fields[0];if(r._tip)i=r._tip;else if(r._data){let t=r._data;h(t)&&(t=t[0]),i=t[e.id]}else i=`[\u7ed1\u5b9a:${e.name}]`}this.set({text:i})},async render(){let e=l(this,"_dM");await this.digest({error:null});try{if(await o._h7(),e()){let t=this.get("text"),r=this.get("props");if(t&&(t!=this._ic||r.colorDark!=this._id||r.colorLight!=this._ie||r.correctLevel!=this._if)){let i=this._ig;if(!i){let e=a(`_rd_${this.id}_qr`);i=new QRCode(e,{width:512,height:512}),this._ig=i}let d=l(this,"_ih");n((()=>{if(e()&&d()){i._htOption.colorDark=this._id=r.colorDark,i._htOption.colorLight=this._ie=r.colorLight,i._htOption.correctLevel=this._if=QRCode.CorrectLevel[r.correctLevel],i.makeCode(this._ic=t),this.root.querySelector("img").classList.add("rd-e_","rd-el","rd-en")}}))}}}catch(t){e()&&this.digest({error:t})}}})})),define("6r/repeat/index",["65"],((e,t,r)=>{let i=e("65"),{View:d,isArray:o}=i;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.radius&&(d+="border-radius:"+o.radius+s+";"),(o.image||o.webUrl)&&(d+="background-image:url("+(o.image||o.webUrl)+");","full"==o.repeat?d+="background-size:100% 100%;":o.imageWidth>0&&o.imageHeight>0&&(d+="background-size:"+o.imageWidth+s+" "+o.imageHeight+s+";"),d+="background-repeat:"+("full"==o.repeat?"no-repeat":o.repeat)+";background-position:"+o.backgroundXOffset+s+" "+o.backgroundYOffset+s),i=[t("div",{class:"rd-et rd-fH rd-fY",style:d})],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{bind:r}=t,i="";if(r.id){let e=r.fields[0];if(r._tip)i=r._tip;else if(r._data){let i=r._data;o(i)&&(i=i[0]),t.image=i[e.id]}else i=`[\u7ed1\u5b9a:${e.name}]`}this.set({text:i})},render(){this.digest()}})})),define("6r/richtext/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a}=e;return s=[t(0,l.text,1)],d="rd-et rd-fY",l.splitToPages||(d+=" rd-fJ"),o="left:"+l.x+a+";top:"+l.y+a+";opacity:"+l.alpha+";width:"+l.width+a+";height:",l.splitToPages?o+="auto":o+=""+l.height+a,i=[t("div",{class:d,style:o},s)],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/rod/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a}=e;return s=[t("span",{style:"flex-grow:1;border-top:1px "+l.linetype+" "+l.color})],o=[t(0,l.text)],s.push(t("span",{style:"padding:0 4px;transform:rotate("+l.textRotate+"deg);color:"+l.color},o),t("span",{style:"flex-grow:1;border-top:1px "+l.linetype+" "+l.color})),d="left:"+l.x+a+";top:"+l.y+a+";opacity:"+l.alpha+";width:"+l.width+a+";height:"+l.height+a+";transform:rotate("+l.rotate+"deg);",l.startBorder&&(d+="border-left:1px "+l.linetype+" "+l.color+";"),l.endBorder&&(d+="border-right:1px "+l.linetype+" "+l.color+";"),i=[t("div",{class:"rd-e1 rd-eH rd-eK rd-et rd-fY",style:d},s)],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/signature/index",["65","../../6h/signature"],((e,t,r)=>{let i=e("65"),d=e("../../6h/signature"),{View:o,mark:s,node:l}=i,{max:a,min:n}=Math;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,bw:a}=e;return o=[t("canvas",{class:"rd-el rd-em",id:r+"_c"})],d="left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";opacity:"+s.alpha+";",a&&(d+="border:"+a+l+" "+s.bordertype+" "+s.bordercolor+";"),i=[t("div",{class:"rd-et rd-fY",style:d},o)],t(r,0,i)},init(){this.on("destroy",(()=>{let e=this._jM;e&&e.off()}))},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:d}=t,o=n(i,d)/2;r>o&&(r=o),this.set(e),this.set({bw:r})},async render(){let e=s(this,"_dM");if(await d(),await this.digest(),e()){let e=this._jM,t=this.get("props"),r=l(`${this.id}_c`),i=a(window.devicePixelRatio||1,1);r.width=r.offsetWidth*i,r.height=r.offsetHeight*i,r.getContext("2d").scale(i,i),e||(e=new SignaturePad(r),this._jM=e),t.background&&(e.backgroundColor=t.background),e.penColor=t.pencolor,e.clear()}}})})),define("6r/subs/barcode",["65","../../64/67","../../6h/barcode"],((e,t,r)=>{let i=e("65"),d=e("../../64/67"),o=e("../../6h/barcode"),{View:s,task:l,mark:a}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d=[],{msg:o,render:s,fill:l}=e;return o?d.push(t(0,o)):"svg"==s?d.push(t("svg",{id:r+"_bar",class:"rd-el rd-em rd-en rd-ev"})):(i="rd-e_ rd-en rd-eo","full"==l&&(i+=" rd-el rd-em"),d.push(t("img",{id:r+"_bar",class:i},1))),t(r,0,d)},assign(e){this.set(e)},async render(){let e=a(this,"_dM");await this.digest({});try{if(await o._h7(),e()){let{value:t,props:r}=this.get(),{barcodeColor:i,barcodeLineWidth:o,barcodeShowText:s,barcodeFormat:a,barcodeContent:n,barcodeRender:h,barcodeFill:p,barcodeStyleBold:c,barcodeStyleItalic:f,barcodeTextPosition:g,barcodeTextAlign:u,barcodeFont:x,barcodeFontsize:m,barcodeTextMargin:y}=r;await this.digest({msg:null,render:h,fill:p}),l((()=>{if(e()){t||(t=n);let e="",r=this.root.offsetHeight;c&&(e="bold"),f&&(c&&(e+=" "),e+="italic"),m=d.dY(m),y=d.dY(y),o=d.dY(o),JsBarcode(`#${this.id}_bar`,t,{height:r,lineColor:i,width:o,textPosition:g,textAlign:u,format:a,fontSize:m,fontOptions:e,displayValue:s,font:x,textMargin:y})}}))}}catch(t){e()&&this.digest({msg:t.message||t})}}})})),define("6r/subs/qrcode",["65","../../6h/qrcode"],((e,t,r)=>{let i=e("65"),d=e("../../6h/qrcode"),{View:o,mark:s,node:l,task:a}=i;r.exports=o.extend({tmpl:(e,t,r)=>{let i=[],{msg:d,props:o}=e;return d?i.push(t(0,d)):i.push(t("div",{id:"_rd_"+r+"_qr",class:"rd-eH rd-em",style:"align-items:"+o.vpos})),t(r,0,i)},assign(e){this.set(e)},async render(){let e=s(this,"_dM");await this.digest({});try{if(await d._h7(),e()){let{value:t,props:r}=this.get();a((()=>{if(e()&&(t||(t=r.qrcodeContent),t&&(t!=this._ic||r.qrcodeColorDark!=this._id||r.qrcodeColorLight!=this._ie||r.qrcodeCorrectLevel!=this._if))){let i=this._ig;if(!i){let e=l(`_rd_${this.id}_qr`);i=new QRCode(e,{width:1024,height:1024}),this._ig=i}let d=s(this,"_ih");a((()=>{if(e()&&d()){i._htOption.colorDark=this._id=r.qrcodeColorDark,i._htOption.colorLight=this._ie=r.qrcodeColorLight,i._htOption.correctLevel=this._if=QRCode.CorrectLevel[r.qrcodeCorrectLevel],i.makeCode(this._ic=t),this.root.querySelector("img").classList.add("rd-e_","rd-eo","rd-en")}}))}}))}}catch(t){e()&&this.digest({msg:t})}}})})),define("6r/video/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,i18n:a}=e;return o=[],s.src?o.push(t("video",{src:s.src,poster:s.poster,controls:s.controls,autoplay:s.autoplay,loop:s.loop,muted:s.muted,style:"width:"+s.width+l+";height:"+s.height+l})):(d=[t(0,a("lI"))],o.push(t("div",{class:"rd-eq rd-fH",style:"width:"+s.width+l+";height:"+s.height+l+";line-height:"+s.height+l},d))),i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";opacity:"+s.alpha+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/todo/index",["65","../../64/67"],((e,t,r)=>{let i,d,o={class:"rd-in rd-ip"},s={class:"rd-il"},l={class:"rd-eH rd-eK rd-ip rd-ir"},a={checked:"checked"},n=e("65"),h=e("../../64/67"),{View:p,applyStyle:c,node:f,State:g}=n;c("rd-iX",".rd-il{border-radius:2px;border:solid 1px #ccc9}.rd-im{background:#eee9}.rd-in{padding:4px}.rd-io{min-height:40px}.rd-ip{border-bottom:1px solid #ccc9}.rd-iq{height:26px}.rd-ir{height:24px;line-height:24px;padding:0 4px}.rd-is{display:none}.rd-ir:hover{background:#eee3}.rd-ir:hover .rd-is{display:block}.rd-it{text-decoration:line-through}");let u=/scaleY\(([\d\.]+)\)/;r.exports=p.extend({tmpl:(e,t,r)=>{let n,h,p,c,f,g,u,x,{props:m,unit:y,scale:w}=e;if(p=[t("input",{class:"rd-dO rd-dP rd-el rd-iq",placeholder:"\u51c6\u5907\u505a\u4ec0\u4e48?\u56de\u8f66\u6dfb\u52a0\u5f85\u529e\u4e8b\u9879","mx5-keydown":r+"\x1e_j5()"},1)],x=[t("div",o,p)],p=[],m.todos.length){u=[];for(let e=m.todos,d=null==e?void 0:e.length,o=0;o"(e){let{code:t,eventTarget:r}=e;if("Enter"==t){let e=r.value;r.value="";let t=this.get("props");t.todos.unshift({task:e,complete:!1}),await this.digest({props:t}),this._j3()}},async"_j6"(e){let{index:t}=e.params,r=this.get("props");r.todos.splice(t,1),await this.digest({props:r}),this._j3()},"_j4"(e){let{index:t}=e.params,r=this.get("props");r.todos[t].complete=e.eventTarget.checked,this.digest({props:r})},"_ho"(e){e._f7||(e._f7=1)}})})),define("6r/text/index",["65","../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../6h/format"),{min:o}=Math,{isArray:s,View:l}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,bw:a,safeHTML:n,text:h,textReturn:p}=e;return o=[t(0,s.richtext?n(h):p(h),1)],d="left:"+s.x+l+";top:"+s.y+l+";color:"+s.forecolor+";",s.background&&(d+="background:"+s.background+";"),d+="font-size:"+s.fontsize+l+";min-height:"+s.height+l+";letter-spacing:"+s.letterspacing+l+";opacity:"+s.alpha+";line-height:"+s.lineheight+";",s.styleBold&&(d+="font-weight:bold;"),s.styleItalic&&(d+="font-style:italic;"),(s.styleUnderline||s.styleStrike||s.styleOverline)&&(d+="text-decoration:",s.styleStrike?d+="line-through":s.styleOverline?d+="overline":d+="underline",d+=";"),d+="align-items:"+s.vpos+";justify-content:"+s.hpos+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg);font-family:"+s.fontfamily+";",a&&(d+="border:"+a+l+" "+s.bordertype+" "+s.bordercolor+";"),s.autoReturn?d+="word-break:break-all;transform-origin:"+s.width/2+l+" "+s.height/2+l+";":d+="max-height:"+s.height+l,i=[t("div",{class:"rd-eH rd-et rd-fH rd-fY",style:d},o)],t(r,0,i)},assign(e){this.set(e);let{props:t}=e,{text:r,bind:i,format:l,borderwidth:a,width:n,height:h}=t;if(i.id){let e=i.fields[0];if(i._tip)r=i._tip;else if(i._data){let t=i._data;s(t)&&(t=t[0]),r=t[e.id],r=d._ii(l,r,t)}else r=`[\u7ed1\u5b9a:${e.name}]`}let p=o(n,h)/2;a>p&&(a=p),this.set({bw:a,text:r})},render(){this.digest()}})})),define("6r/tag/index",["65"],((e,t,r)=>{let i=e("65"),{View:d,applyStyle:o,isArray:s,isObject:l}=i;o("rd-iP",".rd-ik{padding:1px 4px;border-radius:2px;text-decoration:none;margin:4px;display:inline-block}"),r.exports=d.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a}=e;s=[];for(let e=l.words,r=null==e?void 0:e.length,i=0;i{let i=e("65"),d=e("../../6h/xsheet"),{View:o,mark:s,node:l}=i;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a,error:n,i18n:h}=e;return d="",d+=n?" "+n+" ":" "+h("jA")+" ",o=[t(0,d)],s=[t("div",{id:"_rd_tip_"+r,class:"rd-e1 rd-eH rd-eK rd-em"},o)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+l.x+a+";top:"+l.y+a+";height:"+l.height+a+";opacity:"+l.alpha+";width:"+l.width+a,id:"_rd_sheet_"+r},s)],t(r,0,i)},init(){this.on("destroy",(()=>{this._j7&&window.luckysheet&&luckysheet.destroy({container:"_rd_sheet_"+this.id})}))},assign(e){this.set(e)},async render(){let e=s(this,"_dM");if(this._jz)this.digest({error:this._jz});else{if(await this.digest(),!this._j7)try{if(await d(),e()){let e=this.get("props");luckysheet.create({showtoolbar:!1,showsheetbar:!1,showinfobar:!1,enableAddBackTop:!1,enableAddRow:!1,sheetFormulaBar:!1,showstatisticBar:!1,data:e.sheetData,cellRightClickConfig:{copy:!0,copyAs:!0,paste:!0,insertRow:!0,insertColumn:!0,deleteRow:!0,deleteColumn:!0,deleteCell:!0,hideRow:!1,hideColumn:!1,rowHeight:!1,columnWidth:!1,clear:!1,matrix:!1,sort:!1,filter:!1,chart:!1,image:!1,link:!1,data:!1,cellFormat:!1},container:"_rd_sheet_"+this.id}),this._j7=1;let t=l(`_rd_tip_${this.id}`);t.parentNode.removeChild(t)}}catch(e){this.digest({error:this._jz=e})}}}})})),define("6r/chart/chartjs/index",["65","../../../6h/7r","../../../6h/chart","../../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/chart"),s=e("../../../6h/format"),{node:l,View:a,mark:n,isArray:h,mix:p}=i;r.exports=a.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,error:a}=e;return o=[t("canvas",{id:"_rd_chart_c_"+r})],d="left:"+s.x+l+";top:"+s.y+l+";height:"+s.height+l+";opacity:"+s.alpha+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg);",s.background&&(d+="background:"+s.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fH rd-fY","data-tip":a||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d},o)],t(r,0,i)},init(){this.on("destroy",(()=>{this._ij&&this._ij.destroy()}))},assign(e){this.set(e)},_io(e){if(this._ij){let t=this._ij;p(t.config,e),t.update()}else{let t=l(`_rd_chart_${this.id}`),r=l(`_rd_chart_c_${this.id}`),i=new Chart(r,e);this._ij=i,t.dataset.tip=""}},async render(){let e=n(this,"_dM");await this.digest();try{await o();let t,r=this.get("props"),{bind:i,options:l}=r;if(i.id){let{_gP:e}=await d._in(i);t=e}if(e()){let e=s._ii(l,t,i.fields),r=JSON.stringify(e);this._ip!=r&&(this._ip=r,this._io(e))}}catch(t){e()&&(this._ij&&(this._ij.destroy(),this._ij=null),this.digest({error:t}))}}})})),define("6r/chart/line/index",["65","../../../6h/7r","../../../6h/echarts"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),{node:s,View:l,mark:a,isArray:n}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=s("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij.dispose()})),this._ij.setOption({tooltip:{trigger:"axis"},xAxis:{data:["\u8bf7\u5148\u7ed1\u5b9a\u6570\u636e\u548cX\u8f74\u7684\u6570\u636e"]},yAxis:{type:"value"}},!0),e.dataset.tip=""}this._ij.resize()},async render(){let e=a(this,"_dM");await this.digest();try{if(await o(),e()){let e=this.get("props");this._ik(),this._ij.setOption({title:{text:e.title,x:e.titleAlign},color:e.colors});let t=this._il,r=JSON.stringify(e.bind)+JSON.stringify(e.xBind);t!=r&&(this._il=r,this._im(e))}}catch(t){e()&&this.digest({error:t})}},async _im(e){let t=this._ij,{bind:r,xBind:i}=e;if(r.id&&i.id){let e=a(this,"_im"),{_gP:o}=await d._in(r);if(e()){n(o)||(o=[o]);let e=[],d=[];for(let t of o){for(let r of i.fields)e.push(t[r.id]);let o=0;for(let e of r.fields){let r=d[o];r||(d[o]=r={data:[],type:"line"}),r.data.push(t[e.id]),o++}}t.setOption({xAxis:{data:e},series:d})}}else t.setOption({xAxis:{data:["\u8bf7\u5148\u7ed1\u5b9a\u6570\u636e\u548cX\u8f74\u7684\u6570\u636e"]},series:[{data:[],type:"line"}]})}})})),define("6r/chart/funnel/index",["65","../../../6h/7r","../../../6h/echarts"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),{node:s,View:l,mark:a,isArray:n}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=s("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij.dispose()})),this._ij.setOption({series:[{type:"funnel",min:0,max:100,minSize:"0%",maxSize:"100%",gap:2,label:{show:!0,position:"inside"},data:[{value:100,name:"\u8bf7\u7ed1\u5b9a\u6570\u636e"}]}]},!0),e.dataset.tip=""}this._ij.resize()},async render(){let e=a(this,"_dM");await this.digest();try{if(await o(),e()){let e=this.get("props");this._ik(),this._ij.setOption({title:{text:e.title,x:e.titleAlign},color:e.colors});let t=this._il,r=JSON.stringify(e.bind);t!=r&&(this._il=r,this._im(e))}}catch(t){e()&&this.digest({error:t})}},async _im(e){let{bind:t,showProgress:r,roundCap:i,color:o}=e,s=this._ij,{series:l}=this._ij.getOption();if(t.id){let e=a(this,"_im"),{_gP:r}=await d._in(t);if(e()){n(r)||(r=[r]);let e=[],i=r[0];if(i){for(let r of t.fields)e.push({value:i[r.id],name:r.name});l[0].data=e,s.setOption({series:l})}}}else l[0].data=[{value:100,name:"\u8bf7\u7ed1\u5b9a\u6570\u636e"}],s.setOption({series:l})}})})),define("6r/chart/bar/index",["65","../../../6h/7r","../../../6h/echarts"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),{node:s,View:l,mark:a,isArray:n}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=s("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij.dispose()}));let t=["\u8bf7\u7ed1\u5b9a\u6570\u636e"],r=[100];this._ij.setOption({tooltip:{trigger:"axis"},xAxis:{data:t},yAxis:{type:"value"},series:[{data:r,type:"bar"}]},!0),e.dataset.tip=""}this._ij.resize()},async render(){let e=a(this,"_dM");await this.digest();try{if(await o(),e()){let e=this.get("props");this._ik(),this._ij.setOption({title:{text:e.title,x:e.titleAlign},color:e.color});let t=this._il,r=JSON.stringify(e.bind);t!=r&&(this._il=r,this._im(e))}}catch(t){e()&&this.digest({error:t})}},async _im(e){let{bind:t}=e;if(t.id){let e=a(this,"_im"),{_gP:r}=await d._in(t);if(e()){n(r)||(r=[r]);let e=r[0],i=[],d=[];if(e){for(let r of t.fields)i.push(r.name),d.push(e[r.id]);this._ij.setOption({xAxis:{data:i},series:[{data:d,type:"bar"}]})}}}}})})),define("6r/chart/meter/index",["65","../../../6h/7r","../../../6h/echarts"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),{node:s,View:l,mark:a,isArray:n}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=s("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij.dispose()})),this._ij.setOption({series:[{type:"gauge",detail:{formatter:"{value}%"},data:[{value:0,name:"\u8bf7\u7ed1\u5b9a\u6570\u636e"}],itemStyle:{color:this.get("props").color}}]},!0),e.dataset.tip=""}this._ij.resize()},async render(){let e=a(this,"_dM");await this.digest();try{if(await o(),e()){let e=this.get("props");this._ik();let{series:t}=this._ij.getOption();t[0].progress={show:e.showProgress,roundCap:e.roundCap},t[0].itemStyle={color:e.color},this._ij.setOption({series:t,title:{text:e.title,x:e.titleAlign}});let r=this._il,i=JSON.stringify(e.bind);r!=i&&(this._il=i,this._im(e))}}catch(t){e()&&this.digest({error:t})}},async _im(e){let{bind:t,showProgress:r,roundCap:i,color:o}=e,s=this._ij,{series:l}=this._ij.getOption();if(t.id){let e=a(this,"_im"),{_gP:h}=await d._in(t);if(e()){n(h)||(h=[h]);let e=[],d=h[0];if(d){for(let r of t.fields)e.push({value:d[r.id],name:r.name});l[0].progress={show:r,roundCap:i},l[0].itemStyle={color:o},l[0].data=e,s.setOption({series:l})}}}else l[0].data=[{value:0,name:"\u8bf7\u7ed1\u5b9a\u6570\u636e"}],s.setOption({series:l})}})})),define("6r/chart/pie/index",["65","../../../6h/7r","../../../6h/echarts"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),{node:s,View:l,mark:a,isArray:n}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=s("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij.dispose()})),this._ij.setOption({series:[{data:[{value:0,name:"\u8bf7\u7ed1\u5b9a\u6570\u636e"}],type:"pie"}]},!0),e.dataset.tip=""}this._ij.resize()},async render(){let e=a(this,"_dM");await this.digest();try{if(await o(),e()){let e=this.get("props");this._ik(),this._ij.setOption({title:{text:e.title,x:e.titleAlign},color:e.colors});let t=this._il,r=JSON.stringify(e.bind);t!=r&&(this._il=r,this._im(e))}}catch(t){e()&&this.digest({error:t})}},async _im(e){let{bind:t}=e;if(t.id){let e=a(this,"_im"),{_gP:r}=await d._in(t);if(e()){n(r)||(r=[r]);let e=[],i=r[0];if(i){for(let r of t.fields)e.push({value:i[r.id],name:r.name});this._ij.setOption({series:[{data:e,type:"pie"}]})}}}}})})),define("6r/chart/scatter/index",["65","../../../6h/7r","../../../6h/echarts","../../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),s=e("../../../6h/format"),{node:l,View:a,mark:n,isArray:h}=i;r.exports=a.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=l("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij&&this._ij.dispose()})),e.dataset.tip=""}this._ij.resize()},async render(){let e=n(this,"_dM");await this.digest();try{await o();let t,r=this.get("props"),{bind:i,options:l}=r;if(i.id){let{_gP:e}=await d._in(i);t=e}if(e()){this._ik();let e=s._ii(l,t,i.fields);this._ij.setOption(e)}}catch(t){e()&&(this._ij&&(this._ij.dispose(),this._ij=null),this.digest({error:t}))}}})})),define("6r/chart/radar/index",["65","../../../6h/7r","../../../6h/echarts","../../../6h/format"],((e,t,r)=>{let i=e("65"),d=e("../../../6h/7r"),o=e("../../../6h/echarts"),s=e("../../../6h/format"),{node:l,View:a,mark:n,isArray:h}=i;r.exports=a.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s,error:l}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",o.background&&(d+="background:"+o.background+";"),i=[t("div",{class:"rd-et rd-f4 rd-fY","data-tip":l||"\u6b63\u5728\u52a0\u8f7d\u56fe\u8868\u7ec4\u4ef6...",id:"_rd_chart_"+r,style:d})],t(r,0,i)},assign(e){this.set(e)},_ik(){if(!this._ij){let e=l("_rd_chart_"+this.id);this._ij=echarts.init(e),this.on("destroy",(()=>{this._ij&&this._ij.dispose()})),e.dataset.tip=""}this._ij.resize()},async render(){let e=n(this,"_dM");await this.digest();try{await o();let t,r=this.get("props"),{bind:i,options:l}=r;if(i.id){let{_gP:e}=await d._in(i);t=e}if(e()){this._ik();let e=s._ii(l,t,i.fields);this._ij.setOption(e)}}catch(t){e()&&(this._ij&&(this._ij.dispose(),this._ij=null),this.digest({error:t}))}}})})),define("6r/flow/annotation/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.height);return l=[t("path",{d:"M20 0L0 0L0 "+u+"L20 "+u,style:"fill:none;stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],d="left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)",n.fillColor&&(d+=";background:"+n.fillColor),i=[t("div",{class:"rd-et rd-fY",style:d},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/card/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 "+x/4+"L0 "+x+"L"+u+" "+x+"L"+u+" 0L"+u/4+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/connector/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,n,{toUnit:h,props:p,unit:c,toScale:f,toPx:g,ox:u,oy:x,animation:m,scale:y,time:w,textReturn:_}=e,b=Math.max,v=h(1);if(a=[],o=[],2==p.endArrow?(d=[t("path",{d:"M2 1L8 3L2 5z",style:"fill:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 8 6",refX:7,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):3==p.endArrow?(d=[t("path",{d:"M2 1L7 3L2 5z",style:"fill:#fff;stroke:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 8 6",refX:7,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):4==p.endArrow?(d=[t("path",{d:"M2 1L8 3L2 5",style:"fill:none;stroke:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 8 6",refX:7,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):5==p.endArrow?(d=[t("path",{d:"M4 1L7 3L4 5L1 3z",style:"fill:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 8 6",refX:7,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):6==p.endArrow?(d=[t("path",{d:"M4 1L7 3L4 5L1 3z",style:"fill:#fff;stroke:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 8 6",refX:8,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):7==p.endArrow?(d=[t("circle",{cx:3,cy:3,r:2,style:"fill:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 6 6",refX:5,refY:3,orient:"auto",markerWidth:6,markerHeight:6},d))):8==p.endArrow?(d=[t("circle",{cx:3,cy:3,r:2,style:"fill:#fff;stroke:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 6 6",refX:6,refY:3,orient:"auto",markerWidth:6,markerHeight:6},d))):9==p.endArrow&&(d=[t("path",{d:"M2 4L6 1M2 4L6 7",style:"fill:none;stroke:"+p.color},1)],o.push(t("marker",{id:"a_"+r,viewBox:"0 0 6 8",refX:6,refY:4,orient:"auto",markerWidth:6,markerHeight:8},d))),2==p.startArrow?(d=[t("path",{d:"M6 1L0 3L6 5z",style:"fill:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 8 6",refX:1,refY:3,markerWidth:8,markerHeight:6,orient:"auto"},d))):3==p.startArrow?(d=[t("path",{d:"M6 1L1 3L6 5z",style:"fill:#fff;stroke:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 8 6",refX:1,refY:3,markerWidth:8,markerHeight:6,orient:"auto"},d))):4==p.startArrow?(d=[t("path",{d:"M6 1L0 3L6 5",style:"fill:none;stroke:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 8 6",refX:1,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):5==p.startArrow?(d=[t("path",{d:"M4 1L7 3L4 5L1 3z",style:"fill:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 8 6",refX:1,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):6==p.startArrow?(d=[t("path",{d:"M4 1L7 3L4 5L1 3z",style:"fill:#fff;stroke:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 8 6",refX:0,refY:3,orient:"auto",markerWidth:8,markerHeight:6},d))):7==p.startArrow?(d=[t("circle",{cx:3,cy:3,r:2,style:"fill:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 6 6",refX:1,refY:3,orient:"auto",markerWidth:6,markerHeight:6},d))):8==p.startArrow?(d=[t("circle",{cx:3,cy:3,r:2,style:"fill:#fff;stroke:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 6 6",refX:0,refY:3,orient:"auto",markerWidth:6,markerHeight:6},d))):9==p.startArrow&&(d=[t("path",{d:"M4 4L0 1M4 4L0 7",style:"fill:none;stroke:"+p.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 6 8",refX:0,refY:4,orient:"auto",markerWidth:6,markerHeight:8},d))),a.push(t("defs",0,o)),s="M"+g(p.startX-p.x+u)+" "+g(p.startY-p.y+x),"line"==p.lineType)s+="L";else if("bezier"==p.lineType)s+="C"+g(p.ctrl1X-p.x+u)+" "+g(p.ctrl1Y-p.y+x)+" "+g(p.ctrl2X-p.x+u)+" "+g(p.ctrl2Y-p.y+x)+" ";else{for(let e=p.points,t=0,r=e.length;t{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M40 0L0 "+x+"L"+(u-40)+" "+x+"L"+u+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/database/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M"+u/8+" 0L"+u/8*7+" 0A"+u/8+" "+x/2+" 0 0 1 "+u/8*7+" "+x+"L"+u/8+" "+x+"A"+u/8+" "+x/2+" 0 0 1 "+u/8+" 0M"+u/8*7+" "+x+"A"+u/8+" "+x/2+" 0 0 1 "+u/8*7+" 0",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/decision/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M"+u/2+" 0L0 "+x/2+"L"+u/2+" "+x+"L"+u+" "+x/2+"z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/display/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M"+u/8+" 0L"+u/8*7+" 0A"+u/8+" "+x/2+" 0 0 1 "+u/8*7+" "+x+"L"+u/8+" "+x+"L0 "+x/2+"z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/estore/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M"+u/8+" 0L"+u+" 0A"+u/8+" "+x/2+" 0 0 0 "+u+" "+x+"L"+u/8+" "+x+"A"+u/8+" "+x/2+" 0 0 1 "+u/8+" 0",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/document/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0L0 "+x+"C"+u/4+" "+1.5*x+" "+.75*u+" "+x/2+" "+u+" "+x+"L"+u+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/istore/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=(p(n.width),p(n.height));return l=[t("path",{d:"M0 0L0 "+u+"L"+u+" "+u+"L"+u+" 0ZM"+.1*u+" 0L"+.1*u+" "+u+"M0 "+.1*u+"L"+u+" "+.1*u,style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/looplimit/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i,{min:l}=Math;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,n,{props:h,unit:p,toPx:c,min:f,ox:g,oy:u,textReturn:x}=e;d="";let m=c(h.width),y=c(h.height);d+=" ";let w=f(m,y);return a=[t("path",{d:"M"+w/4+" 0L0 "+w/4+"L0 "+y+"L"+m+" "+y+"L"+m+" "+w/4+"L"+(m-w/4)+" 0z",style:"fill:"+(h.fillColor||"none")+";stroke:"+h.color+";stroke-width:"+h.linewidth+p,"stroke-dasharray":h.dash+p},1)],s=[t(0,x(h.text),1)],o="padding:"+h.padding+p+";font-size:"+h.textFontsize+p+";width:"+h.textWidth+p+";color:"+h.textForecolor+";",h.textBackground&&(o+="background:"+h.textBackground+";"),o+="letter-spacing:"+h.textLetterspacing+p+";font-family:"+h.textFontfamily,l=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:o},s)],a.push(t("foreignObject",{x:h.textX-h.x+g+p,y:h.textY-h.y+u+p,width:h.textWidth+p,height:h.textHeight+p},l)),n=[t("svg",{class:"rd-et rd-fI",style:"width:"+h.width+p+";height:"+h.height+p+";opacity:"+h.alpha},a)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+h.x+p+";top:"+h.y+p+";width:"+h.width+p+";height:"+h.height+p+";transform:rotate("+h.rotate+"deg)"},n)],t(r,0,i)},init(){this.set({min:l,toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/moperation/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0L"+.1*u+" "+x+"L"+.9*u+" "+x+"L"+u+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/manual/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 "+x/4+"L0 "+x+"L"+u+" "+x+"L"+u+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/pageref/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0L0 "+.75*x+"L"+u/2+" "+x+"L"+u+" "+.75*x+"L"+u+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/parallel/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0L"+u+" 0M"+u+" "+x+"L0 "+x,style:"stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],d="left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)",n.fillColor&&(d+=";background:"+n.fillColor),i=[t("div",{class:"rd-et rd-fY",style:d},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/qdata/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("ellipse",{cx:u/2,cy:x/2,rx:u/2,ry:x/2,style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1),t("path",{d:"M"+u/2+" "+x+"L"+u+" "+x,style:"fill:none;stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/prepare/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M"+u/4+" 0L0 "+x/2+"L"+u/4+" "+x+"L"+u/4*3+" "+x+"L"+u+" "+x/2+"L"+u/4*3+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/process/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0L0 "+x+"L"+u+" "+x+"L"+u+" 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/ref/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("ellipse",{cx:u/2,cy:x/2,rx:u/2,ry:x/2,style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/subprocess/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0L0 "+x+"L"+u+" "+x+"L"+u+" 0ZM"+.1*u+" 0L"+.1*u+" "+x+"M"+.9*u+" 0L"+.9*u+" "+x,style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/tape/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,toPx:p,ox:c,oy:f,textReturn:g}=e,u=p(n.width),x=p(n.height);return l=[t("path",{d:"M0 0C"+u/4+" "+.5*x+" "+.75*u+" "+-x/2+" "+u+" 0L"+u+" "+x+"C"+.75*u+" "+.5*x+" "+.25*u+" "+1.5*x+" 0 "+x+"L0 0z",style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h},1)],o=[t(0,g(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+c+h,y:n.textY-n.y+f+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/flow/terminator/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,a,{props:n,unit:h,ox:p,oy:c,textReturn:f}=e;return l=[t("rect",{x:0,y:0,width:n.width+h,height:n.height+h,style:"fill:"+(n.fillColor||"none")+";stroke:"+n.color+";stroke-width:"+n.linewidth+h,"stroke-dasharray":n.dash+h,rx:20,ry:n.height/2+h},1)],o=[t(0,f(n.text),1)],d="padding:"+n.padding+h+";font-size:"+n.textFontsize+h+";width:"+n.textWidth+h+";color:"+n.textForecolor+";",n.textBackground&&(d+="background:"+n.textBackground+";"),d+="letter-spacing:"+n.textLetterspacing+h+";font-family:"+n.textFontfamily,s=[t("div",{class:"rd-e1 rd-e9 rd-eH rd-eK rd-em",style:d},o)],l.push(t("foreignObject",{x:n.textX-n.x+p+h,y:n.textY-n.y+c+h,width:n.textWidth+h,height:n.textHeight+h},s)),a=[t("svg",{class:"rd-et rd-fI",style:"width:"+n.width+h+";height:"+n.height+h+";opacity:"+n.alpha},l)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+n.x+h+";top:"+n.y+h+";width:"+n.width+h+";height:"+n.height+h+";transform:rotate("+n.rotate+"deg)"},a)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/lscreen/border-bg/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,{props:d,unit:o}=e;return i=[t("div",{class:"rd-et rd-fY",style:"left:"+d.x+o+";top:"+d.y+o+";height:"+d.height+o+";opacity:"+d.alpha+";width:"+d.width+o+";transform:rotate("+d.rotate+"deg);background:url(./images/border_1.png);background-size:"+d.width+o+" "+d.height+o})],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/lscreen/border-css2/index",["65"],((e,t,r)=>{let i,d=e("65"),{View:o,applyStyle:s}=d;s("rd-ha",".rd-if{border-radius:10px;border:1px #0174f5 solid;padding:1px;background:#0208171a}.rd-ig{border:2px solid #016ae0;border-radius:10px}"),r.exports=o.extend({tmpl:(e,t,r)=>{let d,o,{props:s,unit:l}=e;return o=i?[i]:[i=t("div",{_:"cO",class:"rd-el rd-em rd-ig"})],d=[t("div",{class:"rd-et rd-fY rd-if",style:"left:"+s.x+l+";top:"+s.y+l+";height:"+s.height+l+";opacity:"+s.alpha+";width:"+s.width+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,d)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/lscreen/border-css4/index",["65"],((e,t,r)=>{let i,d,o=e("65"),{View:s,applyStyle:l}=o;l("rd-hd",".rd-ih{border:1px solid #19ba8b2b;background:#0001}.rd-ii::after,.rd-ii::before,.rd-ij::after,.rd-ij::before{position:absolute;content:'';width:10px;height:10px}.rd-ii::before{border-left:2px solid #02a6b5;left:0;border-top:2px solid #02a6b5}.rd-ii::after{border-right:2px solid #02a6b5;right:0;border-top:2px solid #02a6b5}.rd-ij::before{border-left:2px solid #02a6b5;left:0;bottom:0;border-bottom:2px solid #02a6b5}.rd-ij::after{border-right:2px solid #02a6b5;right:0;bottom:0;border-bottom:2px solid #02a6b5}"),r.exports=s.extend({tmpl:(e,t,r)=>{let o,s,{props:l,unit:a}=e;return s=i?[i]:[i=t("div",{_:"cO",class:"rd-el rd-et rd-fS rd-ii"})],d?s.push(d):s.push(d=t("div",{_:"cP",class:"rd-el rd-et rd-fS rd-fV rd-ij"})),o=[t("div",{class:"rd-et rd-fY rd-ih",style:"left:"+l.x+a+";top:"+l.y+a+";height:"+l.height+a+";opacity:"+l.alpha+";width:"+l.width+a+";transform:rotate("+l.rotate+"deg)"},s)],t(r,0,o)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/lscreen/image/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,{props:o,unit:s}=e;return d="left:"+o.x+s+";top:"+o.y+s+";height:"+o.height+s+";opacity:"+o.alpha+";width:"+o.width+s+";transform:rotate("+o.rotate+"deg);",(o.rotateX||o.rotateY)&&(d+=";transform:",o.rotateX&&(d+="rotateX(180deg)"),o.rotateY&&(d+=" rotateY(180deg)")),i=[t("img",{class:"rd-e_ rd-et rd-fY",src:o.image,style:d},1)],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/battery/index",["65"],((e,t,r)=>{let i={viewBox:"0 0 1024 1024"},d=e("65"),{min:o}=Math;r.exports=d.View.extend({tmpl:(e,t,r)=>{let d,o,s,{props:l,unit:a}=e,n=8.1*(100-l.power),h=8.1*l.power;return o=[],o.push(t("path",{fill:l.fill,d:"M330 "+(140+n)+"h350v"+h+"H330z"},1)),l.charging&&o.push(t("path",{fill:l.lightning,d:"M499.712 801.131l97.445-324.376-97.445 12.783V266.735l-93.415 314.798 93.415-29.927zm50.077-772.228h-94.704z",stroke:l.fill,"stroke-width":"10px"},1)),o.push(t("path",{fill:l.outline,d:"M440 0c-47.368 0-47.368 76.338-48.788 76.338h190.86S582.072 0 534.704 0z"},1),t("path",{fill:l.outline,d:"M247.742 168.663V919.75c0 99.328 93.712 100.121 93.712 100.121h327.879s93.712 0 93.712-100.12V168.662c0-100.121-93.712-100.121-93.712-100.121H341.454s-93.712 0-93.712 100.12zm427.206-60.45s48.458-.065 48.458 51.234V928.9c0 51.3-48.458 51.3-48.458 51.3H335.84s-48.458 0-48.458-51.3V159.48c0-52.885 48.458-51.3 48.458-51.3h339.11z"},1)),s=[t("svg",i,o)],d=[t("div",{class:"rd-et rd-fY",style:"left:"+l.x+a+";top:"+l.y+a+";width:"+l.width+a+";height:"+l.height+a+";opacity:"+l.alpha+";transform:rotate("+l.rotate+"deg)"},s)],t(r,0,d)},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:d}=t,s=o(i,d)/2;r>s&&(r=s),this.set(e),this.set({bw:r})},render(){this.digest()}})})),define("6r/svg/arc/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{PI:o,cos:s,sin:l}=Math,{State:a,View:n}=i;r.exports=n.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a,toPx:n,startX:h,ox:p,startY:c,oy:f,big:g,endX:u,endY:x}=e;return o=[t("path",{d:"M"+n(h-l.x+p)+" "+n(c-l.y+f)+"A"+n(l.rx)+" "+n(l.ry)+" 0 "+(g?1:0)+" 1 "+n(u-l.x+p)+" "+n(x-l.y+f)+(l.closed?"z":""),style:"fill:"+(l.fillcolor||"none")+";stroke:"+l.color+";stroke-width:"+l.linewidth+a+";opacity:"+l.alpha,"stroke-dasharray":l.dash+a},1)],s=[t("svg",{class:"rd-et rd-fI",style:"width:"+l.width+a+";height:"+l.height+a},o)],d="left:"+l.x+a+";top:"+l.y+a+";width:"+l.width+a+";height:"+l.height+a,l.rotate&&(d+=";transform:rotate("+l.rotate+"deg)"),i=[t("div",{class:"rd-et rd-fY",style:d},s)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:a.get("d7")||0,oy:a.get("d8")||0})},assign(e){this.set(e);let{props:t}=e,{startAngle:r,endAngle:i,rx:d,ry:a,centerX:n,centerY:h}=t;r=parseFloat(r),i=parseFloat(i),i360&&(r+=360,p=i-r);let c=p>=180,f=o/180,g=n+d*s(r*f),u=h+a*l(r*f),x=n+d*s(i*f),m=h+a*l(i*f);this.set({big:c,startX:g,startY:u,endX:x,endY:m})},render(){this.digest()}})})),define("6r/svg/bezier2/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,{props:a,unit:n,toPx:h,ox:p,oy:c}=e;return d=[t("path",{d:"M0 0 L16 8 L0 16z",style:"fill:"+a.color},1)],o=[t("marker",{id:"a_"+r,viewBox:"0 0 16 16",refX:8,refY:8,markerWidth:8,markerHeight:8,orient:"auto"},d)],d=[t("path",{d:"M16 0 L0 8 L16 16z",style:"fill:"+a.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 16 16",refX:8,refY:8,markerWidth:8,markerHeight:8,orient:"auto"},d)),s=[t("defs",0,o),t("path",{d:"M"+h(a.ctrl1X-a.x+p)+" "+h(a.ctrl1Y-a.y+c)+"Q"+h(a.ctrl2X-a.x+p)+" "+h(a.ctrl2Y-a.y+c)+" "+h(a.ctrl3X-a.x+p)+" "+h(a.ctrl3Y-a.y+c),style:"fill:"+(a.fillcolor||"none")+";stroke:"+a.color+";stroke-width:"+a.linewidth+n+";opacity:"+a.alpha,"stroke-dasharray":a.dash+n,"marker-start":a.startArrow&&"url(#as_"+r+")","marker-end":a.endArrow&&"url(#a_"+r+")"},1)],l=[t("svg",{class:"rd-et rd-fI",style:"width:"+a.width+n+";height:"+a.height+n},s)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+a.width+n+";height:"+a.height+n},l)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/bezier3/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,{props:a,unit:n,toPx:h,ox:p,oy:c}=e;return d=[t("path",{d:"M0 0 L16 8 L0 16z",style:"fill:"+a.color},1)],o=[t("marker",{id:"a_"+r,viewBox:"0 0 16 16",refX:8,refY:8,markerWidth:8,markerHeight:8,orient:"auto"},d)],d=[t("path",{d:"M16 0 L0 8 L16 16z",style:"fill:"+a.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 16 16",refX:8,refY:8,markerWidth:8,markerHeight:8,orient:"auto"},d)),s=[t("defs",0,o),t("path",{d:"M"+h(a.ctrl1X-a.x+p)+","+h(a.ctrl1Y-a.y+c)+" C"+h(a.ctrl2X-a.x+p)+" "+h(a.ctrl2Y-a.y+c)+" "+h(a.ctrl3X-a.x+p)+" "+h(a.ctrl3Y-a.y+c)+" "+h(a.ctrl4X-a.x+p)+","+h(a.ctrl4Y-a.y+c),style:"fill:"+(a.fillcolor||"none")+";stroke:"+a.color+";stroke-width:"+a.linewidth+n+";opacity:"+a.alpha,"stroke-dasharray":a.dash+n,"marker-start":a.startArrow&&"url(#as_"+r+")","marker-end":a.endArrow&&"url(#a_"+r+")"},1)],l=[t("svg",{class:"rd-et rd-fI",style:"width:"+a.width+n+";height:"+a.height+n},s)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+a.width+n+";height:"+a.height+n},l)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/brace/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,toPx:a}=e,n=a(s.width),h=a(s.height);return d=[t("path",{d:"M"+n+" 0C0 0 "+n+" "+h/2+" 0 "+h/2+"M0 "+h/2+"C"+n+" "+h/2+" 0 "+h+" "+n+" "+h,style:"fill:none;stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},init(){this.set({toPx:d.dY})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/ellipse/index",["65"],((e,t,r)=>{let i=e("65"),{State:d,View:o}=i;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,o,s,{props:l,unit:a,ox:n,oy:h}=e;return o=[t("ellipse",{cx:l.centerX-l.x+n+a,cy:l.centerY-l.y+h+a,rx:l.rx+a,ry:l.ry+a,style:"fill:"+(l.fillcolor||"none")+";stroke:"+l.color+";stroke-width:"+l.linewidth+a+";opacity:"+l.alpha,"stroke-dasharray":l.dash+a},1)],s=[t("svg",{class:"rd-et rd-fI",style:"width:"+l.width+a+";height:"+l.height+a},o)],d="left:"+l.x+a+";top:"+l.y+a+";width:"+l.width+a+";height:"+l.height+a,l.rotate&&(d+=";transform:rotate("+l.rotate+"deg)"),i=[t("div",{class:"rd-et rd-fY",style:d},s)],t(r,0,i)},init(){this.set({ox:d.get("d7")||0,oy:d.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/circle/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l}=e;return d=[t("circle",{r:s.r+l,cx:s.r+l,cy:s.r+l,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/fan/index",["65"],((e,t,r)=>{let i={viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg"},d=e("65"),{View:o}=d;r.exports=o.extend({tmpl:(e,t,r)=>{let d,o,s,l,{props:a,unit:n}=e;return o=[],a.working&&o.push(t("animateTransform",{attributeName:"transform",attributeType:"XML",type:"rotate",from:"0 500 510",to:"360 500 510",dur:a.speed+"s",repeatCount:"indefinite"},1)),s=[t("path",{d:"M941.376 595.693c-15.633-99.283-108.77-158.96-225.173-146.083-48.627 5.366-134.595 45.824-145.204 20.339-18.51-86.894 90.139-112.135 169.397-116.183 103.305-5.291 137.717-64.237 87.554-153.447C774.318 104.928 639.771 47.324 552 82.173c-90.306 35.85-127.715 134.389-100.112 265.985 7.074 33.509 39.706 77.992-12.949 92.087-39.238 10.535-65.287-28.484-75.089-67.847-7.804-31.46-15.95-63.334-18.899-95.502-10.217-111.914-71.212-140.547-165.985-76.334-94.038 63.75-141.129 186.372-97.012 270.216 56.36 107.111 152.837 115.744 258.217 92.453 34.02-7.535 79.916-39.556 92.746 14.608 8.584 36.339-31.217 60.679-69.213 75.261-31.802 12.241-62.895 15.998-96.208 17.656-105.185 5.171-135.523 61.58-84.067 152.617 54.021 95.624 190.958 151.399 277.289 112.94 97.331-43.336 152.473-156.738 102.137-289.75-4.391-24.192-33.604-54.335-5.534-67.163 26.848-12.242 50.676 8.413 63.918 27.411 31.021 44.582 44.287 93.062 38.192 151.181-7.584 72.233 32.874 107.134 107.988 93.453 97.964-17.876 190.1-153.131 173.957-255.752z m-440.662-46.678c-21.122 0-38.24-17.121-38.24-38.239 0-21.12 17.118-38.24 38.24-38.24 21.122 0 38.24 17.12 38.24 38.24 0 21.118-17.118 38.239-38.24 38.239z",fill:a.fill},o)],l=[t("svg",i,s)],d=[t("div",{class:"rd-et rd-fH rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+a.width+n+";height:"+a.height+n+";opacity:"+a.alpha},l)],t(r,0,d)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/line/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,s,l,{props:a,unit:n,toPx:h,ox:p,oy:c}=e,f=Math.max;return d=[t("path",{d:"M0 0 L16 8 L0 16z",style:"fill:"+a.color},1)],o=[t("marker",{id:"a_"+r,viewBox:"0 0 16 16",refX:8,refY:8,markerWidth:8,markerHeight:8,orient:"auto"},d)],d=[t("path",{d:"M16 0 L0 8 L16 16z",style:"fill:"+a.color},1)],o.push(t("marker",{id:"as_"+r,viewBox:"0 0 16 16",refX:8,refY:8,markerWidth:8,markerHeight:8,orient:"auto"},d)),s=[t("defs",0,o),t("path",{d:"M"+h(a.ctrl1X-a.x+p)+" "+h(a.ctrl1Y-a.y+c)+"L"+h(a.ctrl2X-a.x+p)+" "+h(a.ctrl2Y-a.y+c),style:"fill:none;stroke:"+a.color+";stroke-width:"+a.linewidth+n+";opacity:"+a.alpha,"stroke-dasharray":a.dash+n,"marker-start":a.startArrow&&"url(#as_"+r+")","marker-end":a.endArrow&&"url(#a_"+r+")"},1)],l=[t("svg",{class:"rd-et rd-fI",style:"width:"+f(a.width,1)+n+";height:"+f(a.height,1)+n},s)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+f(a.width,1)+n+";height:"+f(a.height,1)+n},l)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/polygon/index",["65","../../../64/67","../../../6h/7u"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),o=e("../../../6h/7u"),{State:s,View:l}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i=(e=>{let t=s.get("d7")||0,r=s.get("d8")||0,i=o._jU(e),l=0,a=[];for(let o of i)a.push(l?"L":"M"),l=1,a.push(`${d.dY(e[o+"X"]-e.x+t)} ${d.dY(e[o+"Y"]-e.y+r)}`);return a.push("z"),a.join("")})(t);this.set({props:t,unit:r,path:i})},render(){this.digest()}})})),define("6r/svg/polyline2/index",["65","../../../64/67","../../../6h/7u"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),o=e("../../../6h/7u"),{State:s,View:l}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l,"stroke-linejoin":s.linejoin},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,{x:i,y:l}=t;i-=s.get("d7")||0,l-=s.get("d8")||0;let a,n=o._jU(t);for(let e of n){let r=t[e+"X"],o=t[e+"Y"];a?a+="L":a="M",a+=d.dY(r-i)+","+d.dY(o-l)}this.set({unit:r,props:t,path:a})},render(){this.digest()}})})),define("6r/svg/polyline/index",["65","../../../64/67","../../../64/68"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),o=e("../../../64/68"),{State:s,View:l}=i,{min:a,max:n}=Math,h=e=>{let t=[],r=1,i=e[0];for(;r{let t="";for(let r of e)t+="L"+d.dY(r.x)+","+d.dY(r.y);return t};r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,{x:i,y:l,reverse:c,ctrl1X:f,ctrl1Y:g,ctrl2X:u,ctrl2Y:x,ctrl3X:m,ctrl3Y:y}=t;i-=s.get("d7")||0,l-=s.get("d8")||0;let w="M"+d.dY(f-i)+","+d.dY(g-l),_=a(f,m),b=a(g,y),v=n(f,m),k=n(g,y),j=u>=_&&u<=v,L=x>=b&&x<=k,Y="L"+d.dY(u-i)+","+d.dY(g-l)+"L"+d.dY(u-i)+","+d.dY(y-l)+"L"+d.dY(m-i)+","+d.dY(y-l),M="L"+d.dY(f-i)+","+d.dY(x-l)+"L"+d.dY(m-i)+","+d.dY(x-l)+"L"+d.dY(m-i)+","+d.dY(y-l);if(j&&L)w+=c?Y:M;else if(j)w+=M;else if(L)w+=Y;else{let e=((e,t)=>{let r=[],i=[e,t];for(let e of i){let t=h(e),i=0;for(let e=0;e{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i="M",{width:o,height:s,mod1X:l,mod1Y:a}=t,n=d.dY(o),h=d.dY(s),p=h/2,c=0,f=p*a;i+=c+" "+f,c=n*l,i+="L"+c+" "+f,i+="L"+c+" 0",i+="L"+n+" "+p,i+="L"+c+" "+h,i+="L"+c+" "+(h-f),i+="L0 "+(h-f)+"z",this.set({unit:r,props:t,path:i})},render(){this.digest()}})})),define("6r/svg/rbubble/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{min:o}=Math;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,{width:i,height:s,mod1X:l,mod1Y:a,radius:n,gapPosition:h,gapPRatio:p,gapRatio:c}=t,f=o(i/2,s/2);n>f&&(n=f);let g=[],u=d.dY(n),x=d.dY(i),m=d.dY(s),y=d.dY(l),w=d.dY(a),_=x-2*u,b=m-2*u,v="A"+u+","+u+",0,0,1,"+u+",0",k="A"+u+","+u+",0,0,1,"+x+","+u,j="A"+u+","+u+",0,0,1,"+(x-u)+","+m,L="A"+u+","+u+",0,0,1,0,"+(m-u);if("top"==h){let e=u+_*p,t=e+_*c;t>x-u&&(t=x-u),g.push(u,",0,L",e,",0","L",y,",",-w,"L",t,",0","L",x-u,",0",k,"L",x,",",m-u,j,"L",u,",",m,",",L,"L0,",u,v)}else if("right"==h){let e=u+b*p,t=e+b*c;t>m-u&&(t=m-u),g.push(u,",0,L",x-u,",0",k,"L",x,",",e,"L",x+y,",",w,"L",x,",",t,"L",x,",",m-u,j,"L",u,",",m,L,"L0,",u,v)}else if("bottom"==h){let e=u+_*p,t=e+_*c;t>x-u&&(t=x-u),g.push(u,",0,L",x-u,",0",k,"L",x,",",m-u,j,"L",t,",",m,"L",y,",",m+w,"L",e,",",m,"L",u,",",m,L,"L0,",u,v)}else if("left"==h){let e=u+b*p,t=e+b*c;t>m-u&&(t=m-u),g.push(u,",0,L",x-u,",0",k,"L",x,",",m-u,j,"L",u,",",m,L,"L0,",t,"L",-y,",",w,"L0,",e,"L0,",u,v)}this.set({unit:r,props:t,path:"M"+g.join("")})},render(){this.digest()}})})),define("6r/svg/rcorner/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i="M",{width:o,height:s,mod1Y:l,mod2X:a,mod2Y:n,mod3X:h}=t,p=d.dY(o),c=d.dY(s),f=c/2,g=p/2;i+="0 0",i+="L0 "+c,i+="L"+a*g+" "+(c-l*f),i+="L"+a*g+" "+n*f,i+="L"+(p-h*g)+" "+n*f,i+="L"+p+" 0z",this.set({unit:r,props:t,path:i})},render(){this.digest()}})})),define("6r/svg/rcard/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i="M",{width:o,height:s,mod1X:l,mod2Y:a}=t,n=d.dY(o),h=d.dY(s);i+=n*l+" 0",i+="L"+n+" 0",i+="L"+n+" "+h,i+="L0 "+h,i+="L0 "+h*a+"z",this.set({unit:r,props:t,path:i})},render(){this.digest()}})})),define("6r/svg/rcylinder/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a,cx:n,cy:h}=e;return d=[t("path",{d:a,style:"fill:"+(s.bodycolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1),t("ellipse",{cx:n,cy:h,rx:n,ry:h,style:"fill:"+(s.topcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,{width:i,height:o,mod1Y:s}=t;i=d.dY(i),o=d.dY(o);let l=i/2,a=o/2/2*s,n="M0,"+a;n+="L0,"+(o-a),n+="A"+l+","+a+",0 0 0,"+i+","+(o-a),n+="L"+i+","+a,n+="A"+l+","+a+",0 0 1,0,"+a,this.set({unit:r,props:t,cx:l,cy:a,path:n})},render(){this.digest()}})})),define("6r/svg/rcube/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path1:a,path2:n,path3:h,path4:p}=e;return d=[t("path",{d:a,style:"fill:"+(s.topcolor||"none")},1),t("path",{d:n,style:"fill:"+(s.frontcolor||"none")},1),t("path",{d:h,style:"fill:"+(s.sidecolor||"none")},1),t("path",{d:p,style:"fill:none;stroke:"+s.color+";stroke-width:"+s.linewidth+l,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg);opacity:"+s.alpha},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,{width:i,height:o,mod1Y:s}=t;i=d.dY(i),o=d.dY(o);let l=o*s;l>i&&(l=i);let a="M"+l+",0";a+="L"+i+",0",a+="L"+(i-l)+","+l,a+="L0,"+l+"z";let n="M0,"+l;n+="L0,"+o,n+="L"+(i-l)+","+o,n+="L"+(i-l)+","+l+"z";let h="M"+i+",0";h+="L"+i+","+(o-l),h+="L"+(i-l)+","+o,h+="L"+(i-l)+","+l+"z";let p="M0,"+l;p+="L0,"+o,p+="L"+(i-l)+","+o,p+="L"+i+","+(o-l),p+="L"+i+",0",p+="L"+l+",0z",p+="M"+i+",0",p+="L"+(i-l)+","+l,p+="L"+(i-l)+","+o,p+="M"+(i-l)+","+l,p+="L0,"+l,this.set({unit:r,props:t,path1:a,path2:n,path3:h,path4:p})},render(){this.digest()}})})),define("6r/svg/rcross/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i="M",{width:o,height:s,mod1X:l,mod1Y:a}=t;o=d.dY(o),s=d.dY(s);let n=o/2*l,h=s/2*a;i+="0 "+h,i+="L"+n+" "+h,i+="L"+n+" 0",i+="L"+(o-n)+" 0",i+="L"+(o-n)+" "+h,i+="L"+o+" "+h,i+="L"+o+" "+(s-h),i+="L"+(o-n)+" "+(s-h),i+="L"+(o-n)+" "+s,i+="L"+n+" "+s,i+="L"+n+" "+(s-h),i+="L0 "+(s-h)+"z",this.set({unit:r,props:t,path:i})},render(){this.digest()}})})),define("6r/svg/rdarrow/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i="M",{width:o,height:s,mod1X:l,mod1Y:a}=t;o=d.dY(o),s=d.dY(s);let n=s/2,h=n*a,p=o/2*l;i+="0 "+n,i+="L"+p+" 0",i+="L"+p+" "+h,i+="L"+(o-p)+" "+h,i+="L"+(o-p)+" 0",i+="L"+o+" "+n,i+="L"+(o-p)+" "+s,i+="L"+(o-p)+" "+(s-h),i+="L"+p+" "+(s-h),i+="L"+p+" "+s+"z",this.set({unit:r,props:t,path:i})},render(){this.digest()}})})),define("6r/svg/rect/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,toPx:a,ox:n,oy:h}=e;return d=[t("path",{d:"M"+a(s.ctrl1X-s.x+n)+" "+a(s.ctrl1Y-s.y+h)+"L"+a(s.ctrl2X-s.x+n)+" "+a(s.ctrl2Y-s.y+h)+"L"+a(s.ctrl3X-s.x+n)+" "+a(s.ctrl3Y-s.y+h)+"L"+a(s.ctrl4X-s.x+n)+" "+a(s.ctrl4Y-s.y+h)+"Z",style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/rect2/index",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l}=e;return d=[t("rect",{x:0,y:0,rx:s.roundX+l,ry:s.roundY+l,width:s.width+l,height:s.height+l,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/rpie/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{PI:o,cos:s,sin:l}=Math;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,startX:a,toPx:n,startY:h,big:p,endX:c,endY:f,cx:g,cy:u}=e;return d=[t("path",{d:"M"+(a-n(s.x))+" "+(h-n(s.y))+"A"+n(s.rx)+" "+n(s.ry)+" 0 "+(p?1:0)+" 1 "+(c-n(s.x))+" "+(f-n(s.y))+"L"+g+" "+u+"z",style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},init(){this.set({toPx:d.dY})},assign(e){this.set(e);let{props:t,unit:r}=e,{startAngle:i,endAngle:a,rx:n,ry:h,centerX:p,centerY:c,mod1X:f,mod1Y:g}=t;n=d.dY(n),h=d.dY(h),p=d.dY(p),c=d.dY(c),a360&&(i+=360,u=a-i);let x=u>=180,m=o/180,y=p+n*s(i*m),w=c+h*l(i*m),_=p+n*s(a*m),b=c+h*l(a*m),v=2*n*f,k=2*h*g;this.set({unit:r,big:x,cx:v,cy:k,startX:y,startY:w,endX:_,endY:b})},render(){this.digest()}})})),define("6r/svg/rmoon/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67");r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l+";opacity:"+s.alpha},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,{width:i,height:o,mod1X:s}=t;i=d.dY(i),o=d.dY(o);let l=o/2,a="M0,0";a+="A"+i+","+l+",0 0 1 0,"+o,a+="A"+s*i+","+l+",0 0 0 0 0",this.set({unit:r,props:t,path:a})},render(){this.digest()}})})),define("6r/svg/rstar/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{PI:o,sin:s,cos:l}=Math,{MAX_VALUE:a}=Number;r.exports=i.View.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l+";transform:rotate("+s.rotate+"deg)"},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i=o/180,n=d.dY(t.width)/2,h=n*(1-t.mod1Y),p=t.corner,c=360/p,f=c/2-90,g=[];for(let e=0;e {let t=-a,r=t,i=a,d=i;for(let o=0;ot&&(t=s),sr&&(r=l),l{let i={viewBox:"0 0 1294 1024"},d=e("65"),{min:o}=Math;r.exports=d.View.extend({tmpl:(e,t,r)=>{let d,o,s,l,{props:a,unit:n}=e;return s=[],o="",!a.connected||a.strength<1?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M112.88 689.631h155.428v244.244h-155.428v-244.244z",fill:o},1)),o="",!a.connected||a.strength<2?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M334.921 556.409h155.428v377.467h-155.428v-377.467z",fill:o},1)),o="",!a.connected||a.strength<3?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M579.164 400.98h133.223v532.895h-133.223v-532.895z",fill:o},1)),o="",!a.connected||a.strength<4?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M801.202 245.553h155.428v688.323h-155.428v-688.323z",fill:o},1)),o="",!a.connected||a.strength<5?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M1023.242 90.125h155.427v843.75h-155.428v-843.75z",fill:o},1)),a.connected||s.push(t("path",{fill:a.disconnect,d:"M301.188 81.702l83.042 82.935-251.446 252.884-83.042-82.935z"},1),t("path",{fill:a.disconnect,d:"M47.262 160.271l78.843-78.265L381.75 334.009l-78.842 78.264z"},1)),l=[t("svg",i,s)],d=[t("div",{class:"rd-et rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+a.width+n+";height:"+a.height+n+";opacity:"+a.alpha+";transform:rotate("+a.rotate+"deg)"},l)],t(r,0,d)},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:d}=t,s=o(i,d)/2;r>s&&(r=s),this.set(e),this.set({bw:r})},render(){this.digest()}})})),define("6r/svg/speaker/index",["65"],((e,t,r)=>{let i={viewBox:"0 0 1024 1024"},d=e("65"),{min:o}=Math;r.exports=d.View.extend({tmpl:(e,t,r)=>{let d,o,s,l,{props:a,unit:n}=e;return s=[],s.push(t("path",{fill:a.fill,d:"M213.34 341.34L426.68 128v768L213.34 682.66H128q-53.002 0-90.501-37.499T0 554.66v-83.661q0-53.002 37.499-91.34T128 341.318h85.34zm128 348.652V332.329l-92.672 94.33H128q-17.326 0-30.003 13.17t-12.677 31.17v83.66q0 17.675 12.492 30.168t30.168 12.493h120.668z"},1)),a.muted?s.push(t("path",{fill:a.mutedcolor,d:"M537 609.9l248.8-248.8c15.7-15.7 41.3-15.7 57 0 15.7 15.7 15.7 41.3 0 57L594 666.9c-15.7 15.7-41.3 15.7-57 0-15.7-15.6-15.7-41.3 0-57z"},1),t("path",{fill:a.mutedcolor,d:"M594 361.1l248.8 248.8c15.7 15.7 15.7 41.3 0 57-15.7 15.7-41.3 15.7-57 0L537 418.1c-15.7-15.7-15.7-41.3 0-57 15.7-15.7 41.3-15.7 57 0z"},1)):(o="",a.volume<1?o+=""+a.background:o+=""+a.vcolor,s.push(t("path",{class:"rd-ft",d:"M619.991 369.664q12.329 0 23.163 7.004t16.159 19.006q23.326 56.34 23.326 116.326 0 61.01-23.326 115.671-4.997 12.001-15.831 19.17t-23.491 7.167q-15.667 0-29.163-11.837t-13.497-30.843q0-7.66 3.338-16.67Q597.34 555.314 597.34 512q0-43.008-16.67-83.005-3.339-7.66-3.339-16.671 0-19.006 12.841-30.843t29.84-11.837z",fill:o},1)),o="",a.volume<2?o+=""+a.background:o+=""+a.vcolor,s.push(t("path",{class:"rd-ft",d:"M750.326 250.675q24.002 0 36.659 20.992 32.993 55.01 49.009 113.664Q853.32 448 853.32 512q0 63.672-17.326 126.996-16.343 59.331-49.009 113.664-12.329 20.665-36.66 20.665-16.67 0-29.675-12.001t-13.005-30.659q0-11.674 6.329-21.996 26.01-43.335 39.67-92.672Q767.98 566.006 767.98 512q0-53.658-14.336-103.67-13.66-49.336-39.67-93-6.329-9.666-6.329-21.667 0-18.002 13.17-30.495t29.49-12.493z",fill:o},1)),o="",a.volume<3?o+=""+a.background:o+=""+a.vcolor,s.push(t("path",{class:"rd-ft",d:"M877.998 133.673q23 0 35.328 18.657 54.334 79.667 82.494 171.336T1023.98 512t-28.16 188.334-82.494 171.336q-12.001 18.657-35.328 18.657-17.326 0-29.84-12.001t-12.492-30.659q0-13.332 7.332-24.002Q938.66 683.335 938.66 512q0-84.009-24.33-163.328t-71.332-148.337q-7.332-10.67-7.332-24.002 0-18.657 12.493-30.659t29.84-12.001z",fill:o},1))),l=[t("svg",i,s)],d=[t("div",{class:"rd-et rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+a.width+n+";height:"+a.height+n+";opacity:"+a.alpha+";transform:rotate("+a.rotate+"deg)"},l)],t(r,0,d)},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:d}=t,s=o(i,d)/2;r>s&&(r=s),this.set(e),this.set({bw:r})},render(){this.digest()}})})),define("6r/svg/star/index",["65","../../../64/67","../../../6h/7u"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),o=e("../../../6h/7u"),{State:s,View:l}=i;r.exports=l.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,path:a}=e;return d=[t("path",{d:a,style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},assign(e){let{props:t,unit:r}=e,i=(e=>{let t=s.get("d7")||0,r=s.get("d8")||0,i=o._jU(e),l=0,a=[];for(let o of i)a.push(l?"L":"M"),l=1,a.push(`${d.dY(e[o+"X"]-e.x+t)} ${d.dY(e[o+"Y"]-e.y+r)}`);return a.push("z"),a.join("")})(t);this.set({unit:r,props:t,path:i})},render(){this.digest()}})})),define("6r/svg/triangle/index",["65","../../../64/67"],((e,t,r)=>{let i=e("65"),d=e("../../../64/67"),{State:o,View:s}=i;r.exports=s.extend({tmpl:(e,t,r)=>{let i,d,o,{props:s,unit:l,toPx:a,ox:n,oy:h}=e;return d=[t("path",{d:"M"+a(s.ctrl1X-s.x+n)+" "+a(s.ctrl1Y-s.y+h)+"L"+a(s.ctrl2X-s.x+n)+" "+a(s.ctrl2Y-s.y+h)+"L"+a(s.ctrl3X-s.x+n)+" "+a(s.ctrl3Y-s.y+h)+"Z",style:"fill:"+(s.fillcolor||"none")+";stroke:"+s.color+";stroke-width:"+s.linewidth+l+";opacity:"+s.alpha,"stroke-dasharray":s.dash+l},1)],o=[t("svg",{class:"rd-et rd-fI",style:"width:"+s.width+l+";height:"+s.height+l},d)],i=[t("div",{class:"rd-et rd-fY",style:"left:"+s.x+l+";top:"+s.y+l+";width:"+s.width+l+";height:"+s.height+l},o)],t(r,0,i)},init(){this.set({toPx:d.dY,ox:o.get("d7")||0,oy:o.get("d8")||0})},assign(e){this.set(e)},render(){this.digest()}})})),define("6r/svg/wifi/index",["65"],((e,t,r)=>{let i={viewBox:"0 0 1024 1024"},d=e("65"),{min:o}=Math;r.exports=d.View.extend({tmpl:(e,t,r)=>{let d,o,s,l,{props:a,unit:n}=e;return s=[],o="",!a.connected||a.strength<3?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M512.2 192c-159.8 0-311.4 59.8-427.8 168.2l-20.4 19 19.8 19.6 64.6 64 18.6 18.4 19.2-17.6c89-81.8 204.6-127 325.6-127 121 0 236.8 45.2 325.6 127l19.2 17.6 18.6-18.4 64.6-64 19.8-19.6-20.4-19C823.2 251.8 671.4 192 512.2 192z",fill:o},1)),o="",!a.connected||a.strength<2?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M794.8 512.8C717.2 442.6 617 404 512.6 404h-17.8l-.2.4c-98.4 4-192 42.2-265.2 108.4l-21 19 20.2 20 65.4 64.8 18.2 18 19.2-16.8c50.6-44.4 114.8-69 180.6-69 66.2 0 130.4 24.6 181 69l19.2 16.8 18.2-18 65.4-64.8 20.2-20-21.2-19z",fill:o},1)),o="",!a.connected||a.strength<1?o+=""+a.background:o+=""+a.fill,s.push(t("path",{class:"rd-ft",d:"M512.4 832l19.2-19 105.6-104.4 21.2-21-23.2-19c-30.8-22.8-64.8-40-123-40-58 0-89.8 18.8-123 40l-23 19 21.2 21L493 813l19.4 19z",fill:o},1)),a.connected||s.push(t("path",{fill:a.disconnect,d:"M513.067 170.667c34.133 0 64 29.866 64 64v298.666c0 34.134-29.867 64-64 64s-64-29.866-64-64V234.667c0-34.134 29.866-64 64-64zM449.067 682.667a64 64 0 1 0 128 0 64 64 0 1 0-128 0z"},1)),l=[t("svg",i,s)],d=[t("div",{class:"rd-et rd-fY",style:"left:"+a.x+n+";top:"+a.y+n+";width:"+a.width+n+";height:"+a.height+n+";opacity:"+a.alpha+";transform:rotate("+a.rotate+"deg)"},l)],t(r,0,d)},assign(e){let{props:t}=e,{borderwidth:r,width:i,height:d}=t,s=o(i,d)/2;r>s&&(r=s),this.set(e),this.set({bw:r})},render(){this.digest()}})})),define("6h/barcode",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.barcode||"//unpkg.com/jsbarcode@3.11.5/dist/")+"JsBarcode.all.js"];r.exports={_fj:[{value:"CODE128",text:"CODE128"},{value:"CODE128A",text:"CODE128A"},{value:"CODE128B",text:"CODE128B"},{value:"CODE128C",text:"CODE128C"},{value:"CODE39",text:"CODE39"},{value:"EAN2",text:"EAN2"},{value:"EAN5",text:"EAN5"},{value:"EAN8",text:"EAN8"},{value:"EAN13",text:"EAN13"},{value:"ITF",text:"ITF"},{value:"ITF14",text:"ITF14"},{value:"MSI",text:"MSI"},{value:"MSI10",text:"MSI10"},{value:"MSI11",text:"MSI11"},{value:"MSI1010",text:"MSI1010"},{value:"MSI1110",text:"MSI1110"},{value:"UPC",text:"UPC"},{value:"UPCE",text:"UPCE"},{value:"upce",text:"UPC-E"},{value:"codabar",text:"codabar"},{value:"pharmacode",text:"pharmacode"},{value:"GenericBarcode",text:"GenericBarcode"}],_h1:[{text:"nv",value:"img"},{text:"nw",value:"svg"}],_h2:[{text:"jU",value:"full"},{text:"jT",value:"auto"}],_h3:[{text:"k2",value:"top"},{text:"k4",value:"bottom"}],_h4:{bold:1,italic:1},_h7:()=>d("JsBarcode",l)}})),define("6h/chart",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.chartjs||"//unpkg.com/chart.js@3.8.0/dist/")+"chart.min.js"];r.exports=()=>d("Chart",l)})),define("6h/80",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.ckeditor||"//ckeditor.com/assets/libs/ckeditor5/34.1.0/")+"ckeditor.js"];r.exports=()=>d("CKEditor",l)})),define("6h/7r",["65","../64/70"],((e,t,r)=>{let i=e("65"),d=e("../64/70"),o={},s={},{random:l}=Math,{type:a,isArray:n,config:h,isFunction:p,isObject:c,has:f}=i,g={},u=e=>{let t=e.url,r=e.id+"~"+t,i=h("rebuildBindUrl");return g[r]?t=g[r]:p(i)?(t=i(e),g[r]=t):g[r]=t,t};r.exports={_ox(e){let t=u(e);return o[t]},_n9(e){let t=u(e);return s[t]},_in:(e,t)=>new Promise((r=>{let i,h=u(e),p=o[h];if(p||(p={},i={},o[h]=p,s[h]=i),p._pm)r(p);else if(p._pn)p._pn.push(r);else{p._pn=[r],(new d).all({name:"_gU",url:h},((e,r)=>{let d=r.get("data");if(l()<.1&&n(d)){let e=[];for(let t of d)if("Object"==a(t)){let r={};for(let e in t){let i=t[e];"Number"==a(i)?r[e]=i+10*l()|0:"String"!=a(i)||i.startsWith("//")||i.startsWith("http://")||i.startsWith("https://")?r[e]=i:r[e]=i.substring(1)}e.push(r)}else e.push(t);d=e}i._gP=d,i._gO=null==e?void 0:e.message,t&&(n(d)?d=[]:c(d)&&(d={})),p._gP=d,p._pm=1,p._gO=null==e?void 0:e.message;for(let e of p._pn)e(p);delete p._pn}))}})),_of(e,t,r=""){let i=o[e];i||(i={},o[e]=i),i._gP=t,i._pm=1,i._gO=r},_dP(){for(let e in o)delete o[e],delete s[e]},_or:e=>f(o,e),_oe:u}})),define("6h/echarts",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.echart||"//unpkg.com/echarts@5.3.3/dist/")+"echarts.min.js"];r.exports=()=>d("echarts",l)})),define("6h/8k",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.filesaver||"//unpkg.com/file-saver@2.0.5/dist/")+"FileSaver.min.js"];r.exports=()=>d("saveAs",l)})),define("6h/format",["65"],((e,t,r)=>{let i=e("65"),{floor:d}=Math,o=[{title:"\u65e0\u5c0f\u6570",format:".",example:"0"},{title:"\u4e00\u4f4d\u5c0f\u6570",format:".#",example:"0.1"},{title:"\u4e24\u4f4d\u5c0f\u6570",format:".##",example:"0.01"},{title:"\u4e09\u4f4d\u5c0f\u6570",format:".###",example:"0.001"},{title:"\u56db\u4f4d\u5c0f\u6570",format:".####",example:"0.0001"}],s=[{title:"\u6570\u5b57",id:"number",groups:[{title:"\u6574\u6570",list:[{title:"\u5343\u5206\u4f4d",format:"#,###",example:"1,000"},{title:"\u4e07\u5206\u4f4d",format:"#,####",example:"1,0000"},{title:"\u4e07\u5206\u4f4d",format:"#'####",example:"1'0000"},{title:"\u767e\u5206\u6bd4",format:"#%",example:"100%"},{title:"\u5343\u5206\u6bd4",format:"#\u2030",example:"1000\u2030"}]},{title:"\u5c0f\u6570",list:o}]},{title:"\u8d27\u5e01",id:"currency",groups:[{title:"\u524d\u7f00",list:[{title:"\xa5\u4eba\u6c11\u5e01",format:"^\xa5"},{title:"$\u7f8e\u5143",format:"^$"},{title:"\u20ac\u6b27\u5143",format:"^\u20ac"},{title:"\uffe1\u82f1\u78c5",format:"^\uffe1"},{title:"\u0e3f\u6cf0\u94e2",format:"^\u0e3f"}]},{title:"\u6574\u6570",list:[{title:"\u5343\u5206\u4f4d",format:"#,###",example:"1,000"},{title:"\u4e07\u5206\u4f4d",format:"#,####",example:"1,0000"},{title:"\u4e07\u5206\u4f4d",format:"#'####",example:"1'0000"}]},{title:"\u5c0f\u6570",list:o},{title:"\u540e\u7f00",list:[{title:"\u4eba\u6c11\u5e01\xa5",format:"\xa5"},{title:"\u7f8e\u5143$",format:"$"},{title:"\u6b27\u5143\u20ac",format:"\u20ac"},{title:"\u82f1\u78c5\uffe1",format:"\uffe1"},{title:"\u6cf0\u94e2\u0e3f",format:"\u0e3f"}]}]},{title:"\u65e5\u671f",id:"date",groups:[{title:"\u65e5\u671f",list:[{title:"\u5e74\u6708\u65e5",format:"yyyyMMdd",example:"20200908"},{title:"\u5e74\u6708\u65e5",format:"yyyyMd",example:"202098"},{title:"\u5e74-\u6708-\u65e5",format:"yyyy-MM-dd",example:"2020-09-08"},{title:"\u5e74-\u6708-\u65e5",format:"yyyy-M-d",example:"2020-9-8"},{title:"\u5e74/\u6708/\u65e5",format:"yyyy/MM/dd",example:"2020/09/08"},{title:"\u5e74/\u6708/\u65e5",format:"yyyy/M/d",example:"2020/9/8"},{title:"\u65e5-\u6708-\u5e74",format:"dd-MM-yyyy",example:"08-09-2020"},{title:"\u65e5-\u6708-\u5e74",format:"d-M-yyyy",example:"8-9-2020"},{title:"\u65e5/\u6708/\u5e74",format:"dd/MM/yyyy",example:"08/09/2020"},{title:"\u65e5/\u6708/\u5e74",format:"d/M/yyyy",example:"8/9/2020"},{title:"\u6708\u65e5",format:"MMdd",example:"0908"},{title:"\u6708\u65e5",format:"Md",example:"98"},{title:"\u6708-\u65e5",format:"MM-dd",example:"09-08"},{title:"\u6708-\u65e5",format:"M-d",example:"9-8"},{title:"\u6708/\u65e5",format:"MM/dd",example:"09/08"},{title:"\u6708/\u65e5",format:"M/d",example:"9/8"}]},{title:"\u65f6\u95f4",list:[{title:" \u5c0f\u65f6",format:" h",example:"9"},{title:" \u5c0f\u65f6",format:" hh",example:"09"},{title:" \u5c0f\u65f6:\u5206\u949f",format:" h:m",example:"9:2"},{title:" \u5c0f\u65f6:\u5206\u949f",format:" hh:mm",example:"09:02"},{title:" \u5c0f\u65f6:\u5206\u949f:\u79d2",format:" h:m:s",example:"9:2:8"},{title:" \u5c0f\u65f6:\u5206\u949f:\u79d2",format:" hh:mm:ss",example:"09:02:08"}]}]},{title:"\u81ea\u5b9a\u4e49",id:"custom",defaults:"/*\n data\u662f\u6839\u636e\u6839\u636e\u5f53\u524d\u7ed1\u5b9a\u7684\u5b57\u6bb5\u53d6\u5230\u7684\u6570\u636e\n item\u662f\u5b8c\u6574\u7684\u5355\u6761\u6570\u636e\u5bf9\u8c61\n \u53ef\u4ee5\u628a\u4e0b\u9762\u7684console\u524d\u7684\u6ce8\u91ca\u53bb\u6389\u67e5\u770b\u76f8\u5e94\u7684\u6570\u636e\n*/\nfunction(data,item){\n //console.log(data,item);\n //return data+item.name;\n return data;\n}"}],l=[{reg:/y+/gi,fn:(e,t)=>(t.getFullYear()+"").slice(-e.length)},{reg:/M+/g,fn:(e,t)=>("0"+(t.getMonth()+1)).slice(-e.length)},{reg:/d+/gi,fn:(e,t)=>("0"+t.getDate()).slice(-e.length)},{reg:/h+/gi,fn:(e,t)=>("0"+t.getHours()).slice(-e.length)},{reg:/m+/g,fn:(e,t)=>("0"+t.getMinutes()).slice(-e.length)},{reg:/s+/g,fn:(e,t)=>("0"+t.getSeconds()).slice(-e.length)}],a=new i.Cache,n=/\bfunction\s*\(([\s\S]*?)\)\s*\{([\s\S]*?)\}\s*;?\s*$/i,h=/^(\^[\s\S]+?)?(?:#([,'%\u2030]))?(#{3,4})?(\.#{0,4})?([\s\S]*?)$/;r.exports={_l5:()=>s,_l0(e){null==e&&(e="");let t=e.indexOf(":");if(t>-1){let r=e.substring(0,t),i=e.substring(t+1),d="currency"==r;if("number"==r||d){let e=[r];return i.replace(h,((t,r,i,o,s,l)=>{d&&e.push(r||""),"%"==i||"\u2030"==i?e.push("#"+i):i?e.push("#"+i+o):e.push(""),e.push(s||""),d&&e.push(l||"")})),e}if("date"==r){let e=i.indexOf(" ");return e>-1?[r,i.substring(0,e),i.substring(e)]:[r,i,""]}if("custom"==r)return[r,i];if("convert"==r){let e=[r];return i.startsWith("Aa")?e.push("Aa",i.substring(2)):i.startsWith("aA")?e.push("aA",i.substring(2)):e.push("",i),e}}return[]},_l4(e){let t=this._l0(e),r="";for(let e of s)if(e.id==t[0]){if(r=e.title+":","custom"==e.id)r+="\u51fd\u6570";else{let i=1;for(let d of e.groups){for(let e of d.list)if(e.format==t[i]){r+=e.title;break}i++}}break}return r},_ii(e,t,...r){e+="";let i=this._l0(e),d=i.shift();if("number"==d||"currency"==d){let e=Number(t);if(isNaN(e))return t;let r,o,s,l="",a="";"number"==d?[r,o]=i:([l,r,o,a]=i,l&&(l=l.substring(1))),"#%"==r?(e*=100,r="",a="%"):"#\u2030"==r&&(e*=1e3,r="",a="\u2030"),s=o?e.toFixed(o.length-1):e+"";let n=s.indexOf("."),h="";if(n>0&&(h=s.substring(n),s=s.substring(0,n)),r){let e,t=",",i=r.lastIndexOf(t);if(-1==i&&(t="'",i=r.lastIndexOf(t)),-1!=i){e=r.substring(i+1).length,s=((e,t,r)=>{let i="";for(;e.length>t;)i=r+e.slice(-t)+i,e=e.substring(0,e.length-t);return e&&(i=e+i),i})(s,e,t)}}return l+s+h+a}if("date"==d){let e=(e=>e instanceof Date||(e=new Date(Date.parse(String(e).replace(/-/g,"/"))))instanceof Date&&"Invalid Date"!=e.toString()?e:null)(t);if(!e)return t;let r=i.join(" ").trim();for(let t of l)r=r.replace(t.reg,(r=>t.fn(r,e)));return r}if("convert"==d)return t;if("custom"==d){let e,d;if(i.join("").replace(n,((t,r,i)=>{e=r,d=i})),!e&&!d)return t;{let i=[e,"\0",d].join(""),o=a.get(i);o||(o=Function(e,d),a.set(i,o));try{return o(t,...r)}catch(e){return e.message}}}return t}}})),define("6h/fs",["../6c/6o/index","../6g/index","./8k"],((e,t,r)=>{let i=e("../6c/6o/index"),d=e("../6g/index"),o=e("./8k"),s=!0;try{top.location,s=!1}catch{}s||(s=!window.showOpenFilePicker&&!window.showSaveFilePicker);let l="Report Designer File",a=[".rd"];r.exports={_f6:()=>s,async _eV(){if(s&&!window.saveAs)try{i.show(d("jA")),await o()}catch(e){throw e}finally{i.hide()}},async _eU(e,t=a){if(s){let t=e.files[0];return t?(e.value="",await(e=>new Promise(((t,r)=>{let i=new FileReader;i.onload=e=>{t(e.target.result)},i.onerror=e=>{r(e)},i.readAsText(e)})))(t)):""}let[r]=await showOpenFilePicker({id:"_rd_write",excludeAcceptAllOption:!0,types:[{description:l,accept:{"text/plain":t}}]}),i=await r.getFile();return await i.text()},async _eX(e,t,r=a){if(s){let r=new Blob([t]);saveAs(r,e)}else{let i=await showSaveFilePicker({id:"_rd_read",suggestedName:e,startIn:"downloads",types:[{description:l,accept:{"text/plain":r}}]}),d=await i.createWritable();await d.write(t),await d.close()}}}})),define("6h/fx",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.fx||"//unpkg.com/function-plot/dist/")+"function-plot.js"];r.exports=()=>d("functionPlot",l)})),define("6h/6i",["65","../64/68"],((e,t,r)=>{let i=e("65"),d=e("../64/68"),{guid:o,mark:s,now:l,node:a,State:n,isArray:h,isObject:p}=i,c=/<(script|style)[^>]*>[\S\s]*<\/\1[^>]*>/gi,f=o("_rd_mtxt_"),g=/(?:\r\n|\r|\n)/g,u={"&":38,"<":60,">":62,'"':34,"'":39,"`":96},x=/[&<>"'\`]/g,m=e=>`${u[e]};`,y=e=>(null==e?e="":e+="",e.replace(x,m).replace(g," ")),w=e=>e.replace(c,""),_=e=>{if(e)if(h(e)){let t=[];for(let r of e)t.push(_(r));e=t}else if(p(e)){let t={};for(let r in e)t[r]=_(e[r]);e=t}return e},b=(e,t,r=1)=>{if(r<5){let i=a(t?e:"_rdm_"+e);if(i){let e=t||a("_rd_stage"),r=e.getBoundingClientRect(),o={x:r.x,y:r.y,width:r.width,height:r.height};r=i.getBoundingClientRect();let s={x:r.x,y:r.y,width:r.width,height:r.height};if(!d.dN(o,s,!0)){let t=e.clientHeight/3,r=e.clientWidth/3,i=s.x+e.scrollLeft-o.x-r,d=s.y+e.scrollTop-o.y-t,l=e.scrollHeight-e.clientHeight,a=e.scrollWidth-e.clientWidth;i<0?i=0:i>a&&(i=a),d<0?d=0:d>l&&(d=l),e.scrollTo(i,d)}}else setTimeout(b,20,e,t,r++)}};r.exports={dO:_,dY:b,ew:w,dL(e,t,r=null){t=t||150;let i,d=o("dm_"),l=this;return(...o)=>{clearTimeout(i);let a=s(l,d);i=setTimeout((()=>{a()&&e.apply(r,o)}),t)}},eu(e,t=50){let r,i=0;return(...d)=>{r=l(),r-i>t&&(i=r,e(...d))}},ey(e,t=65){let r,i="";for(e+=1;e;)r=(e-1)%26,i=String.fromCharCode(r+t)+i,e=(e-r-1)/26;return i},ev:y,ex:(e,t=0)=>(e=(e+t)%180)<=22.5||e>157.5?"ew":e<=67.5?"nwse":e<=112.5?"ns":e<=157.5?"nesw":void 0,ez(e){let t=n.get("dP"),r=a(f);r||(r=document.createElement("div"),r.id=f,document.body.appendChild(r),r.className="rd-dM rd-et"),r.style.cssText=`left:-1000px;top:-1000px;font-size:${e.fontsize}${t};letter-spacing:${e.letterspacing}${t};line-height:${e.lineheight};font-family:${e.fontfamily}`;let{text:i,richtext:d}=e;return r.innerHTML=d?w(i):y(i),{_es:r.offsetWidth+1,_et:r.offsetHeight+1}},_eW:(e,t,r)=>((e+="").length{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.html2canvas||"//unpkg.com/html2canvas@1.4.1/dist/")+"html2canvas.min.js"];r.exports=()=>d("html2canvas",l)})),define("6h/8g",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.jspdf||"//unpkg.com/jspdf@2.5.1/dist/")+"jspdf.umd.min.js"];r.exports=()=>d("jspdf",l)})),define("6h/loader",["65"],((e,t,r)=>{let i=e("65"),{State:d}=i,o={},s={},l="can not load: ",a=e=>new Promise((t=>{let r,i=e.endsWith(".css");if(d.fire("e_",{_gQ:1}),i)r=document.createElement("link"),r.onload=r.onerror=()=>{t(),d.fire("e_")},r.href=e,r.rel="stylesheet",document.head.appendChild(r);else{let r=document.createElement("script");r.onload=r.onerror=()=>{document.head.removeChild(r),t(),d.fire("e_")},r.src=e,document.head.appendChild(r)}}));r.exports=(e,t,r)=>new Promise(((i,d)=>{let n=o[e]||1,h=s[e]||(s[e]=[]);if(4&n)window[e]?i():d(l+e);else if(2&n)h.push([i,d]);else{o[e]=2|n,h.push([i,d]);let s=[];if(r)for(let e of r)s.push(a(e));Promise.all(s).then((()=>{let e=[];for(let r of t)e.push(a(r));return Promise.all(e)})).then((()=>{o[e]=4|n;for(let[t,r]of h)window[e]?t():r(l+e);h.length=0})).catch(d)}}))})),define("6h/map",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=s&&s.leaflet||"//unpkg.com/leaflet@1.8.0/dist/",a=[l+"leaflet.css",l+"leaflet.js"];r.exports=()=>d("L",a)})),define("6h/mathjax",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.mathjax||"//unpkg.com/mathjax@3.2.2/es5/")+"tex-svg.js"];r.exports=()=>d("MathJax",l)})),define("6h/qrcode",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.qrcode||"//unpkg.com/@keeex/qrcodejs-kx@1.0.2/")+"qrcode.min.js"];r.exports={_ib:[{text:"nz",value:"L"},{text:"nA",value:"M"},{text:"nB",value:"Q"},{text:"ny",value:"H"}],_h7:()=>d("QRCode",l)}})),define("6h/signature",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.signature||"//unpkg.com/signature_pad@4.0.5/dist/")+"signature_pad.umd.min.js"];r.exports=()=>d("SignaturePad",l)})),define("6h/table",["65"],((e,t,r)=>{let i=e("65"),{isArray:d}=i,{abs:o,min:s,max:l}=Math,a=["head","label","data","total","foot"],n=(e,t)=>{for(let r of a)t[r]&&(e[r]=!0);return e},h=(e,t,r)=>{let i=r;for(let r of e)for(let e of r.cols){let r=e._j_+e.colspan-1;if(e._j_<=t&&r>=t){let e=r-t;e{let i=r;for(let r of e)for(let e of r.cols){let r=e._kv+e.rowspan-1;if(e._kv<=t&&r>=t){let e=r-t;es&&(s=r)}t++,t>l&&(l=t)}e._is=l,e._it=s}return e},dR(e,t){let r,{focusCol:i,focusRow:o,rows:s}=e,l=0,a=0;if("left"==t)r=[[o,i-1],[o,i]],a=1;else if("right"==t)r=[[o,i],[o,i+1]],a=1;else{l=1;let e=s[o].cols[i],d=e._ku+1,a=e._ja,n=0;for(let l=0;l<=d;l++){for(let d=0;d<=a;d++){let a=s[l];if(a){let s=a.cols[d];if(s&&s!=e){let d=s._fr;if(s._j_==e._j_&&s._ja==e._ja)if(s._ku+1==e._kv){if("top"==t){r=[[l,d],[o,i]],n=1;break}}else if(e._ku+1==s._kv&&"bottom"==t){r=[[o,i],[l,d]],n=1;break}}}}if(n)break}}let[n,c]=r;e.focusRow=n[0],e.focusCol=n[1];let f=0,g=0,u=-1,x=-1;for(let e of r){let t=s[e[0]].cols[e[1]],r=t._ku;r>u&&(u=r);let i=t._ja;i>x&&(x=i)}let m=s[n[0]].cols[n[1]],y=s[c[0]].cols[c[1]];g=u-m._kv+1,f=x-m._j_+1,a&&(m.width+=y.width),l&&(m.height+=y.height),d(m.elements)?m.elements.push(...y.elements):!m.bindKey&&y.bindKey&&(m.bindKey=y.bindKey,m.bindName=y.bindName,m.type=y.type),m.colspan=f,m.rowspan=g;for(let e=r.length-1;e>0;e--){let t=r[e];s[t[0]].cols.splice(t[1],1)}let w=e._is;for(let e=w;e--;){s[e].cols.length||(s.splice(e,1),w--)}for(let e=0;e0){for(let r=0;r<=e;r++){let i=s[r];for(let r of i.cols){let i=r._kv+r.rowspan-1;r._kv<=e&&i>=e&&(r.rowspan-=t)}}break}}let _=e._it;for(let e=0;e<_;e++){let t=h(s,e,_);if(t>0){for(let r of s)for(let i of r.cols){let r=i._j_+i.colspan-1;i._j_<=e&&r>=e&&(i.colspan-=t)}break}}return e},dS(e,t,r,i,d){let{focusRow:o,focusCol:s,rows:l}=e,a=l[o],h=a.cols[s],p=this.dM(e);if(t){let e,t;if(h.colspan>1){let r=h.colspan/2|0,i=h.colspan-r,d=0,o=h._ja;for(let e=o-r+1;e<=o;e++)d+=p._iu[e];h.colspan=i,h.width-=d,e=r,t=d}else{let r=h.width,d=r/2;d=h._ja&&(t.colspan++,t.width+=o)}let d={...r,elements:[],colspan:e,rowspan:h.rowspan,width:t,height:h.height};a.cols.splice(s+1,0,d)}else{let e,t;if(h.rowspan>1){let r=h.rowspan/2|0,i=h.rowspan-r,d=0,o=h._ku;for(let e=o-r+1;e<=o;e++)d+=p._iv[e];h.rowspan=i,h.height-=d,e=r,t=d,a=l[h._kv+i];let n=0;for(let e of a.cols){if(e._j_>h._j_){s=n;break}n++}}else{let r=h.height,i=r/2;i=h._ku&&(t.rowspan++,t.height+=o);l.splice(h._ku+1,0,a=n({cols:[]},a))}let i={...r,elements:[],colspan:h.colspan,rowspan:e,width:h.width,height:t};a.cols.splice(s,0,i)}},dN(e,t,r,i){let d={},{rows:o,focusRow:s,_it:l}=e,a=o[s],h=this.dM(e);for(let e=0;e=t){e.rowspan++,e.height+=i;let t=e._j_,r=t+e.colspan;for(let e=t;e1&&o.push(d),d._j_=t){d.colspan++,d.width+=i,a=-1;break}if(d._j_>=t){a=r;break}}for(let e of o)if(e._j_=t&&e._kv=s){a=-1;break}if(-1!=a){let t={...r,elements:[],height:l._iv[s],width:i,rowspan:1,colspan:1};e.cols.splice(a,0,t)}s++}return e},dO(e,t){let r,{rows:i,focusRow:d,focusCol:a}=e;if(null!=t)r=[t,t];else{let e=i[d].cols[a];r=[e._kv,e._ku]}let n={},h=0,p=r[1]-r[0]+1,c=i[r[1]+1],f=p/2;for(let e=r[1];e>=0;e--){let t=i[e],d=0;for(let e=t.cols.length;e--;){let i=t.cols[e],a=i._j_,c=i._ku,g=i._kv,u=c-g+1;if(1==u&&(d=i.height),u>1){let x=u/2;if(o(r[0]+f-g-x)=p&&(n[a]=i,h=1),!d)for(let r=e;r--;){let e=t.cols[r];if(e._ku==e._kv){d=e.height;break}}let o=s(c,r[1])-l(r[0],g)+1;i.rowspan-=o,i.height-=d*o}}}e<=r[1]&&e>=r[0]&&i.splice(e,1)}if(h){let t=e._it;if(c)for(let e=t,r=c.cols.length;e--;){let t=n[e];if(t){let i=0;for(let t=r;t--;){if(c.cols[t]._j_=i[0]&&a<=i[1])e.cols.splice(t,1);else if(r.colspan>1){let e=(a-d+1)/2;if(o(i[0]+p-d-e)r[e]||t==d)&&(o=o||t==d,r[e]=d.width)}if(1==d.rowspan){let e=d._kv;(null==i[e]||!s&&d.height>i[e]||t==d)&&(s=s||t==d,i[e]=d.height)}}for(let e of d)for(let d of e.cols){if(d.colspan>1){let e=0,i=0,o=d._j_,s=o+d.colspan;for(let t=o;t=0&&(e+=r[t],i++);if(id.width&&t&&t==d)for(let t=o;t0?r[t]/e*d.width:d.width/d.colspan}if(d.rowspan>1){let e=0,r=0,o=d._kv,s=o+d.rowspan;for(let t=o;t=0&&(e+=i[t],r++);if(rd.height&&t&&d==t)for(let t=o;t0?i[t]/e*d.height:d.height/d.rowspan}}return{_iu:r,_iv:i}},dT(e,t){let r=this.dM(e,t),{rows:i}=e;for(let e of i)for(let t of e.cols){let e=t.rowspan||1,i=t.colspan||1,d=t._j_,o=t._kv,s=0,l=0;for(let e=d+i-1;e>=d;e--)s+=r._iu[e];for(let t=o+e-1;t>=o;t--)l+=r._iv[t];t.width=s,t.height=l}}}})),define("6h/underscore",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=[(s&&s.underscore||"//unpkg.com/underscore@1.13.4/")+"underscore-umd-min.js"];r.exports=()=>d("_",l)})),define("6h/xsheet",["65","./loader"],((e,t,r)=>{let i=e("65"),d=e("./loader"),{config:o}=i,s=o("providers"),l=s&&s.luckysheet||"//unpkg.com/luckysheet/dist/",a=[l+"plugins/css/pluginsCss.css",l+"plugins/plugins.css",l+"css/luckysheet.css",l+"assets/iconfont/iconfont.css",l+"plugins/js/plugin.js"],n=[l+"luckysheet.umd.js"];r.exports=()=>d("luckysheet",n,a)})),define("6c/74/alert",["65","../../6g/index"],((e,t,r)=>{let i,d,o={class:"rd-dW rd-dX rd-eH rd-eK rd-eN rd-eO rd-ek rd-f2"},s={class:"rd-d7"},l={class:"rd-d0 rd-e9"},a={class:"rd-d2 rd-d3 rd-e2 rd-eH rd-eK rd-eN rd-ek rd-f0 rd-fV"},n=e("65"),h=e("../../6g/index"),{View:p,toTry:c,node:f}=n;r.exports=p.extend({tmpl:(e,t,r)=>{let n,h,p,{title:c,body:f,i18n:g}=e;return n=i?[i]:[i=t("div",{_:"cO",class:"rd-dY rd-eN rd-f1"})],h=[t(0,c)],p=[t("h5",s,h)],n.push(t("div",o,p)),p=[t(0,f)],n.push(t("div",l,p)),h=[t(0,g("mL"))],p=[t("button",{"mx5-click":r+"\x1e_ly()",class:"rd-dT rd-dV rd-e5 rd-eq",type:"button",tabindex:1,id:"_mx_o_"+r},h)],n.push(t("div",a,p)),d?n.push(d):n.push(d=t("div",{_:"cP",class:"rd-d1 rd-eN rd-fZ"})),t(r,0,n)},init(e){let t=this;t._eQ=e.dialog,t._lv=e.body,t._lw=e.title||h("mK"),t._lx=e.enter},async render(){let e=this;await e.digest({body:e._lv,title:e._lw});let t=f(`_mx_o_${this.id}`);t&&t.focus()},"_ly"(){let e=this;e._eQ.close(),e._lx&&c(e._lx)}})})),define("6c/74/confirm",["65","../../6g/index"],((e,t,r)=>{let i,d,o={class:"rd-dW rd-dX rd-eH rd-eK rd-eN rd-eO rd-ek rd-f2"},s={class:"rd-d7"},l={class:"rd-d0 rd-e9"},a={class:"rd-d2 rd-d3 rd-e2 rd-eH rd-eK rd-eN rd-ek rd-f0 rd-fV"},n=e("65"),h=e("../../6g/index"),{View:p,toTry:c,node:f}=n;r.exports=p.extend({tmpl:(e,t,r)=>{let n,h,p,{title:c,body:f,i18n:g}=e;return n=i?[i]:[i=t("div",{_:"cO",class:"rd-dY rd-eN rd-f1"})],h=[t(0,c)],p=[t("h5",s,h)],n.push(t("div",o,p)),p=[t(0,f)],n.push(t("div",l,p)),h=[t(0,g("mL"))],p=[t("button",{type:"button","mx5-click":r+"\x1e_ly()",class:"rd-dT rd-dV rd-e5 rd-eq",tabindex:1,id:"_mx_o_"+r},h)],h=[t(0,g("ee"))],p.push(t("button",{type:"button","mx5-click":r+"\x1e_eR()",class:"rd-dT rd-e5 rd-eh rd-eq",tabindex:2},h)),n.push(t("div",a,p)),d?n.push(d):n.push(d=t("div",{_:"cP",class:"rd-d1 rd-eN rd-fZ"})),t(r,0,n)},init(e){let t=this;t._eQ=e.dialog,t._lv=e.body,t._lw=e.title||h("mK"),t._lx=e.enter,t._lz=e.cancel},async render(){let e=this;await e.digest({body:e._lv,title:e._lw});let t=f(`_mx_o_${this.id}`);t&&t.focus()},"_ly"(){let e=this;e._eQ.close(),e._lx&&c(e._lx)},"_eR"(){let e=this;e._eQ.close(),e._lz&&c(e._lz)}})})),define("6c/74/index",["65"],((e,t,r)=>{let i,d,o=e("65"),{View:s,applyStyle:l,node:a,dispatch:n,has:h,guid:p,mix:c,attach:f,detach:g}=o;l("rd-jF",".rd-i4{border-radius:2px;border:1px solid #e6e6e6;background-color:#fff;margin:25px;min-height:60px}.rd-i5{opacity:.2;top:10px;right:10px}.rd-i5:focus,.rd-i5:hover{opacity:.5}.rd-i6{margin:auto}.rd-i7{float:right;margin:35px 35px 0 -35px}.rd-i8{position:fixed;background-color:#0000}.rd-i9{-webkit-animation:rd-dN .2s;animation:rd-dN .2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}.rd-j_{padding:80px 0}@-webkit-keyframes rd-dN{from{background-color:#0000}to{background-color:#0006}}@keyframes rd-dN{from{background-color:#0000}to{background-color:#0006}}.rd-ja{-webkit-animation:rd-dO .2s;animation:rd-dO .2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes rd-dO{from{background-color:#0006}to{background-color:#0000}}@keyframes rd-dO{from{background-color:#0006}to{background-color:#0000}}.rd-jb{-ms-scroll-chaining:none;overscroll-behavior:contain;position:fixed;scrollbar-gutter:stable}.rd-jc{-webkit-animation:rd-dP .2s;animation:rd-dP .2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes rd-dP{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes rd-dP{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.rd-jd{-webkit-animation:rd-dQ .2s;animation:rd-dQ .2s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@-webkit-keyframes rd-dQ{from{transform:translateY(0);opacity:1}to{transform:translateY(-30px);opacity:0}}@keyframes rd-dQ{from{transform:translateY(0);opacity:1}to{transform:translateY(-30px);opacity:0}}");let u=800,x=[];r.exports=s.extend({tmpl:(e,t,r,o,s,l)=>{let a,n,h,p,c,{zIndex:f,width:g,closable:u,i18n:x,view:m}=e;return a=[t("div",{class:"rd-fk rd-i8 rd-i9",style:"z-index:"+(f-1),id:"_mx_mask_"+r})],p=[],u&&(n=[i||(i=t(0,"\ue624"))],p.push(t("span",{class:"rd-dL rd-e5 rd-eN rd-f3 rd-i5 rd-i7",title:x("mM"),"mx5-click":r+"\x1e_fS()"},n))),d?n=[d]:(h=[t(0,' ',1)],n=[d=t("div",{_:"cO",class:"rd-d4 rd-eq rd-j_"},h)]),p.push(t("div",{$:"#","mx5-owner":r,class:"rd-eu rd-g_ rd-i4","mx5-view":m+"?\x1e="+l(s,e,"cO")},n)),c=[t("div",{class:"rd-eJ rd-i6",id:"_mx_body_"+r,style:"width:"+g+"px"},p)],a.push(t("div",{class:"rd-dS rd-eD rd-eH rd-el rd-em rd-fJ rd-fk rd-jb rd-jc",style:"z-index:"+f,tabindex:0,id:"_mx_scroll_"+r},c)),t(r,0,a)},init(e){let t=this,r=t.root;t.on("destroy",(()=>{(e=>{for(let t,r=x.length-1;r>=0;r--)if(t=x[r],t.id==e.id){x.splice(r,1);break}})(t),u-=2,n(r,"_lA"),r.parentNode.removeChild(r)})),h(e,"closable")||(e.closable=!0),t.set(e),u+=2,x.push(t)},async render(){await this.digest({zIndex:u});let e=a(`_mx_scroll_${this.id}`);e&&e.focus()},_lB(){let e,t=this.id;e=a("_mx_scroll_"+t),e.classList.add("rd-jd"),e=a("_mx_mask_"+t),e.classList.add("rd-ja")},"_fS"(){n(this.root,"_lC")},"$doc"(e){if("Escape"==e.code){let e=x[x.length-1];e==this&&e.get("closable")&&n(this.root,"_lC")}}}).static({_lE(e,t){let r=p("_mx_dlg_");document.body.insertAdjacentHTML("beforeend",'
');let i=a(r),d=e.owner.mount(i,"6c/74/index",t),o=async()=>{i._lD||(i._lD=1,d.invoke("_lB"),g(i,"_lC",o),setTimeout((()=>{d.unmount()}),200))};return f(i,"_lC",o),i},alert(e,t,r){this.confirm(e,t,null,r,"alert")},confirm(e,t,r,i,d="confirm"){this.mxDialog("6c/74/"+d,{body:e,cancel:r,enter:t,title:i,modal:!0,width:350})},mxDialog(e,t){let r,i,d=this,o="$dlg_"+e;if(d[o])return;d[o]=1;let s=c({view:e},t);s.width||(s.width=550),s.dialog={close(){r&&n(r,"_lC")}},r=d._lE(d,s);let l=()=>{delete d[o],g(r,"_lA",l),i&&i()};return f(r,"_lA",l),{close(){r&&n(r,"_lC")},_fU(e){i=e}}}})})),define("6c/6o/index",["65"],((e,t,r)=>{let i=e("65"),{applyStyle:d,guid:o,node:s}=i;d("rd-ka",".rd-kh{position:fixed;border-radius:5px;background:#0008;left:50%;top:50%;padding:6px;color:#fff;min-width:15%;text-align:center;transform:translate(-50%,-50%);z-index:2000}");let l,a=o("_mx_toast_");r.exports={show(e,t){let r=s(a);r||(r=document.createElement("div"),r.id=a,r.className="rd-kh rd-dM",document.body.appendChild(r)),r.style.display="block",r.innerHTML=e,clearTimeout(l),t&&(l=setTimeout((()=>{this.hide()}),t))},hide(){clearTimeout(l);let e=s(a);e&&(e.style.display="none")}}})),define("6c/83/index",["65","../8b/index"],((e,t,r)=>{let i,d={class:"rd-dL rd-jq"},o={class:"rd-eC rd-eD rd-et rd-ey rd-fJ rd-jl"},s={class:"rd-dL rd-fM rd-jq"},l=e("65"),a=e("../8b/index"),{View:n,applyStyle:h,toMap:p,inside:c,node:f,dispatch:g,isFunction:u}=l;h("rd-jI",".rd-je{min-width:50px;background-color:#fff;border:solid 1px #e6e6e6;border-radius:2px;height:22px;outline:0}.rd-jf:focus,.rd-jf:focus:hover{border-color:#fa742b}.rd-je:hover{border-color:#ccc}.rd-jg{color:#333;padding:0 20px 0 3px}.rd-jh{background-color:#f5f5f5}.rd-jh:hover{border-color:#e6e6e6}.rd-jh .rd-jg{cursor:not-allowed;color:#999}.rd-ji{top:0;width:20px;color:#ccc}.rd-ji::after{left:0;top:0;right:0;bottom:0;width:0;height:0;position:absolute;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #ccc;content:'';display:block;margin:auto}.rd-jj .rd-ji{transform:rotate(180deg)}.rd-jj,.rd-jj:hover{border-color:#fa742b}.rd-jk{height:20px;line-height:21px}.rd-jl{top:100%;left:-1px;right:-1px;margin-top:4px;border-radius:2px;z-index:300;border:1px solid #ccc;background-color:#fff}.rd-jj .rd-jl{display:block}.rd-jm{max-height:196px;padding:2px 0}.rd-jn{padding:0 2px;margin:2px 0}.rd-jo{padding:0 5px;height:20px;line-height:20px;border-radius:2px}.rd-jo:hover{color:#333;background-color:#f0f0f0}.rd-jp,.rd-jp:active,.rd-jp:focus,.rd-jp:hover{color:#fff;background-color:#fa742b}.rd-jq{padding:0 4px}"),r.exports=n.extend({tmpl:(e,t,r,l,a,n)=>{let h,p,c,f,g,u,x,m,y,{disabled:w,i18n:_,selectedText:b,selected:v,emptyText:k,selectedIcon:j,rList:L,list:Y,textKey:M,valueKey:S,iconKey:P}=e;if(y=[],f=[],j&&(c=[t(0,j,1)],f.push(t("i",d,c))),f.push(t(0,_(b))),p="rd-jk rd-ez rd-eE",""!==v&&v!=k||(p+=" rd-fF"),g=[t("span",{class:p},f)],i?g.push(i):g.push(i=t("span",{_:"cO",class:"rd-em rd-et rd-fS rd-ft rd-ji"})),y.push(t("div",{class:"rd-e5 rd-el rd-eu rd-jg","mx5-click":r+"\x1e_dQ()",title:_(b)},g)),L){f=[];for(let e=null==Y?void 0:Y.length,i=0;i{a._f2(this),a._k9()}))},assign(e){let{selected:t,textKey:r="",valueKey:i="",iconKey:d="",emptyText:o="",disabled:s,list:l}=e;l=u(l)?l(e.props):l||[],l=l.slice();let a=p(l,i);if(o)if(r&&i){if(!a[""]){let e={};e[r]=o,e[i]="",l.unshift(e),a[""]=e}}else a[o]||(l.unshift(o),a[o]=o);t||!o||r||i||(t=o),t&&a[t]||(t=a[t]||l[0],r&&i&&(t=t[i]));let n=r&&i?a[t][r]:t,h=d?a[t][d]:"";this.set({selected:t,selectedText:n,selectedIcon:h,list:l,iconKey:d,textKey:r,valueKey:i,emptyText:o,disabled:s})},render(){this.digest()},_lm(e){return c(e,this.root)},async _ee(){let e=this,t=f("_mx_dd_"+e.id);if(!t.classList.contains("rd-jj")){t.classList.add("rd-jj"),e.get("rList")||await e.digest({rList:!0}),t=f("_mx_list_"+e.id);let r=t.querySelector("li[active]");r&&r.scrollIntoViewIfNeeded&&r.scrollIntoViewIfNeeded(),a._ln(e)}},_ef(){let e=this,t=f("_mx_dd_"+e.id),{classList:r}=t;r.contains("rd-jj")&&(r.remove("rd-jj"),a._f2(e))},"_dQ"(){let e=this,t=f("_mx_dd_"+e.id),{classList:r}=t;r.contains("rd-jj")?e._ef():r.contains("rd-jh")||e._ee()},"_lL"(e){let t=this;t._ef();let r=t.get("valueKey"),i=t.get("textKey"),d=t.get("iconKey"),o=t.get("selected"),s=e.params.item,l=s,a=s,n="";i&&r&&(a=s[i],l=s[r],n=s[d]),o!==l&&(t.digest({selected:l,selectedIcon:n,selectedText:a}),g(t.root,"change",{item:s,value:r?s[r]:s,text:i?s[i]:s}))}})})),define("6c/82/index",["65"],((e,t,r)=>{let i=e("65"),{node:d,View:o,applyStyle:s,has:l,mark:a,dispatch:n,isFunction:h}=i,p=Number.MAX_SAFE_INTEGER;s("rd-jX",".rd-jR{border:none;background:0 0;color:#333;padding:0 20px 0 0;font-size:100%}.rd-jR:focus{outline:0}.rd-jR:disabled{cursor:not-allowed;color:#999;background:#f5f5f5}.rd-jS,.rd-jT{width:20px;height:50%;border:2px solid #fff;border-radius:2px}.rd-jS:hover,.rd-jT:hover{background-color:#f0f0f0}.rd-jS{top:1px}.rd-jT{bottom:1px}.rd-jU::after{width:0;height:0;position:absolute;left:0;top:0;right:0;bottom:0;border-left:4px solid transparent;border-right:4px solid transparent;content:'';display:block;margin:auto}.rd-jT:after{border-top:4px solid #ccc}.rd-jS:after{border-bottom:4px solid #ccc}.rd-jS.rd-jV,.rd-jT.rd-jV{border-color:transparent}.rd-jS.rd-jV:hover,.rd-jT.rd-jV:hover{background-color:transparent}");let c=e=>e.shiftKey?1:e.metaKey||e.ctrlKey?2:0;r.exports=o.extend({tmpl:(e,t,r)=>{let i,d,{disabled:o}=e;return i=[t("input",{class:"rd-el rd-em rd-ez rd-jR",id:"_mx_ipt_"+r,"mx5-focusin":r+"\x1e_mt()","mx5-focusout":r+"\x1e_mv()","mx5-change":r+"\x1e_ho()","mx5-keydown":r+"\x1e_mB()",disabled:o,autocomplete:"off","mx5-input":r+"\x1e_mD()","mx5-wheel":r+"\x1e_mC()"},1)],d="rd-jS rd-fS rd-et rd-jU rd-eB rd-e5 rd-gi",o&&(d+=" rd-jV rd-fB "),i.push(t("span",{"mx5-click":r+"\x1e_mp({i:1})","mx5-pointerdown":r+"\x1e_mA({i:1})","mx5-contextmenu":r+"\x1e_gN()",class:d})),d="rd-jT rd-fS rd-et rd-jU rd-eB rd-e5 rd-gi",o&&(d+=" rd-jV rd-fB "),i.push(t("span",{"mx5-click":r+"\x1e_mp()","mx5-pointerdown":r+"\x1e_mA()","mx5-contextmenu":r+"\x1e_gN()",class:d})),t(r,0,i)},assign(e){let t=this,{root:r}=t;if(r.classList.contains("rd-dR"))return t._md=t._mm(e.value),!1;delete t._md,h(e.max)&&(//!important callback with ops.props
+e.max=e.max(e.props)),h(e.min)&&(e.min=e.min(e.props)),h(e.fixed)&&(e.fixed=e.fixed()),h(e.step)&&(e.step=e.step()),t._me=+e.step||1,t._mf=e.empty,t._mg=r.hasAttribute("disabled"),t._mh=l(e,"max")?+e.max:p,t._mi=l(e,"min")?+e.min:-p,t._mj=+e.ratio||10,t._mk=+e.fixed||0,t._ml=t._mm(e.value)},async render(){let{root:e}=this,t=a(this,"_dM");await this.digest({disabled:this._mg}),t()&&!e.classList.contains("rd-dR")&&this._mn()},_mn(e){let t=this;e=void 0===e?void 0===t._md?t._ml:t._md:e,d("_mx_ipt_"+t.id).value=e},_mm(e){let t=this;e=+e;let r=t._mi;if(e||0===e){let i=t._mh;e>i?e=i:e"(){this._ms()},"_mv"(){let e=this;e._mu||(e.root.classList.remove("rd-dR"),e._mn(),e._mr!=e._ml&&n(e.root,"change",{value:e._ml}),delete e._mr)},"_mp"(e){let t=this;t._mg||t._mw||(t._mp(e.params.i,c(e)),t._mq())},"_mA"(e){let t=this;if(!t._mg){t._mu=1,t._ms();let r=e.params.i,i=a(this,"_mx");t._my=setTimeout((()=>{i()&&(t._mz=setInterval((()=>{i()&&(t._mw=1,t._mp(r,c(e)),t._mq())}),50))}),300)}},"_mB&{passive:false}"(e){if("ArrowUp"==e.code||"ArrowDown"==e.code){this._el(e),this._mp("ArrowUp"==e.code,c(e))}},"_mC&{passive:false}"(e){if(this.root.classList.contains("rd-dR")){this._el(e);let t=e.deltaY;this._mp(t>0,c(e))}},"_mD "(e){this._hn(e);let t=e.eventTarget;this._mo(t.value,1)},"$doc"(){let e=this;clearTimeout(e._my),clearInterval(e._mz),delete e._mu;let t=a(this,"_mE");setTimeout((()=>{t()&&delete e._mw}),0)}})})),define("6c/82/range",["65","./index"],((e,t,r)=>{let i;e("./index");let d={class:"rd-eH"},o=e("65"),{View:s,dispatch:l}=o;r.exports=s.extend({tmpl:(e,t,r,o,s,l)=>{let a,n,h,{disabled:p,value:c}=e;return h=[t("div",{$:"value","mx5-owner":r,disabled:p,class:"rd-dP rd-eR rd-eu","mx5-input":r+"\x1e_mF({i:0})","mx5-change":r+"\x1e_ho()","mx5-view":"6c/82/index?value="+l(s,c[0],"cO")})],i?h.push(i):(n=[t(0,"~")],h.push(i=t("span",{_:"cO",class:"rd-e4 rd-eG rd-eq"},n))),h.push(t("div",{$:"value","mx5-owner":r,disabled:p,class:"rd-dP rd-eR rd-eu","mx5-input":r+"\x1e_mF({i:1})","mx5-change":r+"\x1e_ho()","mx5-view":"6c/82/index?value="+l(s,c[1],"cP")})),a=[t("div",d,h)],t(r,0,a)},assign(e){e.value||(e.value=[]),this.set(e)},render(){this.digest()},"_mF "(e){this._hn(e);let{i:t}=e.params,r=this.get("value");r[t]=e.value,l(this.root,"input",{range:r})}})})),define("6c/8b/index",["65"],((e,t,r)=>{let i,d=e("65"),{node:o,attach:s,detach:l}=d,a=0,n=[],h=["pointerdown","keyup","keydown"],p=document,c=window,f={capture:!1,passive:!0},g=e=>{for(let t=n.length;t--;){let r=n[t];if(r._mb)n.splice(t,1);else{let t=r._mc;"resize"!=e.type&&"blur"!=e.type&&t._lm(e.target)||t._ef()}}},u=e=>{let t=n[e.id];t&&(t._mb=1,delete n[e.id])};r.exports={_ln(e){u(e);let t={_mc:e};n.push(t),n[e.id]=t},_f2:u,_k8(){if(!a){i||(i=o("_rd_stage"));for(let e of h)s(p,e,g,f);s(c,"resize",g,f),s(c,"blur",g,f),s(c,"scroll",g,f),i&&s(i,"scroll",g,f)}a++},_k9(){if(a>0&&(a--,!a)){for(let e of h)l(p,e,g,f);l(c,"resize",g,f),l(c,"blur",g,f),l(c,"scroll",g,f),i&&l(i,"scroll",g,f)}}}})),define("6c/6f/index",["65"],((e,t,r)=>{let i,d,o=e("65"),{toTry:s}=o,l=e=>setTimeout(e,16),a=clearTimeout,n=requestAnimationFrame||l,h=cancelAnimationFrame||a,p=Date.now,c=[],f=[];r.exports={_d4(e,t){c.push({i:e||15,f:t,n:p()}),(()=>{if(!i){let e=()=>{for(let e,t,r=0;r=e.i&&(e.n=t,s(e.f)));c.length?i=n(e):(h(i),i=0)};i=n(e)}})()},_d3(e){for(let t,r=0;r{if(!d){let e=()=>{for(let e,t,r=0;r=e.i&&(e.n=t,s(e.f)));f.length?d=l(e):(a(d),d=0)};d=l(e)}})()},_gv(e){for(let t,r=0;r{let i,d,o,s;e("6c/82/index");let l={class:"rd-d0 rd-lh"},a={class:"rd-eB rd-eC rd-eD rd-li"},n={class:"rd-eB rd-eH rd-eK rd-eN rd-ek rd-fY rd-lk"},h={class:"rd-lj"},p={class:"rd-ei rd-lj"},c={class:"rd-eE rd-lj"},f={class:"rd-eH rd-eK rd-ei"},g={class:"rd-d2 rd-e2 rd-eH rd-eK"},u={checked:"checked"},x=e("65"),m=e("../6h/7r"),{View:y,applyStyle:w,isArray:_,isObject:b,dispatch:v}=x,{min:k,max:j}=Math;w("rd-kC",".rd-lg{padding:8px 15px;margin-bottom:2px}.rd-lh{padding:0 5px;height:calc(100% - 78px)}.rd-li{height:100%;overflow:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;scrollbar-gutter:stable}.rd-lj{width:104px}.rd-lk{border-bottom:solid 1px #f0f0f0;height:35px;background:#f8f8f8;top:0}.rd-ll{height:30px;border-bottom:solid 1px #f8f8f8}.rd-ll:hover{background:#f8f8f8}"),r.exports=y.extend({tmpl:(e,t,r,x)=>{var m;let y,w,_,b,v,k,j,{list:L,count:Y}=e;if(i?y=[i]:(w=[t(0,'\u6253\u5370\u63a7\u5236 ',1)],y=[i=t("div",{_:"cO",class:"rd-dW rd-eH rd-eK rd-lg"},w)]),w=[],L&&L.length){j=[];for(let e=null==L?void 0:L.length,i=0;i0},1,u)],v.push(t("div",p,b));for(let r=e.fields,i=null==r?void 0:r.length,d=0;d"(e){let{params:t,shiftKey:r}=e,{atHost:i,atSub:d}=t,o=this._oa,s=this._ob,l=this.get("list"),a=l[i].subs[d];if(o==i&&r){let e=k(s,d),t=j(s,d),r=a.times;for(let d=e;d<=t;d++){let e=l[i].subs[d];e.times=r>0?0:1}}else a.times>0?a.times=0:a.times=1;this._oa=i,this._ob=d,this.digest({list:l})},"_od "(e){this.set({count:e.value})},"_eS"(){let e=this.get("list"),t=this.get("count"),r=this._o_!=t;for(let t of e)if(!t.error){let e=m._oe(t),i=[];for(let e of t.subs)for(let t=0;t{let i,d,o,s,l;e("6c/83/index");let a={class:"rd-eH rd-eK rd-lw"},n={class:"rd-eH rd-eI rd-eK rd-lE rd-lu"},h={class:"rd-fO rd-lA"},p=e("65"),c=e("../64/67"),f=e("../64/70"),g=e("../6c/74/index"),u=e("../6c/6o/index"),x=e("../6g/index"),m=e("../6h/7r"),y=e("../6h/fs"),w=e("../6h/6i"),_=e("../6h/html2canvas"),b=e("../6h/8g"),v=e("./6i/index"),k=e("./6i/resource"),j=e("./8h/index"),L=e("./8i/index"),Y=e("./8j/batch"),M=e("./8j/common"),S=e("./8j/data-celltable"),P=e("./8j/data-coltable"),O=e("./8j/data-dtable"),R=e("./8j/data-ftable"),z=e("./8j/data-repeater"),C=e("./8j/richtext"),{State:H,View:A,lowTaskFinale:T,has:V,applyStyle:N,parseUrl:B,config:F,mark:I,guid:q,unboot:X,delay:$,task:W,node:E,toUrl:K}=p,D=!1;let{min:U}=Math;N("rd-kG",".rd-lm{-ms-scroll-chaining:none;overscroll-behavior:contain;background:#eee}.rd-ln{page-break-after:auto;page-break-inside:avoid}.rd-lo{width:120px}.rd-lp{width:350px}.rd-lq{margin-top:20px}.rd-lr{height:calc(100vh - 45px)}.rd-ls{position:fixed;bottom:0;padding:4px;background-color:#fff;box-shadow:-1px -1px 4px #0000002b}.rd-lt{height:30px;background:linear-gradient(#ddd4,#ddd 30%,#ddd 70%,#ddd4);margin:4px 20px}.rd-lu{transform-origin:top center}.rd-lv{box-shadow:0 0 6px 0 rgba(0,0,0,.3);right:0;top:40px;height:calc(100vh - 46px);background-color:#fff;width:440px}@page{margin:0}@media screen{.rd-lw{box-shadow:0 0 6px 0 rgba(0,0,0,.3);height:34px;justify-content:flex-end;padding-right:50px;position:fixed;top:0;left:0;right:0;z-index:2;background-color:#fff}.rd-lx{margin:60px 0 40px}.rd-ly{margin:38px 0 0}.rd-lz{margin:40px 0 0;width:calc(100vw - 450px);height:calc(100vh - 46px);box-shadow:0 0 6px 0 rgba(0,0,0,.3)}.rd-lA{height:120px;line-height:120px}.rd-lB{box-shadow:0 0 6px 0 rgba(0,0,0,.3);contain:paint}.rd-lC{background:#eee}.rd-lD{margin:5px auto}}@media print{.rd-lw{display:none}body{min-width:auto}.rd-lD{margin:0}.rd-lx{padding:0}.rd-lz{margin:0;width:100vw;height:100vh}.rd-lC{display:none}.rd-lB{box-shadow:none}.rd-lE{display:block}}");let Q=document,J=/<(\w+)[\s\S]*?role="pole"[\s\S]*?>[\s\S]*?<\/\1>/g,G=[{text:"\u7f51\u9875",value:"web"},{text:"\u56fe\u7247",value:"image"},{text:"pdf",value:"pdf"}];G.push({text:"\u56fe\u7247-RDS\u670d\u52a1",value:"rdImage"},{text:"pdf-RDS\u670d\u52a1",value:"rdPdf"});r.exports=A.extend({tmpl:(e,t,r,p,c,f)=>{let g,u,x,m,y,w,_,b,v,{d:k,approve:j,inner:L,i18n:Y,empty:M,format:S,sf:P,enable:O,rds:R,hasData:z,page:C,unit:H,loading:A,pdf:T,rdPdf:V,pages:N,images:B,rdImages:F}=e;if(y=[],i?y.push(i):(x=[t(0,"\u6253\u5370\u9884\u89c8")],y.push(i=t("h5",{_:"cO",class:"rd-d7 rd-eG rd-eh rd-fC"},x))),!k&&j||(L&&(x=[t(0,Y("nr"))],y.push(t("button",{class:"rd-dT rd-e5 rd-eg rd-eq","mx5-click":r+"\x1e_o3()"},x))),x=[t(0,Y("nq"))],y.push(t("button",{class:"rd-dT rd-e5 rd-eg rd-eq","mx5-click":r+"\x1e_oY()"},x)),d?y.push(d):y.push(d=t("div",{_:"cP",class:"rd-eY rd-lt"}))),x=[t(0,Y("nl"))],y.push(t("div",0,x)),m="6c/83/index?",(g=M)&&(m+="disabled="+f(c,g,"cO")+"&"),m+="list="+f(c,S,"cP")+"&textKey=text&valueKey=value&selected="+p(P),y.push(t("div",{$:"format,empty","mx5-owner":r,class:"rd-eg rd-lo","mx5-change":r+"\x1e_oX()","mx5-view":m})),x=[t(0,Y("eY"))],y.push(t("button",{disabled:"pdf"!=P&&"rdPdf"!=P&&!O,class:"rd-dT rd-dV rd-e5 rd-eg rd-eq","mx5-click":r+"\x1e_o5()"},x)),x=[o||(o=t(0,"Lodop\u8bbe\u7f6e"))],y.push(t("button",{disabled:!O,class:"rd-dT rd-e5 rd-eg rd-eq","mx5-click":r+"\x1e_oG()"},x)),x=[s||(s=t(0,"Lodop\u6253\u5370"))],y.push(t("button",{disabled:!O||M,class:"rd-dT rd-dV rd-e5 rd-eq","mx5-click":r+"\x1e_oJ()"},x)),R&&(d?y.push(d):y.push(d=t("div",{_:"cP",class:"rd-eY rd-lt"})),x=[t(0,Y("np"))],y.push(t("button",{disabled:!O,class:"rd-dT rd-e5 rd-eg rd-eq","mx5-click":r+"\x1e_oZ()"},x)),x=[t(0,Y("no"))],y.push(t("button",{disabled:!O,class:"rd-dT rd-dV rd-e5 rd-eq","mx5-click":r+"\x1e_o2()"},x))),d?y.push(d):y.push(d=t("div",{_:"cP",class:"rd-eY rd-lt"})),x=[t(0,Y("nk"))],y.push(t("button",{disabled:!O,class:"rd-dT rd-dV rd-e5 rd-eq","mx5-click":r+"\x1e_gf()"},x)),u=[t("div",a,y)],x=[],z){let e=C.radiusUnit;if("auto"==e&&(e=H),A)_=[t(0,Y("nn"))],b=[t("div",h,_)],x.push(t("div",{class:"rd-e1 rd-eH rd-eu rd-fH rd-lB rd-lD",style:"width:"+C.width+H+";height:"+C.height+H+";border-radius:"+C.ltRadius+e+" "+C.rtRadius+e+" "+C.rbRadius+e+" "+C.lbRadius+e+";background:"+C.background},b));else if("pdf"==P)x.push(t("embed",{src:T,class:"rd-el rd-lr",type:"application/pdf"},1));else if("rdPdf"==P)x.push(t("embed",{src:V,class:"rd-el rd-lr",type:"application/pdf"},1));else for(let i=null==N?void 0:N.length,d=i-1,o=0;o{if(!e){let e=t.get("data");this._oC(e)}}))}},async _oE(e,t,r,i,d){let o=0,s=this._oD,l=this.get("unit"),a=H.get("ei"),n=H.get("d7"),h=H.get("d8");for(let t of e)"data-dtable"!=t.type&&"data-ftable"!=t.type||v._oy(t);let p=(e,t)=>{for(let r=e.length;r--;){let i=e[r];if(("data-coltable"==i.type||"data-celltable"==i.type||"data-dtable"==i.type||"data-rdtable"==i.type||"batch-barcode"==i.type||"batch-qrcode"==i.type||"batch-text"==i.type||"data-repeater"==i.type||"data-ftable"==i.type||"richtext"==i.type||"html"==i.type||"data-richtext"==i.type)&&-1!=t[r])return!0}return!1};for(;o{let o=[];for(let p=0;p{let t=[];for(let r of e)t.push(m._in(r));return Promise.all(t)})(n),u.show("\u6b63\u5728\u51c6\u5907\u8d44\u6e90..."),await l._fV(),u.show("\u6b63\u5728\u8ba1\u7b97\u5206\u9875...");let h=[],p={};await this._oE(r,t,s,!0,((e,t,r)=>{if("pager"==e)h.push(t);else if("number"==e){let e=p[r];e||(p[r]=e=[]),e.push(t)}}));for(let{props:{ext:e}}of h)e._totalPage=s.length;for(let e in p){let t=0,r=p[e];for(let{props:{ext:e}}of r)e._fill=1,e._index=t++,e._total=r.length}v._op(s);let{copies:c=1}=t;if(c>1){let e=s.slice();for(;c>1;)s.push(...e),c--}u.show("\u7b49\u5f85\u9875\u9762\u751f\u6210..."),await this.digest({stage:e,enable:!1,images:null,pdf:null,sf:"web",pages:s,loading:!1}),await $(500),await T(),u.show("\u6b63\u5728\u68c0\u67e5\u56fe\u7247\u72b6\u6001..."),await v._om(this.root),u.show("\u9a6c\u4e0a\u5c31\u597d..."),this.digest({enable:!0,empty:!1}),await $(200),u.hide(),Q.rdState|=4},"_gf"(){print()},"_oG"(){this.mxDialog("8f/8h/setting",{width:600,height:220})},async"_oJ"(){let e=I(this,"_oH"),t=this.get("page"),r=await j._oI();if(e())if(r){let e=document.getElementsByTagName("style"),i=[];for(let t=0;t${r}`)}let d=i.join(""),{width:o,height:s}=t;o=c.dY(o),s=c.dY(s),r.SET_PRINT_PAGESIZE(0,o+1+"px",s+1+"px","report-designer"),r.SET_PRINT_MODE("POS_BASEON_PAPER",!0);let l=document.querySelectorAll('[role="page-content"]');for(let e=0;e{let t=this.get("images"),r=I(this,"_oK");if(t)e(t);else{"web"!=this.get("sf")&&(await this.digest({sf:"web"}),await T(),this.set({sf:"image"})),t=[];let i={useCORS:!0,scale:2},d=this.root.querySelectorAll(".rd-lB"),o=0,s=d.length,l=4;document.querySelectorAll("svg").length>20&&(l=2);let a=async()=>{if(r()){scrollTo(0,0);let r=o+1,n=Math.min(r+l-1,s);v._oi(`\u8f6c\u6362\u8fdb\u5ea6\uff1a[${r}~${n}] / ${s}`);let h=[],p=0;if(o=s);)h.push(html2canvas(d[o+p],i)),p++;let e=await Promise.all(h);for(let r of e)t.push(r.toDataURL("image/jpeg",1));setTimeout(a,0),o+=p}else v._oj(),this.set({images:t}),e(t)}};a()}}))},async _oN(){let e=this.get("images");if(e)this.digest({enable:!0});else{let t=I(this,"_oM");u.show("\u6b63\u5728\u8f6c\u6362\u4e3a\u56fe\u7247...");try{await _(),t()&&(e=await this._oL()),t()&&(u.show("\u8f6c\u6362\u56fe\u7247\u6210\u529f\uff5e",2e3),this.digest({enable:!0,images:e}))}catch(e){t()&&u.show(e.message||e,5e3)}}},_oQ(){if(this.get("rdImages"))this.digest({enable:!0});else{let e=I(this,"_oO");u.show("\u6b63\u5728\u8f6c\u6362\u4e3a\u56fe\u7247...");let t={location:location.href,stage:this.get("stage")};(new f).save({name:"_gV",url:F("rdsUrl")+"image",_gq:K("",{print:JSON.stringify(t)})},((t,r)=>{e()&&(t?(u.hide(),this.alert(L._oP(t)),this.digest({sf:"rdImage"})):(u.show("\u8f6c\u6362\u56fe\u7247\u6210\u529f\uff5e",2e3),this.digest({sf:"rdImage",enable:!0,rdImages:r.get("data",[])})))}))}},_oS(){if(this.get("rdPdf"))this.digest({enable:!1});else{let e=I(this,"_oR");u.show("\u6b63\u5728\u8f6c\u6362\u4e3apdf...");let t={location:location.href,stage:this.get("stage")};(new f).save({name:"_gV",url:F("rdsUrl")+"pdf",_gq:K("",{print:JSON.stringify(t)})},((t,r)=>{if(e())if(t)u.hide(),this.alert(L._oP(t)),this.digest({sf:"rdPdf"});else{u.show("\u8f6c\u6362pdf\u6210\u529f\uff5e",2e3);let e=r.get("data",[]),t=atob(e[0]),i=t.length,d=new Uint8Array(i);for(;i--;)d[i]=t.charCodeAt(i);let o=new Blob([d],{type:"application/pdf"});this.digest({sf:"rdPdf",enable:!1,rdPdf:URL.createObjectURL(o)})}}))}},async _oV(){let e=this.get("pdf"),t=this.get("page");if(!e&&t){let e=I(this,"_oT");try{let r=this.get("rdImages");r||(u.show("\u5148\u8f6c\u6362\u4e3a\u56fe\u7247..."),await _(),r=await this._oL()),u.show("\u6b63\u5728\u52a0\u8f7dPDF\u63d2\u4ef6..."),await b(),u.show("\u6b63\u5728\u751f\u6210PDF...");let i=c.dY(t.width),d=c.dY(t.height),o=new jspdf.jsPDF({unit:"px",hotfixes:["px_scaling"],orientation:i>d?"l":"p",format:[i,d],compress:!0});this._oU=o,o.setDocumentProperties({title:x("ea")+"<\u672a\u6ce8\u518c\u7248>",subject:"\u6253\u5370\u9875\u9762",author:"kooboy_li@163.com",keywords:"\u6253\u5370\u3001\u53ef\u89c6\u5316\u3001\u7f16\u8f91\u5668",creator:location.host});let s=r.length,l=e=>{v._oi(`\u751f\u6210\u8fdb\u5ea6\uff1a${e+1} / ${s}`),e&&o.addPage();let t=r[e];o.addImage(t,"JPEG",0,0,i,d,void 0,"FAST")};for(let e=0;e"(e){this._oW(),await this.digest({enable:!1}),this.set({sf:e.value}),"image"==e.value?this._oN():"pdf"==e.value?this._oV():"rdImage"==e.value?this._oQ():"rdPdf"==e.value?this._oS():this.digest({enable:!0})},"_oY"(){open("//github.com/xinglie/report-designer/issues/49")},"_oZ"(){this.mxDialog("8f/8i/setting",{width:550})},"_o2"(){let e=I(this,"_o0");u.show("\u6b63\u5728\u8c03\u7528RDS\u6253\u5370\u670d\u52a1...");let t=L._o1(),r={location:location.href,printer:t,stage:this.get("stage")};(new f).save({name:"_gV",url:F("rdsUrl")+"print",_gq:K("",{print:JSON.stringify(r)})},(t=>{e()&&(t?(u.hide(),this.alert(L._oP(t))):u.show("\u6253\u5370\u6210\u529f\uff5e",2e3))}))},"_o3"(){let{params:e,path:t}=B(location.href),r={...e};r.id||(r.id="xl");let i=K(t,r);open(i)},async"_o5"(){let e,t,r,i=this.get("sf"),d=I(this,"_o4");try{await y._eV()}catch(e){return this.alert(e.message)}if(u.show(x("e_")),"web"==i){let i=[],o=[],s=document.getElementsByTagName("style");for(let e=0;e${t}`)}let l=document.querySelectorAll(".rd-lB");for(let e=0;e${x("ea")}-web ${i.join("")}${o.join("")}`;try{d()&&(await y._eX(e,t,r),u.show(x("eb"),3e3))}catch(e){u.hide(),d()&&"AbortError"!=e.name&&this.alert(e.message)}}else if("pdf"==i&&this._oU)this._oU.save(`${x("ea")}.pdf`),u.show(x("eb"),3e3);else if("rdPdf"==i&&this.get("rdPdf")){let e=document.createElement("a");e.download=`${x("ea")}.pdf`,e.href=this.get("rdPdf"),e.click()}else u.show("\u6682\u4e0d\u652f\u6301\u5f53\u524d\u7c7b\u578b\u7684\u6587\u4ef6\u5bfc\u51fa",3e3)},_oF(){let e=E(`c_${this.id}`),t=e.firstElementChild,r=innerHeight-44,i=t.offsetHeight,d=r/i,o=document.documentElement.offsetWidth,s=t.offsetWidth,l=U(d,o/s);e.style.height=l*i+"px",t.style.transform=`scale(${l})`},"$win&{passive:false}"(e){let{code:t,ctrlKey:r,shiftKey:i,altKey:d,metaKey:o}=e;"KeyP"!=t||i||d||!r&&!o||(e.preventDefault(),print())},"$win"(){D},"$doc"(e){let t=e.clipboardData.getData("text/plain");this._oC(v._on(t))},"$win"(e){4&Q.rdState&&(Q.rdState^=4),8&Q.rdState&&(Q.rdState^=8),Q.rdState|=8,this._oC(v._on(e.json))},"$win"(e){let t=location.protocol+"//"+location.host;e.source!=window&&e.source.postMessage("_gM",t),e.origin==t&&e.data&&"_gM"!=e.data&&this._oC(v._on(e.data))}}).merge(g)})),define("8f/label",["65","../6c/6o/index","../6h/7r","../6h/6i","./6i/index","./6i/resource","./index","./data"],((e,t,r)=>{let i,d;e("./data");let o={class:"rd-eH rd-eK rd-lw"},s={class:"rd-eC rd-fK rd-lz"},l={class:"rd-eH rd-eI rd-eK rd-lE rd-lx"},a={class:"rd-fO rd-lA"},n=e("65"),h=e("../6c/6o/index"),p=e("../6h/7r"),c=e("../6h/6i"),f=e("./6i/index"),g=e("./6i/resource"),u=e("./index"),{applyStyle:x,config:m,State:y,delay:w,lowTaskFinale:_,has:b,isArray:v}=n;x("rd-kG",".rd-lm{-ms-scroll-chaining:none;overscroll-behavior:contain;background:#eee}.rd-ln{page-break-after:auto;page-break-inside:avoid}.rd-lo{width:120px}.rd-lp{width:350px}.rd-lq{margin-top:20px}.rd-lr{height:calc(100vh - 45px)}.rd-ls{position:fixed;bottom:0;padding:4px;background-color:#fff;box-shadow:-1px -1px 4px #0000002b}.rd-lt{height:30px;background:linear-gradient(#ddd4,#ddd 30%,#ddd 70%,#ddd4);margin:4px 20px}.rd-lu{transform-origin:top center}.rd-lv{box-shadow:0 0 6px 0 rgba(0,0,0,.3);right:0;top:40px;height:calc(100vh - 46px);background-color:#fff;width:440px}@page{margin:0}@media screen{.rd-lw{box-shadow:0 0 6px 0 rgba(0,0,0,.3);height:34px;justify-content:flex-end;padding-right:50px;position:fixed;top:0;left:0;right:0;z-index:2;background-color:#fff}.rd-lx{margin:60px 0 40px}.rd-ly{margin:38px 0 0}.rd-lz{margin:40px 0 0;width:calc(100vw - 450px);height:calc(100vh - 46px);box-shadow:0 0 6px 0 rgba(0,0,0,.3)}.rd-lA{height:120px;line-height:120px}.rd-lB{box-shadow:0 0 6px 0 rgba(0,0,0,.3);contain:paint}.rd-lC{background:#eee}.rd-lD{margin:5px auto}}@media print{.rd-lw{display:none}body{min-width:auto}.rd-lD{margin:0}.rd-lx{padding:0}.rd-lz{margin:0;width:100vw;height:100vh}.rd-lC{display:none}.rd-lB{box-shadow:none}.rd-lE{display:block}}");let{min:k}=Math,j=document,L=(e,t,r,i,d)=>{if("pager"==t)r.ext._currentPage=i+1,d(t,r);else if("number"==t)d(t,r,e);else if(b(f._oh,t)){let{rows:e}=r;for(let t of e)for(let e of t.cols)if(e.elements)for(let t of e.elements)L(t.id,t.type,t.props,i,d)}else if(r.bind&&r.bind.id){let{_gO:e,_gP:t}=p._ox(r.bind);e?r.bind._tip=e:r.bind._data=t[i]}},Y=(e,t,r,i,d,o)=>{let{props:s,type:l,id:a}=e,{bind:n}=s,h=m("labelCols"),f=k(t+h,d),g=m("labelGap");if(n&&n.id){let{_gO:e,_gP:d}=p._ox(n);f=k(f,d.length);for(let n=t;n{let c,f,g,u,x,m,y,{apis:w,hasData:_,page:b,unit:v,loading:k,pageWidth:j,i18n:L,pages:Y,cols:M,gap:S}=e;if(g=[],i?g.push(i):(f=[t(0,"\u6807\u7b7e\u6253\u5370\u9884\u89c8")],g.push(i=t("h5",{_:"cO",class:"rd-d7 rd-eG rd-eh rd-fC"},f))),w&&g.push(t("div",{$:"apis","mx5-owner":r,"mx5-view":"8f/data?apis="+p(h,w,"cO"),class:"rd-et rd-fH rd-lv","mx5-datachange":r+"\x1e_o8()"})),c=[t("div",o,g)],f=[],_){let e=b.radiusUnit;if("auto"==e&&(e=v),k)u=[t(0,L("nn"))],x=[t("div",a,u)],f.push(t("div",{class:"rd-e1 rd-eH rd-eu rd-fH rd-lB rd-lD",style:"width:"+j+v+";height:"+b.height+v+";border-radius:"+b.ltRadius+e+" "+b.rtRadius+e+" "+b.rbRadius+e+" "+b.lbRadius+e+";background:"+b.background},x));else for(let i=null==Y?void 0:Y.length,d=i-1,o=0;oe;e++)x.push(t("div",{role:"pole",class:"rd-em rd-et rd-lC",style:"left:"+(b.width*e+(e-1)*S)+v+";width:"+S+v}));for(let e=null==i?void 0:i.length,d=0;d{let r=t||1;for(let t of e){let{_gO:e,_gP:i}=p._ox(t);e||v(i)&&i.length>r&&(r=i.length)}return r})(i,this.get("count")),a=0,n=m("labelCols"),h=f._ol(t,0,e,s),g=async(e,t)=>{let r=[];for(let i=0;i{let t=[];for(let r of e)t.push(p._in(r,1));return Promise.all(t)})(x),h.show("\u6b63\u5728\u51c6\u5907\u8d44\u6e90..."),await c._fV(),h.show("\u6b63\u5728\u8ba1\u7b97\u5206\u9875...");let m=[],b={};await this._oE(d,i,n,x,((e,t,r)=>{if("pager"==e)m.push(t);else if("number"==e){let e=b[r];e||(b[r]=e=[]),e.push(t)}}));for(let{ext:e}of m)e._totalPage=n.length;for(let e in b){let t=0,r=b[e];for(let{ext:e}of r)e._fill=1,e._index=t++,e._total=r.length}f._op(n);let{copies:v=1}=i;if(v>1){let e=n.slice();for(;v>1;)n.push(...e),v--}h.show("\u7b49\u5f85\u9875\u9762\u751f\u6210..."),await this.digest({apis:x,stage:e,enable:!1,pages:n,loading:!1}),await w(500),await _(),h.show("\u6b63\u5728\u68c0\u67e5\u56fe\u7247\u72b6\u6001..."),await f._om(this.root),h.show("\u9a6c\u4e0a\u5c31\u597d..."),this.digest({enable:!0}),await w(200),h.hide(),j.rdState|=4},async"_o8"(e){h.show("\u6b63\u5728\u91cd\u65b0\u751f\u6210..."),this.digest({enable:!1}),this.set({count:e.count});let t=[],r={},i=this.get("stage"),d=this.get("apis"),{page:o,elements:s}=i,l=[];await this._oE(s,o,t,d,((e,t,i)=>{if("pager"==e)l.push(t);else if("number"==e){let e=r[i];e||(r[i]=e=[]),e.push(t)}}));for(let e of l)e.ext._totalPage=t.length;for(let e in r){let t=0,i=r[e];for(let{ext:e}of i)e._fill=1,e._index=t++,e._total=i.length}f._op(t);let{copies:a=1}=o;if(a>1){let e=t.slice();for(;a>1;)t.push(...e),a--}await this.digest({pages:t}),await w(500),await f._om(this.root),await _(),await this.digest({enable:!0}),h.hide()}})})),define("8f/page",["65"],((e,t,r)=>{let i=e("65");r.exports=i.View.extend({tmpl:(e,t,r,i,d,o)=>{let s,l,a=[],{page:n,unit:h,elements:p}=e,c=n.radiusUnit;"auto"==c&&(c=h),l=[];for(let e=null==p?void 0:p.length,s=0;s{let i=e("65"),d=e("../64/70"),o=e("../6h/7r"),s=e("./6i/index"),l=e("./6i/resource"),a=e("./index"),{State:n,lowTaskFinale:h,applyStyle:p,delay:c}=i;p("rd-kX",".rd-lF{page-break-after:auto;page-break-inside:avoid}.rd-lG{display:block;contain:paint}"),r.exports=a.extend({tmpl:(e,t,r,i,d,o)=>{let s,l,a,n=[],{page:h,unit:p,pages:c}=e,f=h.radiusUnit;if("auto"==f&&(f=p),c)for(let e=null==c?void 0:c.length,i=e-1,g=0;g{if("pager"==e)y.push(t);else if("number"==e){let e=w[r];e||(w[r]=e=[]),e.push(t)}}));for(let{props:{ext:e}}of y)e._totalPage=x.length;for(let e in w){let t=0,r=w[e];for(let{props:{ext:e}}of r)e._fill=1,e._index=t++,e._total=r.length}s._op(x);let{copies:_=1}=i;if(_>1){let e=x.slice();for(;_>1;)x.push(...e),_--}s._op(x),await this.digest({stage:e,pages:x}),await h(),await c(1e3);let b=[],v=[],k=document.getElementsByTagName("style");for(let e=0;e${t}`)}let j=document.querySelectorAll(".rd-lG");for(let e=0;e{let i="http://127.0.0.1:8000/CLodopfuncs.js",d=()=>{try{let e=localStorage.getItem("lodop.src");return e||(e=i),e}catch{return i}},o={};r.exports={_o9(e){try{localStorage.setItem("lodop.src",e)}catch{}},_p_:d,_oI:()=>new Promise((e=>{let t=d(),r=o[t];r||(r={_pa:1,_pb:[]},o[t]=r),r._pb.push(e);let i=()=>{let e;r._pa|=4,window.getCLodop&&(e=getCLodop());for(let t of r._pb)t(e);r._pb.length=0};if(4&r._pa)i();else if(!(2&r._pa)){r._pa|=2;let e=document.createElement("script");e.onload=e.onerror=i,e.src=t,document.head.appendChild(e)}}))}})),define("8f/8h/setting",["65","./index"],((e,t,r)=>{let i,d,o,s,l,a={class:"rd-d0"},n={class:"rd-eH rd-eK"},h={class:"rd-d2 rd-e2 rd-eH"},p={value:"value"},c=e("65"),f=e("./index");r.exports=c.View.extend({tmpl:(e,t,r)=>{let c,f,g,u,{src:x}=e;return i?c=[i]:(f=[t(0,'Lodop\u6253\u5370\u8bbe\u7f6e ',1)],c=[i=t("div",{_:"cO",class:"rd-dW rd-ek"},f)]),d?u=[d]:(g=[t(0,"\u6253\u5370\u63d2\u4ef6\u5730\u5740\uff1a")],u=[d=t("div",{_:"cP",class:"rd-lo"},g)]),g=[t("input",{placeholder:"\u6253\u5370\u63d2\u4ef6\u5730\u5740",class:"rd-dP rd-lp",value:x,"mx5-input":r+"\x1e_pc()"},1,p)],u.push(t("div",0,g)),f=[t("div",n,u)],o?f.push(o):(u=[t(0,'Lodop\u5b89\u88c5\u540e\u4f1a\u6709\u4e00\u4e2a\u901a\u8fc7http\u534f\u8bae\u6765\u63a7\u5236\u6253\u5370\u670d\u52a1\u7684javascript\u63d2\u4ef6\uff0c\u5728\u8fd9\u91cc\u8bbe\u7f6e\u8be5\u63d2\u4ef6\u7684\u5730\u5740\u3002\u5982\u679c\u6253\u5370\u670d\u52a1\u5b89\u88c5\u5728\u5f53\u524d\u7535\u8111\u4e0a\u4e14\u672a\u4fee\u6539\u8fc7\u7aef\u53e3\uff0c\u5219\u65e0\u9700\u505a\u4efb\u4f55\u8bbe\u7f6e\u3002\u53bbLodop\u5b98\u7f51\u4e86\u89e3\u66f4\u591a\u4fe1\u606f ',1)],f.push(o=t("div",{_:"cQ",class:"rd-fF rd-lq"},u))),c.push(t("div",a,f)),u=[s||(s=t(0,"\u5e94\u7528"))],f=[t("button",{"mx5-click":r+"\x1e_eS()",class:"rd-dT rd-dV rd-e5 rd-eq",type:"button"},u)],u=[l||(l=t(0,"\u53d6\u6d88"))],f.push(t("button",{"mx5-click":r+"\x1e_eR()",class:"rd-dT rd-e5 rd-eh rd-eq",type:"button"},u)),c.push(t("div",h,f)),t(r,0,c)},init(e){this._eQ=e.dialog},render(){this.digest({src:f._p_()})},"_eR"(){this._eQ.close()},"_pc "(e){let t=e.eventTarget.value;this.digest({src:t})},"_eS"(){f._o9(this.get("src")),this._eQ.close()}})})),define("8f/8h/tip",["65"],((e,t,r)=>{let i,d,o={class:"rd-d2 rd-e2 rd-eH"},s=e("65");r.exports=s.View.extend({tmpl:(e,t,r)=>{let s,l,a,{i18n:n}=e;return i?s=[i]:(l=[t(0,'\u5b89\u88c5\u63d0\u793a ',1)],s=[i=t("div",{_:"cO",class:"rd-dW rd-ek"},l)]),d?s.push(d):(l=[t(0,'\u672a\u68c0\u6d4b\u5230Lodop\u6253\u5370\u670d\u52a1\uff0c\u8bf7\u60a8\u5148\u524d\u5f80Lodop\u5b98\u65b9\u793a\u4f8b\u9875\u9762 \uff0c\u6309\u76f8\u5173\u8bf4\u660e\u5b89\u88c5Lodop\u6253\u5370\u670d\u52a1\u5e76\u80fd\u6b63\u5e38\u8fd0\u884c\u5b98\u7f51\u63d0\u4f9b\u7684\u793a\u4f8b\u540e\uff0c\u518d\u6765\u8be5\u9875\u9762\u5c1d\u8bd5\u4f7f\u7528Lodop\u6253\u5370\u3002',1)],s.push(d=t("div",{_:"cP",class:"rd-d0"},l))),a=[t(0,n("mL"))],l=[t("button",{"mx5-click":r+"\x1e_ly()",class:"rd-dT rd-dV rd-e5 rd-eq",type:"button"},a)],s.push(t("div",o,l)),t(r,0,s)},init(e){this._eQ=e.dialog},render(){this.digest()},"_ly"(){this._eQ.close()}})})),define("8f/8i/index",[],((e,t,r)=>{let i={"127.0.0.1":1,localhost:1};r.exports={_o1(){let e={name:"",nc:1,pt:0,pl:0,pr:0,pb:0,l:"portrait",ts:!1};try{let t=JSON.parse(localStorage.getItem("rds.printer"));Object.assign(e,t)}catch{}return e},_pd(e){try{localStorage.setItem("rds.printer",JSON.stringify(e))}catch{}},_oP(e){let t=location.hostname;return i[t]?`RDS\u670d\u52a1\u5f02\u5e38[${e.message||e}]`:t+"\u73af\u5883\u4e0d\u652f\u6301RDS\u670d\u52a1\uff0c\u8fdb\u4e00\u6b65\u4e86\u89e3\u8be6\u60c5\u53ef\u4ee5\u6dfb\u52a0\u4f5c\u8005\u5fae\u4fe1\uff1aqq84685009"}}})),define("8f/8i/setting",["65","../../64/70","./index","6c/83/index","6c/82/index"],((e,t,r)=>{let i,d,o,s,l,a,n,h,p,c,f,g,u,x;e("6c/83/index"),e("6c/82/index");let m={class:"rd-d0"},y={class:"rd-eH rd-eK"},w={class:"rd-eH rd-eK rd-lq"},_={class:"rd-d6 rd-e5 rd-eH rd-eK rd-en"},b={class:"rd-d2 rd-d3 rd-e2 rd-eH rd-eK rd-eN rd-ek rd-f0 rd-fV"},v={checked:"checked"},k=e("65"),j=e("../../64/70"),L=e("./index"),{config:Y,mark:M,View:S,toUrl:P}=k,O=[{text:"\u7eb5\u5411",value:"portrait"},{text:"\u6a2a\u5411",value:"landscape"}];r.exports=S.extend({tmpl:(e,t,r,k,j,L)=>{let Y,M,S,P,{error:O,exf:R,list:z,printer:C,layouts:H}=e;return Y=i?[i]:[i=t("div",{_:"cO",class:"rd-dY rd-eN rd-f1"})],d?Y.push(d):(M=[t(0,'RDS\u6253\u5370\u8bbe\u7f6e ',1)],Y.push(d=t("div",{_:"cP",class:"rd-dW rd-dX rd-eN rd-eO rd-ek rd-f2"},M))),M=[],O?M.push(t(0,R(O.message))):(o?P=[o]:(S=[t(0,"\u6253\u5370\u673a\uff1a")],P=[o=t("div",{_:"cQ",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"list","mx5-owner":r,class:"rd-lp","mx5-change":r+"\x1e_pg({key:'name'})","mx5-view":"6c/83/index?list="+L(j,z,"cO")+"&selected="+k(C.name)})),M.push(t("div",y,P)),s?P=[s]:(S=[t(0,"\u65b9\u5411\uff1a")],P=[s=t("div",{_:"cR",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"layouts","mx5-owner":r,class:"rd-lp","mx5-change":r+"\x1e_pg({key:'l'})","mx5-view":"6c/83/index?list="+L(j,H,"cP")+"&textKey=text&valueKey=value&selected="+k(C.l)})),M.push(t("div",w,P)),l?P=[l]:(S=[t(0,"\u53cc\u9762\u6253\u5370\uff1a")],P=[l=t("div",{_:"cS",class:"rd-ep rd-lo"},S)]),S=[t("input",{class:"rd-et rd-fq",type:"checkbox",checked:C.ts,"mx5-change":r+"\x1e_ph()"},1,v)],a?S.push(a):S.push(a=t("i",{_:"cT",class:"rd-eB rd-eu rd-fr rd-ft"})),P.push(t("label",_,S)),M.push(t("div",w,P)),n?P=[n]:(S=[t(0,"\u6253\u5370\u4efd\u6570\uff1a")],P=[n=t("div",{_:"cU",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"printer","mx5-owner":r,"mx5-input":r+"\x1e_pf({key:'nc'})",class:"rd-dP rd-eu","mx5-view":"6c/82/index?min=1&value="+L(j,C.nc,"cQ")})),M.push(t("div",w,P)),h?P=[h]:(S=[t(0,"\u5de6\u9875\u8fb9\u8ddd\uff1a")],P=[h=t("div",{_:"cV",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"printer","mx5-owner":r,"mx5-input":r+"\x1e_pf({key:'pl'})",class:"rd-dP rd-eu","mx5-view":"6c/82/index?min=0&value="+L(j,C.pl,"cR")})),M.push(t("div",w,P)),p?P=[p]:(S=[t(0,"\u4e0a\u9875\u8fb9\u8ddd\uff1a")],P=[p=t("div",{_:"cW",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"printer","mx5-owner":r,"mx5-input":r+"\x1e_pf({key:'pt'})",class:"rd-dP rd-eu","mx5-view":"6c/82/index?min=0&value="+L(j,C.pt,"cS")})),M.push(t("div",w,P)),c?P=[c]:(S=[t(0,"\u53f3\u9875\u8fb9\u8ddd\uff1a")],P=[c=t("div",{_:"cX",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"printer","mx5-owner":r,"mx5-input":r+"\x1e_pf({key:'pr'})",class:"rd-dP rd-eu","mx5-view":"6c/82/index?min=0&value="+L(j,C.pr,"cT")})),M.push(t("div",w,P)),f?P=[f]:(S=[t(0,"\u4e0b\u9875\u8fb9\u8ddd\uff1a")],P=[f=t("div",{_:"cY",class:"rd-ep rd-lo"},S)]),P.push(t("div",{$:"printer","mx5-owner":r,"mx5-input":r+"\x1e_pf({key:'pb'})",class:"rd-dP rd-eu","mx5-view":"6c/82/index?min=0&value="+L(j,C.pb,"cU")})),M.push(t("div",w,P))),Y.push(t("div",m,M)),P=[g||(g=t(0,"\u5e94\u7528"))],M=[t("button",{"mx5-click":r+"\x1e_eS()",class:"rd-dT rd-dV rd-e5 rd-eq",type:"button"},P)],P=[u||(u=t(0,"\u53d6\u6d88"))],M.push(t("button",{"mx5-click":r+"\x1e_eR()",class:"rd-dT rd-e5 rd-eh rd-eq",type:"button"},P)),Y.push(t("div",b,M)),x?Y.push(x):Y.push(x=t("div",{_:"cZ",class:"rd-d1 rd-eN rd-fZ"})),t(r,0,Y)},init(e){this._eQ=e.dialog,this.set({exf:L._oP,layouts:O})},render(){let e=M(this,"_pe"),t=new j,r=P("",{print:JSON.stringify({width:0,height:0,location:location.href})});t.all({name:"_gV",url:Y("rdsUrl")+"printers",_gq:r},((t,r)=>{if(e()){let e=L._o1(),i=r.get("data",[]);e.name||(e.name=i[0]),this.digest({error:t,list:i,printer:e})}}))},"_eR"(){this._eQ.close()},"_pf "(e){let t=this.get("printer"),{key:r}=e.params;t[r]=e.value},"_pg"(e){let t=this.get("printer"),{key:r}=e.params;t[r]=e.value},"_ph"(e){this.get("printer").ts=e.eventTarget.checked},"_eS"(){L._pd(this.get("printer")),this._eQ.close()}})})),define("8f/6i/index",["65","../../64/68","../../6h/7r","../../6h/table"],((e,t,r)=>{let i=e("65"),d=e("../../64/68"),o=e("../../6h/7r"),s=e("../../6h/table"),{Vframe:l,node:a,has:n,guid:h,delay:p,lowTaskFinale:c,isArray:f,toMap:g}=i,u={"data-coltable":1,"data-dtable":1,"data-rdtable":1,"data-ftable":1,"data-richtext":1,video:1},x={xsheet:1},m={"hod-table":1,"hod-hflex":1,"hod-vflex":1,"hod-footer":1,"hod-header":1,"data-dtable":1,"hod-tabs":1,"data-rdtable":1},y={...m,"data-repeater":1,"data-ftable":1,"data-celltable":1},w=/<[^>]+>/g,_=/\s*(?:id|mx5-[a-z]+)\s*=\s*"[^"]+"/gi,b=h("_rd_mdt"),v="rd-ey",k=e=>{let t=a("_rd_tip"),{classList:r}=t;r.contains(v)&&r.remove(v),t.innerHTML=e},j=()=>{let e=a("_rd_tip"),{classList:t}=e;t.contains(v)||t.add(v)},L=(e,t)=>{if(e&&e.length){let r;for(let{props:i}of e){if(!(i.bind&&i.bind.fields&&i.bind.fields.length)){r=1;break}if(null!=t[i.bind.fields[0].id]){r=1;break}}return r}return 1},Y=(e,t,r)=>{for(let i=e.length;i--;){let{id:d,type:o,props:s}=e[i];if(n(y,o)){let{rows:e}=s;for(let i of e)for(let e of i.cols)e.elements&&Y(e.elements,t,r)}if(s.print)if("odd"==s.print)t%2&&e.splice(i,1);else if("even"==s.print)t%2==0&&e.splice(i,1);else if("last"==s.print){let o=`${d}:${t}`;r[`${d}:${t+1}`]&&e.splice(i,1),r[o]=1}else if("first"==s.print){let o=`${d}:${t+1}`;if(r[o]){for(let e of r[o]){let[t,r]=e;t.splice(r,1)}delete r[o]}let s=`${d}:${t}`;r[s]||(r[s]=[]),r[s].push([e,i])}}};r.exports={_og:m,_oh:y,_oi:k,_oj:j,_ok:async(e,t)=>{let r=a(b);r||(r=document.createElement("div"),r.className="rd-dM",r.style.cssText="position:fixed;left:-500cm;top:-500cm;pointer-events:none;opacity:0",r.id=b,document.body.appendChild(r));let i=l.root();for(i.unmount(r),i.mount(r,`6r/${e}/index`,t);!r.childNodes.length;)await p(10);return await c(),await p(50),r},_ol:(e,t,r,i)=>{let o=[],{width:s,height:l}=e,a=t*l,h=a+l,p={x:0,y:a,width:s,height:l};for(let e of r){let{props:r,type:c}=e;if(!e.used||!x[c])if(e.used=1,"hod-header"==c||"hod-footer"==c)r.x=0,r.width=s,r.y="hod-header"==c?t*l:(t+1)*l-r.height,o.push(e);else{let{x:s,y:l,width:f,height:g,rotate:x}=r;if(l+=i,n(u,c))(l>=a&&l<=h||l<0&&0==t)&&o.push(e);else{let t=d.dM({x:s,y:l,width:f,height:g,rotate:x}),r={x:t._eq,y:t._er,width:t._es,height:t._et};d.dN(r,p)&&o.push(e)}}}return o},_om:async(e,t=!0)=>{let r=e.getElementsByTagName("img");for(;;){let e=1,i=0;for(let t=r.length;t--;){r[t].complete?i++:e=0}if(t&&k(`\u56fe\u7247\u5b8c\u6210\u8fdb\u5ea6\uff1a${i} / ${r.length}`),e){t&&j();break}await p(6)}},_on:e=>{let t;try{t=JSON.parse(e)}finally{return t}},_oo:e=>e.replace(w,(e=>e.replace(_,""))),_op:e=>{let t={};for(let r=e.length;r--;){let i=e[r];Y(i,r,t)}},_ow(e,t,r){let i={},d=[],s=0,l=e=>{for(let a of e){a.id||(a.id=h("e"));let{props:e,type:p}=a;t._ln("_oq",p);let{bind:c}=e;if(c&&c.id)if(r){let e=o._oe(c);o._or(e)||o._of(e,null,`\u672a\u63d0\u4f9b${e}\u7684\u6570\u636e`)}else{let e=c.url+"~"+c.id;i[e]||(i[e]=c,d.push(c))}if(n(y,p)){let{rows:r}=e;for(let e of r)for(let r of e.cols)"qrcode"!=r.type&&"wabqr"!=r.type&&"barcode"!=r.type||t._ln("_os",r.type),r.elements&&l(r.elements),r.bindKey&&(c.fields||(c.fields=[]),c.fields.push({id:r.bindKey,name:r.bindName}))}"data-richtext"==p&&(p="richtext"),t._ln("_oq",p),"hod-footer"==p?s=e.height:"barcode"==p||"batch-barcode"==p||"qrcode"==p||"wabqr"==p||"batch-qrcode"==p||"fx"==p||"formula"==p||p.startsWith("chart_")?(p.startsWith("chart_")?p="echarts":"formula"==p?p="mathjax":p.startsWith("batch-")&&(p=p.substring(6)),t._ln("_os",p)):"richtext"==p?t._ln("_os","html2canvas"):"html"==p&&t._ln("_os","underscore")}};return l(e),{_ot:s,_ou:d,_ov:{}}},_oy(e){let{props:t,type:r}=e,{bind:i,rows:d,dynamicCols:l,avgDynamicColsWidth:a}=t;if(i.id&&l){let{_gO:e,_gP:l}=o._ox(i);if(!e){let e,i=(e=>{if(f(e)){let t={};for(let r of e)for(let e in r)null!=r[e]&&(t[e]=e);return t}return e})(l);e="data-dtable"==r?((e,t)=>{let r=[],i=0,d=0;for(let o of e){if(o.data){for(let e=o.cols.length;e--;){let d=o.cols[e];d.bindKey&&null==t[d.bindKey]&&(r.push(e),i+=d.width)}break}d++}return{dL:d,dM:r,dN:i}})(d,i):((e,t)=>{let r=[],i=0,d=0;for(let o of e){if(o.data){for(let e=o.cols.length;e--;){let d=o.cols[e];L(d.elements,t)||(r.push(e),i+=d.width)}break}d++}return{dL:d,dM:r,dN:i}})(d,i);let o=e.dM,n=e.dN,h=e.dL;t.focusRow=h,s.dL(t);for(let e of o)t.focusCol=e,s.dQ(t),s.dL(t);if("none"==a)t.width-=n;else if("direct"==a){let e=n/t._it;for(let t of d)for(let r of t.cols){let t=r.colspan;r.width+=e*t}}else{let e=s.dM(t)._iu,r=0;for(let t of e)r+=t;for(let e of d)for(let t of e.cols)t.width+=t.width/r*n}}}}}})),define("8f/6i/resource",["65"],((e,t,r)=>{let i=e("65"),{use:d,isFunction:o,mix:s}=i,l=async e=>{let[t]=await d("6h/"+e);o(t)?await t():o(t._h7)&&await t._h7()},a=async e=>{await d("6r/"+e+"/index")},n=e=>new Promise((t=>{let r=new Image;r.onload=r.onerror=()=>{t()},r.src=e,r.complete&&t()})),h=function(){this._oz={},this._oA=[]};s(h.prototype,{_ln(e,t){let r=e+"~"+t,i=this._oz,d=this._oA;1!=i[r]&&(i[r]=1,d.push({type:e,src:t}))},_fV(){let e=[],t=this._oA;for(let r of t)"_os"==r.type?e.push(l(r.src)):"_oq"==r.type?e.push(a(r.src)):e.push(n(r.src));return Promise.all(e)},_oB(){this._oA.length=0}}),r.exports=h})),define("8f/8j/batch",["65","../../64/67","../../64/68","../../6h/7r","../../6h/6i","../6i/index"],((e,t,r)=>{let i=e("65"),d=e("../../64/67"),o=e("../../64/68"),s=e("../../6h/7r"),l=e("../../6h/6i"),a=e("../6i/index"),{guid:n,isArray:h}=i,{max:p,abs:c}=Math;r.exports=async(e,t,r,i,c,f,g)=>{let u,{props:x,type:m,id:y}=e,{x:w,y:_,width:b,hspace:v,vspace:k,rotate:j,bind:L}=x;if(!L||!L.id)return-1;let Y,M,S,P=r.height-i,O=o.dM(x),R=O._et,z=O._es,C=O._eq,H=O._er,A=O._eo[0],T=C-w,V=H-_,N=_,B=w,F=0,I=c.length,q=0,{_gO:X,_gP:$}=s._ox(L);for(h($)||($=[$]),q=$.length;;){let e=l.dO(x),i=e.bind;if(X)i._tip=X;else{let e=$[t++];i._data=e,t>q&&(u=-1)}if(-1==u)break;{e.x=B,e.y=N;let i={type:m,id:n(y),props:e};if(f||c.push(i),"batch-text"==m&&e.autoReturn){let i=await a._ok(m,{props:e,unit:g}),s=d.dM(i.firstElementChild.offsetHeight),l=o.dM({x:w,y:_,width:b,rotate:j,height:s}),n=l._eo[0],h=A.x-n.x+B-w+(Y?Y-l._eq+v:0),f=A.y-n.y+N-_+(M?M-l._er+k:0);if(e.x+=h,e.y+=f,C=l._fW+h,C>r.width){S=1,I=c.length;let t=H-(l._er+f)+k,r=e.x-w;e.y+=t,e.x=w,C-=r,M=H,Y=C,F=l._et,H=l._fX+f+t}else H=p(H,l._fX+f),F=p(F,l._et),Y=C;if(S&&H>P){let e=c.length-I+1;u=t-e,c.splice(I-1,e);break}}else if(C+=z+v,B=C-T,C+z>r.width&&(C=O._eq,B=C-T,H+=R+k,N=H-V,H+R>P)){u=t;break}}}return u==q?-1:u}})),define("8f/8j/common",["65","../../6h/7r"],((e,t,r)=>{let i=e("65"),d=e("../../6h/7r"),{isArray:o}=i;r.exports=(e,t,r,i)=>{let{props:s}=e,{bind:l}=s;if(l.id&&!l._tip&&!l._data){let{_gO:e,_gP:t}=d._ox(l);e?l._tip=e:l._data=t}if("repeat"==e.type){let e=s.image;if(l._data){let t=l._data;o(t)&&(t=t[0]),e=t[l.fields[0].id]}r._ln("_pi",e)}i||t.push(e)}})),define("8f/8j/data-celltable",["../../6h/7r"],((e,t,r)=>{let i=e("../../6h/7r");r.exports=(e,t,r,d)=>{d||r.push(e);let{props:o}=e,{bind:s}=o;if(s.id){let{_gO:e,_gP:r}=i._ox(s);if(!e)return s._data=r[t],t==r.length-1?-1:t+1;s._tip=e}return-1}})),define("8f/8j/data-coltable",["../../64/67","../../6r/data-coltable/consts","../../6h/7r"],((e,t,r)=>{let i=e("../../64/67"),d=e("../../6r/data-coltable/consts"),o=e("../../6h/7r"),{floor:s}=Math;r.exports=(e,t,r,l,a,n)=>{n||a.push(e);let{props:h}=e,{bind:p,columns:c}=h;if(p.fields&&p.fields.length){let e=0;for(let t of p.fields)e+=c[t.id];let a=i.dM(1);h.width=e+a;let{_gO:n,_gP:f}=o._ox(p);if(!n){let e=r.height-h.y-h.theadRowHeight-a-h.tfootSpacing-l,i=s(e/(h.tbodyRowHeight+a));i<1&&(i=1);let d=i+t;return d>f.length&&(d=f.length),p._data=f.slice(t,d),d==f.length?-1:d}h.loadingHeight=d._iJ,p._tip=n}else h.width=d._iI;return-1}})),define("8f/8j/data-dtable",["../../64/67","../../6h/7r","../../6h/6i","../../6h/table","../6i/index"],((e,t,r)=>{let i=e("../../64/67"),d=e("../../6h/7r"),o=e("../../6h/6i"),s=e("../../6h/table"),l=e("../6i/index"),{min:a,floor:n}=Math,h={},p=(e,t,r,i)=>{let d={},o=Object.keys(e[0]);r=a(r,e.length);for(let i of o){let o=0,s=0;for(let d=t;d0?o/s:0,o=0,s=0;for(let t=0;t0?o/s:0,o=0,s=0;for(let t=0;t0?o/s:0}for(let e=i.cols.length;e--;){i.cols[e].totalData=d}};r.exports=async(e,t,r,a,c,f,g)=>{g||f.push(e);let{props:u,type:x}=e,{bind:m,rows:y,borderwidth:w,tfootSpacing:_,borderdeed:b,headFirst:v,footLast:k,hideFoot:j,hideHead:L,hideTotal:Y,hideLabel:M,columnsPrint:S,hspace:P}=u,O=async(e,r,d)=>{m._data=e.slice(t,t+1),m._showAcc=!0,m._showFoot=!1,m._showHead=!1,p(e,t,r,d);let o=(await l._ok(x,{props:u,unit:c})).getElementsByTagName("tr"),s=o[o.length-1];return i.dM(s.clientHeight)};if(m.id){let{_gO:g,_gP:R}=d._ox(m);if(!g){let d=!1,g=0,z=-1,C=-1,H=-1,A=0,T=0;for(let e of y)e.label?-1==z&&(z=g):e.data?C=g:e.total?H=g:-1==z?A++:-1!=H&&T++,g++;let V=y[H],N=y[C],B=!1,F=!1,I=!1;for(let e of N.cols)if(e.bindKey&&e.textAutoReturn){B=!0;break}for(let e=z;e{if(!h[e.id]){m._data=t,m._showAcc=!1,m._showFoot=!1,m._showHead=!1,u.hideLabel=!1;let d=await l._ok(r,{props:u,unit:c});u.hideLabel=M;let o=d.getElementsByTagName("tr"),s=[];for(let e=o.length;e--;){let t=o[e];s[e]=i.dM(t.clientHeight)}h[e.id]=s}})(R,x),X=h[e.id]),!Y)for(let e of V.cols)if("sumpage"==e.type||"sum"==e.type||"acc"==e.type||"custom"==e.type||"avg"==e.type||"avgpage"==e.type||"avgacc"==e.type||"text"==e.type&&e.textContent){d=!0;break}if(d)for(let e of V.cols)if(e.textAutoReturn){I=!0;break}s.dL(u,!0);let $=s.dM(u)._iv,W=$[H]||0,E=W,K=0,D=$[C]||0,U=0,Q=0;if(F)for(let e=z;eH&&!j&&(Q+=$[e]||0);"separate"==b&&(K+=2*A,Q+=2*T,W+=2,U+=2,w=2,D+=2);let J,G,Z,ee=!1;for(;;){let i=!0,s=!0;0==t||u.eachPageLabel||(u.hideLabel=!0),u.hideLabel&&(U=0);let l,h=r.height-u.y-w-_-a-U;L?s=!1:v?0==t?h-=K:s=!1:h-=K,d&&(h-=W);let c=async()=>{for(;;){if(G<1&&(G=1),G+t>R.length&&(G=R.length-t),q){let e=C-z,r=X.slice(t+e,t+G+e);m._rHeights=r,l=0;for(let e of r)l+=e}else l=G*D+w;if(I){for(let e of V.cols)e.height=E;let e=await O(R,G+t,V);for(let t of V.cols)t.height=e;h+=W,h-=e,W=e}if(l>h&&G>1?G--:Z=1,Z)break}J=G+t};if(k&&!j)if(G=n(h/D),await c(),J>=R.length)if(J=R.length,t=R.length&&(J=R.length,ee=!0);m._data=R.slice(t,J),m._all=R,m._showAcc=d,m._showFoot=i,m._showHead=s,d&&p(R,t,J,V);let g=u.x+2*u.width+P<=r.width;if(ee||!S||!g)break;t=J,e=o.dO(e),f.push(e),u=e.props,m=u.bind,y=u.rows,V=y[H],u.x+=u.width+P,Z=0}return ee?-1:J}m._tip=g}else m._showHead=!0,m._showFoot=!0;return-1}})),define("8f/8j/data-ftable",["../../64/67","../../64/68","../../6h/7r","../../6h/6i","../../6h/table","../6i/index","./common"],((e,t,r)=>{let i=e("../../64/67"),d=e("../../64/68"),o=e("../../6h/7r"),s=e("../../6h/6i"),l=e("../../6h/table"),a=e("../6i/index"),n=e("./common"),{floor:h}=Math,p={};r.exports=async(e,t,r,c,f,g,u,x)=>{u||g.push(e);let m,y,{props:w,id:_}=e,{bind:b,rows:v,borderwidth:k,tfootSpacing:j,borderdeed:L,headFirst:Y,footLast:M,hideFoot:S,hideHead:P,hideLabel:O,hideTotal:R,hspace:z,columnsPrint:C,autoHeight:H}=w,A=s.dO(v);if(b.id){let e=o._ox(b);m=e._gO,y=e._gP}else y=[];if(!m){let o;H&&(p[_]?o=p[_]:(o=await(async(e,t,r,o,l)=>{(t=s.dO(t)).hideLabel=!1,t.hideTotal=!1;let{rows:h,bind:p}=t;p._showAcc=!0,p._showHead=!0,p._showFoot=!0;let c=0,f=-1;for(let e of h){if(e.data){f=c;break}c++}c=0;for(let e of h){if(c!=f)for(let t of e.cols)if(t.elements&&t.elements.length)for(let e of t.elements)e.props.bind&&n(e,l,o,1);c++}let g=h[f],u=[];for(let t of e){let e=s.dO(g);for(let r of e.cols)if(r.elements&&r.elements.length)for(let e of r.elements)e.props.bind&&(e.props.bind._data=t);u.push(e)}h.splice(f,1,...u);let x=(await a._ok("data-ftable",{props:t,unit:r})).querySelector("tbody").getElementsByTagName("tr"),m=[];c=0;for(let e of h){let t=0,o=0;for(let s of e.cols){if(s.elements&&s.elements.length){let e=0,l=x[c].cells[o].children,a=0;for(let t of s.elements){let o=d.dM(t.props)._et,s=l[e].firstElementChild.getBoundingClientRect(),n=i.dM(s.height,r)-o;n>a&&(a=n),e++}a>t&&(t=a)}o++}m[c]=t,c++}return m})(y,w,x,f,g),p[_]=o));let u=!R,m=0,T=-1,V=-1,N=-1,B=-1,F=0,I=0;for(let e of v)e.label?-1==T&&(T=m):e.data?V=m:e.total?-1==N&&(N=m):-1==T?F++:-1!=N&&(-1==B&&(B=m),I++),m++;let q=v[V];l.dL(w,!0);let X,$,W,E,K=l.dM(w)._iv,D=0,U=0,Q=0,J=K[V]||0,G=0,Z=!1;H&&(X=o.slice(0,V+1).concat(o.slice(N-v.length)));for(let e=0;e=T&&e=N&&e=B&&!S&&(G+=K[e]+t)}for("separate"==L&&(Q+=2*F,G+=2*I,D+=2,U+=2,k=2,J+=2);;){let i=!0,d=!0,l=r.height-w.y-k-j-c-U;P?d=!1:Y?0==t?l-=Q:d=!1:l-=Q,u&&(l-=D);let a,p=V+t,x=()=>{for(;;){if(W<1&&(W=1),W+t>y.length&&(W=y.length-t),H){a=0;for(let e=p+W-1;e>=p;e--)a+=J+o[e]}else a=W*J;if(a>l&&W>1?W--:E=1,E)break}$=W+t};if(M&&!S)if(W=h(l/J),x(),$>=y.length)if($=y.length,t<$){let e=a+k+U+G+j;u&&(e+=D),w.y+e<=r.height?Z=!0:i=!1}else Z=!0;else i=!1;else i=!S,l-=G,W=h(l/J),x(),$>=y.length&&($=y.length,Z=!0);m=0;for(let e of v){if(m!=V){let t;t=m{let i=e("65"),d=e("../../6h/7r"),o=e("../../6h/6i"),{guid:s,isArray:l}=i;r.exports=async(e,t,r,i,a,n)=>{let h,{props:p,type:c,id:f}=e,{x:g,y:u,width:x,height:m,hspace:y,vspace:w}=p,_=r.height-i,b=g,v=u,k=m;for(;;){let e=o.dO(p);e.x=b,e.y=v;let i=e.bind;if(i.id){let{_gO:e,_gP:r}=d._ox(i);if(e)i._tip=e;else{l(r)||(r=[r]);let e=r[t++];i._data=e,t>=r.length&&(h=-1)}}else h=-1;for(let t of e.rows)for(let e of t.cols)for(let t of e.elements){let e=t.props.bind;e&&e.id==i.id&&(e._data=i._data)}let u={type:c,id:s(f),props:e};if(n||a.push(u),-1==h)break;if(b+=x+y,b+x>r.width){if(b=g,v+=k+w,v+m>_){h=t;break}k=m}}return h}})),define("8f/8j/richtext",["65","../../64/67","../../6h/7r","../../6h/html2canvas","../6i/index"],((e,t,r)=>{let i=e("65"),d=e("../../64/67"),o=e("../../6h/7r"),s=e("../../6h/html2canvas"),l=e("../6i/index"),{task:a,lowTaskFinale:n,isArray:h,has:p}=i,c={TD:1,BR:1,TH:1,P:1,DIV:1},f=(e,t)=>e-t,g=(e,t)=>e.y-t.y,u=(e,t)=>{let r=t.getBoundingClientRect();if(r.height){let t=`${r.y}~${r.height}`;e[t]||(e[t]=1,e.push({y:scrollY+r.y,height:r.height}))}},x=async(e,t,r)=>{let i=window.devicePixelRatio||1,d=e.x,o=e.y;e.x=0,e.y=0,l._oi("\u5bcc\u6587\u672c:\u6b63\u5728\u68c0\u6d4b\u56fe\u7247...");let h=await l._ok(r,{props:e,unit:t});e.x=d,e.y=o;let x=h.firstElementChild;await l._om(x,!1),l._oi("\u5bcc\u6587\u672c:\u6b63\u5728\u51c6\u5907\u73af\u5883\u548c\u6570\u636e..."),await s(),scrollTo(0,0);let m=await html2canvas(x,{useCORS:!0,scale:i});l._oi("\u5bcc\u6587\u672c:\u6b63\u5728\u68c0\u6d4b\u5206\u5272\u70b9...");let y=x.getBoundingClientRect(),w=await(async(e,{y:t,height:r})=>{let i=document.createRange(),d=[],o=e=>{if(scrollTo(0,0),3==e.nodeType){let t=0;for(;t{for(let t of e)3==t.nodeType?a(o,[t]):1==t.nodeType&&(t.childNodes.length?a(s,t.childNodes):p(c,t.tagName.toUpperCase())||a(o,[t]))};s(e),await n(),d=d.sort(g),d.length||d.push({y:t,height:2});let l=t+r,h=d[d.length-1];return l-(h.y+h.height)>=30&&d.push({y:l-2,height:2}),(e=>{let t=[],r=e[0];for(let i=1;i{let r=[],i=i=>{let d,o=i.y+i.height,s=1;for(let e of t){if(e.y+e.height>o&&e.yo&&(null==d||e.y{let i=[],d=document.createElement("canvas"),o=d.getContext("2d"),s=0,l=t.width;d.width=l,e[e.length-1]=t.height/r;let h=e=>{let a=(e-s)*r;a>0&&(d.height=a,o.drawImage(t,0,s*r,l,a,0,0,l,a),i.push({_gP:d.toDataURL("image/png",1),_es:l/r,_et:a/r})),o.clearRect(0,0,l,a),s=e};for(let t of e)a(h,[t]);return await n(),i})(_,m,i)};r.exports=async(e,t,r,i,s,a,n)=>{let{props:p,type:c,id:f}=e,g=d.dY(r.height-i-p.y),u="richtext";if("data-richtext"==c){e.type="richtext";let t=p.bind;if(t.id){p.splitToPages=!0;let{_gO:e,_gP:r}=o._ox(t),i=t.fields[0];if(e)p.text=e;else{let e=h(r)?r[0]:r;p.text=e[i.id]}}else p.height=d.dM(30)}else if("html"==c){let t=p.bind;if(p.splitToPages=!0,t.id){let{_gO:e,_gP:r}=o._ox(t);e||(t._data=r)}e.type="richtext",u="html"}if(p.splitToPages)try{let r=s[`_pj_${f}`];r||(r=await x(p,a,u),s[`_pj_${f}`]=r);let i=t,d=r.length,o=[];for(;i `;return h+="",p.text=h,n.push(e),i
+ 正在加载资源...
+
+
\ No newline at end of file
diff --git a/src/components/basic/Audit.vue b/src/components/basic/Audit.vue
new file mode 100644
index 0000000..431d6c5
--- /dev/null
+++ b/src/components/basic/Audit.vue
@@ -0,0 +1,59 @@
+
+
+
+
+ 审核结果:
+
+
+ {{ item.text }}
+
+
+
+
+ 备 注:
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/Empty.vue b/src/components/basic/Empty.vue
new file mode 100644
index 0000000..e5e6a79
--- /dev/null
+++ b/src/components/basic/Empty.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/ErrorMsg.vue b/src/components/basic/ErrorMsg.vue
new file mode 100644
index 0000000..3885ed5
--- /dev/null
+++ b/src/components/basic/ErrorMsg.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/components/basic/Icons.vue b/src/components/basic/Icons.vue
new file mode 100644
index 0000000..afd4250
--- /dev/null
+++ b/src/components/basic/Icons.vue
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+
diff --git a/src/components/basic/MesBox.vue b/src/components/basic/MesBox.vue
new file mode 100644
index 0000000..a4d4630
--- /dev/null
+++ b/src/components/basic/MesBox.vue
@@ -0,0 +1,185 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/MesElementMenu.vue b/src/components/basic/MesElementMenu.vue
new file mode 100644
index 0000000..db70ac1
--- /dev/null
+++ b/src/components/basic/MesElementMenu.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
+
diff --git a/src/components/basic/MesElementMenuChild.vue b/src/components/basic/MesElementMenuChild.vue
new file mode 100644
index 0000000..285eb0c
--- /dev/null
+++ b/src/components/basic/MesElementMenuChild.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/MesForm.vue b/src/components/basic/MesForm.vue
new file mode 100644
index 0000000..6a7a9db
--- /dev/null
+++ b/src/components/basic/MesForm.vue
@@ -0,0 +1,1485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/MesForm/MesFormRender.js b/src/components/basic/MesForm/MesFormRender.js
new file mode 100644
index 0000000..ef7459e
--- /dev/null
+++ b/src/components/basic/MesForm/MesFormRender.js
@@ -0,0 +1,14 @@
+import { h } from 'vue';
+
+export default {
+ name: "FormExpand",
+ functional: true,
+ props: {
+ render: Function,
+ par: {}//测试参数
+ },
+ render: ({ render, par }) => {
+ return render(h, { par }); //h();
+ }
+};
+
diff --git a/src/components/basic/MesFormDraggable/DownloadForm.js b/src/components/basic/MesFormDraggable/DownloadForm.js
new file mode 100644
index 0000000..3ae3e1a
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/DownloadForm.js
@@ -0,0 +1,156 @@
+import templateCode from './templateCode'
+export default function () {
+ let code = templateCode;
+ let _formOptions = this.options.formOptions.map(m => {
+ let _op = m.map((m1, i) => {
+ let _obj;
+ //.data[0].hasOwnProperty("key")
+ if (m1.data && m1.data.length && !m1.dataKey) {
+ let m2 = JSON.parse(JSON.stringify(m1));
+ m2.data = m2.data.map(c => {
+ return { key: c.label || c.key, value: c.label }
+ })
+ _obj = JSON.stringify(m2)
+ } else {
+ _obj = JSON.stringify(m1)
+ }
+ return (i === 0 ? '' : '\n\t\t\t\t') + _obj
+ }).join(',');
+ //return JSON.stringify(m, null, '')
+ return _op;
+ })
+ code = code.replace('{#fields}', JSON.stringify(this.options.fields))
+ .replace('{#formOptions}', '[' + _formOptions.join('],\n\t\t\t\t[') + ']');
+ code = code.replace('}],', '\t\t\t\t\t}],')
+ .replace("[{#tableOptions}]", JSON.stringify(this.options.tables, null, '\t'))
+ .replace("[{#tabsOptions}]", JSON.stringify(this.options.tabs, null, '\t'))
+ // fields: {#fields},
+ // formOptions: [{#formOptions}],
+ // tables: [{#tables}],
+ // tabs: [{#tabs}]
+ var tabsText = this.options.tabs.length ? `
+ {}">
+
+
+
+
+
+
`: ''
+ code = code.replace('{#tabs}', tabsText);
+ if (this.options.tables.length || this.options.tabs.length) {
+ code = code.replace("{import_MesTable}", "import MesTable from '@/components/basic/MesTable'")
+ code = code.replace(",{component_table}", ",'mes-table': MesTable")
+ } else {
+ code = code.replace("{import_MesTable}", '')
+ code = code.replace("{component_table}", '')
+ }
+
+ if (this.options.tables.length) {
+
+ code = code.replace('{table_ms}', `
+ tableBtnClick (item, btnIndex, index) {
+ if (item.buttons[btnIndex].value == "add") {
+ this.$refs["table" + index][0].addRow({});
+ return;
+ }
+ if (item.buttons[btnIndex].value == "del") {
+ this.$refs["table" + index][0].delRow();
+ return;
+ }
+ },
+ tabsTableBtnClick (item, btnIndex, index) {
+ if (item.buttons[btnIndex].value == "add") {
+ this.$refs["tabsTable" + index][0].addRow({});
+ return;
+ }
+ if (item.buttons[btnIndex].value == "del") {
+ this.$refs["tabsTable" + index][0].delRow();
+ return;
+ }
+ },`)
+ code = code.replace('{#tables}',
+ `
+
+ `);
+
+ } else {
+
+ code = code.replace('{table_ms}', '')
+ code = code.replace('{#tables}', '');
+ }
+ const blob = new Blob([code], { type: "text/plain;charset=utf-8" })
+ if ('download' in document.createElement('a')) { // 非IE下载
+ const elink = document.createElement('a')
+ elink.download = `code${new Date().valueOf()}.vue`;
+ elink.style.display = 'none'
+ elink.href = URL.createObjectURL(blob)
+ document.body.appendChild(elink)
+ elink.click()
+ URL.revokeObjectURL(elink.href) // 释放URL 对象
+ document.body.removeChild(elink)
+ } else {
+ navigator.msSaveBlob(blob, fileName)
+ }
+}
\ No newline at end of file
diff --git a/src/components/basic/MesFormDraggable/MesFormDraggable.vue b/src/components/basic/MesFormDraggable/MesFormDraggable.vue
new file mode 100644
index 0000000..f2f8f97
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/MesFormDraggable.vue
@@ -0,0 +1,1155 @@
+
+
+
+
+
组件列表
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+ 1、表单设计器基于draggable开发,为本框架自定义页面功能的补充,框架仍以可视化代码生成器为核心
+
+
+ 2、支持可视化设计1对1、1对多及表单下拉框自动绑定、table自动加载数据(分页、编辑)、自动上传文件、富文本编辑
+
+
+
+
+
+ 请将左边组件拖入此容器中
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {}"
+ >
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
组件属性
+
+
+
+
+
+
上传接口地址(后台接口)
+
+
文件大小限制(M)
+
+
是否多文件上传
+
+
+
是否自动上传
+
+
+
+
+
数据源(下拉框绑定设置中维护)
+
+
+
+
+
+
+
+
+
+
+
+
是否使用选项卡(tabs)
+
+
+
+
+
+
+ table配置
+
+
+
+
+
+
+
+ 弹出框内容
+
+
+
+ 点击关闭
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+ 此处table是对框架mestable基本操作的配置,如果需要事件触发、数据加载等更多功能,请在生成后的代码添加需要的功能,完整配置见文档mestable
+
+
+
+ 表格默认功能按钮:
+ {{ item.name }}
+
+
+ 添加字段
+ 删除字段
+ 重新排列
+
+
+
+
+
+
+ 关闭
+ 保存
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/MesFormDraggable/MesFormPreview.vue b/src/components/basic/MesFormDraggable/MesFormPreview.vue
new file mode 100644
index 0000000..2e6b4de
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/MesFormPreview.vue
@@ -0,0 +1,206 @@
+
+
+
{{ text }}
+
+
+
+
+
+ {}"
+ >
+
+
+
+
+
+
+
+
+ 提交
+ 重置
+ 下载代码
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/MesFormDraggable/formTemplate.js b/src/components/basic/MesFormDraggable/formTemplate.js
new file mode 100644
index 0000000..e8dca27
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/formTemplate.js
@@ -0,0 +1,664 @@
+
+
+let options1 = [
+ {
+ "id": 1,
+ "name": "输入框",
+ "type": "text",
+ "value": "",
+ "icon": "el-icon-document",
+ "field": "field1630258884671",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 3,
+ "name": "日期",
+ "type": "date",
+ "icon": "el-icon-date",
+ "value": null,
+ "field": "field1630258891760",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 7,
+ "name": "下拉框",
+ "value": null,
+ "key": "",
+ "data": [
+ {
+ "label": "请设置数据源",
+ "value": "请设置数据源"
+ }
+ ],
+ "type": "select",
+ "icon": "el-icon-arrow-down",
+ "field": "field1630258904862",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 8,
+ "name": "下拉多选",
+ "type": "selectList",
+ "key": "",
+ "values": [],
+ "data": [
+ {
+ "label": "请设置数据源",
+ "value": "请设置数据源"
+ }
+ ],
+ "icon": "el-icon-arrow-down",
+ "field": "field1630258924442",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 81,
+ "name": "级联",
+ "type": "cascader",
+ "icon": "el-icon-share",
+ "values": [],
+ "key": "",
+ "data": [
+ {
+ "value": "请配置数据源",
+ "label": "请配置数据源",
+ "children": [
+ {
+ "value": "具体",
+ "label": "菜单:下拉框绑定设置"
+ },
+ {
+ "value": "color",
+ "label": "可参照字典编号[tree_roles]"
+ }
+ ]
+ }
+ ],
+ "field": "field1630259518082",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 6,
+ "name": "多选",
+ "values": [
+ "发货"
+ ],
+ "type": "checkbox",
+ "key": "ordertype",
+ "data": [
+ {
+ "key": "1",
+ "value": "发货"
+ },
+ {
+ "key": "2",
+ "value": "退货"
+ },
+ {
+ "key": "3",
+ "value": "返单"
+ }
+ ],
+ "icon": "el-icon-circle-check",
+ "field": "field1630259033241",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 5,
+ "name": "单选",
+ "type": "radio",
+ "icon": "el-icon-aim",
+ "value": 0,
+ "data": [
+ {
+ "key": "0",
+ "value": "否"
+ },
+ {
+ "key": "2",
+ "value": "xx11"
+ },
+ {
+ "key": "1",
+ "value": "是"
+ }
+ ],
+ "key": "enable",
+ "field": "field1630259538490",
+ "width": 30,
+ "readonly": false,
+ "required": false,
+ "values": [
+ "否"
+ ]
+ },
+ {
+ "id": 4,
+ "name": "switch",
+ "type": "switch",
+ "icon": "el-icon-turn-off",
+ "value": 0,
+ "field": "field1630259172794",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 12,
+ "name": "分段信息",
+ "type": "line",
+ "icon": "el-icon-guide",
+ "field": "field1630259600186",
+ "width": 100,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 9,
+ "name": "图片",
+ "type": "img",
+ "url": "api/SellOrder/upload",
+ "maxSize": 3,
+ "fileInfo": [],
+ "multiple": false,
+ "autoUpload": false,
+ "maxFile": 5,
+ "icon": "el-icon-picture-outline",
+ "field": "field1630259295154",
+ "width": 100,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 10,
+ "name": "excel",
+ "url": "api/SellOrder/upload",
+ "maxSize": 3,
+ "multiple": false,
+ "autoUpload": true,
+ "maxFile": 5,
+ "fileInfo": [],
+ "type": "excel",
+ "icon": "el-icon-upload",
+ "field": "field1630259610476",
+ "width": 100,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 5,
+ "name": "单选",
+ "type": "radio",
+ "icon": "el-icon-aim",
+ "value": 0,
+ "data": [
+ {
+ "key": "0",
+ "value": "审核中"
+ },
+ {
+ "key": "1",
+ "value": "审核通过"
+ },
+ {
+ "key": "2",
+ "value": "审核未通过"
+ }
+ ],
+ "key": "audit",
+ "field": "field1630258969346",
+ "width": 40,
+ "readonly": false,
+ "required": false,
+ "values": [
+ "审核中"
+ ]
+ }
+];
+let options2=[
+ {
+ "id": 1,
+ "name": "输入框",
+ "type": "text",
+ "value": "",
+ "icon": "el-icon-document",
+ "field": "field1630258884671",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 3,
+ "name": "日期",
+ "type": "date",
+ "icon": "el-icon-date",
+ "value": null,
+ "field": "field1630258891760",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 7,
+ "name": "下拉框",
+ "value": null,
+ "key": "",
+ "data": [
+ {
+ "label": "请设置数据源",
+ "value": "请设置数据源"
+ }
+ ],
+ "type": "select",
+ "icon": "el-icon-arrow-down",
+ "field": "field1630258904862",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 8,
+ "name": "下拉多选",
+ "type": "selectList",
+ "key": "",
+ "values": [],
+ "data": [
+ {
+ "label": "请设置数据源",
+ "value": "请设置数据源"
+ }
+ ],
+ "icon": "el-icon-arrow-down",
+ "field": "field1630258924442",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 2,
+ "name": "textarea",
+ "type": "textarea",
+ "value": "",
+ "icon": "el-icon-document-copy",
+ "field": "field1630260207393",
+ "width": 100,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 13,
+ "name": "表格",
+ "type": "table",
+ "tabs": true,
+ "columns": [
+ {
+ "title": "运单号",
+ "field": "TranNo",
+ "show": true,
+ "required": false,
+ "edit": true,
+ "dataType": null,
+ "dataSource": null,
+ "width": "140",
+ "orderNo": null,
+ "elementIndex": 0
+ },
+ {
+ "title": "销售订单号",
+ "field": "SellNo",
+ "show": true,
+ "required": false,
+ "edit": true,
+ "dataType": null,
+ "dataSource": null,
+ "width": "140",
+ "orderNo": null,
+ "elementIndex": 1
+ },
+ {
+ "title": "订单类型",
+ "field": "OrderType",
+ "show": true,
+ "required": false,
+ "edit": true,
+ "dataType": null,
+ "dataSource": "ordertype",
+ "width": 120,
+ "orderNo": null,
+ "elementIndex": 2,
+ "editType": "select"
+ },
+ {
+ "title": "销售数量",
+ "field": "Qty",
+ "show": true,
+ "required": false,
+ "edit": true,
+ "dataType": null,
+ "dataSource": null,
+ "width": "80",
+ "orderNo": null,
+ "elementIndex": 3
+ },
+ {
+ "field": "CreateDate",
+ "elementIndex": 4,
+ "show": 1,
+ "required": 0,
+ "edit": 0,
+ "title": "订单时间",
+ "dataType": "date",
+ "width": "100"
+ }
+ ],
+ "tableData": [
+ {
+ "field1": "field1",
+ "field2": "field2",
+ "field3": "field3",
+ "field4": "field4"
+ },
+ {
+ "field1": "field1",
+ "field2": "field2",
+ "field3": "field3",
+ "field4": "field4"
+ },
+ {
+ "field1": "field1",
+ "field2": "field2",
+ "field3": "field3",
+ "field4": "field4"
+ }
+ ],
+ "height": 200,
+ "icon": "el-icon-c-scale-to-original",
+ "url": "api/SellOrder/getPageData",
+ "index": false,
+ "columnIndex": false,
+ "ck": true,
+ "buttons": [
+ {
+ "name": "添加行",
+ "ck": false,
+ "icon": "el-icon-plus",
+ "value": "add"
+ },
+ {
+ "name": "删除行",
+ "ck": false,
+ "icon": "el-icon-delete",
+ "value": "del"
+ },
+ {
+ "name": "刷新",
+ "ck": false,
+ "icon": "el-icon-refresh-right",
+ "value": "ref"
+ }
+ ],
+ "field": "field1630260242867",
+ "width": 100,
+ "readonly": false,
+ "required": false,
+ "pagination": false
+ },
+ {
+ "id": 13,
+ "name": "表格",
+ "type": "table",
+ "tabs": true,
+ "columns": [
+ {
+ "title": "字段1",
+ "field": "field1",
+ "show": true,
+ "required": false,
+ "edit": false,
+ "dataType": null,
+ "dataSource": null,
+ "width": 120,
+ "orderNo": null
+ },
+ {
+ "title": "字段2",
+ "field": "field2",
+ "show": true,
+ "required": false,
+ "edit": false,
+ "dataType": null,
+ "dataSource": null,
+ "width": 120,
+ "orderNo": null
+ },
+ {
+ "title": "字段3",
+ "field": "field3",
+ "show": true,
+ "required": false,
+ "edit": false,
+ "dataType": null,
+ "dataSource": null,
+ "width": 120,
+ "orderNo": null
+ },
+ {
+ "title": "字段4",
+ "field": "field4",
+ "show": true,
+ "required": false,
+ "edit": false,
+ "dataType": null,
+ "dataSource": null,
+ "width": 120,
+ "orderNo": null
+ }
+ ],
+ "tableData": [
+ {
+ "field1": "field1",
+ "field2": "field2",
+ "field3": "field3",
+ "field4": "field4"
+ },
+ {
+ "field1": "field1",
+ "field2": "field2",
+ "field3": "field3",
+ "field4": "field4"
+ },
+ {
+ "field1": "field1",
+ "field2": "field2",
+ "field3": "field3",
+ "field4": "field4"
+ }
+ ],
+ "height": 200,
+ "icon": "el-icon-c-scale-to-original",
+ "url": null,
+ "index": false,
+ "columnIndex": false,
+ "ck": true,
+ "buttons": [
+ {
+ "name": "添加行",
+ "ck": false,
+ "icon": "el-icon-plus",
+ "value": "add"
+ },
+ {
+ "name": "删除行",
+ "ck": false,
+ "icon": "el-icon-delete",
+ "value": "del"
+ },
+ {
+ "name": "刷新",
+ "ck": false,
+ "icon": "el-icon-refresh-right",
+ "value": "ref"
+ }
+ ],
+ "field": "field1630260481283",
+ "width": 100,
+ "readonly": false,
+ "required": false,
+ "pagination": true
+ }
+]
+
+let options3=[
+ {
+ "id": 1,
+ "name": "输入框",
+ "type": "text",
+ "value": "",
+ "icon": "el-icon-document",
+ "field": "field1630258884671",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 3,
+ "name": "日期",
+ "type": "date",
+ "icon": "el-icon-date",
+ "value": null,
+ "field": "field1630258891760",
+ "width": 20,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 7,
+ "name": "下拉框",
+ "value": null,
+ "key": "",
+ "data": [
+ {
+ "label": "请设置数据源",
+ "value": "请设置数据源"
+ }
+ ],
+ "type": "select",
+ "icon": "el-icon-arrow-down",
+ "field": "field1630258904862",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 8,
+ "name": "下拉多选",
+ "type": "selectList",
+ "key": "",
+ "values": [],
+ "data": [
+ {
+ "label": "请设置数据源",
+ "value": "请设置数据源"
+ }
+ ],
+ "icon": "el-icon-arrow-down",
+ "field": "field1630258924442",
+ "width": 30,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 5,
+ "name": "单选",
+ "type": "radio",
+ "icon": "el-icon-aim",
+ "value": 0,
+ "data": [
+ {
+ "key": "0",
+ "value": "否"
+ },
+ {
+ "key": "2",
+ "value": "xx11"
+ },
+ {
+ "key": "1",
+ "value": "是"
+ }
+ ],
+ "key": "enable",
+ "field": "field1630260669595",
+ "width": 50,
+ "readonly": false,
+ "required": false,
+ "values": [
+ "否"
+ ]
+ },
+ {
+ "id": 6,
+ "name": "多选",
+ "values": [
+ "否"
+ ],
+ "type": "checkbox",
+ "key": "enable",
+ "data": [
+ {
+ "key": "0",
+ "value": "否"
+ },
+ {
+ "key": "2",
+ "value": "xx11"
+ },
+ {
+ "key": "1",
+ "value": "是"
+ }
+ ],
+ "icon": "el-icon-circle-check",
+ "field": "field1630260695322",
+ "width": 50,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 2,
+ "name": "textarea",
+ "type": "textarea",
+ "value": "",
+ "icon": "el-icon-document-copy",
+ "field": "field1630260207393",
+ "width": 100,
+ "readonly": false,
+ "required": false
+ },
+ {
+ "id": 13,
+ "name": "编辑器",
+ "type": "editor",
+ "value": "",
+ "url": "",
+ "height": 200,
+ "icon": "el-icon-notebook-2",
+ "field": "field1630260646842",
+ "width": 100,
+ "readonly": false,
+ "required": false
+ }
+]
+export { options1, options2,options3 }
diff --git a/src/components/basic/MesFormDraggable/index.js b/src/components/basic/MesFormDraggable/index.js
new file mode 100644
index 0000000..cbc3aa4
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/index.js
@@ -0,0 +1,3 @@
+import MesFormDraggable from './MesFormDraggable'
+
+ export default MesFormDraggable;
\ No newline at end of file
diff --git a/src/components/basic/MesFormDraggable/options.js b/src/components/basic/MesFormDraggable/options.js
new file mode 100644
index 0000000..c60047c
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/options.js
@@ -0,0 +1,226 @@
+const components = [
+ {
+ id: 1,
+ name: "输入框",
+ type: "text",
+ value: "",
+ icon: "el-icon-document",
+ },
+ {
+ id: 2,
+ name: "textarea",
+ type: "textarea",
+ value: "",
+ icon: "el-icon-document-copy",
+ },
+ {
+ id: 3,
+ name: "日期",
+ type: "date",
+ icon: "el-icon-date",
+ value: null,
+ },
+ {
+ id: 4,
+ name: "switch",
+ type: "switch",
+ icon: "el-icon-turn-off",
+ value: 0,
+ },
+ { id: 5, name: "单选", type: "radio", icon: "el-icon-aim", value: 0, data: [{ label: "0", value: "请设置数据源1" }, { label: "1", value: "请设置数据源2" }], key: "" },
+ {
+ id: 6,
+ name: "多选",
+ values: [],
+ type: "checkbox",
+ key: "",
+ data: [{ label: "请设置数据源", value: "请设置数据源" }],
+ icon: "el-icon-circle-check",
+ },
+ {
+ id: 7,
+ name: "下拉框",
+ value: null,
+ key: "",
+ data: [{ label: "请设置数据源", value: "请设置数据源" }],
+ type: "select",
+ icon: "el-icon-arrow-down",
+ },
+ {
+ id: 8,
+ name: "下拉框多选",
+ type: "selectList",
+ key: "",
+ values: [],
+ data: [{ label: "请设置数据源", value: "请设置数据源" }],
+ icon: "el-icon-arrow-down",
+ },
+ {
+ id: 81,
+ name: "级联",
+ type: "cascader",
+ icon: "el-icon-share",
+ values: [],
+ key: "",
+ data: [
+ {
+ value: "请配置数据源",
+ label: "请配置数据源",
+ children: [
+ {
+ value: "具体",
+ label: "菜单:下拉框绑定设置",
+ },
+ {
+ value: "color",
+ label: "可参照字典编号[tree_roles]",
+ }
+ ],
+ },
+ ],
+ },
+ {
+ id: 9,
+ name: "图片上传",
+ type: "img",
+ url: "",
+ maxSize: 3,
+ fileInfo: [],
+ multiple: false,
+ autoUpload: false,
+ maxFile: 5,
+ icon: "el-icon-picture-outline",
+ },
+ {
+ id: 10,
+ name: "excel上传",
+ url: "",
+ maxSize: 3,
+ multiple: false,
+ autoUpload: false,
+ maxFile: 5, //最多可上传5个文件
+ fileInfo: [],
+ type: "excel",
+ icon: "el-icon-upload",
+ },
+ {
+ id: 11,
+ name: "文件上传",
+ type: "file",
+ url: "",
+ maxSize: 3,
+ multiple: false,
+ autoUpload: false,
+ maxFile: 5,
+ fileInfo: [],
+ icon: "el-icon-folder-opened",
+ },
+ {
+ id: 12,
+ name: "分段信息",
+ type: "line",
+ icon: "el-icon-guide",
+ },
+ {
+ id: 13,
+ name: "编辑器",
+ type: "editor",
+ value: "",
+ url: "",
+ height: 200,
+ icon: "el-icon-notebook-2",
+ },
+ {
+ id: 13,
+ name: "弹出框",
+ type: "box",
+ value: "",
+ url: "",
+ height: 250,
+ icon: "el-icon-notebook-2",
+ },
+ {
+ id: 13,
+ name: "表格",
+ type: "table",
+ tabs: false,
+ columns: [
+ { title: "字段1", field: "field1", show: true, required: false, edit: false, dataType: null, dataSource: null, width: 120, orderNo: null },
+ { title: "字段2", field: "field2", show: true, required: false, edit: false, dataType: null, dataSource: null, width: 120, orderNo: null },
+ { title: "字段3", field: "field3", show: true, required: false, edit: false, dataType: null, dataSource: null, width: 120, orderNo: null },
+ { title: "字段4", field: "field4", show: true, required: false, edit: false, dataType: null, dataSource: null, width: 120, orderNo: null },
+ // { title: "字段5", field: "Field5", width: 120 },
+ ],
+ tableData: [
+ {
+ field1: "field1",
+ field2: "field2",
+ field3: "field3",
+ field4: "field4",
+ },
+ {
+ field1: "field1",
+ field2: "field2",
+ field3: "field3",
+ field4: "field4",
+ },
+ {
+ field1: "field1",
+ field2: "field2",
+ field3: "field3",
+ field4: "field4",
+ },
+ ],
+ height: 150,
+ icon: "el-icon-c-scale-to-original",
+ url: null,
+ index: false, //item.index,
+ height: 200,
+ index: false,
+ columnIndex: false,
+ ck: true,
+ buttons: [
+ { name: '添加行', ck: false, icon: 'el-icon-plus',value:'add' },
+ { name: '删除行', ck: false, icon: 'el-icon-delete',value:'del' },
+ { name: '刷新', ck: false ,icon:'el-icon-refresh-right',value:'ref'}],
+ },
+]
+const tableOption = [
+ { field: 'field', title: '字段', edit: { type: "text", keep: true }, width: 160 },
+ { field: 'title', title: '字段中文名', edit: { type: "text", keep: true }, width: 120 },
+ { field: 'show', title: '是否显示', edit: { type: "switch", keep: true }, width: 90 },
+ {
+ field: 'dataType', title: '显示类型', edit: { type: "select", keep: true }, width: 120, bind: {
+ key: '', data: [
+ { "key": "switch", "value": "单选" },
+ { "key": "date", "value": "年月日" },
+ { "key": "img", "value": "图片" },
+ { "key": "excel", "value": "excel" },
+ { "key": "file", "value": "文件" }
+ ]
+ }
+ },
+
+ { field: 'required', title: '是否必填', edit: { type: "switch", keep: true }, width: 90 },
+ { field: 'edit', title: '是否可编辑', edit: { type: "switch", keep: true }, width: 90 },
+ {
+ field: 'editType', title: '编辑类型', edit: { type: "select", keep: true, }, width: 120, bind: {
+ key: '', data: [{ "key": "text", "value": "输入框" },
+ { "key": "switch", "value": "单选" },
+ { "key": "select", "value": "下拉框" },
+ { "key": "selectList", "value": "下拉框多选" },
+ { "key": "date", "value": "日期" },
+ { "key": "datetime", "value": "日期时分秒" },
+ { "key": "checkbox", "value": "复选框多选" },
+ { "key": "mail", "value": "邮箱地址" },
+ { "key": "number", "value": "数字" },
+ { "key": "decimal", "value": "小数" },
+ { "key": "phone", "value": "手机号" },
+ ]
+ }
+ },
+ { field: 'dataSource', title: '数据源', edit: { type: "select", keep: true, data: [] }, bind: { key: '', data: [] }, width: 120 },
+ { field: 'width', title: '列宽度', edit: { type: "text", keep: true }, width: 80 },
+ { field: 'orderNo', title: '列显示顺序', edit: { type: "text", keep: true }, width: 100 }
+];
+export { components, tableOption }
\ No newline at end of file
diff --git a/src/components/basic/MesFormDraggable/templateCode.js b/src/components/basic/MesFormDraggable/templateCode.js
new file mode 100644
index 0000000..2ff7868
--- /dev/null
+++ b/src/components/basic/MesFormDraggable/templateCode.js
@@ -0,0 +1,95 @@
+var code = `
+
+
{{ text }}
+
+
+ {#tables}
+ {#tabs}
+
+
+ 提交
+ 重置
+
+
+
+
+
+`
+
+export default code
\ No newline at end of file
diff --git a/src/components/basic/MesHeader.vue b/src/components/basic/MesHeader.vue
new file mode 100644
index 0000000..0b69882
--- /dev/null
+++ b/src/components/basic/MesHeader.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/MesTable.vue b/src/components/basic/MesTable.vue
new file mode 100644
index 0000000..5cbb239
--- /dev/null
+++ b/src/components/basic/MesTable.vue
@@ -0,0 +1,1614 @@
+
+
+
+
+
加载中.....
+
+
+
+
+
+
+
+ * {{ column.title }}
+
+
+
+
+
+
+
+
+
+ {{ formatter(scope1.row, columnChildren, true) }}
+
+ {{
+ formatterDate(scope1.row, columnChildren)
+ }}
+
+ {{ scope1.row[columnChildren.field] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ switchChange(val, scope.row, column);
+ }
+ "
+ :active-value="
+ typeof scope.row[column.field] == 'boolean' ? true : 1
+ "
+ :inactive-value="
+ typeof scope.row[column.field] == 'boolean' ? false : 0
+ "
+ >
+
+
+ {{ item.value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ file.name }}
+ {{
+ formatterDate(scope.row, column)
+ }}
+
+
+
+ {{ formatter(scope.row, column, true) }}
+
+
+ {{ scope.row[column.field] }}
+
+
+ {{ formatter(scope.row, column, true) }}
+
+
+ {{ formatter(scope.row, column, true) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/MesTable/MesTableRender.js b/src/components/basic/MesTable/MesTableRender.js
new file mode 100644
index 0000000..988a672
--- /dev/null
+++ b/src/components/basic/MesTable/MesTableRender.js
@@ -0,0 +1,14 @@
+import { h } from 'vue';
+export default {
+ name: "TableExpand",
+ functional: true,
+ props: {
+ render: Function,
+ row: {},//当前行的数据
+ column: {},//当前行的配置信息
+ index: { type: Number, default: 0 }//当前所在行
+ },
+ render: ({ render,row ,column,index }) => {
+ return render(h, {row ,column,index}); //h();
+ }
+};
diff --git a/src/components/basic/MesUpload.vue b/src/components/basic/MesUpload.vue
new file mode 100644
index 0000000..dc10c60
--- /dev/null
+++ b/src/components/basic/MesUpload.vue
@@ -0,0 +1,738 @@
+
+
+
+
+
diff --git a/src/components/basic/QuickSearch.vue b/src/components/basic/QuickSearch.vue
new file mode 100644
index 0000000..185cbf2
--- /dev/null
+++ b/src/components/basic/QuickSearch.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/RouterLoading.vue b/src/components/basic/RouterLoading.vue
new file mode 100644
index 0000000..134a454
--- /dev/null
+++ b/src/components/basic/RouterLoading.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
diff --git a/src/components/basic/UploadExcel.vue b/src/components/basic/UploadExcel.vue
new file mode 100644
index 0000000..942dde4
--- /dev/null
+++ b/src/components/basic/UploadExcel.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+ 选择文件
+
+
+
+ 下载模板
+
+
+ 上传文件
+
+
+ 只能上传excel文件,文件大小不超过{{ maxSize }}M
+
+
+
+
文件列表
+
+ 文件名:{{ file.name }}
+ 大小{{ (file.size / 1024).toFixed(2) }}KB
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/basic/ViewGrid/AuditHis.vue b/src/components/basic/ViewGrid/AuditHis.vue
new file mode 100644
index 0000000..08b30af
--- /dev/null
+++ b/src/components/basic/ViewGrid/AuditHis.vue
@@ -0,0 +1,46 @@
+
+
+
+
diff --git a/src/components/basic/ViewGrid/ViewGrid.less b/src/components/basic/ViewGrid/ViewGrid.less
new file mode 100644
index 0000000..49e0ff2
--- /dev/null
+++ b/src/components/basic/ViewGrid/ViewGrid.less
@@ -0,0 +1,179 @@
+.view-container {
+ // padding: 15px;
+ background: white;
+ .grid-search {
+ padding-top: 15px;
+ //padding: 15px 15px 0 15px;
+ }
+ .grid-container,
+ .grid-body {
+ padding: 0 15px;
+ }
+ .view-header {
+ padding-left: 15px;
+ padding-right: 15px;
+ }
+ .fs-line {
+ height: 9px;
+ background: #f1f1f1;
+ margin-top: -10px;
+ margin-bottom: 10px;
+ }
+}
+.view-header {
+ height: 45px;
+ position: relative;
+ padding-bottom: 11px;
+ display: flex;
+ .search-line {
+ min-width: 150px;
+ }
+ .search-line > div {
+ margin-left: 5px;
+ margin-right: 10px;
+ }
+ .search-line > div > div {
+ width: 200px;
+ text-align: left;
+ }
+ .search-line > div:first-child {
+ flex: 1;
+ }
+ .search-line > div .ivu-select-dropdown {
+ max-height: 300px;
+ }
+ .btn-group {
+ white-space: nowrap;
+ button {
+ margin-left: 10px;
+ // padding: 5px 16px;
+ }
+ }
+ .btn-group .ivu-dropdown-item {
+ text-align: left !important;
+ }
+ .btn-group .ivu-dropdown-item:not(:last-child) {
+ border-bottom: 1px dotted #eee;
+ }
+ .desc-text {
+ margin-top: 5px;
+ font-weight: bold;
+ margin-bottom: 3px;
+ font-size: 14px;
+ color: #313131;
+ white-space: nowrap;
+ border-bottom: 2px solid #646565;
+ i {
+ font-size: 16px;
+ position: relative;
+ top: 1px;
+ margin-right: 2px;
+ }
+ }
+ .search-box {
+ background: #fefefe;
+ margin-top: 45px;
+ border: 1px solid #ececec;
+ position: absolute;
+ z-index: 999;
+ left: 0;
+ right: 0;
+ padding: 25px 40px;
+ padding-bottom: 0;
+ box-shadow: 0px 7px 18px -12px #bdc0bb;
+ }
+ .notice {
+ font-size: 13px;
+ color: #6b6b6b;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ position: relative;
+ top: 12px;
+ flex: 1;
+ left: 10px;
+ margin-right: 20px;
+ }
+}
+
+.table-info-cell-title {
+ background-color: #f5f5f5 !important;
+}
+.box-com {
+ > div.item {
+ // margin-bottom: 10px;
+ padding: 15px 17px 0 8px;
+ margin-bottom: 12px;
+ background: white;
+ }
+ > div.form-item {
+ padding: 19px 16px 0px 5px;
+ //box-shadow: 0 1px 7px rgb(199, 199, 199);
+ }
+ > div.table-item {
+ padding: 0 10px;
+ border-top: 1.5px solid #eaeaea;
+ }
+ .v-text {
+ line-height: 27px;
+ }
+ .form-text {
+ position: relative;
+ border-bottom: 1px solid #eee;
+ font-size: 14px;
+ margin-bottom: 14px;
+ }
+}
+
+.form-closex {
+ text-align: right;
+ padding-bottom: 24px;
+}
+.form-closex button {
+ margin-left: 10px;
+ padding: 4px 13px;
+}
+.toolbar {
+ padding: 3px 0px;
+ width: 100%;
+ display: flex;
+ .title {
+ line-height: 29px;
+ border-bottom: none;
+ font-size: 13px;
+ font-weight: bolder;
+ margin-bottom: 0;
+ color: #5d5c5c;
+ .icon {
+ color: #009688;
+ font-size: 18px;
+ }
+
+ i {
+ line-height: 29px;
+ border-bottom: none;
+ font-weight: bolder;
+ margin-bottom: 0;
+ color: #5d5c5c;
+ position: relative;
+ margin-top: -4px;
+ font-size: 14px;
+ }
+ }
+ .btns {
+ line-height: 28px;
+ flex: 1;
+ text-align: right;
+ button {
+ // border: none;
+ // margin-left:15px;
+ border: 0px;
+ padding: 0px 9px;
+ }
+ // button:hover{
+ // color: #FF9800;
+ // border-color: #FF9800;
+ // border: none;
+ // }
+ }
+}
diff --git a/src/components/basic/ViewGrid/ViewGrid.vue b/src/components/basic/ViewGrid/ViewGrid.vue
new file mode 100644
index 0000000..f768e49
--- /dev/null
+++ b/src/components/basic/ViewGrid/ViewGrid.vue
@@ -0,0 +1,804 @@
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 重置
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+
+ 重置
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭
+
+
+ 审批
+
+
+
+
+ {{ btn.name }}
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/ViewGrid/ViewGridAudit.vue b/src/components/basic/ViewGrid/ViewGridAudit.vue
new file mode 100644
index 0000000..24358e7
--- /dev/null
+++ b/src/components/basic/ViewGrid/ViewGridAudit.vue
@@ -0,0 +1,366 @@
+
+
+
+
+ 审核
+ 审核记录
+
+
+
+
+
+
+
+
流程开始
+
{{ item.createDate }}
+
+
+
+
+
+ {{ item.stepName }}
+
+
发起人:{{ item.creator }}
+
+
+
+
+
+
+
+
+ {{ item.stepName }}
+
+
+
+
+
+
审批时间
+
{{ item.auditDate || '待审批' }}
+
+
+
+
+
+ {{ item.stepName }}
+
+
审批人:{{ item.auditor }}
+
+ 状 态: {{ getAuditStatus(item.auditStatus) }}
+
+
备 注: {{ item.remark || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+ 审批:
+
+
+ {{ item.text }}
+
+
+
+
+
+ 审批
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/basic/ViewGrid/ViewGridCustomColumn.js b/src/components/basic/ViewGrid/ViewGridCustomColumn.js
new file mode 100644
index 0000000..c09c750
--- /dev/null
+++ b/src/components/basic/ViewGrid/ViewGridCustomColumn.js
@@ -0,0 +1,145 @@
+export default {
+ initViewColumns(isReset) {
+ //初始化自定列配置
+ if (isReset) {
+ this.resetViewColumns();
+ }
+ if (!this.orginColumnFields) {
+ this.orginColumnFields = this.columns.map((c) => {
+ return c.field;
+ });
+ }
+ this.viewColumns = this.columns
+ .filter((c) => {
+ return !c.hidden && !c.render;
+ })
+ .map((c) => {
+ return { field: c.field, title: c.title, show: !c.hidden };
+ });
+ if (isReset) {
+ return;
+ }
+ this.getCacheViewColumn();
+ },
+ getViewCacheKey(){
+ return 'custom:column'+this.table.name;
+ },
+ getCacheViewColumn() {
+ try {
+ let columns = localStorage.getItem(this.getViewCacheKey());
+ if (!columns) return;
+ columns = JSON.parse(columns);
+ let sortTableColumns = [];
+ //弹出框的列
+ let _viewColumns = [];
+ columns.forEach((column) => {
+ let _column = this.viewColumns.find((c) => {
+ return c.field == column.field;
+ });
+ if (_column) {
+ _column.show = column.show;
+ _viewColumns.push(_column);
+ }
+ let tableColumn = this.columns.find((c) => {
+ return c.field == column.field;
+ });
+ if (tableColumn) {
+ tableColumn.hidden = !column.show;
+ sortTableColumns.push(tableColumn);
+ }
+ });
+ //重新排版弹出框自定义列
+ let otherColumns = this.viewColumns.filter((c) => {
+ return !_viewColumns.some((s) => {
+ return c.field == s.field;
+ });
+ });
+ //重新排版弹出框自定义列
+ _viewColumns.push(...otherColumns);
+ this.viewColumns.splice(0);
+ this.viewColumns.push(..._viewColumns);
+
+ this.sortViewColumns(sortTableColumns);
+ } catch (error) {
+ console.log('设置默认自定义列异常:' + error.message);
+ }
+ },
+ sortViewColumns(sortColumns) {
+ if (sortColumns.length) {
+ let hiddenColumns = this.columns.filter((c) => {
+ return !sortColumns.some((s) => {
+ return c.field == s.field;
+ });
+ });
+ sortColumns.push(...hiddenColumns);
+ this.columns.splice(0);
+ this.columns.push(...sortColumns);
+ }
+ },
+ resetViewColumns() {
+ if (!this.orginColumnFields) {
+ return;
+ }
+ let _columns = [];
+ this.orginColumnFields.forEach((x) => {
+ _columns.push(
+ this.columns.find((c) => {
+ return c.field == x;
+ })
+ );
+ });
+ let otherColumns = this.columns.filter((c) => {
+ return !this.orginColumnFields.some((s) => {
+ return c.field == s;
+ });
+ });
+ _columns.push(...otherColumns);
+ this.columns.splice(0);
+ this.columns.push(..._columns);
+ },
+ showCustomModel() {
+ if (!this.viewColumns.length) {
+ this.initViewColumns();
+ }
+ this.viewColumnsClone = JSON.parse(JSON.stringify(this.viewColumns));
+ this.viewModel = true;
+ },
+ closeCustomModel() {
+ this.viewModel=false;
+ if (this.checkColumnChanged()) {
+ this.viewColumns = JSON.parse(JSON.stringify(this.viewColumnsClone));
+ }
+ },
+ checkColumnChanged() {
+ return (
+ JSON.stringify(this.viewColumns) != JSON.stringify(this.viewColumnsClone)
+ );
+ },
+ saveColumnConfig() {
+ let hasShowColumn = this.viewColumns.some((x) => {
+ return x.show;
+ });
+ if (!hasShowColumn) {
+ return this.$message.error('至少选择一列显示');
+ }
+ this.viewModel = false;
+ if (this.checkColumnChanged()) {
+ let sortColumns = [];
+ this.viewColumns.forEach((column) => {
+ let _column = this.columns.find((c) => {
+ return c.field == column.field;
+ });
+ if (_column) {
+ _column.hidden = !column.show;
+ sortColumns.push(_column);
+ }
+ });
+ this.sortViewColumns(sortColumns);
+ }
+ try {
+ localStorage.setItem(this.getViewCacheKey(), JSON.stringify(this.viewColumns));
+ } catch (error) {
+ console.log('获取自定义列异常:' + error.message);
+ }
+ }
+};
diff --git a/src/components/basic/ViewGrid/ViewGridCustomColumn.vue b/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
new file mode 100644
index 0000000..97feb80
--- /dev/null
+++ b/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
{{ index + 1 }}
+
{{ column.title }}
+
+
+
+
+
+
+
diff --git a/src/components/basic/ViewGrid/detailMethods.js b/src/components/basic/ViewGrid/detailMethods.js
new file mode 100644
index 0000000..b38fd27
--- /dev/null
+++ b/src/components/basic/ViewGrid/detailMethods.js
@@ -0,0 +1,97 @@
+//从表方法
+let detailMethods = {
+ //查询从表前先做内部处理
+ loadInternalDetailTableBefore(param, callBack) {
+ //加载明细表数据之前,需要设定查询的主表的ID
+ //每次只要加载明细表格数据就重置删除明细的值
+ if (this.detailOptions.delKeys.length > 0) {
+ this.detailOptions.delKeys = [];
+ }
+ let key = this.table.key;
+ if (this.currentRow && this.currentRow.hasOwnProperty(key)) {
+ param.value = this.currentRow[key];
+ }
+ return this.loadDetailTableBefore(param, callBack);
+ },
+ detailRowOnChange(row) {
+ this.detailRowChange(row);
+ },
+ detailRowChange(row) {
+ //checkbox选中行事件
+ },
+ detailRowOnClick({ row, column, event }) {
+ //明细表点击行事件2020.11.07
+ this.detailRowClick({ row, column, event });
+ },
+ detailRowClick({ row, column, event }) {},
+ resetDetailTable(row) {
+ //编辑和查看明细时重置从表数据
+ if (!this.detailOptions.columns || this.detailOptions.columns.length == 0) {
+ return;
+ }
+ let key = this.table.key;
+ let query = { value: row ? row[key] : this.currentRow[key] };
+ this.$nextTick(() => {
+ if (this.$refs.detail) {
+ this.$refs.detail.reset();
+ this.$refs.detail.load(query);
+ }
+ });
+ },
+ //从后面加载从表数据
+ refreshRow() {
+ this.resetDetailTable();
+ },
+ addRow() {
+ this.$refs.detail.addRow({});
+ this.updateDetailTableSummaryTotal();
+ },
+ delRow() {
+ let rows = this.$refs.detail.getSelected();
+ if (!rows || rows.length == 0) {
+ return this.$message.error('请选择要删除的行!');
+ }
+ if (!this.delDetailRow(rows)) {
+ return false;
+ }
+
+ let tigger = false;
+ this.$confirm('确认要删除选择的数据吗?', '警告', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ if (tigger) return;
+ tigger = true;
+ rows = this.$refs.detail.delRow();
+ let key = this.detailOptions.key;
+ //记录删除的行数据
+ rows.forEach((x) => {
+ if (x.hasOwnProperty(key) && x[key]) {
+ this.detailOptions.delKeys.push(x[key]);
+ }
+ });
+ this.updateDetailTableSummaryTotal();
+ });
+ },
+ updateDetailTableSummaryTotal() {
+ //2021.09.25增加明细表删除、修改时重新计算行数与汇总
+ //2021.12.12增加明细表判断(强制刷新合计时会用到)
+ if (!this.$refs.detail) {
+ return;
+ }
+ //删除或新增行时重新设置显示的总行数
+ this.$refs.detail.paginations.total = this.$refs.detail.rowData.length;
+ //重新设置合计
+ if (this.$refs.detail.summary) {
+ this.$refs.detail.columns.forEach((column) => {
+ if (column.summary) {
+ this.$refs.detail.getInputSummaries(null, null, null, column);
+ }
+ });
+ }
+ }
+};
+
+export default detailMethods;
diff --git a/src/components/basic/ViewGrid/index.js b/src/components/basic/ViewGrid/index.js
new file mode 100644
index 0000000..bd90205
--- /dev/null
+++ b/src/components/basic/ViewGrid/index.js
@@ -0,0 +1,7 @@
+import Grid from './ViewGrid.vue'
+const ViewGrid = {
+ install: function (app) {
+ app.component('ViewGrid', Grid)
+ }
+}
+export default ViewGrid
\ No newline at end of file
diff --git a/src/components/basic/ViewGrid/methods.js b/src/components/basic/ViewGrid/methods.js
new file mode 100644
index 0000000..31c022e
--- /dev/null
+++ b/src/components/basic/ViewGrid/methods.js
@@ -0,0 +1,1683 @@
+import detailMethods from './detailMethods.js';
+//业务处理方法,全部可以由开发覆盖
+import serviceFilter from './serviceFilter.js';
+let methods = {
+ //当添加扩展组件gridHeader/gridBody/gridFooter及明细modelHeader/modelBody/modelFooter时,
+ //如果要获取父级Vue对象,请使用此方法进行回调
+ parentCall(fun) {
+ if (typeof fun != 'function') {
+ return console.log('扩展组件需要传入一个回调方法才能获取父级Vue对象');
+ }
+ fun(this);
+ },
+ getCurrentAction() {
+ if (this.currentReadonly) {
+ return '';
+ }
+ return '--' + (this.currentAction == this.const.ADD ? '新增' : '编辑');
+ },
+ quickSearchKeyPress($event) {
+ //查询字段为input时,按回车查询
+ if ($event.keyCode == 13) {
+ if (this.searchFormFields[this.singleSearch.field] != '') {
+ this.search();
+ }
+ }
+ },
+ getButtons() {
+ //生成ViewGrid界面的操作按钮及更多选项
+ let searchIndex = this.buttons.findIndex((x) => {
+ return x.value == 'Search';
+ });
+ //添加高级查询
+ let hasOneFormItem =
+ this.searchFormOptions.length == 1 &&
+ this.searchFormOptions[0].length == 1;
+ if (searchIndex != -1 && !hasOneFormItem) {
+ this.buttons.splice(searchIndex + 1, 0, {
+ icon: this.fiexdSearchForm ? 'el-icon-refresh-left' : 'el-icon-search',
+ name: this.fiexdSearchForm ? '重置' : '高级查询',
+ plain: true,
+ type: this.buttons[searchIndex].type,
+ onClick: () => {
+ if (this.fiexdSearchForm) {
+ return this.resetSearch();
+ }
+ this.searchBoxShow = !this.searchBoxShow;
+ }
+ });
+ }
+ if (hasOneFormItem) {
+ this.fiexdSearchForm = false;
+ }
+ this.maxBtnLength += searchIndex == -1 ? 0 : 1;
+ // if (this.buttons.length <= this.maxBtnLength) {
+ // return this.buttons;
+ // }
+ // let btns = this.buttons.slice(0, this.maxBtnLength);
+ // btns[this.maxBtnLength - 1].last = true;
+ // return btns;
+ },
+ extendBtn(btns, source) {
+ //btns权限按钮,source为扩展按钮
+ if (!btns || !(source && source instanceof Array)) {
+ return;
+ }
+ //source通过在表的扩展js文件中buttons对应按钮的属性index决定按钮所放位置
+ source.forEach((x) => {
+ //通过按钮的Index属性,放到指定的位置
+ btns.splice(x.index == undefined ? btns.length : x.index, 0, x);
+ });
+ // if (this.extend.buttons.view) {
+ // this.extend.buttons.view.forEach((x) => {
+ // //通过按钮的Index属性,放到指定的位置
+ // this.buttons.splice(x.index == undefined ? this.buttons.length : x.index, 0, x);
+ // })
+ // }
+ },
+ initBoxButtons() {
+ //初始化ViewGird与弹出框/明细表按钮
+ let path = this.$route.path;
+ //通过菜单获取用户所对应菜单需要显示的按钮
+ let permissionButtons = this.permission.getButtons(
+ path,
+ null,
+ this.extend.tableAction,
+ this.table.name
+ );
+ if (permissionButtons) {
+ //2020.03.31添加深拷贝按钮组
+ permissionButtons.forEach((p) => {
+ let _obj = {};
+ for (const key in p) {
+ _obj[key] = p[key];
+ }
+ this.buttons.push(_obj);
+ });
+ // this.buttons.push(...permissionButtons);
+ }
+ if (!this.extend) {
+ this.extend = {};
+ }
+ if (!this.extend.buttons) {
+ this.extend.buttons = {};
+ }
+ //查询界面扩展按钮(扩展按钮可自行通过设置按钮的Index属性显示到具体位置)
+ if (this.extend.buttons.view) {
+ this.extendBtn(this.buttons, this.extend.buttons.view);
+ }
+
+ //弹出框按钮
+ let boxButtons = [];
+
+ let saveBtn = this.buttons.some((x) => {
+ if (
+ x.value &&
+ (x.value.toLowerCase() == this.const.ADD.toLowerCase() ||
+ x.value.toLowerCase() == this.const.EDIT.toLowerCase())
+ )
+ return true;
+ });
+ this.currentReadonly = !saveBtn;
+ //从表表格操作按钮
+ let detailGridButtons = {
+ name: '刷新',
+ type: 'info',
+ icon: 'el-icon-refresh',
+ onClick() {
+ //如果明细表当前的状态为新建时,禁止刷新
+ if (this.currentAction == this.const.ADD) {
+ return;
+ }
+ this.refreshRow();
+ }
+ };
+
+ let importExcel = this.buttons.some((x) => {
+ if (x.value == this.const.IMPORT) return true;
+ });
+ //如果有导入权限,则需要初始化导入组件
+ if (importExcel) {
+ this.upload.url = this.getUrl(this.const.IMPORT);
+ //定义下载模板的文件名
+ this.upload.template.fileName = this.table.cnName;
+ //定义下载模板的Url路径
+ this.upload.template.url =
+ this.http.ipAddress + this.getUrl(this.const.DOWNLOADTEMPLATE, true);
+ }
+
+ // disabled
+ //如果当前角色没有编辑或新建功能,查看明细时字段设置全部只读
+ //只有明细表,将明细表也设置为不可能编辑,并且不显示添加行、删除行
+ if (!saveBtn) {
+ this.editFormOptions.forEach((row) => {
+ row.forEach((x) => {
+ x.disabled = true;
+ });
+ });
+ //没有新增编辑权限的,弹出框都设置为只读
+ this.detail.columns.forEach((column) => {
+ if (column.hasOwnProperty('edit')) {
+ column.readonly = true;
+ // row['edit'] = false;
+ }
+ });
+ //弹出框扩展按钮
+ this.extendBtn(boxButtons, this.extend.buttons.box);
+ //弹出弹框按钮(2020.04.21),没有编辑或新建权限时,也可以通过buttons属性添加自定义弹出框按钮
+ this.boxButtons.push(...boxButtons);
+ this.detailOptions.buttons.push(detailGridButtons);
+ this.detailOptions.buttons.forEach((button) => {
+ if (!button.hasOwnProperty('hidden')) {
+ button.hidden = false;
+ }
+ });
+ //弹出框扩展明细表按钮
+ this.extendBtn(this.detailOptions.buttons, this.extend.buttons.detail);
+
+ return boxButtons;
+ }
+
+ this.detailOptions.edit = true;
+ boxButtons.push(
+ ...[
+ {
+ name: '保 存',
+ icon: 'el-icon-check',
+ type: 'danger',
+ disabled: false,
+ value: 'save',
+ onClick() {
+ this.save();
+ }
+ }
+ // {
+ // name: '重 置',
+ // icon: 'el-icon-refresh-right',
+ // type: 'primary',
+ // disabled: false,
+ // onClick() {
+ // this.resetEdit();
+ // }
+ // }
+ ]
+ );
+ //从表表格操作按钮
+ this.detailOptions.buttons.push(
+ ...[
+ {
+ name: '添加行',
+ icon: 'el-icon-plus',
+ type: 'primary',
+ hidden: false,
+ plain: true,
+ onClick() {
+ this.addRow();
+ }
+ },
+ {
+ type: 'danger',
+ plain: true,
+ name: '删除行',
+ hidden: false,
+ icon: 'el-icon-delete',
+ onClick() {
+ this.delRow();
+ }
+ },
+ //2022.01.08增加明细表导入导出功能
+ //注意需要重写后台明细表接口的导入与下载模板、导出的权限,Sys_DictionaryListController.cs/SellOrderListController.cs
+ {
+ type: 'danger',
+ plain: true,
+ name: '导入',
+ value: 'import',
+ hidden: false,
+ icon: 'el-icon-upload2',
+ onClick() {
+ this.upload.url = `${this.http.ipAddress}api/${this.detail.table}/${this.const.IMPORT}?table=1`;
+ this.upload.template.url = `${this.http.ipAddress}api/${this.detail.table}/${this.const.DOWNLOADTEMPLATE}`;
+ //定义下载模板的文件名
+ this.upload.template.fileName = this.detail.cnName;
+ this.upload.excel = true;
+ }
+ },
+ {
+ type: 'danger',
+ plain: true,
+ name: '导出',
+ value: 'export',
+ icon: 'el-icon-download',
+ hidden: false,
+ onClick() {
+ this.export(true);
+ }
+ }
+ ]
+ );
+ this.detailOptions.buttons.forEach((button) => {
+ if (button.hasOwnProperty('hidden')) {
+ button.hidden = false;
+ }
+ });
+ //弹出框扩展按钮
+ this.extendBtn(boxButtons, this.extend.buttons.box);
+
+ //弹出框扩展明细表按钮
+ this.detailOptions.buttons.push(detailGridButtons);
+ this.extendBtn(this.detailOptions.buttons, this.extend.buttons.detail);
+
+ //弹出弹框按钮
+ this.boxButtons.push(...boxButtons);
+ },
+ onClick(click) {
+ click.apply(this);
+ },
+ changeDropdown(btnName, v1) {
+ let button = this.buttons.filter((x) => {
+ return x.name == btnName;
+ });
+ if (button && button.length > 0) {
+ button[0].onClick.apply(this);
+ }
+ },
+ emptyValue(value) {
+ if (typeof value == 'string' && value.trim() === '') {
+ return true;
+ }
+ if (value instanceof Array && !value.length) {
+ return true;
+ }
+ return value === null || value === undefined || value === '';
+ },
+ getSearchParameters() {
+ //获取查询参数
+ // 2020.09.11增加固定查询表单,如果设置固定了查询表单,点击查询时,不再关闭
+ if (!this.fiexdSearchForm) {
+ this.searchBoxShow = false;
+ }
+
+ let query = { wheres: [] };
+ for (const key in this.searchFormFields) {
+ let value = this.searchFormFields[key];
+ if (this.emptyValue(value)) continue;
+
+ if (typeof value == 'number') {
+ value = value + '';
+ }
+ let displayType = this.getSearchItem(key);
+
+ //联级只保留选中节点的最后一个值
+ if (displayType == 'cascader') {
+ //查询下面所有的子节点,如:选中的是父节点,应该查询下面所有的节点数据--待完
+ value = value.length ? value[value.length - 1] + '' : '';
+ }
+ //2021.05.02增加区间查询
+ if (
+ typeof value == 'string' ||
+ ['date', 'datetime', 'range'].indexOf(displayType) == -1
+ ) {
+ query.wheres.push({
+ name: key,
+ value:
+ typeof value == 'string' ? (value + '').trim() : value.join(','),
+ displayType: displayType
+ });
+ continue;
+ }
+ for (let index = 0; index < value.length; index++) {
+ if (!this.emptyValue(value[index])) {
+ query.wheres.push({
+ name: key,
+ value: (value[index] + '').trim(),
+ displayType: (() => {
+ if (['date', 'datetime', 'range'].indexOf(displayType) != -1) {
+ return index ? 'lessorequal' : 'thanorequal';
+ }
+ return displayType;
+ })()
+ });
+ }
+ }
+ }
+ return query;
+ },
+ search() {
+ //查询
+ // let query = this.getSearchParameters();
+ // this.$refs.table.load(query, true);
+ this.$refs.table.load(null, true);
+ },
+ loadTableBefore(param, callBack) {
+ //查询前设置查询条件及分页信息
+ let query = this.getSearchParameters();
+ if (query) {
+ param = Object.assign(param, query);
+ }
+
+ if (this.$route.query.viewflow && this.$route.query.id) {
+ param.wheres.push({
+ name: this.table.key,
+ value: this.$route.query.id
+ });
+ }
+ // if (this.isViewFlow() && data && data.length) {
+ // let query = JSON.parse(JSON.stringify(this.$route.query));
+ // query.viewflow = 0;
+ // this.$router.replace({ path: this.$route.path, query: query });
+ // this.$nextTick(() => {
+ // this.getWorkFlowSteps(data[0]);
+ // });
+ // }
+ let status = this.searchBefore(param);
+ callBack(status);
+ },
+
+ loadTableAfter(data, callBack, result) {
+ //查询后
+ //2020.10.30增加查询后返回所有的查询信息
+ let status = this.searchAfter(data, result);
+ callBack(status);
+ //自动弹出框审批详情
+ },
+ loadDetailTableBefore(param, callBack) {
+ //明细查询前
+ //新建时禁止加载明细
+ if (this.currentAction == this.const.ADD) {
+ callBack(false);
+ return false;
+ }
+ let status = this.searchDetailBefore(param);
+ callBack(status);
+ },
+ loadDetailTableAfter(data, callBack) {
+ //明细查询后
+ let status = this.searchDetailAfter(data);
+ callBack(status);
+ },
+ getSearchItem(field) {
+ //获取查询的参数
+ let data;
+ for (let index = 0; index < this.searchFormOptions.length; index++) {
+ if (data) return data.type;
+ const item = this.searchFormOptions[index];
+ data = item.find((x) => {
+ return x.field == field;
+ });
+ }
+
+ return (data || {}).type;
+ },
+ resetSearch() {
+ //重置查询对象
+ this.resetSearchForm();
+ //2020.10.17增加重置后方法
+ this.resetSearchFormAfter && this.resetSearchFormAfter();
+ },
+ resetEdit() {
+ //重置编辑的数据
+ let isEdit = this.currentAction != this.const.ADD;
+ //重置之前
+ if (!this[isEdit ? 'resetUpdateFormBefore' : 'resetAddFormBefore']()) {
+ return;
+ }
+ let objKey = {};
+ //编辑状态下,不需要重置主键,创建时间创建人
+ if (isEdit) {
+ objKey[this.table.key] = this.editFormFields[this.table.key];
+ }
+ this.resetEditForm(objKey);
+ //重置之后
+
+ if (!this[isEdit ? 'resetUpdateFormAfter' : 'resetAddFormAfter']()) {
+ return;
+ }
+ },
+ resetSearchForm(sourceObj) {
+ //重置查询表
+ this.resetForm('searchForm', sourceObj);
+ },
+ resetEditForm(sourceObj) {
+ if (this.hasDetail && this.$refs.detail) {
+ // this.$refs.detail.rowData.splice(0);
+ this.$refs.detail.reset();
+ }
+ this.resetForm('form', sourceObj);
+ if (this.$refs.form && this.$refs.form.$refs.mesform) {
+ setTimeout(() => {
+ this.$refs.form.$refs.mesform.clearValidate();
+ }, 100);
+ }
+ },
+ getKeyValueType(formData, isEditForm) {
+ try {
+ let keyLeft = (isEditForm ? 'e' : 's') + '_b_';
+ formData.forEach((item) => {
+ item.forEach((x) => {
+ if (this.keyValueType.hasOwnProperty(keyLeft + x.field)) {
+ return true;
+ }
+ let data;
+ if (x.type == 'switch') {
+ this.keyValueType[x.field] = 1;
+ } else if (x.bind && x.bind.data) {
+ data = x.bind.data;
+ } else if (x.data) {
+ if (x.data instanceof Array) {
+ data = x.data;
+ } else if (x.data.data && x.data.data instanceof Array) {
+ data = x.data.data;
+ }
+ }
+ if (
+ data &&
+ data.length > 0 &&
+ !this.keyValueType.hasOwnProperty(x.field)
+ ) {
+ this.keyValueType[x.field] = data[0].key;
+ this.keyValueType[keyLeft + x.field] = x.type;
+ }
+ });
+ });
+ } catch (error) {
+ console.log(error.message);
+ }
+ },
+ resetForm(formName, sourceObj) {
+ // return;
+ //重置表单数据
+ if (this.$refs[formName]) {
+ this.$refs[formName].reset();
+ }
+
+ if (!sourceObj) return;
+ let form, keyLeft;
+ if (formName == 'searchForm') {
+ form = this.searchFormFields;
+ keyLeft = 's' + '_b_';
+ } else {
+ form = this.editFormFields;
+ keyLeft = 'e' + '_b_';
+ }
+ //获取数据源的data类型,否则如果数据源data的key是数字,重置的值是字符串就无法绑定值
+ if (!this.keyValueType._dinit) {
+ this.getKeyValueType(this.editFormOptions, true);
+ this.getKeyValueType(this.searchFormOptions, false);
+ this.keyValueType._dinit = true;
+ }
+ var _cascaderParentTree;
+ for (const key in form) {
+ if (sourceObj.hasOwnProperty(key)) {
+ let newVal = sourceObj[key];
+ let kv_type = this.keyValueType[keyLeft + key];
+
+ if (
+ kv_type == 'selectList' ||
+ kv_type == 'checkbox' ||
+ kv_type == 'cascader' ||
+ kv_type == 'treeSelect'
+ ) {
+ // 2020.05.31增加iview组件Cascader
+ // 2020.11.01增加iview组件Cascader表单重置时查询所有的父节点
+ if (kv_type == 'cascader' || kv_type == 'treeSelect') {
+ var treeDic = this.dicKeys.find((dic) => {
+ return dic.fileds && dic.fileds.indexOf(key) != -1;
+ });
+
+ if (treeDic && treeDic.orginData && treeDic.orginData.length) {
+ let keyIsNum = typeof treeDic.orginData[0].id == 'number';
+
+ if (kv_type == 'cascader') {
+ newVal = keyIsNum ? newVal * 1 || 0 : newVal + '';
+ if (kv_type == 'cascader') {
+ _cascaderParentTree = this.base.getTreeAllParent(
+ newVal,
+ treeDic.orginData
+ );
+ if (_cascaderParentTree) {
+ newVal = _cascaderParentTree.map((x) => {
+ return x.id;
+ });
+ }
+ }
+ } else {
+ if (newVal === null || newVal === undefined) {
+ newVal = [];
+ } else if (typeof newVal == 'string') {
+ newVal = newVal.split(',');
+ }
+ if (keyIsNum) {
+ if (Array.isArray(newVal)) {
+ newVal = newVal.map((x) => {
+ return x * 1 || 0;
+ });
+ }
+ } else if (typeof newVal == 'number') {
+ newVal = [newVal + ''];
+ }
+ }
+ } else {
+ newVal = [newVal];
+ }
+ } else if (
+ newVal != '' &&
+ newVal != undefined &&
+ typeof newVal == 'string'
+ ) {
+ newVal = newVal.split(',');
+ } else if (kv_type == 'checkbox') {
+ newVal = [];
+ }
+ } else if (
+ this.keyValueType.hasOwnProperty(key) &&
+ typeof this.keyValueType[key] == 'number' &&
+ newVal * 1 == newVal
+ ) {
+ newVal = newVal * 1;
+ } else {
+ if (newVal == null || newVal == undefined) {
+ newVal = '';
+ } else if (this.numberFields.indexOf(key) != -1) {
+ newVal = newVal * 1 || 0;
+ } else {
+ newVal += '';
+ }
+ }
+ if (newVal instanceof Array) {
+ if (form[key]) {
+ form[key] = [];
+ }
+ form[key] = newVal;
+ } else {
+ form[key] = newVal;
+ }
+ } else {
+ form[key] = form[key] instanceof Array ? [] : '';
+ }
+ }
+ },
+ onBtnClick(param) {
+ this[param.method](param.data);
+ },
+ refresh() {
+ //刷新
+ this.search();
+ // this.$refs.table.load();
+ },
+ saveBefore(formData) {
+ return true;
+ },
+ saveAfter(formData, result) {
+ return true;
+ },
+ save() {
+ //新增或编辑时保存
+ // if (!this.$refs.form.validate()) return;
+ this.$refs.form.validate((result) => {
+ if (result) {
+ this.saveExecute();
+ }
+ });
+ },
+ async saveExecute() {
+ let editFormFields = {};
+ //上传文件以逗号隔开
+ for (const key in this.editFormFields) {
+ if (
+ this.uploadfiled &&
+ this.uploadfiled.length > 0 &&
+ this.uploadfiled.indexOf(key) != -1 &&
+ this.editFormFields[key] instanceof Array
+ ) {
+ let allPath = this.editFormFields[key].map((x) => {
+ return x.path;
+ });
+ editFormFields[key] = allPath.join(',');
+ } else if (typeof this.editFormFields[key] == 'function') {
+ try {
+ editFormFields[key] = this.editFormFields[key]();
+ } catch (error) { }
+ } else {
+ //2021.05.30修复下拉框清除数据后后台不能保存的问题
+ if (
+ this.editFormFields[key] === undefined &&
+ this.dicKeys.some((x) => {
+ return x.fileds && x.fileds.indexOf(key) != -1;
+ })
+ ) {
+ editFormFields[key] = null;
+ } else {
+ editFormFields[key] = this.editFormFields[key];
+ }
+ }
+ }
+ //将数组转换成string
+ //2020.11.01增加级联处理
+ for (const key in editFormFields) {
+ if (editFormFields[key] instanceof Array) {
+ var iscascader = this.dicKeys.some((x) => {
+ return (
+ x.type == 'cascader' && x.fileds && x.fileds.indexOf(key) != -1
+ );
+ });
+ if (iscascader && editFormFields[key].length) {
+ editFormFields[key] =
+ editFormFields[key][editFormFields[key].length - 1];
+ } else {
+ editFormFields[key] = editFormFields[key].join(',');
+ }
+ }
+ }
+
+ let formData = {
+ mainData: editFormFields,
+ detailData: null,
+ delKeys: null
+ };
+
+ //获取明细数据(前台数据明细未做校验,待完.后台已经校验)
+ if (this.hasDetail) {
+ formData.detailData = this.$refs.detail.rowData;
+ let _fields = this.detail.columns
+ .filter((c) => {
+ return (
+ c.type == 'selectList' || (c.edit && c.edit.type == 'selectList')
+ );
+ })
+ .map((c) => {
+ return c.field;
+ });
+ //2022.06.20增加保存时对明细表下拉框多选的判断
+ if (_fields.length) {
+ formData.detailData = JSON.parse(JSON.stringify(formData.detailData));
+ formData.detailData.forEach((row) => {
+ for (let index = 0; index < _fields.length; index++) {
+ const _field = _fields[index];
+ if (Array.isArray(row[_field])) {
+ row[_field] = row[_field].join(',');
+ }
+ }
+ });
+ }
+ }
+ if (this.detailOptions.delKeys.length > 0) {
+ formData.delKeys = this.detailOptions.delKeys;
+ }
+ //保存前拦截
+ let _currentIsAdd = this.currentAction == this.const.ADD;
+ if (_currentIsAdd) {
+ //2020.12.06增加新建前异步处理方法
+ //2021.08.16修复异步语法写错的问题
+ if (!this.addBefore(formData) || !(await this.addBeforeAsync(formData)))
+ return;
+ } else {
+ //2020.12.06增加修改前异步处理方法
+ if (
+ !this.updateBefore(formData) ||
+ !(await this.updateBeforeAsync(formData))
+ )
+ return;
+ }
+ let url = this.getUrl(this.currentAction);
+ this.http.post(url, formData, true).then((x) => {
+ //保存后
+ if (_currentIsAdd) {
+ if (!this.addAfter(x)) return;
+ //连续添加
+ if (this.continueAdd && x.status) {
+ this.$success(x.message);
+ //新建
+ this.currentAction = this.const.ADD;
+ this.currentRow = {};
+ this.resetAdd();
+ this.refresh();
+ return;
+ }
+ } else {
+ if (!this.updateAfter(x)) return;
+ }
+ if (!x.status) return this.$error(x.message);
+ this.$success(x.message || '操作成功');
+ //如果保存成功后需要关闭编辑框,直接返回不处理后面
+ if (this.boxOptions.saveClose) {
+ this.boxModel = false;
+ //2020.12.27如果是编辑保存后不重置分页页数,刷新页面时还是显示当前页的数据
+ this.$refs.table.load(null, _currentIsAdd);
+ //this.refresh();
+ return;
+ }
+ let resultRow;
+ if (typeof x.data == 'string' && x.data != '') {
+ resultRow = JSON.parse(x.data);
+ } else {
+ resultRow = x.data;
+ }
+
+ if (this.currentAction == this.const.ADD) {
+ // this.currentRow=x.data;
+ this.editFormFields[this.table.key] = '';
+ this.currentAction = this.const.EDIT;
+ this.currentRow = resultRow.data;
+ }
+ this.resetEditForm(resultRow.data);
+ // console.log(resultRow);
+ if (this.hasDetail) {
+ this.detailOptions.delKeys = [];
+ if (resultRow.list) {
+ this.$refs.detail.rowData.push(...resultRow.list);
+ }
+ }
+ this.$refs.table.load(null, _currentIsAdd);
+ // this.refresh();
+ });
+ },
+ del(rows) {
+ if (rows) {
+ if (!(rows instanceof Array)) {
+ rows = [rows];
+ }
+ } else {
+ rows = this.$refs.table.getSelected();
+ }
+ //删除数据
+
+ if (!rows || rows.length == 0) return this.$error('请选择要删除的行!');
+ let delKeys = rows.map((x) => {
+ return x[this.table.key];
+ });
+ if (!delKeys || delKeys.length == 0)
+ return this.$error('没有获取要删除的行数据!');
+ //删除前
+ if (!this.delBefore(delKeys, rows)) {
+ return;
+ }
+ let tigger = false;
+ this.$confirm('确认要删除选择的数据吗?', '警告', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
+ center: true
+ }).then(() => {
+ if (tigger) return;
+ tigger = true;
+ let url = this.getUrl(this.const.DEL);
+ this.http.post(url, delKeys, '正在删除数据....').then((x) => {
+ if (!x.status) return this.$error(x.message);
+ this.$success(x.message);
+ //删除后
+ if (!this.delAfter(x)) {
+ return;
+ }
+ this.refresh();
+ });
+ });
+ },
+ async modelOpenBeforeAsync(row) {
+ return true;
+ },
+ async initBox() {
+ //2022.01.08增加新建时隐藏明细表导出功能
+ this.detailOptions.buttons.forEach((x) => {
+ if (x.value == 'export') {
+ x.hidden = this.currentAction == 'Add';
+ }
+ });
+ //初始化新建、编辑的弹出框
+ if (!(await this.modelOpenBeforeAsync(this.currentRow))) return false;
+ this.modelOpenBefore(this.currentRow);
+ if (!this.boxInit) {
+ this.boxInit = true;
+ this.boxModel = true;
+ // this.detailUrl = this.url;
+ }
+ return true;
+ },
+ setEditForm(row) {
+ // if (this.remoteColumns.length == 0 || !rows || rows.length == 0) return;
+ let remoteColumns = this.$refs.table.remoteColumns;
+ remoteColumns.forEach((column) => {
+ this.editFormOptions.forEach((option) => {
+ option.forEach((x) => {
+ if (x.field == column.field) {
+ x.data.data = Object.assign([], x.data, column.bind.data);
+ }
+ });
+ });
+ });
+ this.editFormFields;
+ //重置编辑表单数据
+ this.editFormFields[this.table.key] = row[this.table.key];
+
+ this.resetEditForm(row);
+ this.currentAction = this.const.EDIT;
+ this.boxModel = true;
+ },
+ async linkData(row, column) {
+ this.boxOptions.title =this.table.cnName+'(编辑)';
+ //点击table单元格快捷链接显示编辑数据
+ this.currentAction = this.const.EDIT;
+ this.currentRow = row;
+ if (!(await this.initBox())) return;
+ this.resetDetailTable(row);
+ this.setEditForm(row);
+ this.setContinueAdd(false);
+ //设置远程查询表单的默认key/value
+ this.getRemoteFormDefaultKeyValue();
+ //点击编辑按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ this.modelOpenProcess(row);
+ },
+ setContinueAdd(isAdd) {
+ if (!this.continueAdd) return;
+ var _button = this.boxButtons.find((x) => {
+ return x.value == 'save';
+ });
+ if (_button) {
+ _button.name = isAdd ? this.continueAddName : '保 存';
+ }
+ },
+ resetAdd() {
+ if (this.hasDetail) {
+ this.$refs.detail &&
+ // this.$refs.detail.rowData &&
+ this.$refs.detail.reset();
+ }
+ let obj = {};
+ //如果有switch标签,默认都设置为否
+ this.editFormOptions.forEach((x) => {
+ x.forEach((item) => {
+ if (item.type == 'switch') {
+ obj[item.field] = 0;
+ }
+ });
+ });
+ this.resetEditForm(obj);
+ },
+ async add() {
+ this.boxOptions.title =this.table.cnName+'(新建)';
+ //新建
+ this.currentAction = this.const.ADD;
+ this.currentRow = {};
+ if (!(await this.initBox())) return;
+
+ this.resetAdd();
+ this.setContinueAdd(true);
+ // this.resetEditForm();
+ this.boxModel = true;
+ //点击新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ this.modelOpenProcess();
+ // this.modelOpenAfter();
+ },
+ async edit(rows) {
+ this.boxOptions.title = '编辑';
+ //编辑
+ this.currentAction = this.const.EDIT;
+ if (rows) {
+ if (!(rows instanceof Array)) {
+ rows = [rows];
+ }
+ } else {
+ rows = this.$refs.table.getSelected();
+ }
+ if (rows.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (rows.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ //记录当前编辑的行
+ this.currentRow = rows[0];
+ //初始化弹出框
+ if (!(await this.initBox())) return;
+ this.setContinueAdd(false);
+ //重置表单
+ this.resetDetailTable();
+
+ //设置当前的数据到表单上
+ this.setEditForm(rows[0]);
+ //设置远程查询表单的默认key/value
+ this.getRemoteFormDefaultKeyValue();
+ //点击编辑按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ this.modelOpenProcess(rows[0]);
+ // this.modelOpenAfter(rows[0]);
+ },
+ getRemoteFormDefaultKeyValue() {
+ //设置表单远程数据源的默认key.value
+ if (this.currentAction != this.const.EDIT || this.remoteKeys.length == 0)
+ return;
+ this.editFormOptions.forEach((x, xIndex) => {
+ x.forEach((item, yIndex) => {
+ if (item.remote) {
+ let column = this.columns.find((x) => {
+ return x.bind && x.bind.key == item.dataKey;
+ });
+ if (!column) return;
+ let key = this.currentRow[item.field];
+ let obj = column.bind.data.find((x) => {
+ return x.key == key;
+ });
+ // obj ? obj.value : key如果没有查到数据源,直接使用原数据
+ item.data = [{ key: key, value: obj ? obj.value : key }];
+ this.editFormOptions[xIndex].splice(yIndex, 1, item);
+ // this.$set(item, 'data', [{ key: key + '', value: obj.value }])
+ // item.data = [{ key: key + '', value: obj.value }];
+ }
+ });
+ });
+ },
+ modelOpenProcess(row) {
+ this.$nextTick(() => {
+ this.modelOpenAfter(row);
+ });
+ return;
+ // if (!this.$refs.form) {
+ // let timeOut = setTimeout(x => {
+ // this.modelOpenAfter(row);
+ // }, 500)
+ // return;
+ // }
+ // this.modelOpenAfter(row);
+ },
+ import() {
+ //导入(上传excel),弹出导入组件UploadExcel.vue
+ this.upload.excel = true;
+ this.$refs.upload_excel && this.$refs.upload_excel.reset();
+ },
+ download(url, fileName) {
+ //下载导出的文件
+ let xmlResquest = new XMLHttpRequest();
+ xmlResquest.open('GET', url, true);
+ xmlResquest.setRequestHeader('Content-type', 'application/json');
+ xmlResquest.setRequestHeader(
+ 'Authorization',
+ this.$store.getters.getToken()
+ );
+ let elink = this.$refs.export;
+ xmlResquest.responseType = 'blob';
+ xmlResquest.onload = function (oEvent) {
+ if (xmlResquest.status != 200) {
+ this.$error('下载文件出错了..');
+ return;
+ }
+ let content = xmlResquest.response;
+ // let elink = this.$refs.export;//document.createElement("a");
+ elink.download = fileName; //+".xlsx";
+ // elink.style.display = "none";
+ let blob = new Blob([content]);
+ elink.href = URL.createObjectURL(blob);
+ // document.body.appendChild(elink);
+ elink.click();
+ // document.body.removeChild(elink);
+ };
+ xmlResquest.send();
+ },
+ getFileName(isDetail) {
+ //2021.01.08增加导出excel时自定义文件名
+ if (isDetail) {
+ return this.detail.cnName + '.xlsx';
+ }
+ return this.table.cnName + '.xlsx';
+ },
+ export(isDetail) {
+ //导出
+ let url, query, param;
+ if (isDetail) {
+ //明细表导出时如果是新建状态,禁止导出
+ if (this.currentAction == 'Add') {
+ return;
+ }
+ url = `api/${this.detail.table}/${this.const.EXPORT}`;
+ param = {
+ wheres: [
+ { name: this.table.key, value: this.editFormFields[this.table.key] }
+ ]
+ };
+ } else {
+ //主表导出
+ url = this.getUrl(this.const.EXPORT);
+ query = this.getSearchParameters();
+ param = { order: this.pagination.order, wheres: query.wheres || [] };
+ }
+ //2020.06.25增加导出前处理
+ if (!isDetail && !this.exportBefore(param)) {
+ return;
+ }
+
+ if (param.wheres && typeof param.wheres == 'object') {
+ param.wheres = JSON.stringify(param.wheres);
+ }
+ let $http = this.http;
+ //2022.09.26增加自定义导出文件名
+ let fileName = this.downloadFileName || this.getFileName(isDetail);
+ //2021.01.08优化导出功能
+ $http
+ .post(url, param, '正在导出数据....', { responseType: 'blob' })
+ .then((content) => {
+ const blob = new Blob([content]);
+ if ('download' in document.createElement('a')) {
+ // 非IE下载
+ const elink = document.createElement('a');
+ elink.download = fileName;
+ elink.style.display = 'none';
+ elink.href = URL.createObjectURL(blob);
+ document.body.appendChild(elink);
+ elink.click();
+ URL.revokeObjectURL(elink.href);
+ document.body.removeChild(elink);
+ } else {
+ // IE10+下载
+ navigator.msSaveBlob(blob, fileName);
+ }
+ });
+ //.then(result => {
+ // if (!result.status) {
+ // return this.$error(result.message);
+ // }
+ // let path = this.getUrl(this.const.DOWNLOAD);
+ // path = path[0] == "/" ? path.substring(1) : path;
+ // this.download(
+ // $http.ipAddress + path + "?path=" + result.data,
+ // this.table.cnName + ".xlsx" // filePath
+ // );
+ /// window.open($http.ipAddress + path + "?fileName=" + filePath, "_self");
+ // });
+ },
+ getSelectRows() {
+ //获取选中的行
+ return this.$refs.table.getSelected();
+ },
+ getDetailSelectRows() {
+ //或获取明细选中的行
+ if (!this.$refs.detail) {
+ return [];
+ }
+ return this.$refs.detail.getSelected();
+ },
+ audit() {
+ //审核弹出框
+ let rows = this.$refs.table.getSelected();
+ if (rows.length == 0) return this.$error('请选择要审核的行!');
+ let auditStatus = Object.keys(rows[0]).find(x => { return x.toLowerCase() === 'auditstatus' });
+ if (!auditStatus) {
+ return this.$message.error(`表必须包括审核字段【AuditStatus】,并且是int类型`)
+ }
+ // let checkStatus = rows.every((x) => {
+ // return this.$global.audit.status.some(c => { return c === x[auditStatus] || !x[auditStatus] })
+ // });
+ // if (!checkStatus) return this.$error('只能选择待审批或审核中的数据!');
+ this.$refs.audit.open(rows);
+ },
+ saveAudit(params, rows, callback) {
+
+ //保存审核
+ let keys = rows.map(x => { return x[this.table.key] });
+ if (!this.auditBefore(keys, rows)) {
+ return;
+ }
+ let url = `${this.getUrl(this.const.AUDIT)}?auditReason=${params.reason}&auditStatus=${params.value}`
+ this.http.post(url, keys, '审核中....').then((x) => {
+ if (!this.auditAfter(x, keys)) {
+ return;
+ }
+ if (!x.status) return this.$error(x.message);
+
+ callback && callback(x);
+ this.$success(x.message);
+ this.refresh();
+ });
+ },
+ viewModelCancel() {
+ //查看表结构
+ this.viewModel = false;
+ },
+ initFormOptions(formOptions, keys, formFields, isEdit) {
+ //初始化查询、编辑对象的下拉框数据源、图片上传链接地址
+ //let defaultOption = { key: "", value: "请选择" };
+ //有上传的字段
+ //2020.05.03新增
+ //编辑数据源的类型
+ formOptions.forEach((item) => {
+ item.forEach((d) => {
+ if (d.type == 'number') {
+ //2022.08.22优化表单类型为number时的默认值
+ if (formFields[d.field] === '') {
+ formFields[d.field] = undefined;
+ }
+ this.numberFields.push(d.field);
+ }
+ if (
+ d.type == 'img' ||
+ d.type == 'excel' ||
+ d.type == 'file' ||
+ d.columnType == 'img'
+ ) {
+ d.url = this.http.ipAddress + 'api' + this.table.url + 'Upload';
+ this.uploadfiled.push(d.field);
+ }
+ if (!d.dataKey) return true;
+ //2022.02.20强制开启联级可以选择某个节点
+ if (d.type == 'cascader' && !d.hasOwnProperty('changeOnSelect')) {
+ //强制开启联级可以选择某个节点
+ d.changeOnSelect = true;
+ }
+ //开启远程搜索
+ if (d.remote) {
+ this.remoteKeys.push(d.dataKey);
+ d.data = []; //{ dicNo: d.dataKey, data: [] };
+ return true;
+ }
+ //2020.05.03增加编辑表单对checkbox的支持
+ if (d.type == 'checkbox' && !(formFields[d.field] instanceof Array)) {
+ formFields[d.field] = [];
+ }
+ if (keys.indexOf(d.dataKey) == -1) {
+ //2020.05.03增加记录编辑字段的数据源类型
+
+ keys.push(d.dataKey);
+ //2020.05.03修复查询表单与编辑表单type类型变成强一致性的问题
+ //this.dicKeys.push({ dicNo: d.dataKey, data: [], type: d.type });
+ // 2020.11.01增加iview组件Cascader数据源存储
+ let _dic = {
+ dicNo: d.dataKey,
+ data: [],
+ fileds: [d.field],
+ orginData: []
+ };
+ if (d.type == 'cascader') {
+ _dic.type = 'cascader';
+ }
+ if (isEdit) {
+ _dic['e_type'] = d.type;
+ }
+ this.dicKeys.push(_dic);
+ } else if (d.type == 'cascader') {
+ this.dicKeys.forEach((x) => {
+ if (x.dicNo == d.dataKey) {
+ x.type = 'cascader';
+ x.fileds.push(d.field);
+ }
+ });
+ }
+ if (d.type != 'cascader') {
+ //2020.01.30移除内部表单formOptions数据源配置格式data.data,所有参数改为与组件api格式相同
+ Object.assign(
+ d,
+ this.dicKeys.filter((f) => {
+ return f.dicNo == d.dataKey;
+ })[0],
+ { type: d.type }
+ );
+ }
+ });
+ });
+ },
+ //初始table与明细表的数据源指向dicKeys对象,再去后台加载数据源
+ initColumns(scoure, dicKeys, keys) {
+ if (!scoure || !(scoure instanceof Array)) return;
+ scoure.forEach((item) => {
+ if (!item.bind || (item.bind.data && item.bind.data.length > 0))
+ return true;
+ let key = item.bind.key || item.bind.dicNo;
+ if (this.remoteKeys.indexOf(key) != -1) {
+ item.bind.remote = true;
+ return true;
+ }
+ if (this.hasKeyField.indexOf(item.field) == -1) {
+ this.hasKeyField.push(item.field);
+ }
+ var dic = dicKeys.filter((x) => {
+ return x.dicNo == key;
+ });
+ if (!dic || dic.length == 0) {
+ dicKeys.push({ dicNo: key, data: [] });
+ dic = [dicKeys[dicKeys.length - 1]];
+ keys.push(key);
+ }
+ //2020.11.01增加级联处理
+ if (dic[0].type == 'cascader' || dic[0].type == 'treeSelect') {
+ item.bind = { data: dic[0].orginData, type: 'select', key: key };
+ } else {
+ item.bind = dic[0];
+ }
+ //2020.05.03优化table数据源checkbox与select类型从编辑列中选取
+ item.bind.type = item.bind.e_type || 'string';
+ });
+ },
+ bindOptions(dic) {
+ //绑定下拉框的数据源
+ //绑定后台的字典数据
+ dic.forEach((d) => {
+ if (d.data.length >= (this.select2Count || 500)) {
+ if (
+ !this.dicKeys.some((x) => {
+ return (
+ x.dicNo == d.dicNo &&
+ (x.type == 'cascader' || x.type == 'treeSelect')
+ );
+ })
+ ) {
+ d.data.forEach((item) => {
+ item.label = item.value;
+ item.value = item.key;
+ });
+ }
+ }
+ this.dicKeys.forEach((x) => {
+ if (x.dicNo != d.dicNo) return true;
+ //2020.10.26增加级联数据源绑定处理
+ if (x.type == 'cascader' || x.type == 'treeSelect') {
+ // x.data=d.data;
+ //生成tree结构
+ let _data = JSON.parse(JSON.stringify(d.data));
+ //2022.04.04增加级联字典数据源刷新后table没有变化的问题
+ this.columns.forEach((column) => {
+ if (column.bind && column.bind.key == d.dicNo) {
+ column.bind.data = d.data;
+ }
+ });
+ let arr = this.base.convertTree(_data, (node, data, isRoot) => {
+ if (!node.inited) {
+ node.inited = true;
+ node.label = node.value;
+ node.value = node.key;
+ }
+ });
+ x.data.push(...arr);
+ x.orginData.push(...d.data);
+ //2021.10.17修复查询级联不能绑定数据源的问题
+ this.searchFormOptions.forEach((searhcOption) => {
+ searhcOption.forEach((_option) => {
+ if (_option.type == 'cascader' && _option.dataKey == x.dicNo) {
+ _option.data = arr;
+ _option.orginData = d.data;
+ }
+ });
+ });
+ //2021.10.17修复级联不能二级刷新的问题
+ this.editFormOptions.forEach((editOption) => {
+ editOption.forEach((_option) => {
+ if (
+ (_option.type == 'cascader' || _option.type == 'treeSelect') &&
+ _option.dataKey == x.dicNo
+ ) {
+ _option.data = arr;
+ _option.orginData = d.data;
+ }
+ });
+ });
+ } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) {
+ let source = d.data,
+ newSource = new Array(source.length);
+ for (let index = 0; index < source.length; index++) {
+ newSource[index] = {
+ //默认从字典数据读出来的key都是string类型,但如果数据从sql中查询的可能为非string,否是async-validator需要重置设置格式
+ key: source['key'] + '', //source[index][x.config.valueField] + "",
+ value: source['value'] //source[index][x.config.textField]
+ };
+ }
+
+ x.data.push(...newSource);
+ } else {
+ //2020.06.06,如果是selectList数据源使用的自定义sql并且key是数字,强制转换成字符串
+ if (
+ x.e_type == 'selectList' &&
+ d.data.length > 0 &&
+ typeof d.data[0].key == 'number'
+ ) {
+ d.data.forEach((c) => {
+ c.key = c.key + '';
+ });
+ }
+ x.data.push(...d.data);
+ //iMES修改,筛选字典数据
+ x.data = x.data.filter((currentValue, currentIndex, sourceArr) =>{
+ return x.data.findIndex(x => x.key === currentValue.key) === currentIndex
+ });
+ }
+ if (
+ this.singleSearch &&
+ this.singleSearch.dataKey &&
+ this.singleSearch.dataKey == x.dicNo
+ ) {
+ this.singleSearch.data.splice(0, 1, ...x.data);
+ }
+ });
+ });
+ },
+ getUrl(action, ingorPrefix) {
+ //是否忽略前缀/ 获取操作的url
+ return (!ingorPrefix ? '/' : '') + 'api' + this.table.url + action;
+ },
+ initDicKeys() {
+ //初始化字典数据
+ let keys = [];
+ //2022.04.17优化重新加载数据源
+ this.dicKeys.forEach((item) => {
+ item.data.splice(0);
+ item.orginData && item.orginData.splice(0);
+ });
+ //this.dicKeys.splice(0);
+ //初始化编辑数据源,默认为一个空数组,如果要求必填设置type=number/decimal的最小值
+ this.initFormOptions(this.editFormOptions, keys, this.editFormFields, true);
+ //初始化查询数据源,默认为一个空数组
+ this.initFormOptions(
+ this.searchFormOptions,
+ keys,
+ this.searchFormFields,
+ false
+ );
+ //查询日期设置为可选开始与结果日期
+ this.searchFormOptions.forEach((item) => {
+ item.forEach((x) => {
+ if (x.type == 'date' || x.type == 'datetime') x.range = true;
+ });
+ });
+ //初始化datatable表数据源,默认为一个空数组,dicKeys为界面所有的数据字典编号
+ this.initColumns(this.columns, this.dicKeys, keys);
+ //2021.05.23默认开启查询页面所有字段排序,如果不需要排序,在onInited遍历columns设置sort=false
+ //2021.09.25移除强制排序功能
+ // this.columns.forEach(x => {
+ // x.sort = x.render ? false : true;
+ // })
+ if (this.detailOptions && this.detailOptions.columns) {
+ this.initColumns(this.detailOptions.columns, this.dicKeys, keys);
+ }
+ //初始化快速查询字段,默认使用代码生成器配置的第一个查询字段
+ if (this.searchFormOptions.length > 0) {
+ this.singleSearch = {
+ dataKey: this.searchFormOptions[0][0].dataKey,
+ dicNo: this.searchFormOptions[0][0].dicNo,
+ field: this.searchFormOptions[0][0].field,
+ title: this.searchFormOptions[0][0].title,
+ type: this.searchFormOptions[0][0].type,
+ data: []
+ };
+ // this.singleSearch = this.searchFormOptions[0][0];
+ }
+ if (keys.length == 0) return;
+ let $this = this;
+ this.http.post('/api/Sys_Dictionary/GetVueDictionary', keys).then((dic) => {
+ $this.bindOptions(dic);
+ //2022.04.04增加字典加载完成方法
+ $this.dicInited && $this.dicInited(dic);
+ });
+ },
+ setFiexdColumn(columns, containerWidth) {
+ //计算整个table的宽度,根据宽度决定是否启用第一行显示的列为固定列
+ //2021.09.21移除强制固定第一列
+ // let columnsWidth = 0;
+ // columns.forEach(x => {
+ // if (!x.hidden && x.width) {
+ // columnsWidth += x.width;
+ // }
+ // });
+ // //启用第一列为固定列
+ // if (columnsWidth > containerWidth) {
+ // let firstColumn = columns.find(x => !x.hidden);
+ // if (firstColumn) {
+ // firstColumn.fixed = true;
+ // }
+ // }
+ },
+ initBoxHeightWidth() {
+ //初始化弹出框的高度与宽度
+ let clientHeight = document.documentElement.clientHeight;
+ //弹出框高度至少250px
+ clientHeight = clientHeight < 250 ? 250 : clientHeight;
+ let clientWidth = document.documentElement.clientWidth;
+ if (
+ this.editFormOptions.some((x) => {
+ return x.some((item) => {
+ return item.type == 'editor';
+ });
+ })
+ ) {
+ this.editor.uploadImgUrl = this.getUrl('upload');
+ this.boxOptions.height = clientHeight * 0.8;
+ this.boxOptions.width = clientWidth * 0.8;
+ } else {
+ if (this.boxOptions.height) {
+ //如果高度与宽度超过了获取到的可见高宽度,则设为默认的90%高宽
+ if (this.boxOptions.height > clientHeight * 0.8) {
+ this.boxOptions.height = clientHeight * 0.8;
+ }
+ }
+ if (this.boxOptions.width) {
+ //如果高度与宽度超过了获取到的可见高宽度,则设为默认的90%高宽
+ if (this.boxOptions.width > clientWidth * 0.8) {
+ this.boxOptions.width = clientWidth * 0.8;
+ }
+ }
+ }
+ //计算整个table的宽度,根据宽度决定是否启用第一行显示的列为固定列
+ let maxTableWidth = clientWidth - 270;
+ this.setFiexdColumn(this.columns, maxTableWidth);
+
+ this.height = this.tableHeight || clientHeight - 206;
+ this.url = this.getUrl(this.const.PAGE);
+ //计算弹出框的高与宽度
+ //如果有明细表,高度与宽带设置为0.9/0.82
+ if (this.detail.columns && this.detail.columns.length > 0) {
+ this.hasDetail = true;
+ clientWidth = clientWidth * 0.8;
+ clientHeight = clientHeight * 0.85;
+ if (!this.detailOptions.height) {
+ this.detailOptions.height =
+ clientHeight - this.editFormOptions.length * 36 - 234;
+ this.detailOptions.height =
+ this.detailOptions.height < 240 ? 240 : this.detailOptions.height;
+ }
+
+ this.detailOptions.columns = this.detail.columns;
+ this.detailOptions.pagination.sortName = this.detail.sortName;
+ this.detailOptions.cnName = this.detail.cnName;
+ this.detailOptions.key = this.detail.key;
+ this.detailOptions.url = this.getUrl('getDetailPage');
+ //计算弹出框整个table的宽度,根据宽度决定是否启用第一行显示的列为固定列
+ this.setFiexdColumn(this.detail.columns, clientWidth);
+ } else {
+ let maxColumns = 1; //最大列数,根据列计算弹框的宽度
+ this.editFormOptions.forEach((x) => {
+ if (x.length > maxColumns) maxColumns = x.length;
+ });
+ let maxHeightRate = 0.7,
+ maxWidthRate = 0.5;
+ maxWidthRate = maxColumns / 10 + 0.3;
+ maxHeightRate = (this.editFormOptions.length || 1) * 0.1 + 0.03;
+ maxHeightRate = maxHeightRate > 0.9 ? 0.9 : maxHeightRate;
+ clientWidth = clientWidth * maxWidthRate;
+ clientHeight = clientHeight * maxHeightRate;
+ // this.boxOptions.width = clientWidth * maxWidthRate;
+ // this.boxOptions.height = clientHeight * maxHeightRate;
+ }
+ if (!this.boxOptions.height) {
+ this.boxOptions.height = clientHeight + 10;
+ }
+ if (!this.boxOptions.width) {
+ this.boxOptions.width = clientWidth + 30;
+ }
+ },
+ rowOnChange(row) {
+ this.rowChange(row);
+ },
+ rowChange(row) {
+ //选中行checkbox行事件
+ },
+ rowOnClick({ row, column, event }) {
+ this.rowClick({ row, column, event });
+ },
+ rowClick({ row, column, event }) {
+ // 点击行事件(2020.11.07)
+ },
+ rowOnDbClick({ row, column, event }) {
+ this.rowDbClick({ row, column, event });
+ },
+ rowDbClick({ row, column, event }) {
+ // 双击击行事件(2021.05.23)
+ },
+ $error(message) {
+ this.$message.error(message);
+ // this.$message({
+ // type: 'error',
+ // content: message,
+ // duration: 5
+ // });
+ },
+ $success(message) {
+ this.$message.success(message);
+ },
+ setFiexdSearchForm(visiable) {
+ //2020.09.011增加固定查询表单功能,visiable=true默认将查询表单展开
+ this.fiexdSearchForm = true;
+ let refreshBtn = this.buttons.find((x) => x.name == '刷 新');
+ if (visiable) {
+ this.searchBoxShow = true;
+ }
+ if (refreshBtn) {
+ refreshBtn.name = '重 置';
+ refreshBtn.onClick = function () {
+ this.resetSearch();
+ };
+ }
+ },
+ tableBeginEdit(row, column, index) {
+ //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑
+ return this.beginEdit(row, column, index);
+ },
+ beginEdit(row, column, index) {
+ //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑
+ return true;
+ },
+ tableEndEditBefore(row, column, index) {
+ return this.endEditBefore(row, column, index);
+ },
+ endEditBefore(row, column, index) {
+ //2021.03.19是否开启查询界面表格双击编辑结束方法,返回false不会结束编辑
+ return true;
+ },
+ filterPermission(tableName, permission) {
+ //2021.03.19判断是否有某个表的按钮权限
+ //:["Search","Add","Delete","Update","Import","Export","Upload","Audit"]
+ const _result = (this.$store.state.permission || []).find((x) => {
+ return x.url == '/' + tableName;
+ });
+ return _result && _result.permission.some((x) => x == permission);
+ },
+ destroyed() {
+ //2021.04.11增加vue页面销毁方法,路由必须设置keepLive:false,设置方法见:前端开发文档-》[禁用页面缓存keepAlive]
+ },
+ loadTreeTableChildren(tree, treeNode, resolve) {
+ this.loadTreeChildren.call(this, tree, treeNode, resolve);
+ },
+ loadTreeChildren(tree, treeNode, resolve) {
+ //树形结构加载子节点(2021.05.02),在onInit中设置了rowKey主键字段后才会生效
+ return resolve([]);
+ },
+ importDetailAfter(data) {
+ //2022.01.08增加明细表导入后处理
+ },
+ importExcelAfter(data) {
+ //2022.01.08增加明细表导入后方法判断
+
+ if (!data.status) {
+ return; // this.$message.error(data.message);
+ }
+ //明细表导入
+ if (this.boxModel) {
+ if (data.data) {
+ data.data = JSON.parse(data.data);
+ } else {
+ data.data = [];
+ }
+ data.data.forEach((x) => {
+ x[this.detail.key] = undefined;
+ x[this.table.key] = undefined;
+ });
+ this.importDetailAfter(data); //增加明细表导入后处理
+ this.$refs.detail.rowData.unshift(...data.data);
+ this.upload.excel = false;
+ return;
+ }
+ this.importAfter(data);
+ },
+ onGridModelClose(iconClick) {
+ if (this.isBoxAudit) {
+ this.initFormOptionType(false);
+ }
+ this.isBoxAudit = false;
+ this.onModelClose(iconClick);
+ },
+ initAuditColumn() {
+
+ },
+ getWorkFlowSteps(row) {
+ let table = this.table.url.replaceAll('/', '');
+ let url = `api/Sys_WorkFlow/getSteps?tableName=${table}&id=${row[this.table.key]
+ }`;
+ this.http.get(url, {}, true).then((result) => {
+ this.workFlowSteps.splice(0);
+ //有可能没有配置审批流程
+ if (!result.list || !result.list.length) {
+ result.list = [];
+ this.auditParam.showAction = true;
+ this.auditParam.height = 240;
+ this.auditParam.showViewButton = row.AuditStatus == 0;
+ } else {
+ this.auditParam.showAction = result.list.some((c) => {
+ return c.isCurrentUser;
+ });
+ this.auditParam.height = 511;
+ this.auditParam.showViewButton = true;
+ }
+ this.auditParam.reason = '';
+ this.auditParam.status = -1;
+ this.auditParam.value = -1;
+ if (result.his) {
+ result.his.forEach((item) => {
+ item.auditStatus = this.getAuditStatus(item.auditStatus);
+ });
+ }
+
+ this.auditParam.auditHis = result.his;
+ this.workFlowSteps.push(...result.list);
+ this.isBoxAudit = true;
+ this.initFormOptionType(true);
+ this.edit(row);
+ this.boxOptions.title = '审核';
+ });
+ },
+ initFormOptionType(isReadonly) {
+ this.editFormOptions.forEach((options) => {
+ options.forEach((option) => {
+ if (isReadonly) {
+ if (!option.readonly) {
+ this.formFieldsType.push(option.field);
+ option.readonly = true;
+ }
+ } else {
+ if (this.formFieldsType.indexOf(option.field) != -1) {
+ option.readonly = false;
+ }
+ }
+ });
+ });
+ },
+ getAuditStatus(status) {
+ let data = this.auditParam.data.find((x) => {
+ return x.value == status;
+ });
+ if (!data) {
+ return '-';
+ // return `审核值不正确:${status}`
+ }
+ return data.text;
+ },
+ initFlowQuery() {
+ if (this.$route.query.viewflow) {
+ this.$refs.table && this.search();
+ }
+ }
+};
+import customColumns from './ViewGridCustomColumn.js';
+//合并扩展方法
+methods = Object.assign(methods, detailMethods, serviceFilter, customColumns);
+export default methods;
diff --git a/src/components/basic/ViewGrid/props.js b/src/components/basic/ViewGrid/props.js
new file mode 100644
index 0000000..5d0ebc6
--- /dev/null
+++ b/src/components/basic/ViewGrid/props.js
@@ -0,0 +1,55 @@
+let props = {
+ columns: {//当前表的配置信息
+ type: Array,
+ default: () => {
+ return [];
+ }
+ },
+ detail: {//从表明细配置
+ type: Object,
+ default: () => {
+ return {
+ columns: [],//从表列
+ sortName: ""//从表排序字段
+ };
+ }
+ },
+ editFormFields: {//新建、编辑字段(key/value)
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ editFormOptions: {//新建、编辑配置信息
+ type: Array,
+ default: () => {
+ return [];
+ }
+ },
+ searchFormFields: {//查询字段(key/value)
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ searchFormOptions: {//查询配置信息(key/value)
+ type: Array,
+ default: () => {
+ return [];
+ }
+ },
+ table: {//表的配置信息:主键、排序等
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ extend: {//表的扩展方法与组件都合并到此属性中
+ type: Object,
+ default: () => {
+ return {};
+ }
+ }
+}
+
+export default props;
\ No newline at end of file
diff --git a/src/components/basic/ViewGrid/serviceFilter.js b/src/components/basic/ViewGrid/serviceFilter.js
new file mode 100644
index 0000000..101d1a6
--- /dev/null
+++ b/src/components/basic/ViewGrid/serviceFilter.js
@@ -0,0 +1,106 @@
+
+
+let serviceFilter = {
+ onInit () { //对应created
+ console.log('Create执行前')
+ },
+ onInited () { //对应created,在onInit与onInited中间会初始化界面数据对象
+ console.log('Create执行后')
+ },
+ mounted () {
+ console.log('mounted');
+ },
+ searchBefore (param) { //查询ViewGird表数据前,param查询参数
+ // console.log('表' + this.table.cnName + '触发loadTableBefore');
+ return true;
+ },
+ //2020.10.30增加查询后返回所有的查询信息
+ searchAfter (param, result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
+ // console.log('表' + this.table.cnName + '触发loadTableAfter');
+ return true;
+ },
+ searchDetailBefore (param) {//查询从表表数据前,param查询参数
+ //console.log(this.detailOptions.cnName + '触发loadDetailTableBefore');
+ return true;
+ },
+ searchDetailAfter (param, data) {//查询从表后param查询参数,result回返查询的结果
+ // console.log(this.detailOptions.cnName + '触发loadDetailTableAfter');
+ return true;
+ },
+ delBefore (ids, rows) { //查询界面的表删除前 ids为删除的id数组,,rows删除的行
+ return true;
+ },
+ delAfter (result) {//查询界面的表删除后
+ return true;
+ },
+ delDetailRow (rows) { //弹出框删除明细表的行数据(只是对table操作,并没有操作后台)
+ return true;
+ },
+ addBefore (formData) { //新建保存前formData为对象,包括明细表
+ return true;
+ },
+ async addBeforeAsync (formData) { //异步处理,功能同上(2020.12.06)
+ return true;
+ },
+ addAfter (result) {//新建保存后result返回的状态及表单对象
+ return true;
+ },
+ updateBefore (formData) { //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ async updateBeforeAsync (formData) { //异步处理,功能同上(2020.12.06)
+ return true;
+ },
+ updateAfter (result) {//编辑保存后result返回的状态及表单对象
+ return true;
+ },
+ auditBefore (ids, rows) {//审核前
+ return true;
+ },
+ auditAfter (result, rows) {// 审核后
+ return true;
+ },
+ resetAddFormBefore () { //重置新建表单前的内容
+ return true;
+ },
+ resetAddFormAfter () { //重置新建表单后的内容
+ return true;
+ },
+ resetUpdateFormBefore () { //重置编辑表单前的内容
+ return true;
+ },
+ resetUpdateFormAfter () { //重置编辑表单后的内容
+ return true;
+ },
+ modelOpenBefore (row) { //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据
+
+ },
+ modelOpenAfter (row) { //点击编辑/新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+
+ },
+ importAfter (data) { //导入excel后刷新table表格数据
+ this.search();
+ },
+ //2020.10.31添加导入前的方法
+ importExcelBefore (formData) { //导入excel导入前
+ //往formData写一些其他参数提交到后台,
+ // formData.append("val2", "xxx");
+ //后台按下面方法获取请求的参数
+ // Core.Utilities.HttpContext.Current.Request("val2");
+ return true;
+ },
+ reloadDicSource () { //重新加载字典绑定的数据源
+ this.initDicKeys();
+ },
+ exportBefore (param) { //2020.06.25增加导出前处理
+ return true;
+ },
+ onModelClose(iconClick){
+ //iconClick=true为点击左中上角X触发的关闭事件
+ //如果返回 false不会关闭弹出框
+ //return false;
+ this.boxModel=false;
+ }
+
+}
+export default serviceFilter;
diff --git a/src/components/editor/KindEditor.vue b/src/components/editor/KindEditor.vue
new file mode 100644
index 0000000..8c8e704
--- /dev/null
+++ b/src/components/editor/KindEditor.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/editor/MesWangEditor.vue b/src/components/editor/MesWangEditor.vue
new file mode 100644
index 0000000..7d91ad5
--- /dev/null
+++ b/src/components/editor/MesWangEditor.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/redirect/401.vue b/src/components/redirect/401.vue
new file mode 100644
index 0000000..33e44fb
--- /dev/null
+++ b/src/components/redirect/401.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/src/components/redirect/404.vue b/src/components/redirect/404.vue
new file mode 100644
index 0000000..bd6db8f
--- /dev/null
+++ b/src/components/redirect/404.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/redirect/Message.vue b/src/components/redirect/Message.vue
new file mode 100644
index 0000000..8952162
--- /dev/null
+++ b/src/components/redirect/Message.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
diff --git a/src/components/redirect/RedirectError.vue b/src/components/redirect/RedirectError.vue
new file mode 100644
index 0000000..5457065
--- /dev/null
+++ b/src/components/redirect/RedirectError.vue
@@ -0,0 +1,59 @@
+
+
+
+
{{ errorNumber }}
+
{{message}}
+
+
{{ text }}
+
+ 返回首页
+
+
+
+
+
+
+
diff --git a/src/components/redirect/coding.vue b/src/components/redirect/coding.vue
new file mode 100644
index 0000000..5569483
--- /dev/null
+++ b/src/components/redirect/coding.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+ 点击查看[测试完整示例]
+
+
+
+
+
+
diff --git a/src/components/workflow/data_A.js b/src/components/workflow/data_A.js
new file mode 100644
index 0000000..f6dc85c
--- /dev/null
+++ b/src/components/workflow/data_A.js
@@ -0,0 +1,54 @@
+let dataA = {
+ "name": "流程A",
+ "nodeList": [
+ {
+ "id": "0",
+ "name": "流程开始",
+ "type": "start",
+ "left": "346px",
+ "top": "22px",
+ "ico": "el-icon-user-solid"
+ },
+ {
+ "id": "nodeA",
+ "name": "流程A-节点A",
+ "type": "node",
+ "left": "346px",
+ "top": "132px",
+ "ico": "el-icon-user-solid"
+ },
+ // {
+ // "id": "nodeB",
+ // "name": "流程A-节点B",
+ // "type": "node",
+ // "left": "347px",
+ // "top": "235px",
+ // "ico": "el-icon-goods"
+ // },
+ // {
+ // "id": "nodeC",
+ // "name": "流程A-节点C",
+ // "type": "node",
+ // "left": "323px",
+ // "top": "399px",
+ // "ico": "el-icon-present"
+ // }
+ ],
+ "lineList": [
+ {
+ "from": "0",
+ "to": "nodeA"
+ },
+ // {
+ // "from": "nodeA",
+ // "to": "nodeB"
+ // },
+ // {
+ // "from": "nodeB",
+ // "to": "nodeC"
+ // }
+ ]
+}
+export function getDataA () {
+ return dataA
+}
diff --git a/src/components/workflow/force-directed.js b/src/components/workflow/force-directed.js
new file mode 100644
index 0000000..f144365
--- /dev/null
+++ b/src/components/workflow/force-directed.js
@@ -0,0 +1,182 @@
+/**
+ * 感谢 https://github.com/chaangliu/ForceDirectedLayout/blob/master/javascript/force-directed.js
+ * A force directed graph layout implementation by liuchang on 2018/05/10.
+ */
+const CANVAS_WIDTH = 1000
+const CANVAS_HEIGHT = 1000
+let k
+let mNodeList = []
+let mEdgeList = []
+let mDxMap = {}
+let mDyMap = {}
+let mNodeMap = {}
+
+export function ForceDirected(data = {}) {
+ // generate nodes and edges
+ // for (let i = 0; i < 20; i++) {
+ // mNodeList.push(new Node(i))
+ // }
+ k = 0
+ mNodeList = []
+ mEdgeList = []
+ mDxMap = {}
+ mDyMap = {}
+ mNodeMap = {}
+
+ let nodeList = data.nodeList
+ for (let i = 0; i < nodeList.length; i++) {
+ let node = nodeList[i]
+ mNodeList.push(node)
+ }
+
+ // for (let i = 0; i < 20; i++) {
+ // let edgeCount = Math.random() * 8 + 1
+ // for (let j = 0; j < edgeCount; j++) {
+ // let targetId = Math.floor(Math.random() * 20)
+ // let edge = new Edge(i, targetId)
+ // mEdgeList.push(edge)
+ // }
+ // }
+ // line 转 edge
+ let lineList = data.lineList
+ for (let i = 0; i < lineList.length; i++) {
+ let line = lineList[i]
+ let edge = new Edge(line.from, line.to)
+ mEdgeList.push(edge)
+ }
+
+ if (mNodeList && mEdgeList) {
+ k = Math.sqrt(CANVAS_WIDTH * CANVAS_HEIGHT / mNodeList.length)
+ }
+ for (let i = 0; i < mNodeList.length; i++) {
+ let node = mNodeList[i]
+ if (node) {
+ mNodeMap[node.id] = node
+ }
+ }
+
+ // 随机生成坐标. Generate coordinates randomly.
+ let initialX, initialY, initialSize = 40.0
+ for (let i in mNodeList) {
+ initialX = CANVAS_WIDTH * 0.5
+ initialY = CANVAS_HEIGHT * 0.5
+ mNodeList[i].x = initialX + initialSize * (Math.random() - 0.5)
+ mNodeList[i].y = initialY + initialSize * (Math.random() - 0.5)
+ }
+
+ // 迭代200次. Iterate 200 times.
+ for (let i = 0; i < 200; i++) {
+ calculateRepulsive()
+ calculateTraction()
+ updateCoordinates()
+ }
+ // console.log(JSON.stringify(new Result(mNodeList, mEdgeList)))
+ // 坐标添加px
+ for (let i = 0; i < mNodeList.length; i++) {
+ let node = mNodeList[i]
+ node.left = node.x + 'px'
+ node.top = node.y + 'px'
+ node.x = undefined
+ node.y = undefined
+ }
+
+ data.nodeList = mNodeList
+
+ // console.log(data)
+ return data
+}
+
+function Node(id = null) {
+ this.id = id
+ this.x = 22
+ this.y = null
+}
+
+function Edge(source = null, target = null) {
+ this.source = source
+ this.target = target
+}
+
+/**
+ * 计算两个Node的斥力产生的单位位移。
+ * Calculate the displacement generated by the repulsive force between two nodes.*
+ */
+function calculateRepulsive() {
+ let ejectFactor = 6
+ let distX, distY, dist
+ for (let i = 0; i < mNodeList.length; i++) {
+ mDxMap[mNodeList[i].id] = 0.0
+ mDyMap[mNodeList[i].id] = 0.0
+ for (let j = 0; j < mNodeList.length; j++) {
+ if (i !== j) {
+ distX = mNodeList[i].x - mNodeList[j].x
+ distY = mNodeList[i].y - mNodeList[j].y
+ dist = Math.sqrt(distX * distX + distY * distY)
+ }
+ if (dist < 30) {
+ ejectFactor = 5
+ }
+ if (dist > 0 && dist < 250) {
+ let id = mNodeList[i].id
+ mDxMap[id] = mDxMap[id] + distX / dist * k * k / dist * ejectFactor
+ mDyMap[id] = mDyMap[id] + distY / dist * k * k / dist * ejectFactor
+ }
+ }
+ }
+}
+
+/**
+ * 计算Edge的引力对两端Node产生的引力。
+ * Calculate the traction force generated by the edge acted on the two nodes of its two ends.
+ */
+function calculateTraction() {
+ let condenseFactor = 3
+ let startNode, endNode
+ for (let e = 0; e < mEdgeList.length; e++) {
+ let eStartID = mEdgeList[e].source
+ let eEndID = mEdgeList[e].target
+ startNode = mNodeMap[eStartID]
+ endNode = mNodeMap[eEndID]
+ if (!startNode) {
+ console.log('Cannot find start node id: ' + eStartID + ', please check it out.')
+ return
+ }
+ if (!endNode) {
+ console.log('Cannot find end node id: ' + eEndID + ', please check it out.')
+ return
+ }
+ let distX, distY, dist
+ distX = startNode.x - endNode.x
+ distY = startNode.y - endNode.y
+ dist = Math.sqrt(distX * distX + distY * distY)
+ mDxMap[eStartID] = mDxMap[eStartID] - distX * dist / k * condenseFactor
+ mDyMap[eStartID] = mDyMap[eStartID] - distY * dist / k * condenseFactor
+ mDxMap[eEndID] = mDxMap[eEndID] + distX * dist / k * condenseFactor
+ mDyMap[eEndID] = mDyMap[eEndID] + distY * dist / k * condenseFactor
+ }
+}
+
+/**
+ * 更新坐标。
+ * update the coordinates.
+ */
+function updateCoordinates() {
+ let maxt = 4, maxty = 3 // Additional coefficients.
+ for (let v = 0; v < mNodeList.length; v++) {
+ let node = mNodeList[v]
+ let dx = Math.floor(mDxMap[node.id])
+ let dy = Math.floor(mDyMap[node.id])
+
+ if (dx < -maxt) dx = -maxt
+ if (dx > maxt) dx = maxt
+ if (dy < -maxty) dy = -maxty
+ if (dy > maxty) dy = maxty
+ node.x = node.x + dx >= CANVAS_WIDTH || node.x + dx <= 0 ? node.x - dx : node.x + dx
+ node.y = node.y + dy >= CANVAS_HEIGHT || node.y + dy <= 0 ? node.y - dy : node.y + dy
+ }
+}
+
+function Result(nodes = null, links = null) {
+ this.nodes = nodes
+ this.links = links
+}
diff --git a/src/components/workflow/index.css b/src/components/workflow/index.css
new file mode 100644
index 0000000..4b08c41
--- /dev/null
+++ b/src/components/workflow/index.css
@@ -0,0 +1,258 @@
+/*画布容器*/
+.efContainer {
+ position: relative;
+ overflow: scroll;
+ flex: 1;
+}
+.tools {
+ position: absolute;
+ left: 220px;
+ /* background: #fff; */
+ /* border: 1px solid #d8d7d7; */
+ /* border-radius: 5px; */
+ padding: 5px 5px;
+ display: flex;
+ z-index: 99;
+ background: #fcfcfc;
+}
+
+/*顶部工具栏*/
+.ef-tooltar {
+ padding-left: 10px;
+ box-sizing: border-box;
+ height: 42px;
+ line-height: 42px;
+ z-index: 3;
+ border-bottom: 1px solid #dadce0;
+}
+
+.jtk-overlay {
+ cursor: pointer;
+ color: #4a4a4a;
+}
+
+.ef-node-pmenu-item {
+ padding: 10px;
+ background: #f8f8f8;
+ font-size: 13px;
+ font-weight: bold;
+ letter-spacing: 1px;
+ border-top: 1px solid #eee;
+ border-bottom: 1px solid #eee;
+ border-right: 1px solid #eee;
+}
+/*节点菜单*/
+.ef-node-pmenu {
+ cursor: pointer;
+ height: 32px;
+ line-height: 32px;
+ width: 225px;
+ display: block;
+ font-weight: bold;
+ color: #4a4a4a;
+ padding-left: 5px;
+}
+
+.ef-node-pmenu:hover {
+ background-color: #e0e0e0;
+}
+.ef-node-menu-item {
+ padding: 10px;
+}
+.ef-node-menu-li {
+ cursor: move;
+ border: 1px solid #eee;
+ padding: 2px 13px;
+ text-align: left;
+ line-height: 28px;
+ margin: 4px;
+ border-radius: 3px;
+ background: #f0f9eb;
+ font-size: 12px;
+ float: left;
+ width: 98px;
+
+}
+
+.ef-node-menu-li > div:first-child{
+ display: inline-block;
+ padding: 4px;
+}
+
+.ef-node-menu-li:hover {
+ /* 设置移动样式*/
+ cursor: move;
+ border: 1px dashed #787be8;
+ color: #787be8;
+ /* background-color: #F0F7FF;
+ border: 1px dashed #1879FF;
+ border-left: 4px solid #1879FF;
+ padding-left: 5px; */
+}
+
+.ef-node-menu-ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+
+/*节点的最外层容器*/
+.ef-node-container {
+ position: absolute;
+ display: flex;
+ width: 170px;
+ height: 32px;
+ border: 1px solid #e0e3e7;
+ border-radius: 5px;
+ background-color: #fff;
+}
+
+.ef-node-container:hover {
+ /* 设置移动样式*/
+ cursor: move;
+ background-color: #f0f7ff;
+ /*box-shadow: #1879FF 0px 0px 12px 0px;*/
+ background-color: #f0f7ff;
+ border: 1px dashed #1879ff;
+}
+
+/*节点激活样式*/
+.ef-node-active {
+ background-color: #f0f7ff;
+ /*box-shadow: #1879FF 0px 0px 12px 0px;*/
+ background-color: #f0f7ff;
+ border: 1px solid #1879ff;
+}
+
+/*节点左侧的竖线*/
+.ef-node-left {
+ width: 4px;
+ background-color: #1879ff;
+ border-radius: 4px 0 0 4px;
+}
+
+/*节点左侧的图标*/
+.ef-node-left-ico {
+ line-height: 32px;
+ margin-left: 8px;
+}
+
+.ef-node-left-ico:hover {
+ /* 设置拖拽的样式 */
+ cursor: crosshair;
+}
+
+/*节点显示的文字*/
+.ef-node-text {
+ color: #565758;
+ font-size: 12px;
+ line-height: 32px;
+ margin-left: 8px;
+ width: 100px;
+ /* 设置超出宽度文本显示方式*/
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ text-align: center;
+}
+
+/*节点右侧的图标*/
+.ef-node-right-ico {
+ line-height: 32px;
+ position: absolute;
+ right: 5px;
+ color: #84cf65;
+ cursor: default;
+}
+
+/*节点的几种状态样式*/
+.el-node-state-success {
+ line-height: 32px;
+ position: absolute;
+ right: 5px;
+ color: #84cf65;
+ cursor: default;
+}
+
+.el-node-state-error {
+ line-height: 32px;
+ position: absolute;
+ right: 5px;
+ color: #f56c6c;
+ cursor: default;
+}
+
+.el-node-state-warning {
+ line-height: 32px;
+ position: absolute;
+ right: 5px;
+ color: #e6a23c;
+ cursor: default;
+}
+
+.el-node-state-running {
+ line-height: 32px;
+ position: absolute;
+ right: 5px;
+ color: #84cf65;
+ cursor: default;
+}
+
+/*node-form*/
+.ef-node-form-header {
+ height: 32px;
+ border-top: 1px solid #dce3e8;
+ border-bottom: 1px solid #dce3e8;
+ background: #f1f3f4;
+ color: #000;
+ line-height: 32px;
+ padding-left: 12px;
+ font-size: 14px;
+}
+
+.ef-node-form-body {
+ margin-top: 10px;
+ padding-right: 10px;
+ padding-bottom: 20px;
+}
+
+/* 连线中的label 样式*/
+.jtk-overlay.flowLabel:not(.aLabel) {
+ /* padding: 4px 10px; */
+ padding: 1px 8px 2px 8px;
+ background-color: white;
+ color: #a9aaaa !important;
+ border: 1px solid #e0e3e7;
+ border-radius: 3px;
+}
+
+/* label 为空的样式 */
+.emptyFlowLabel {
+}
+
+.ef-dot {
+ background-color: #1879ff;
+ border-radius: 10px;
+}
+
+.ef-dot-hover {
+ background-color: red;
+}
+
+.ef-rectangle {
+ background-color: #1879ff;
+}
+
+.ef-rectangle-hover {
+ background-color: red;
+}
+
+.ef-img {
+}
+
+.ef-img-hover {
+}
+
+.ef-drop-hover {
+ border: 1px dashed #1879ff;
+}
diff --git a/src/components/workflow/jsplumb.js b/src/components/workflow/jsplumb.js
new file mode 100644
index 0000000..9cd1055
--- /dev/null
+++ b/src/components/workflow/jsplumb.js
@@ -0,0 +1,15711 @@
+/**
+ * jsBezier
+ *
+ * Copyright (c) 2010 - 2017 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * licensed under the MIT license.
+ *
+ * a set of Bezier curve functions that deal with Beziers, used by jsPlumb, and perhaps useful for other people. These functions work with Bezier
+ * curves of arbitrary degree.
+ *
+ * - functions are all in the 'jsBezier' namespace.
+ *
+ * - all input points should be in the format {x:.., y:..}. all output points are in this format too.
+ *
+ * - all input curves should be in the format [ {x:.., y:..}, {x:.., y:..}, {x:.., y:..}, {x:.., y:..} ]
+ *
+ * - 'location' as used as an input here refers to a decimal in the range 0-1 inclusive, which indicates a point some proportion along the length
+ * of the curve. location as output has the same format and meaning.
+ *
+ *
+ * Function List:
+ * --------------
+ *
+ * distanceFromCurve(point, curve)
+ *
+ * Calculates the distance that the given point lies from the given Bezier. Note that it is computed relative to the center of the Bezier,
+ * so if you have stroked the curve with a wide pen you may wish to take that into account! The distance returned is relative to the values
+ * of the curve and the point - it will most likely be pixels.
+ *
+ * gradientAtPoint(curve, location)
+ *
+ * Calculates the gradient to the curve at the given location, as a decimal between 0 and 1 inclusive.
+ *
+ * gradientAtPointAlongCurveFrom (curve, location)
+ *
+ * Calculates the gradient at the point on the given curve that is 'distance' units from location.
+ *
+ * nearestPointOnCurve(point, curve)
+ *
+ * Calculates the nearest point to the given point on the given curve. The return value of this is a JS object literal, containing both the
+ *point's coordinates and also the 'location' of the point (see above), for example: { point:{x:551,y:150}, location:0.263365 }.
+ *
+ * pointOnCurve(curve, location)
+ *
+ * Calculates the coordinates of the point on the given Bezier curve at the given location.
+ *
+ * pointAlongCurveFrom(curve, location, distance)
+ *
+ * Calculates the coordinates of the point on the given curve that is 'distance' units from location. 'distance' should be in the same coordinate
+ * space as that used to construct the Bezier curve. For an HTML Canvas usage, for example, distance would be a measure of pixels.
+ *
+ * locationAlongCurveFrom(curve, location, distance)
+ *
+ * Calculates the location on the given curve that is 'distance' units from location. 'distance' should be in the same coordinate
+ * space as that used to construct the Bezier curve. For an HTML Canvas usage, for example, distance would be a measure of pixels.
+ *
+ * perpendicularToCurveAt(curve, location, length, distance)
+ *
+ * Calculates the perpendicular to the given curve at the given location. length is the length of the line you wish for (it will be centered
+ * on the point at 'location'). distance is optional, and allows you to specify a point along the path from the given location as the center of
+ * the perpendicular returned. The return value of this is an array of two points: [ {x:...,y:...}, {x:...,y:...} ].
+ *
+ *
+ */
+
+(function() {
+
+ var root = this;
+
+ if(typeof Math.sgn == "undefined") {
+ Math.sgn = function(x) { return x == 0 ? 0 : x > 0 ? 1 :-1; };
+ }
+
+ var Vectors = {
+ subtract : function(v1, v2) { return {x:v1.x - v2.x, y:v1.y - v2.y }; },
+ dotProduct : function(v1, v2) { return (v1.x * v2.x) + (v1.y * v2.y); },
+ square : function(v) { return Math.sqrt((v.x * v.x) + (v.y * v.y)); },
+ scale : function(v, s) { return {x:v.x * s, y:v.y * s }; }
+ },
+
+ maxRecursion = 64,
+ flatnessTolerance = Math.pow(2.0,-maxRecursion-1);
+
+ /**
+ * Calculates the distance that the point lies from the curve.
+ *
+ * @param point a point in the form {x:567, y:3342}
+ * @param curve a Bezier curve in the form [{x:..., y:...}, {x:..., y:...}, {x:..., y:...}, {x:..., y:...}]. note that this is currently
+ * hardcoded to assume cubiz beziers, but would be better off supporting any degree.
+ * @return a JS object literal containing location and distance, for example: {location:0.35, distance:10}. Location is analogous to the location
+ * argument you pass to the pointOnPath function: it is a ratio of distance travelled along the curve. Distance is the distance in pixels from
+ * the point to the curve.
+ */
+ var _distanceFromCurve = function(point, curve) {
+ var candidates = [],
+ w = _convertToBezier(point, curve),
+ degree = curve.length - 1, higherDegree = (2 * degree) - 1,
+ numSolutions = _findRoots(w, higherDegree, candidates, 0),
+ v = Vectors.subtract(point, curve[0]), dist = Vectors.square(v), t = 0.0;
+
+ for (var i = 0; i < numSolutions; i++) {
+ v = Vectors.subtract(point, _bezier(curve, degree, candidates[i], null, null));
+ var newDist = Vectors.square(v);
+ if (newDist < dist) {
+ dist = newDist;
+ t = candidates[i];
+ }
+ }
+ v = Vectors.subtract(point, curve[degree]);
+ newDist = Vectors.square(v);
+ if (newDist < dist) {
+ dist = newDist;
+ t = 1.0;
+ }
+ return {location:t, distance:dist};
+ };
+ /**
+ * finds the nearest point on the curve to the given point.
+ */
+ var _nearestPointOnCurve = function(point, curve) {
+ var td = _distanceFromCurve(point, curve);
+ return {point:_bezier(curve, curve.length - 1, td.location, null, null), location:td.location};
+ };
+ var _convertToBezier = function(point, curve) {
+ var degree = curve.length - 1, higherDegree = (2 * degree) - 1,
+ c = [], d = [], cdTable = [], w = [],
+ z = [ [1.0, 0.6, 0.3, 0.1], [0.4, 0.6, 0.6, 0.4], [0.1, 0.3, 0.6, 1.0] ];
+
+ for (var i = 0; i <= degree; i++) c[i] = Vectors.subtract(curve[i], point);
+ for (var i = 0; i <= degree - 1; i++) {
+ d[i] = Vectors.subtract(curve[i+1], curve[i]);
+ d[i] = Vectors.scale(d[i], 3.0);
+ }
+ for (var row = 0; row <= degree - 1; row++) {
+ for (var column = 0; column <= degree; column++) {
+ if (!cdTable[row]) cdTable[row] = [];
+ cdTable[row][column] = Vectors.dotProduct(d[row], c[column]);
+ }
+ }
+ for (i = 0; i <= higherDegree; i++) {
+ if (!w[i]) w[i] = [];
+ w[i].y = 0.0;
+ w[i].x = parseFloat(i) / higherDegree;
+ }
+ var n = degree, m = degree-1;
+ for (var k = 0; k <= n + m; k++) {
+ var lb = Math.max(0, k - m),
+ ub = Math.min(k, n);
+ for (i = lb; i <= ub; i++) {
+ var j = k - i;
+ w[i+j].y += cdTable[j][i] * z[j][i];
+ }
+ }
+ return w;
+ };
+ /**
+ * counts how many roots there are.
+ */
+ var _findRoots = function(w, degree, t, depth) {
+ var left = [], right = [],
+ left_count, right_count,
+ left_t = [], right_t = [];
+
+ switch (_getCrossingCount(w, degree)) {
+ case 0 : {
+ return 0;
+ }
+ case 1 : {
+ if (depth >= maxRecursion) {
+ t[0] = (w[0].x + w[degree].x) / 2.0;
+ return 1;
+ }
+ if (_isFlatEnough(w, degree)) {
+ t[0] = _computeXIntercept(w, degree);
+ return 1;
+ }
+ break;
+ }
+ }
+ _bezier(w, degree, 0.5, left, right);
+ left_count = _findRoots(left, degree, left_t, depth+1);
+ right_count = _findRoots(right, degree, right_t, depth+1);
+ for (var i = 0; i < left_count; i++) t[i] = left_t[i];
+ for (var i = 0; i < right_count; i++) t[i+left_count] = right_t[i];
+ return (left_count+right_count);
+ };
+ var _getCrossingCount = function(curve, degree) {
+ var n_crossings = 0, sign, old_sign;
+ sign = old_sign = Math.sgn(curve[0].y);
+ for (var i = 1; i <= degree; i++) {
+ sign = Math.sgn(curve[i].y);
+ if (sign != old_sign) n_crossings++;
+ old_sign = sign;
+ }
+ return n_crossings;
+ };
+ var _isFlatEnough = function(curve, degree) {
+ var error,
+ intercept_1, intercept_2, left_intercept, right_intercept,
+ a, b, c, det, dInv, a1, b1, c1, a2, b2, c2;
+ a = curve[0].y - curve[degree].y;
+ b = curve[degree].x - curve[0].x;
+ c = curve[0].x * curve[degree].y - curve[degree].x * curve[0].y;
+
+ var max_distance_above, max_distance_below;
+ max_distance_above = max_distance_below = 0.0;
+
+ for (var i = 1; i < degree; i++) {
+ var value = a * curve[i].x + b * curve[i].y + c;
+ if (value > max_distance_above)
+ max_distance_above = value;
+ else if (value < max_distance_below)
+ max_distance_below = value;
+ }
+
+ a1 = 0.0; b1 = 1.0; c1 = 0.0; a2 = a; b2 = b;
+ c2 = c - max_distance_above;
+ det = a1 * b2 - a2 * b1;
+ dInv = 1.0/det;
+ intercept_1 = (b1 * c2 - b2 * c1) * dInv;
+ a2 = a; b2 = b; c2 = c - max_distance_below;
+ det = a1 * b2 - a2 * b1;
+ dInv = 1.0/det;
+ intercept_2 = (b1 * c2 - b2 * c1) * dInv;
+ left_intercept = Math.min(intercept_1, intercept_2);
+ right_intercept = Math.max(intercept_1, intercept_2);
+ error = right_intercept - left_intercept;
+ return (error < flatnessTolerance)? 1 : 0;
+ };
+ var _computeXIntercept = function(curve, degree) {
+ var XLK = 1.0, YLK = 0.0,
+ XNM = curve[degree].x - curve[0].x, YNM = curve[degree].y - curve[0].y,
+ XMK = curve[0].x - 0.0, YMK = curve[0].y - 0.0,
+ det = XNM*YLK - YNM*XLK, detInv = 1.0/det,
+ S = (XNM*YMK - YNM*XMK) * detInv;
+ return 0.0 + XLK * S;
+ };
+ var _bezier = function(curve, degree, t, left, right) {
+ var temp = [[]];
+ for (var j =0; j <= degree; j++) temp[0][j] = curve[j];
+ for (var i = 1; i <= degree; i++) {
+ for (var j =0 ; j <= degree - i; j++) {
+ if (!temp[i]) temp[i] = [];
+ if (!temp[i][j]) temp[i][j] = {};
+ temp[i][j].x = (1.0 - t) * temp[i-1][j].x + t * temp[i-1][j+1].x;
+ temp[i][j].y = (1.0 - t) * temp[i-1][j].y + t * temp[i-1][j+1].y;
+ }
+ }
+ if (left != null)
+ for (j = 0; j <= degree; j++) left[j] = temp[j][0];
+ if (right != null)
+ for (j = 0; j <= degree; j++) right[j] = temp[degree-j][j];
+
+ return (temp[degree][0]);
+ };
+
+ var _curveFunctionCache = {};
+ var _getCurveFunctions = function(order) {
+ var fns = _curveFunctionCache[order];
+ if (!fns) {
+ fns = [];
+ var f_term = function() { return function(t) { return Math.pow(t, order); }; },
+ l_term = function() { return function(t) { return Math.pow((1-t), order); }; },
+ c_term = function(c) { return function(t) { return c; }; },
+ t_term = function() { return function(t) { return t; }; },
+ one_minus_t_term = function() { return function(t) { return 1-t; }; },
+ _termFunc = function(terms) {
+ return function(t) {
+ var p = 1;
+ for (var i = 0; i < terms.length; i++) p = p * terms[i](t);
+ return p;
+ };
+ };
+
+ fns.push(new f_term()); // first is t to the power of the curve order
+ for (var i = 1; i < order; i++) {
+ var terms = [new c_term(order)];
+ for (var j = 0 ; j < (order - i); j++) terms.push(new t_term());
+ for (var j = 0 ; j < i; j++) terms.push(new one_minus_t_term());
+ fns.push(new _termFunc(terms));
+ }
+ fns.push(new l_term()); // last is (1-t) to the power of the curve order
+
+ _curveFunctionCache[order] = fns;
+ }
+
+ return fns;
+ };
+
+
+ /**
+ * calculates a point on the curve, for a Bezier of arbitrary order.
+ * @param curve an array of control points, eg [{x:10,y:20}, {x:50,y:50}, {x:100,y:100}, {x:120,y:100}]. For a cubic bezier this should have four points.
+ * @param location a decimal indicating the distance along the curve the point should be located at. this is the distance along the curve as it travels, taking the way it bends into account. should be a number from 0 to 1, inclusive.
+ */
+ var _pointOnPath = function(curve, location) {
+ var cc = _getCurveFunctions(curve.length - 1),
+ _x = 0, _y = 0;
+ for (var i = 0; i < curve.length ; i++) {
+ _x = _x + (curve[i].x * cc[i](location));
+ _y = _y + (curve[i].y * cc[i](location));
+ }
+
+ return {x:_x, y:_y};
+ };
+
+ var _dist = function(p1,p2) {
+ return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
+ };
+
+ var _isPoint = function(curve) {
+ return curve[0].x === curve[1].x && curve[0].y === curve[1].y;
+ };
+
+ /**
+ * finds the point that is 'distance' along the path from 'location'. this method returns both the x,y location of the point and also
+ * its 'location' (proportion of travel along the path); the method below - _pointAlongPathFrom - calls this method and just returns the
+ * point.
+ */
+ var _pointAlongPath = function(curve, location, distance) {
+
+ if (_isPoint(curve)) {
+ return {
+ point:curve[0],
+ location:location
+ };
+ }
+
+ var prev = _pointOnPath(curve, location),
+ tally = 0,
+ curLoc = location,
+ direction = distance > 0 ? 1 : -1,
+ cur = null;
+
+ while (tally < Math.abs(distance)) {
+ curLoc += (0.005 * direction);
+ cur = _pointOnPath(curve, curLoc);
+ tally += _dist(cur, prev);
+ prev = cur;
+ }
+ return {point:cur, location:curLoc};
+ };
+
+ var _length = function(curve) {
+ if (_isPoint(curve)) return 0;
+
+ var prev = _pointOnPath(curve, 0),
+ tally = 0,
+ curLoc = 0,
+ direction = 1,
+ cur = null;
+
+ while (curLoc < 1) {
+ curLoc += (0.005 * direction);
+ cur = _pointOnPath(curve, curLoc);
+ tally += _dist(cur, prev);
+ prev = cur;
+ }
+ return tally;
+ };
+
+ /**
+ * finds the point that is 'distance' along the path from 'location'.
+ */
+ var _pointAlongPathFrom = function(curve, location, distance) {
+ return _pointAlongPath(curve, location, distance).point;
+ };
+
+ /**
+ * finds the location that is 'distance' along the path from 'location'.
+ */
+ var _locationAlongPathFrom = function(curve, location, distance) {
+ return _pointAlongPath(curve, location, distance).location;
+ };
+
+ /**
+ * returns the gradient of the curve at the given location, which is a decimal between 0 and 1 inclusive.
+ *
+ * thanks // http://bimixual.org/AnimationLibrary/beziertangents.html
+ */
+ var _gradientAtPoint = function(curve, location) {
+ var p1 = _pointOnPath(curve, location),
+ p2 = _pointOnPath(curve.slice(0, curve.length - 1), location),
+ dy = p2.y - p1.y, dx = p2.x - p1.x;
+ return dy === 0 ? Infinity : Math.atan(dy / dx);
+ };
+
+ /**
+ returns the gradient of the curve at the point which is 'distance' from the given location.
+ if this point is greater than location 1, the gradient at location 1 is returned.
+ if this point is less than location 0, the gradient at location 0 is returned.
+ */
+ var _gradientAtPointAlongPathFrom = function(curve, location, distance) {
+ var p = _pointAlongPath(curve, location, distance);
+ if (p.location > 1) p.location = 1;
+ if (p.location < 0) p.location = 0;
+ return _gradientAtPoint(curve, p.location);
+ };
+
+ /**
+ * calculates a line that is 'length' pixels long, perpendicular to, and centered on, the path at 'distance' pixels from the given location.
+ * if distance is not supplied, the perpendicular for the given location is computed (ie. we set distance to zero).
+ */
+ var _perpendicularToPathAt = function(curve, location, length, distance) {
+ distance = distance == null ? 0 : distance;
+ var p = _pointAlongPath(curve, location, distance),
+ m = _gradientAtPoint(curve, p.location),
+ _theta2 = Math.atan(-1 / m),
+ y = length / 2 * Math.sin(_theta2),
+ x = length / 2 * Math.cos(_theta2);
+ return [{x:p.point.x + x, y:p.point.y + y}, {x:p.point.x - x, y:p.point.y - y}];
+ };
+
+ /**
+ * Calculates all intersections of the given line with the given curve.
+ * @param x1
+ * @param y1
+ * @param x2
+ * @param y2
+ * @param curve
+ * @returns {Array}
+ */
+ var _lineIntersection = function(x1, y1, x2, y2, curve) {
+ var a = y2 - y1,
+ b = x1 - x2,
+ c = (x1 * (y1 - y2)) + (y1 * (x2-x1)),
+ coeffs = _computeCoefficients(curve),
+ p = [
+ (a*coeffs[0][0]) + (b * coeffs[1][0]),
+ (a*coeffs[0][1])+(b*coeffs[1][1]),
+ (a*coeffs[0][2])+(b*coeffs[1][2]),
+ (a*coeffs[0][3])+(b*coeffs[1][3]) + c
+ ],
+ r = _cubicRoots.apply(null, p),
+ intersections = [];
+
+ if (r != null) {
+
+ for (var i = 0; i < 3; i++) {
+ var t = r[i],
+ t2 = Math.pow(t, 2),
+ t3 = Math.pow(t, 3),
+ x = [
+ (coeffs[0][0] * t3) + (coeffs[0][1] * t2) + (coeffs[0][2] * t) + coeffs[0][3],
+ (coeffs[1][0] * t3) + (coeffs[1][1] * t2) + (coeffs[1][2] * t) + coeffs[1][3]
+ ];
+
+ // check bounds of the line
+ var s;
+ if ((x2 - x1) !== 0) {
+ s = (x[0] - x1) / (x2 - x1);
+ }
+ else {
+ s = (x[1] - y1) / (y2 - y1);
+ }
+
+ if (t >= 0 && t <= 1.0 && s >= 0 && s <= 1.0) {
+ intersections.push(x);
+ }
+ }
+ }
+
+ return intersections;
+ };
+
+ /**
+ * Calculates all intersections of the given box with the given curve.
+ * @param x X position of top left corner of box
+ * @param y Y position of top left corner of box
+ * @param w width of box
+ * @param h height of box
+ * @param curve
+ * @returns {Array}
+ */
+ var _boxIntersection = function(x, y, w, h, curve) {
+ var i = [];
+ i.push.apply(i, _lineIntersection(x, y, x + w, y, curve));
+ i.push.apply(i, _lineIntersection(x + w, y, x + w, y + h, curve));
+ i.push.apply(i, _lineIntersection(x + w, y + h, x, y + h, curve));
+ i.push.apply(i, _lineIntersection(x, y + h, x, y, curve));
+ return i;
+ };
+
+ /**
+ * Calculates all intersections of the given bounding box with the given curve.
+ * @param boundingBox Bounding box, in { x:.., y:..., w:..., h:... } format.
+ * @param curve
+ * @returns {Array}
+ */
+ var _boundingBoxIntersection = function(boundingBox, curve) {
+ var i = [];
+ i.push.apply(i, _lineIntersection(boundingBox.x, boundingBox.y, boundingBox.x + boundingBox.w, boundingBox.y, curve));
+ i.push.apply(i, _lineIntersection(boundingBox.x + boundingBox.w, boundingBox.y, boundingBox.x + boundingBox.w, boundingBox.y + boundingBox.h, curve));
+ i.push.apply(i, _lineIntersection(boundingBox.x + boundingBox.w, boundingBox.y + boundingBox.h, boundingBox.x, boundingBox.y + boundingBox.h, curve));
+ i.push.apply(i, _lineIntersection(boundingBox.x, boundingBox.y + boundingBox.h, boundingBox.x, boundingBox.y, curve));
+ return i;
+ };
+
+
+ function _computeCoefficientsForAxis(curve, axis) {
+ return [
+ -(curve[0][axis]) + (3*curve[1][axis]) + (-3 * curve[2][axis]) + curve[3][axis],
+ (3*(curve[0][axis])) - (6*(curve[1][axis])) + (3*(curve[2][axis])),
+ -3*curve[0][axis] + 3*curve[1][axis],
+ curve[0][axis]
+ ];
+ }
+
+ function _computeCoefficients(curve)
+ {
+ return [
+ _computeCoefficientsForAxis(curve, "x"),
+ _computeCoefficientsForAxis(curve, "y")
+ ];
+ }
+
+ function sgn(x) {
+ return x < 0 ? -1 : x > 0 ? 1 : 0;
+ }
+
+ function _cubicRoots(a, b, c, d) {
+ var A = b / a,
+ B = c / a,
+ C = d / a,
+ Q = (3*B - Math.pow(A, 2))/9,
+ R = (9*A*B - 27*C - 2*Math.pow(A, 3))/54,
+ D = Math.pow(Q, 3) + Math.pow(R, 2),
+ S,
+ T,
+ t = [];
+
+ if (D >= 0) // complex or duplicate roots
+ {
+ S = sgn(R + Math.sqrt(D))*Math.pow(Math.abs(R + Math.sqrt(D)),(1/3));
+ T = sgn(R - Math.sqrt(D))*Math.pow(Math.abs(R - Math.sqrt(D)),(1/3));
+
+ t[0] = -A/3 + (S + T);
+ t[1] = -A/3 - (S + T)/2;
+ t[2] = -A/3 - (S + T)/2;
+
+ /*discard complex roots*/
+ if (Math.abs(Math.sqrt(3)*(S - T)/2) !== 0) {
+ t[1] = -1;
+ t[2] = -1;
+ }
+ }
+ else // distinct real roots
+ {
+ var th = Math.acos(R/Math.sqrt(-Math.pow(Q, 3)));
+ t[0] = 2*Math.sqrt(-Q)*Math.cos(th/3) - A/3;
+ t[1] = 2*Math.sqrt(-Q)*Math.cos((th + 2*Math.PI)/3) - A/3;
+ t[2] = 2*Math.sqrt(-Q)*Math.cos((th + 4*Math.PI)/3) - A/3;
+ }
+
+ // discard out of spec roots
+ for (var i = 0; i < 3; i++) {
+ if (t[i] < 0 || t[i] > 1.0) {
+ t[i] = -1;
+ }
+ }
+
+ return t;
+ }
+
+ var jsBezier = this.jsBezier = {
+ distanceFromCurve : _distanceFromCurve,
+ gradientAtPoint : _gradientAtPoint,
+ gradientAtPointAlongCurveFrom : _gradientAtPointAlongPathFrom,
+ nearestPointOnCurve : _nearestPointOnCurve,
+ pointOnCurve : _pointOnPath,
+ pointAlongCurveFrom : _pointAlongPathFrom,
+ perpendicularToCurveAt : _perpendicularToPathAt,
+ locationAlongCurveFrom:_locationAlongPathFrom,
+ getLength:_length,
+ lineIntersection:_lineIntersection,
+ boxIntersection:_boxIntersection,
+ boundingBoxIntersection:_boundingBoxIntersection,
+ version:"0.9.0"
+ };
+
+ if (typeof exports !== "undefined") {
+ exports.jsBezier = jsBezier;
+ }
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+/**
+ * Biltong v0.4.0
+ *
+ * Various geometry functions written as part of jsPlumb and perhaps useful for others.
+ *
+ * Copyright (c) 2017 jsPlumb
+ * https://jsplumbtoolkit.com
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+;(function() {
+
+ "use strict";
+ var root = this;
+
+ var Biltong = root.Biltong = {
+ version:"0.4.0"
+ };
+
+ if (typeof exports !== "undefined") {
+ exports.Biltong = Biltong;
+ }
+
+ var _isa = function(a) { return Object.prototype.toString.call(a) === "[object Array]"; },
+ _pointHelper = function(p1, p2, fn) {
+ p1 = _isa(p1) ? p1 : [p1.x, p1.y];
+ p2 = _isa(p2) ? p2 : [p2.x, p2.y];
+ return fn(p1, p2);
+ },
+ /**
+ * @name Biltong.gradient
+ * @function
+ * @desc Calculates the gradient of a line between the two points.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Float} The gradient of a line between the two points.
+ */
+ _gradient = Biltong.gradient = function(p1, p2) {
+ return _pointHelper(p1, p2, function(_p1, _p2) {
+ if (_p2[0] == _p1[0])
+ return _p2[1] > _p1[1] ? Infinity : -Infinity;
+ else if (_p2[1] == _p1[1])
+ return _p2[0] > _p1[0] ? 0 : -0;
+ else
+ return (_p2[1] - _p1[1]) / (_p2[0] - _p1[0]);
+ });
+ },
+ /**
+ * @name Biltong.normal
+ * @function
+ * @desc Calculates the gradient of a normal to a line between the two points.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Float} The gradient of a normal to a line between the two points.
+ */
+ _normal = Biltong.normal = function(p1, p2) {
+ return -1 / _gradient(p1, p2);
+ },
+ /**
+ * @name Biltong.lineLength
+ * @function
+ * @desc Calculates the length of a line between the two points.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Float} The length of a line between the two points.
+ */
+ _lineLength = Biltong.lineLength = function(p1, p2) {
+ return _pointHelper(p1, p2, function(_p1, _p2) {
+ return Math.sqrt(Math.pow(_p2[1] - _p1[1], 2) + Math.pow(_p2[0] - _p1[0], 2));
+ });
+ },
+ /**
+ * @name Biltong.quadrant
+ * @function
+ * @desc Calculates the quadrant in which the angle between the two points lies.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Integer} The quadrant - 1 for upper right, 2 for lower right, 3 for lower left, 4 for upper left.
+ */
+ _quadrant = Biltong.quadrant = function(p1, p2) {
+ return _pointHelper(p1, p2, function(_p1, _p2) {
+ if (_p2[0] > _p1[0]) {
+ return (_p2[1] > _p1[1]) ? 2 : 1;
+ }
+ else if (_p2[0] == _p1[0]) {
+ return _p2[1] > _p1[1] ? 2 : 1;
+ }
+ else {
+ return (_p2[1] > _p1[1]) ? 3 : 4;
+ }
+ });
+ },
+ /**
+ * @name Biltong.theta
+ * @function
+ * @desc Calculates the angle between the two points.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Float} The angle between the two points.
+ */
+ _theta = Biltong.theta = function(p1, p2) {
+ return _pointHelper(p1, p2, function(_p1, _p2) {
+ var m = _gradient(_p1, _p2),
+ t = Math.atan(m),
+ s = _quadrant(_p1, _p2);
+ if ((s == 4 || s== 3)) t += Math.PI;
+ if (t < 0) t += (2 * Math.PI);
+
+ return t;
+ });
+ },
+ /**
+ * @name Biltong.intersects
+ * @function
+ * @desc Calculates whether or not the two rectangles intersect.
+ * @param {Rectangle} r1 First rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`
+ * @param {Rectangle} r2 Second rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`
+ * @return {Boolean} True if the rectangles intersect, false otherwise.
+ */
+ _intersects = Biltong.intersects = function(r1, r2) {
+ var x1 = r1.x, x2 = r1.x + r1.w, y1 = r1.y, y2 = r1.y + r1.h,
+ a1 = r2.x, a2 = r2.x + r2.w, b1 = r2.y, b2 = r2.y + r2.h;
+
+ return ( (x1 <= a1 && a1 <= x2) && (y1 <= b1 && b1 <= y2) ) ||
+ ( (x1 <= a2 && a2 <= x2) && (y1 <= b1 && b1 <= y2) ) ||
+ ( (x1 <= a1 && a1 <= x2) && (y1 <= b2 && b2 <= y2) ) ||
+ ( (x1 <= a2 && a1 <= x2) && (y1 <= b2 && b2 <= y2) ) ||
+ ( (a1 <= x1 && x1 <= a2) && (b1 <= y1 && y1 <= b2) ) ||
+ ( (a1 <= x2 && x2 <= a2) && (b1 <= y1 && y1 <= b2) ) ||
+ ( (a1 <= x1 && x1 <= a2) && (b1 <= y2 && y2 <= b2) ) ||
+ ( (a1 <= x2 && x1 <= a2) && (b1 <= y2 && y2 <= b2) );
+ },
+ /**
+ * @name Biltong.encloses
+ * @function
+ * @desc Calculates whether or not r2 is completely enclosed by r1.
+ * @param {Rectangle} r1 First rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`
+ * @param {Rectangle} r2 Second rectangle, as a js object in the form `{x:.., y:.., w:.., h:..}`
+ * @param {Boolean} [allowSharedEdges=false] If true, the concept of enclosure allows for one or more edges to be shared by the two rectangles.
+ * @return {Boolean} True if r1 encloses r2, false otherwise.
+ */
+ _encloses = Biltong.encloses = function(r1, r2, allowSharedEdges) {
+ var x1 = r1.x, x2 = r1.x + r1.w, y1 = r1.y, y2 = r1.y + r1.h,
+ a1 = r2.x, a2 = r2.x + r2.w, b1 = r2.y, b2 = r2.y + r2.h,
+ c = function(v1, v2, v3, v4) { return allowSharedEdges ? v1 <= v2 && v3>= v4 : v1 < v2 && v3 > v4; };
+
+ return c(x1,a1,x2,a2) && c(y1,b1,y2,b2);
+ },
+ _segmentMultipliers = [null, [1, -1], [1, 1], [-1, 1], [-1, -1] ],
+ _inverseSegmentMultipliers = [null, [-1, -1], [-1, 1], [1, 1], [1, -1] ],
+ /**
+ * @name Biltong.pointOnLine
+ * @function
+ * @desc Calculates a point on the line from `fromPoint` to `toPoint` that is `distance` units along the length of the line.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Point} Point on the line, in the form `{ x:..., y:... }`.
+ */
+ _pointOnLine = Biltong.pointOnLine = function(fromPoint, toPoint, distance) {
+ var m = _gradient(fromPoint, toPoint),
+ s = _quadrant(fromPoint, toPoint),
+ segmentMultiplier = distance > 0 ? _segmentMultipliers[s] : _inverseSegmentMultipliers[s],
+ theta = Math.atan(m),
+ y = Math.abs(distance * Math.sin(theta)) * segmentMultiplier[1],
+ x = Math.abs(distance * Math.cos(theta)) * segmentMultiplier[0];
+ return { x:fromPoint.x + x, y:fromPoint.y + y };
+ },
+ /**
+ * @name Biltong.perpendicularLineTo
+ * @function
+ * @desc Calculates a line of length `length` that is perpendicular to the line from `fromPoint` to `toPoint` and passes through `toPoint`.
+ * @param {Point} p1 First point, either as a 2 entry array or object with `left` and `top` properties.
+ * @param {Point} p2 Second point, either as a 2 entry array or object with `left` and `top` properties.
+ * @return {Line} Perpendicular line, in the form `[ { x:..., y:... }, { x:..., y:... } ]`.
+ */
+ _perpendicularLineTo = Biltong.perpendicularLineTo = function(fromPoint, toPoint, length) {
+ var m = _gradient(fromPoint, toPoint),
+ theta2 = Math.atan(-1 / m),
+ y = length / 2 * Math.sin(theta2),
+ x = length / 2 * Math.cos(theta2);
+ return [{x:toPoint.x + x, y:toPoint.y + y}, {x:toPoint.x - x, y:toPoint.y - y}];
+ };
+}).call(typeof window !== 'undefined' ? window : this);
+;
+(function () {
+
+ "use strict";
+
+ /**
+ * Creates a Touch object.
+ * @param view
+ * @param target
+ * @param pageX
+ * @param pageY
+ * @param screenX
+ * @param screenY
+ * @param clientX
+ * @param clientY
+ * @returns {Touch}
+ * @private
+ */
+ function _touch(view, target, pageX, pageY, screenX, screenY, clientX, clientY) {
+
+ return new Touch({
+ target:target,
+ identifier:_uuid(),
+ pageX: pageX,
+ pageY: pageY,
+ screenX: screenX,
+ screenY: screenY,
+ clientX: clientX || screenX,
+ clientY: clientY || screenY
+ });
+ }
+
+ /**
+ * Create a synthetic touch list from the given list of Touch objects.
+ * @returns {Array}
+ * @private
+ */
+ function _touchList() {
+ var list = [];
+ Array.prototype.push.apply(list, arguments);
+ list.item = function(index) { return this[index]; };
+ return list;
+ }
+
+ /**
+ * Create a Touch object and then insert it into a synthetic touch list, returning the list.s
+ * @param view
+ * @param target
+ * @param pageX
+ * @param pageY
+ * @param screenX
+ * @param screenY
+ * @param clientX
+ * @param clientY
+ * @returns {Array}
+ * @private
+ */
+ function _touchAndList(view, target, pageX, pageY, screenX, screenY, clientX, clientY) {
+ return _touchList(_touch.apply(null, arguments));
+ }
+
+ var root = this,
+ matchesSelector = function (el, selector, ctx) {
+ ctx = ctx || el.parentNode;
+ var possibles = ctx.querySelectorAll(selector);
+ for (var i = 0; i < possibles.length; i++) {
+ if (possibles[i] === el) {
+ return true;
+ }
+ }
+ return false;
+ },
+ _gel = function (el) {
+ return (typeof el == "string" || el.constructor === String) ? document.getElementById(el) : el;
+ },
+ _t = function (e) {
+ return e.srcElement || e.target;
+ },
+ //
+ // gets path info for the given event - the path from target to obj, in the event's bubble chain. if doCompute
+ // is false we just return target for the path.
+ //
+ _pi = function(e, target, obj, doCompute) {
+ if (!doCompute) return { path:[target], end:1 };
+ else if (typeof e.path !== "undefined" && e.path.indexOf) {
+ return { path: e.path, end: e.path.indexOf(obj) };
+ } else {
+ var out = { path:[], end:-1 }, _one = function(el) {
+ out.path.push(el);
+ if (el === obj) {
+ out.end = out.path.length - 1;
+ }
+ else if (el.parentNode != null) {
+ _one(el.parentNode)
+ }
+ };
+ _one(target);
+ return out;
+ }
+ },
+ _d = function (l, fn) {
+ for (var i = 0, j = l.length; i < j; i++) {
+ if (l[i] == fn) break;
+ }
+ if (i < l.length) l.splice(i, 1);
+ },
+ guid = 1,
+ //
+ // this function generates a guid for every handler, sets it on the handler, then adds
+ // it to the associated object's map of handlers for the given event. this is what enables us
+ // to unbind all events of some type, or all events (the second of which can be requested by the user,
+ // but it also used by Mottle when an element is removed.)
+ _store = function (obj, event, fn) {
+ var g = guid++;
+ obj.__ta = obj.__ta || {};
+ obj.__ta[event] = obj.__ta[event] || {};
+ // store each handler with a unique guid.
+ obj.__ta[event][g] = fn;
+ // set the guid on the handler.
+ fn.__tauid = g;
+ return g;
+ },
+ _unstore = function (obj, event, fn) {
+ obj.__ta && obj.__ta[event] && delete obj.__ta[event][fn.__tauid];
+ // a handler might have attached extra functions, so we unbind those too.
+ if (fn.__taExtra) {
+ for (var i = 0; i < fn.__taExtra.length; i++) {
+ _unbind(obj, fn.__taExtra[i][0], fn.__taExtra[i][1]);
+ }
+ fn.__taExtra.length = 0;
+ }
+ // a handler might have attached an unstore callback
+ fn.__taUnstore && fn.__taUnstore();
+ },
+ _curryChildFilter = function (children, obj, fn, evt) {
+ if (children == null) return fn;
+ else {
+ var c = children.split(","),
+ _fn = function (e) {
+ _fn.__tauid = fn.__tauid;
+ var t = _t(e), target = t; // t is the target element on which the event occurred. it is the
+ // element we will wish to pass to any callbacks.
+ var pathInfo = _pi(e, t, obj, children != null)
+ if (pathInfo.end != -1) {
+ for (var p = 0; p < pathInfo.end; p++) {
+ target = pathInfo.path[p];
+ for (var i = 0; i < c.length; i++) {
+ if (matchesSelector(target, c[i], obj)) {
+ fn.apply(target, arguments);
+ }
+ }
+ }
+ }
+ };
+ registerExtraFunction(fn, evt, _fn);
+ return _fn;
+ }
+ },
+ //
+ // registers an 'extra' function on some event listener function we were given - a function that we
+ // created and bound to the element as part of our housekeeping, and which we want to unbind and remove
+ // whenever the given function is unbound.
+ registerExtraFunction = function (fn, evt, newFn) {
+ fn.__taExtra = fn.__taExtra || [];
+ fn.__taExtra.push([evt, newFn]);
+ },
+ DefaultHandler = function (obj, evt, fn, children) {
+ if (isTouchDevice && touchMap[evt]) {
+ var tfn = _curryChildFilter(children, obj, fn, touchMap[evt]);
+ _bind(obj, touchMap[evt], tfn , fn);
+ }
+ if (evt === "focus" && obj.getAttribute("tabindex") == null) {
+ obj.setAttribute("tabindex", "1");
+ }
+ _bind(obj, evt, _curryChildFilter(children, obj, fn, evt), fn);
+ },
+ SmartClickHandler = function (obj, evt, fn, children) {
+ if (obj.__taSmartClicks == null) {
+ var down = function (e) {
+ obj.__tad = _pageLocation(e);
+ },
+ up = function (e) {
+ obj.__tau = _pageLocation(e);
+ },
+ click = function (e) {
+ if (obj.__tad && obj.__tau && obj.__tad[0] === obj.__tau[0] && obj.__tad[1] === obj.__tau[1]) {
+ for (var i = 0; i < obj.__taSmartClicks.length; i++)
+ obj.__taSmartClicks[i].apply(_t(e), [ e ]);
+ }
+ };
+ DefaultHandler(obj, "mousedown", down, children);
+ DefaultHandler(obj, "mouseup", up, children);
+ DefaultHandler(obj, "click", click, children);
+ obj.__taSmartClicks = [];
+ }
+
+ // store in the list of callbacks
+ obj.__taSmartClicks.push(fn);
+ // the unstore function removes this function from the object's listener list for this type.
+ fn.__taUnstore = function () {
+ _d(obj.__taSmartClicks, fn);
+ };
+ },
+ _tapProfiles = {
+ "tap": {touches: 1, taps: 1},
+ "dbltap": {touches: 1, taps: 2},
+ "contextmenu": {touches: 2, taps: 1}
+ },
+ TapHandler = function (clickThreshold, dblClickThreshold) {
+ return function (obj, evt, fn, children) {
+ // if event is contextmenu, for devices which are mouse only, we want to
+ // use the default bind.
+ if (evt == "contextmenu" && isMouseDevice)
+ DefaultHandler(obj, evt, fn, children);
+ else {
+ // the issue here is that this down handler gets registered only for the
+ // child nodes in the first registration. in fact it should be registered with
+ // no child selector and then on down we should cycle through the registered
+ // functions to see if one of them matches. on mouseup we should execute ALL of
+ // the functions whose children are either null or match the element.
+ if (obj.__taTapHandler == null) {
+ var tt = obj.__taTapHandler = {
+ tap: [],
+ dbltap: [],
+ contextmenu: [],
+ down: false,
+ taps: 0,
+ downSelectors: []
+ };
+ var down = function (e) {
+ var target = _t(e), pathInfo = _pi(e, target, obj, children != null), finished = false;
+ for (var p = 0; p < pathInfo.end; p++) {
+ if (finished) return;
+ target = pathInfo.path[p];
+ for (var i = 0; i < tt.downSelectors.length; i++) {
+ if (tt.downSelectors[i] == null || matchesSelector(target, tt.downSelectors[i], obj)) {
+ tt.down = true;
+ setTimeout(clearSingle, clickThreshold);
+ setTimeout(clearDouble, dblClickThreshold);
+ finished = true;
+ break; // we only need one match on mousedown
+ }
+ }
+ }
+ },
+ up = function (e) {
+ if (tt.down) {
+ var target = _t(e), currentTarget, pathInfo;
+ tt.taps++;
+ var tc = _touchCount(e);
+ for (var eventId in _tapProfiles) {
+ if (_tapProfiles.hasOwnProperty(eventId)) {
+ var p = _tapProfiles[eventId];
+ if (p.touches === tc && (p.taps === 1 || p.taps === tt.taps)) {
+ for (var i = 0; i < tt[eventId].length; i++) {
+ pathInfo = _pi(e, target, obj, tt[eventId][i][1] != null);
+ for (var pLoop = 0; pLoop < pathInfo.end; pLoop++) {
+ currentTarget = pathInfo.path[pLoop];
+ // this is a single event registration handler.
+ if (tt[eventId][i][1] == null || matchesSelector(currentTarget, tt[eventId][i][1], obj)) {
+ tt[eventId][i][0].apply(currentTarget, [ e ]);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ clearSingle = function () {
+ tt.down = false;
+ },
+ clearDouble = function () {
+ tt.taps = 0;
+ };
+
+ DefaultHandler(obj, "mousedown", down);
+ DefaultHandler(obj, "mouseup", up);
+ }
+ // add this child selector (it can be null, that's fine).
+ obj.__taTapHandler.downSelectors.push(children);
+
+ obj.__taTapHandler[evt].push([fn, children]);
+ // the unstore function removes this function from the object's listener list for this type.
+ fn.__taUnstore = function () {
+ _d(obj.__taTapHandler[evt], fn);
+ };
+ }
+ };
+ },
+ meeHelper = function (type, evt, obj, target) {
+ for (var i in obj.__tamee[type]) {
+ if (obj.__tamee[type].hasOwnProperty(i)) {
+ obj.__tamee[type][i].apply(target, [ evt ]);
+ }
+ }
+ },
+ MouseEnterExitHandler = function () {
+ var activeElements = [];
+ return function (obj, evt, fn, children) {
+ if (!obj.__tamee) {
+ // __tamee holds a flag saying whether the mouse is currently "in" the element, and a list of
+ // both mouseenter and mouseexit functions.
+ obj.__tamee = { over: false, mouseenter: [], mouseexit: [] };
+ // register over and out functions
+ var over = function (e) {
+ var t = _t(e);
+ if ((children == null && (t == obj && !obj.__tamee.over)) || (matchesSelector(t, children, obj) && (t.__tamee == null || !t.__tamee.over))) {
+ meeHelper("mouseenter", e, obj, t);
+ t.__tamee = t.__tamee || {};
+ t.__tamee.over = true;
+ activeElements.push(t);
+ }
+ },
+ out = function (e) {
+ var t = _t(e);
+ // is the current target one of the activeElements? and is the
+ // related target NOT a descendant of it?
+ for (var i = 0; i < activeElements.length; i++) {
+ if (t == activeElements[i] && !matchesSelector((e.relatedTarget || e.toElement), "*", t)) {
+ t.__tamee.over = false;
+ activeElements.splice(i, 1);
+ meeHelper("mouseexit", e, obj, t);
+ }
+ }
+ };
+
+ _bind(obj, "mouseover", _curryChildFilter(children, obj, over, "mouseover"), over);
+ _bind(obj, "mouseout", _curryChildFilter(children, obj, out, "mouseout"), out);
+ }
+
+ fn.__taUnstore = function () {
+ delete obj.__tamee[evt][fn.__tauid];
+ };
+
+ _store(obj, evt, fn);
+ obj.__tamee[evt][fn.__tauid] = fn;
+ };
+ },
+ isTouchDevice = "ontouchstart" in document.documentElement,
+ isMouseDevice = "onmousedown" in document.documentElement,
+ touchMap = { "mousedown": "touchstart", "mouseup": "touchend", "mousemove": "touchmove" },
+ touchstart = "touchstart", touchend = "touchend", touchmove = "touchmove",
+ iev = (function () {
+ var rv = -1;
+ if (navigator.appName == 'Microsoft Internet Explorer') {
+ var ua = navigator.userAgent,
+ re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
+ if (re.exec(ua) != null)
+ rv = parseFloat(RegExp.$1);
+ }
+ return rv;
+ })(),
+ isIELT9 = iev > -1 && iev < 9,
+ _genLoc = function (e, prefix) {
+ if (e == null) return [ 0, 0 ];
+ var ts = _touches(e), t = _getTouch(ts, 0);
+ return [t[prefix + "X"], t[prefix + "Y"]];
+ },
+ _pageLocation = function (e) {
+ if (e == null) return [ 0, 0 ];
+ if (isIELT9) {
+ return [ e.clientX + document.documentElement.scrollLeft, e.clientY + document.documentElement.scrollTop ];
+ }
+ else {
+ return _genLoc(e, "page");
+ }
+ },
+ _screenLocation = function (e) {
+ return _genLoc(e, "screen");
+ },
+ _clientLocation = function (e) {
+ return _genLoc(e, "client");
+ },
+ _getTouch = function (touches, idx) {
+ return touches.item ? touches.item(idx) : touches[idx];
+ },
+ _touches = function (e) {
+ return e.touches && e.touches.length > 0 ? e.touches :
+ e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches :
+ e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches :
+ [ e ];
+ },
+ _touchCount = function (e) {
+ return _touches(e).length;
+ },
+ //http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
+ _bind = function (obj, type, fn, originalFn) {
+ _store(obj, type, fn);
+ originalFn.__tauid = fn.__tauid;
+ if (obj.addEventListener)
+ obj.addEventListener(type, fn, false);
+ else if (obj.attachEvent) {
+ var key = type + fn.__tauid;
+ obj["e" + key] = fn;
+ // TODO look at replacing with .call(..)
+ obj[key] = function () {
+ obj["e" + key] && obj["e" + key](window.event);
+ };
+ obj.attachEvent("on" + type, obj[key]);
+ }
+ },
+ _unbind = function (obj, type, fn) {
+ if (fn == null) return;
+ _each(obj, function () {
+ var _el = _gel(this);
+ _unstore(_el, type, fn);
+ // it has been bound if there is a tauid. otherwise it was not bound and we can ignore it.
+ if (fn.__tauid != null) {
+ if (_el.removeEventListener) {
+ _el.removeEventListener(type, fn, false);
+ if (isTouchDevice && touchMap[type]) _el.removeEventListener(touchMap[type], fn, false);
+ }
+ else if (this.detachEvent) {
+ var key = type + fn.__tauid;
+ _el[key] && _el.detachEvent("on" + type, _el[key]);
+ _el[key] = null;
+ _el["e" + key] = null;
+ }
+ }
+
+ // if a touch event was also registered, deregister now.
+ if (fn.__taTouchProxy) {
+ _unbind(obj, fn.__taTouchProxy[1], fn.__taTouchProxy[0]);
+ }
+ });
+ },
+ _each = function (obj, fn) {
+ if (obj == null) return;
+ // if a list (or list-like), use it. if a string, get a list
+ // by running the string through querySelectorAll. else, assume
+ // it's an Element.
+ // obj.top is "unknown" in IE8.
+ obj = (typeof Window !== "undefined" && (typeof obj.top !== "unknown" && obj == obj.top)) ? [ obj ] :
+ (typeof obj !== "string") && (obj.tagName == null && obj.length != null) ? obj :
+ typeof obj === "string" ? document.querySelectorAll(obj)
+ : [ obj ];
+
+ for (var i = 0; i < obj.length; i++)
+ fn.apply(obj[i]);
+ },
+ _uuid = function () {
+ return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ }));
+ };
+
+ /**
+ * Mottle offers support for abstracting out the differences
+ * between touch and mouse devices, plus "smart click" functionality
+ * (don't fire click if the mouse has moved between mousedown and mouseup),
+ * and synthesized click/tap events.
+ * @class Mottle
+ * @constructor
+ * @param {Object} params Constructor params
+ * @param {Number} [params.clickThreshold=250] Threshold, in milliseconds beyond which a touchstart followed by a touchend is not considered to be a click.
+ * @param {Number} [params.dblClickThreshold=450] Threshold, in milliseconds beyond which two successive tap events are not considered to be a click.
+ * @param {Boolean} [params.smartClicks=false] If true, won't fire click events if the mouse has moved between mousedown and mouseup. Note that this functionality
+ * requires that Mottle consume the mousedown event, and so may not be viable in all use cases.
+ */
+ root.Mottle = function (params) {
+ params = params || {};
+ var clickThreshold = params.clickThreshold || 250,
+ dblClickThreshold = params.dblClickThreshold || 450,
+ mouseEnterExitHandler = new MouseEnterExitHandler(),
+ tapHandler = new TapHandler(clickThreshold, dblClickThreshold),
+ _smartClicks = params.smartClicks,
+ _doBind = function (obj, evt, fn, children) {
+ if (fn == null) return;
+ _each(obj, function () {
+ var _el = _gel(this);
+ if (_smartClicks && evt === "click")
+ SmartClickHandler(_el, evt, fn, children);
+ else if (evt === "tap" || evt === "dbltap" || evt === "contextmenu") {
+ tapHandler(_el, evt, fn, children);
+ }
+ else if (evt === "mouseenter" || evt == "mouseexit")
+ mouseEnterExitHandler(_el, evt, fn, children);
+ else
+ DefaultHandler(_el, evt, fn, children);
+ });
+ };
+
+ /**
+ * Removes an element from the DOM, and deregisters all event handlers for it. You should use this
+ * to ensure you don't leak memory.
+ * @method remove
+ * @param {String|Element} el Element, or id of the element, to remove.
+ * @return {Mottle} The current Mottle instance; you can chain this method.
+ */
+ this.remove = function (el) {
+ _each(el, function () {
+ var _el = _gel(this);
+ if (_el.__ta) {
+ for (var evt in _el.__ta) {
+ if (_el.__ta.hasOwnProperty(evt)) {
+ for (var h in _el.__ta[evt]) {
+ if (_el.__ta[evt].hasOwnProperty(h))
+ _unbind(_el, evt, _el.__ta[evt][h]);
+ }
+ }
+ }
+ }
+ _el.parentNode && _el.parentNode.removeChild(_el);
+ });
+ return this;
+ };
+
+ /**
+ * Register an event handler, optionally as a delegate for some set of descendant elements. Note
+ * that this method takes either 3 or 4 arguments - if you supply 3 arguments it is assumed you have
+ * omitted the `children` parameter, and that the event handler should be bound directly to the given element.
+ * @method on
+ * @param {Element[]|Element|String} el Either an Element, or a CSS spec for a list of elements, or an array of Elements.
+ * @param {String} [children] Comma-delimited list of selectors identifying allowed children.
+ * @param {String} event Event ID.
+ * @param {Function} fn Event handler function.
+ * @return {Mottle} The current Mottle instance; you can chain this method.
+ */
+ this.on = function (el, event, children, fn) {
+ var _el = arguments[0],
+ _c = arguments.length == 4 ? arguments[2] : null,
+ _e = arguments[1],
+ _f = arguments[arguments.length - 1];
+
+ _doBind(_el, _e, _f, _c);
+ return this;
+ };
+
+ /**
+ * Cancel delegate event handling for the given function. Note that unlike with 'on' you do not supply
+ * a list of child selectors here: it removes event delegation from all of the child selectors for which the
+ * given function was registered (if any).
+ * @method off
+ * @param {Element[]|Element|String} el Element - or ID of element - from which to remove event listener.
+ * @param {String} event Event ID.
+ * @param {Function} fn Event handler function.
+ * @return {Mottle} The current Mottle instance; you can chain this method.
+ */
+ this.off = function (el, event, fn) {
+ _unbind(el, event, fn);
+ return this;
+ };
+
+ /**
+ * Triggers some event for a given element.
+ * @method trigger
+ * @param {Element} el Element for which to trigger the event.
+ * @param {String} event Event ID.
+ * @param {Event} originalEvent The original event. Should be optional of course, but currently is not, due
+ * to the jsPlumb use case that caused this method to be added.
+ * @param {Object} [payload] Optional object to set as `payload` on the generated event; useful for message passing.
+ * @return {Mottle} The current Mottle instance; you can chain this method.
+ */
+ this.trigger = function (el, event, originalEvent, payload) {
+ // MouseEvent undefined in old IE; that's how we know it's a mouse event. A fine Microsoft paradox.
+ var originalIsMouse = isMouseDevice && (typeof MouseEvent === "undefined" || originalEvent == null || originalEvent.constructor === MouseEvent);
+
+ var eventToBind = (isTouchDevice && !isMouseDevice && touchMap[event]) ? touchMap[event] : event,
+ bindingAMouseEvent = !(isTouchDevice && !isMouseDevice && touchMap[event]);
+
+ var pl = _pageLocation(originalEvent), sl = _screenLocation(originalEvent), cl = _clientLocation(originalEvent);
+ _each(el, function () {
+ var _el = _gel(this), evt;
+ originalEvent = originalEvent || {
+ screenX: sl[0],
+ screenY: sl[1],
+ clientX: cl[0],
+ clientY: cl[1]
+ };
+
+ var _decorate = function (_evt) {
+ if (payload) _evt.payload = payload;
+ };
+
+ var eventGenerators = {
+ "TouchEvent": function (evt) {
+
+ var touchList = _touchAndList(window, _el, 0, pl[0], pl[1], sl[0], sl[1], cl[0], cl[1]),
+ init = evt.initTouchEvent || evt.initEvent;
+
+ init(eventToBind, true, true, window, null, sl[0], sl[1],
+ cl[0], cl[1], false, false, false, false,
+ touchList, touchList, touchList, 1, 0);
+ },
+ "MouseEvents": function (evt) {
+ evt.initMouseEvent(eventToBind, true, true, window, 0,
+ sl[0], sl[1],
+ cl[0], cl[1],
+ false, false, false, false, 1, _el);
+ }
+ };
+
+ if (document.createEvent) {
+
+ var ite = !bindingAMouseEvent && !originalIsMouse && (isTouchDevice && touchMap[event]),
+ evtName = ite ? "TouchEvent" : "MouseEvents";
+
+ evt = document.createEvent(evtName);
+ eventGenerators[evtName](evt);
+ _decorate(evt);
+ _el.dispatchEvent(evt);
+ }
+ else if (document.createEventObject) {
+ evt = document.createEventObject();
+ evt.eventType = evt.eventName = eventToBind;
+ evt.screenX = sl[0];
+ evt.screenY = sl[1];
+ evt.clientX = cl[0];
+ evt.clientY = cl[1];
+ _decorate(evt);
+ _el.fireEvent('on' + eventToBind, evt);
+ }
+ });
+ return this;
+ }
+ };
+
+ /**
+ * Static method to assist in 'consuming' an element: uses `stopPropagation` where available, or sets
+ * `e.returnValue=false` where it is not.
+ * @method Mottle.consume
+ * @param {Event} e Event to consume
+ * @param {Boolean} [doNotPreventDefault=false] If true, does not call `preventDefault()` on the event.
+ */
+ root.Mottle.consume = function (e, doNotPreventDefault) {
+ if (e.stopPropagation)
+ e.stopPropagation();
+ else
+ e.returnValue = false;
+
+ if (!doNotPreventDefault && e.preventDefault)
+ e.preventDefault();
+ };
+
+ /**
+ * Gets the page location corresponding to the given event. For touch events this means get the page location of the first touch.
+ * @method Mottle.pageLocation
+ * @param {Event} e Event to get page location for.
+ * @return {Number[]} [left, top] for the given event.
+ */
+ root.Mottle.pageLocation = _pageLocation;
+
+ /**
+ * Forces touch events to be turned "on". Useful for testing: even if you don't have a touch device, you can still
+ * trigger a touch event when this is switched on and it will be captured and acted on.
+ * @method setForceTouchEvents
+ * @param {Boolean} value If true, force touch events to be on.
+ */
+ root.Mottle.setForceTouchEvents = function (value) {
+ isTouchDevice = value;
+ };
+
+ /**
+ * Forces mouse events to be turned "on". Useful for testing: even if you don't have a mouse, you can still
+ * trigger a mouse event when this is switched on and it will be captured and acted on.
+ * @method setForceMouseEvents
+ * @param {Boolean} value If true, force mouse events to be on.
+ */
+ root.Mottle.setForceMouseEvents = function (value) {
+ isMouseDevice = value;
+ };
+
+ root.Mottle.version = "0.8.0";
+
+ if (typeof exports !== "undefined") {
+ exports.Mottle = root.Mottle;
+ }
+
+}).call(typeof window === "undefined" ? this : window);
+
+/**
+ drag/drop functionality for use with jsPlumb but with
+ no knowledge of jsPlumb. supports multiple scopes (separated by whitespace), dragging
+ multiple elements, constrain to parent, drop filters, drag start filters, custom
+ css classes.
+
+ a lot of the functionality of this script is expected to be plugged in:
+
+ addClass
+ removeClass
+
+ addEvent
+ removeEvent
+
+ getPosition
+ setPosition
+ getSize
+
+ indexOf
+ intersects
+
+ the name came from here:
+
+ http://mrsharpoblunto.github.io/foswig.js/
+
+ copyright 2016 jsPlumb
+ */
+
+;(function() {
+
+ "use strict";
+ var root = this;
+
+ var _suggest = function(list, item, head) {
+ if (list.indexOf(item) === -1) {
+ head ? list.unshift(item) : list.push(item);
+ return true;
+ }
+ return false;
+ };
+
+ var _vanquish = function(list, item) {
+ var idx = list.indexOf(item);
+ if (idx !== -1) list.splice(idx, 1);
+ };
+
+ var _difference = function(l1, l2) {
+ var d = [];
+ for (var i = 0; i < l1.length; i++) {
+ if (l2.indexOf(l1[i]) === -1)
+ d.push(l1[i]);
+ }
+ return d;
+ };
+
+ var _isString = function(f) {
+ return f == null ? false : (typeof f === "string" || f.constructor === String);
+ };
+
+ var getOffsetRect = function (elem) {
+ // (1)
+ var box = elem.getBoundingClientRect(),
+ body = document.body,
+ docElem = document.documentElement,
+ // (2)
+ scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop,
+ scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft,
+ // (3)
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ // (4)
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: Math.round(top), left: Math.round(left) };
+ };
+
+ var matchesSelector = function(el, selector, ctx) {
+ ctx = ctx || el.parentNode;
+ var possibles = ctx.querySelectorAll(selector);
+ for (var i = 0; i < possibles.length; i++) {
+ if (possibles[i] === el)
+ return true;
+ }
+ return false;
+ };
+
+ var findDelegateElement = function(parentElement, childElement, selector) {
+ if (matchesSelector(childElement, selector, parentElement)) {
+ return childElement;
+ } else {
+ var currentParent = childElement.parentNode;
+ while (currentParent != null && currentParent !== parentElement) {
+ if (matchesSelector(currentParent, selector, parentElement)) {
+ return currentParent;
+ } else {
+ currentParent = currentParent.parentNode;
+ }
+ }
+ }
+ };
+
+ /**
+ * Finds all elements matching the given selector, for the given parent. In order to support "scoped root" selectors,
+ * ie. things like "> .someClass", that is .someClass elements that are direct children of `parentElement`, we have to
+ * jump through a small hoop here: when a delegate draggable is registered, we write a `katavorio-draggable` attribute
+ * on the element on which the draggable is registered. Then when this method runs, we grab the value of that attribute and
+ * prepend it as part of the selector we're looking for. So "> .someClass" ends up being written as
+ * "[katavorio-draggable='...' > .someClass]", which works with querySelectorAll.
+ *
+ * @param availableSelectors
+ * @param parentElement
+ * @param childElement
+ * @returns {*}
+ */
+ var findMatchingSelector = function(availableSelectors, parentElement, childElement) {
+ var el = null;
+ var draggableId = parentElement.getAttribute("katavorio-draggable"),
+ prefix = draggableId != null ? "[katavorio-draggable='" + draggableId + "'] " : "";
+
+ for (var i = 0; i < availableSelectors.length; i++) {
+ el = findDelegateElement(parentElement, childElement, prefix + availableSelectors[i].selector);
+ if (el != null) {
+ if (availableSelectors[i].filter) {
+ var matches = matchesSelector(childElement, availableSelectors[i].filter, el),
+ exclude = availableSelectors[i].filterExclude === true;
+
+ if ( (exclude && !matches) || matches) {
+ return null;
+ }
+
+ }
+ return [ availableSelectors[i], el ];
+ }
+ }
+ return null;
+ };
+
+ var iev = (function() {
+ var rv = -1;
+ if (navigator.appName === 'Microsoft Internet Explorer') {
+ var ua = navigator.userAgent,
+ re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
+ if (re.exec(ua) != null)
+ rv = parseFloat(RegExp.$1);
+ }
+ return rv;
+ })(),
+ DEFAULT_GRID_X = 10,
+ DEFAULT_GRID_Y = 10,
+ isIELT9 = iev > -1 && iev < 9,
+ isIE9 = iev === 9,
+ _pl = function(e) {
+ if (isIELT9) {
+ return [ e.clientX + document.documentElement.scrollLeft, e.clientY + document.documentElement.scrollTop ];
+ }
+ else {
+ var ts = _touches(e), t = _getTouch(ts, 0);
+ // for IE9 pageX might be null if the event was synthesized. We try for pageX/pageY first,
+ // falling back to clientX/clientY if necessary. In every other browser we want to use pageX/pageY.
+ return isIE9 ? [t.pageX || t.clientX, t.pageY || t.clientY] : [t.pageX, t.pageY];
+ }
+ },
+ _getTouch = function(touches, idx) { return touches.item ? touches.item(idx) : touches[idx]; },
+ _touches = function(e) {
+ return e.touches && e.touches.length > 0 ? e.touches :
+ e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches :
+ e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches :
+ [ e ];
+ },
+ _classes = {
+ delegatedDraggable:"katavorio-delegated-draggable", // elements that are the delegated drag handler for a bunch of other elements
+ draggable:"katavorio-draggable", // draggable elements
+ droppable:"katavorio-droppable", // droppable elements
+ drag : "katavorio-drag", // elements currently being dragged
+ selected:"katavorio-drag-selected", // elements in current drag selection
+ active : "katavorio-drag-active", // droppables that are targets of a currently dragged element
+ hover : "katavorio-drag-hover", // droppables over which a matching drag element is hovering
+ noSelect : "katavorio-drag-no-select", // added to the body to provide a hook to suppress text selection
+ ghostProxy:"katavorio-ghost-proxy", // added to a ghost proxy element in use when a drag has exited the bounds of its parent.
+ clonedDrag:"katavorio-clone-drag" // added to a node that is a clone of an element created at the start of a drag
+ },
+ _defaultScope = "katavorio-drag-scope",
+ _events = [ "stop", "start", "drag", "drop", "over", "out", "beforeStart" ],
+ _devNull = function() {},
+ _true = function() { return true; },
+ _foreach = function(l, fn, from) {
+ for (var i = 0; i < l.length; i++) {
+ if (l[i] != from)
+ fn(l[i]);
+ }
+ },
+ _setDroppablesActive = function(dd, val, andHover, drag) {
+ _foreach(dd, function(e) {
+ e.setActive(val);
+ if (val) e.updatePosition();
+ if (andHover) e.setHover(drag, val);
+ });
+ },
+ _each = function(obj, fn) {
+ if (obj == null) return;
+ obj = !_isString(obj) && (obj.tagName == null && obj.length != null) ? obj : [ obj ];
+ for (var i = 0; i < obj.length; i++)
+ fn.apply(obj[i], [ obj[i] ]);
+ },
+ _consume = function(e) {
+ if (e.stopPropagation) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+ else {
+ e.returnValue = false;
+ }
+ },
+ _defaultInputFilterSelector = "input,textarea,select,button,option",
+ //
+ // filters out events on all input elements, like textarea, checkbox, input, select.
+ _inputFilter = function(e, el, _katavorio) {
+ var t = e.srcElement || e.target;
+ return !matchesSelector(t, _katavorio.getInputFilterSelector(), el);
+ };
+
+ var Super = function(el, params, css, scope) {
+ this.params = params || {};
+ this.el = el;
+ this.params.addClass(this.el, this._class);
+ this.uuid = _uuid();
+ var enabled = true;
+ this.setEnabled = function(e) { enabled = e; };
+ this.isEnabled = function() { return enabled; };
+ this.toggleEnabled = function() { enabled = !enabled; };
+ this.setScope = function(scopes) {
+ this.scopes = scopes ? scopes.split(/\s+/) : [ scope ];
+ };
+ this.addScope = function(scopes) {
+ var m = {};
+ _each(this.scopes, function(s) { m[s] = true;});
+ _each(scopes ? scopes.split(/\s+/) : [], function(s) { m[s] = true;});
+ this.scopes = [];
+ for (var i in m) this.scopes.push(i);
+ };
+ this.removeScope = function(scopes) {
+ var m = {};
+ _each(this.scopes, function(s) { m[s] = true;});
+ _each(scopes ? scopes.split(/\s+/) : [], function(s) { delete m[s];});
+ this.scopes = [];
+ for (var i in m) this.scopes.push(i);
+ };
+ this.toggleScope = function(scopes) {
+ var m = {};
+ _each(this.scopes, function(s) { m[s] = true;});
+ _each(scopes ? scopes.split(/\s+/) : [], function(s) {
+ if (m[s]) delete m[s];
+ else m[s] = true;
+ });
+ this.scopes = [];
+ for (var i in m) this.scopes.push(i);
+ };
+ this.setScope(params.scope);
+ this.k = params.katavorio;
+ return params.katavorio;
+ };
+
+ var TRUE = function() { return true; };
+ var FALSE = function() { return false; };
+
+ var Drag = function(el, params, css, scope) {
+ this._class = css.draggable;
+ var k = Super.apply(this, arguments);
+ this.rightButtonCanDrag = this.params.rightButtonCanDrag;
+ var downAt = [0,0], posAtDown = null, pagePosAtDown = null, pageDelta = [0,0], moving = false, initialScroll = [0,0],
+ consumeStartEvent = this.params.consumeStartEvent !== false,
+ dragEl = this.el,
+ clone = this.params.clone,
+ scroll = this.params.scroll,
+ _multipleDrop = params.multipleDrop !== false,
+ isConstrained = false,
+ useGhostProxy = params.ghostProxy === true ? TRUE : params.ghostProxy && typeof params.ghostProxy === "function" ? params.ghostProxy : FALSE,
+ ghostProxy = function(el) { return el.cloneNode(true); },
+ elementToDrag = null,
+ availableSelectors = [],
+ activeSelectorParams = null, // which, if any, selector config is currently active.
+ ghostProxyParent = params.ghostProxyParent,
+ currentParentPosition,
+ ghostParentPosition,
+ ghostDx,
+ ghostDy;
+
+ // if an initial selector was provided, push the entire set of params as a selector config.
+ if (params.selector) {
+ var draggableId = el.getAttribute("katavorio-draggable");
+ if (draggableId == null) {
+ draggableId = "" + new Date().getTime();
+ el.setAttribute("katavorio-draggable", draggableId);
+ }
+
+ availableSelectors.push(params);
+ }
+
+ var snapThreshold = params.snapThreshold,
+ _snap = function(pos, gridX, gridY, thresholdX, thresholdY) {
+ var _dx = Math.floor(pos[0] / gridX),
+ _dxl = gridX * _dx,
+ _dxt = _dxl + gridX,
+ _x = Math.abs(pos[0] - _dxl) <= thresholdX ? _dxl : Math.abs(_dxt - pos[0]) <= thresholdX ? _dxt : pos[0];
+
+ var _dy = Math.floor(pos[1] / gridY),
+ _dyl = gridY * _dy,
+ _dyt = _dyl + gridY,
+ _y = Math.abs(pos[1] - _dyl) <= thresholdY ? _dyl : Math.abs(_dyt - pos[1]) <= thresholdY ? _dyt : pos[1];
+
+ return [ _x, _y];
+ };
+
+ this.posses = [];
+ this.posseRoles = {};
+
+ this.toGrid = function(pos) {
+ if (this.params.grid == null) {
+ return pos;
+ }
+ else {
+ var tx = this.params.grid ? this.params.grid[0] / 2 : snapThreshold ? snapThreshold : DEFAULT_GRID_X / 2,
+ ty = this.params.grid ? this.params.grid[1] / 2 : snapThreshold ? snapThreshold : DEFAULT_GRID_Y / 2;
+
+ return _snap(pos, this.params.grid[0], this.params.grid[1], tx, ty);
+ }
+ };
+
+ this.snap = function(x, y) {
+ if (dragEl == null) return;
+ x = x || (this.params.grid ? this.params.grid[0] : DEFAULT_GRID_X);
+ y = y || (this.params.grid ? this.params.grid[1] : DEFAULT_GRID_Y);
+ var p = this.params.getPosition(dragEl),
+ tx = this.params.grid ? this.params.grid[0] / 2 : snapThreshold,
+ ty = this.params.grid ? this.params.grid[1] / 2 : snapThreshold,
+ snapped = _snap(p, x, y, tx, ty);
+
+ this.params.setPosition(dragEl, snapped);
+ return snapped;
+ };
+
+ this.setUseGhostProxy = function(val) {
+ useGhostProxy = val ? TRUE : FALSE;
+ };
+
+ var constrain;
+ var negativeFilter = function(pos) {
+ return (params.allowNegative === false) ? [ Math.max (0, pos[0]), Math.max(0, pos[1]) ] : pos;
+ };
+
+ var _setConstrain = function(value) {
+ constrain = typeof value === "function" ? value : value ? function(pos, dragEl, _constrainRect, _size) {
+ return negativeFilter([
+ Math.max(0, Math.min(_constrainRect.w - _size[0], pos[0])),
+ Math.max(0, Math.min(_constrainRect.h - _size[1], pos[1]))
+ ]);
+ }.bind(this) : function(pos) { return negativeFilter(pos); };
+ }.bind(this);
+
+ _setConstrain(typeof this.params.constrain === "function" ? this.params.constrain : (this.params.constrain || this.params.containment));
+
+
+ /**
+ * Sets whether or not the Drag is constrained. A value of 'true' means constrain to parent bounds; a function
+ * will be executed and returns true if the position is allowed.
+ * @param value
+ */
+ this.setConstrain = function(value) {
+ _setConstrain(value);
+ };
+
+ var revertFunction;
+ /**
+ * Sets a function to call on drag stop, which, if it returns true, indicates that the given element should
+ * revert to its position before the previous drag.
+ * @param fn
+ */
+ this.setRevert = function(fn) {
+ revertFunction = fn;
+ };
+
+ if (this.params.revert) {
+ revertFunction = this.params.revert;
+ }
+
+ var _assignId = function(obj) {
+ if (typeof obj === "function") {
+ obj._katavorioId = _uuid();
+ return obj._katavorioId;
+ } else {
+ return obj;
+ }
+ },
+ // a map of { spec -> [ fn, exclusion ] } entries.
+ _filters = {},
+ _testFilter = function(e) {
+ for (var key in _filters) {
+ var f = _filters[key];
+ var rv = f[0](e);
+ if (f[1]) rv = !rv;
+ if (!rv) return false;
+ }
+ return true;
+ },
+ _setFilter = this.setFilter = function(f, _exclude) {
+ if (f) {
+ var key = _assignId(f);
+ _filters[key] = [
+ function(e) {
+ var t = e.srcElement || e.target, m;
+ if (_isString(f)) {
+ m = matchesSelector(t, f, el);
+ }
+ else if (typeof f === "function") {
+ m = f(e, el);
+ }
+ return m;
+ },
+ _exclude !== false
+ ];
+
+ }
+ },
+ _addFilter = this.addFilter = _setFilter,
+ _removeFilter = this.removeFilter = function(f) {
+ var key = typeof f === "function" ? f._katavorioId : f;
+ delete _filters[key];
+ };
+
+ this.clearAllFilters = function() {
+ _filters = {};
+ };
+
+ this.canDrag = this.params.canDrag || _true;
+
+ var constrainRect,
+ matchingDroppables = [],
+ intersectingDroppables = [];
+
+ this.addSelector = function(params) {
+ if (params.selector) {
+ availableSelectors.push(params);
+ }
+ };
+
+ this.downListener = function(e) {
+ if (e.defaultPrevented) { return; }
+ var isNotRightClick = this.rightButtonCanDrag || (e.which !== 3 && e.button !== 2);
+ if (isNotRightClick && this.isEnabled() && this.canDrag()) {
+
+ var _f = _testFilter(e) && _inputFilter(e, this.el, this.k);
+ if (_f) {
+
+ activeSelectorParams = null;
+ elementToDrag = null;
+
+ // if (selector) {
+ // elementToDrag = findDelegateElement(this.el, e.target || e.srcElement, selector);
+ // if(elementToDrag == null) {
+ // return;
+ // }
+ // }
+ if (availableSelectors.length > 0) {
+ var match = findMatchingSelector(availableSelectors, this.el, e.target || e.srcElement);
+ if (match != null) {
+ activeSelectorParams = match[0];
+ elementToDrag = match[1];
+ }
+ // elementToDrag = findDelegateElement(this.el, e.target || e.srcElement, selector);
+ if(elementToDrag == null) {
+ return;
+ }
+ }
+ else {
+ elementToDrag = this.el;
+ }
+
+ if (clone) {
+ dragEl = elementToDrag.cloneNode(true);
+ this.params.addClass(dragEl, _classes.clonedDrag);
+
+ dragEl.setAttribute("id", null);
+ dragEl.style.position = "absolute";
+
+ if (this.params.parent != null) {
+ var p = this.params.getPosition(this.el);
+ dragEl.style.left = p[0] + "px";
+ dragEl.style.top = p[1] + "px";
+ this.params.parent.appendChild(dragEl);
+ } else {
+ // the clone node is added to the body; getOffsetRect gives us a value
+ // relative to the body.
+ var b = getOffsetRect(elementToDrag);
+ dragEl.style.left = b.left + "px";
+ dragEl.style.top = b.top + "px";
+
+ document.body.appendChild(dragEl);
+ }
+
+ } else {
+ dragEl = elementToDrag;
+ }
+
+ consumeStartEvent && _consume(e);
+ downAt = _pl(e);
+ if (dragEl && dragEl.parentNode)
+ {
+ initialScroll = [dragEl.parentNode.scrollLeft, dragEl.parentNode.scrollTop];
+ }
+ //
+ this.params.bind(document, "mousemove", this.moveListener);
+ this.params.bind(document, "mouseup", this.upListener);
+ k.markSelection(this);
+ k.markPosses(this);
+ this.params.addClass(document.body, css.noSelect);
+ _dispatch("beforeStart", {el:this.el, pos:posAtDown, e:e, drag:this});
+ }
+ else if (this.params.consumeFilteredEvents) {
+ _consume(e);
+ }
+ }
+ }.bind(this);
+
+ this.moveListener = function(e) {
+ if (downAt) {
+ if (!moving) {
+ var _continue = _dispatch("start", {el:this.el, pos:posAtDown, e:e, drag:this});
+ if (_continue !== false) {
+ if (!downAt) {
+ return;
+ }
+ this.mark(true);
+ moving = true;
+ } else {
+ this.abort();
+ }
+ }
+
+ // it is possible that the start event caused the drag to be aborted. So we check
+ // again that we are currently dragging.
+ if (downAt) {
+ intersectingDroppables.length = 0;
+ var pos = _pl(e), dx = pos[0] - downAt[0], dy = pos[1] - downAt[1],
+ z = this.params.ignoreZoom ? 1 : k.getZoom();
+ if (dragEl && dragEl.parentNode)
+ {
+ dx += dragEl.parentNode.scrollLeft - initialScroll[0];
+ dy += dragEl.parentNode.scrollTop - initialScroll[1];
+ }
+ dx /= z;
+ dy /= z;
+ this.moveBy(dx, dy, e);
+ k.updateSelection(dx, dy, this);
+ k.updatePosses(dx, dy, this);
+ }
+ }
+ }.bind(this);
+
+ this.upListener = function(e) {
+ if (downAt) {
+ downAt = null;
+ this.params.unbind(document, "mousemove", this.moveListener);
+ this.params.unbind(document, "mouseup", this.upListener);
+ this.params.removeClass(document.body, css.noSelect);
+ this.unmark(e);
+ k.unmarkSelection(this, e);
+ k.unmarkPosses(this, e);
+ this.stop(e);
+
+ k.notifyPosseDragStop(this, e);
+ moving = false;
+ intersectingDroppables.length = 0;
+
+ if (clone) {
+ dragEl && dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);
+ dragEl = null;
+ } else {
+ if (revertFunction && revertFunction(dragEl, this.params.getPosition(dragEl)) === true) {
+ this.params.setPosition(dragEl, posAtDown);
+ _dispatch("revert", dragEl);
+ }
+ }
+
+ }
+ }.bind(this);
+
+ this.getFilters = function() { return _filters; };
+
+ this.abort = function() {
+ if (downAt != null) {
+ this.upListener();
+ }
+ };
+
+ /**
+ * Returns the element that was last dragged. This may be some original element from the DOM, or if `clone` is
+ * set, then its actually a copy of some original DOM element. In some client calls to this method, it is the
+ * actual element that was dragged that is desired. In others, it is the original DOM element that the user
+ * wishes to get - in which case, pass true for `retrieveOriginalElement`.
+ *
+ * @returns {*}
+ */
+ this.getDragElement = function(retrieveOriginalElement) {
+ return retrieveOriginalElement ? elementToDrag || this.el : dragEl || this.el;
+ };
+
+ var listeners = {"start":[], "drag":[], "stop":[], "over":[], "out":[], "beforeStart":[], "revert":[] };
+ if (params.events.start) listeners.start.push(params.events.start);
+ if (params.events.beforeStart) listeners.beforeStart.push(params.events.beforeStart);
+ if (params.events.stop) listeners.stop.push(params.events.stop);
+ if (params.events.drag) listeners.drag.push(params.events.drag);
+ if (params.events.revert) listeners.revert.push(params.events.revert);
+
+ this.on = function(evt, fn) {
+ if (listeners[evt]) listeners[evt].push(fn);
+ };
+
+ this.off = function(evt, fn) {
+ if (listeners[evt]) {
+ var l = [];
+ for (var i = 0; i < listeners[evt].length; i++) {
+ if (listeners[evt][i] !== fn) l.push(listeners[evt][i]);
+ }
+ listeners[evt] = l;
+ }
+ };
+
+ var _dispatch = function(evt, value) {
+ var result = null;
+ if (activeSelectorParams && activeSelectorParams[evt]) {
+ result = activeSelectorParams[evt](value);
+ } else if (listeners[evt]) {
+ for (var i = 0; i < listeners[evt].length; i++) {
+ try {
+ var v = listeners[evt][i](value);
+ if (v != null) {
+ result = v;
+ }
+ }
+ catch (e) { }
+ }
+ }
+ return result;
+ };
+
+ this.notifyStart = function(e) {
+ _dispatch("start", {el:this.el, pos:this.params.getPosition(dragEl), e:e, drag:this});
+ };
+
+ this.stop = function(e, force) {
+ if (force || moving) {
+ var positions = [],
+ sel = k.getSelection(),
+ dPos = this.params.getPosition(dragEl);
+
+ if (sel.length > 0) {
+ for (var i = 0; i < sel.length; i++) {
+ var p = this.params.getPosition(sel[i].el);
+ positions.push([ sel[i].el, { left: p[0], top: p[1] }, sel[i] ]);
+ }
+ }
+ else {
+ positions.push([ dragEl, {left:dPos[0], top:dPos[1]}, this ]);
+ }
+
+ _dispatch("stop", {
+ el: dragEl,
+ pos: ghostProxyOffsets || dPos,
+ finalPos:dPos,
+ e: e,
+ drag: this,
+ selection:positions
+ });
+ }
+ };
+
+ this.mark = function(andNotify) {
+ posAtDown = this.params.getPosition(dragEl);
+ pagePosAtDown = this.params.getPosition(dragEl, true);
+ pageDelta = [pagePosAtDown[0] - posAtDown[0], pagePosAtDown[1] - posAtDown[1]];
+ this.size = this.params.getSize(dragEl);
+ matchingDroppables = k.getMatchingDroppables(this);
+ _setDroppablesActive(matchingDroppables, true, false, this);
+ this.params.addClass(dragEl, this.params.dragClass || css.drag);
+
+ var cs;
+ if (this.params.getConstrainingRectangle) {
+ cs = this.params.getConstrainingRectangle(dragEl)
+ } else {
+ cs = this.params.getSize(dragEl.parentNode);
+ }
+ constrainRect = {w: cs[0], h: cs[1]};
+
+ ghostDx = 0;
+ ghostDy = 0;
+
+ if (andNotify) {
+ k.notifySelectionDragStart(this);
+ }
+ };
+ var ghostProxyOffsets;
+ this.unmark = function(e, doNotCheckDroppables) {
+ _setDroppablesActive(matchingDroppables, false, true, this);
+
+ if (isConstrained && useGhostProxy(elementToDrag, dragEl)) {
+ ghostProxyOffsets = [dragEl.offsetLeft - ghostDx, dragEl.offsetTop - ghostDy];
+ dragEl.parentNode.removeChild(dragEl);
+ dragEl = elementToDrag;
+ }
+ else {
+ ghostProxyOffsets = null;
+ }
+
+ this.params.removeClass(dragEl, this.params.dragClass || css.drag);
+ matchingDroppables.length = 0;
+ isConstrained = false;
+ if (!doNotCheckDroppables) {
+ if (intersectingDroppables.length > 0 && ghostProxyOffsets) {
+ params.setPosition(elementToDrag, ghostProxyOffsets);
+ }
+ intersectingDroppables.sort(_rankSort);
+ for (var i = 0; i < intersectingDroppables.length; i++) {
+ var retVal = intersectingDroppables[i].drop(this, e);
+ if (retVal === true) break;
+ }
+ }
+ };
+ this.moveBy = function(dx, dy, e) {
+ intersectingDroppables.length = 0;
+
+ var desiredLoc = this.toGrid([posAtDown[0] + dx, posAtDown[1] + dy]),
+ cPos = constrain(desiredLoc, dragEl, constrainRect, this.size);
+
+ // if we should use a ghost proxy...
+ if (useGhostProxy(this.el, dragEl)) {
+ // and the element has been dragged outside of its parent bounds
+ if (desiredLoc[0] !== cPos[0] || desiredLoc[1] !== cPos[1]) {
+
+ // ...if ghost proxy not yet created
+ if (!isConstrained) {
+ // create it
+ var gp = ghostProxy(elementToDrag);
+ params.addClass(gp, _classes.ghostProxy);
+
+ if (ghostProxyParent) {
+ ghostProxyParent.appendChild(gp);
+ // find offset between drag el's parent the ghost parent
+ currentParentPosition = params.getPosition(elementToDrag.parentNode, true);
+ ghostParentPosition = params.getPosition(params.ghostProxyParent, true);
+ ghostDx = currentParentPosition[0] - ghostParentPosition[0];
+ ghostDy = currentParentPosition[1] - ghostParentPosition[1];
+
+ } else {
+ elementToDrag.parentNode.appendChild(gp);
+ }
+
+ // the ghost proxy is the drag element
+ dragEl = gp;
+ // set this flag so we dont recreate the ghost proxy
+ isConstrained = true;
+ }
+ // now the drag position can be the desired position, as the ghost proxy can support it.
+ cPos = desiredLoc;
+ }
+ else {
+ // if the element is not outside of its parent bounds, and ghost proxy is in place,
+ if (isConstrained) {
+ // remove the ghost proxy from the dom
+ dragEl.parentNode.removeChild(dragEl);
+ // reset the drag element to the original element
+ dragEl = elementToDrag;
+ // clear this flag.
+ isConstrained = false;
+ currentParentPosition = null;
+ ghostParentPosition = null;
+ ghostDx = 0;
+ ghostDy = 0;
+ }
+ }
+ }
+
+ var rect = { x:cPos[0], y:cPos[1], w:this.size[0], h:this.size[1]},
+ pageRect = { x:rect.x + pageDelta[0], y:rect.y + pageDelta[1], w:rect.w, h:rect.h},
+ focusDropElement = null;
+
+ this.params.setPosition(dragEl, [cPos[0] + ghostDx, cPos[1] + ghostDy]);
+
+ for (var i = 0; i < matchingDroppables.length; i++) {
+ var r2 = { x:matchingDroppables[i].pagePosition[0], y:matchingDroppables[i].pagePosition[1], w:matchingDroppables[i].size[0], h:matchingDroppables[i].size[1]};
+ if (this.params.intersects(pageRect, r2) && (_multipleDrop || focusDropElement == null || focusDropElement === matchingDroppables[i].el) && matchingDroppables[i].canDrop(this)) {
+ if (!focusDropElement) focusDropElement = matchingDroppables[i].el;
+ intersectingDroppables.push(matchingDroppables[i]);
+ matchingDroppables[i].setHover(this, true, e);
+ }
+ else if (matchingDroppables[i].isHover()) {
+ matchingDroppables[i].setHover(this, false, e);
+ }
+ }
+
+ _dispatch("drag", {el:this.el, pos:cPos, e:e, drag:this});
+
+ /* test to see if the parent needs to be scrolled (future)
+ if (scroll) {
+ var pnsl = dragEl.parentNode.scrollLeft, pnst = dragEl.parentNode.scrollTop;
+ console.log("scroll!", pnsl, pnst);
+ }*/
+ };
+ this.destroy = function() {
+ this.params.unbind(this.el, "mousedown", this.downListener);
+ this.params.unbind(document, "mousemove", this.moveListener);
+ this.params.unbind(document, "mouseup", this.upListener);
+ this.downListener = null;
+ this.upListener = null;
+ this.moveListener = null;
+ };
+
+ // init:register mousedown, and perhaps set a filter
+ this.params.bind(this.el, "mousedown", this.downListener);
+
+ // if handle provided, use that. otherwise, try to set a filter.
+ // note that a `handle` selector always results in filterExclude being set to false, ie.
+ // the selector defines the handle element(s).
+ if (this.params.handle)
+ _setFilter(this.params.handle, false);
+ else
+ _setFilter(this.params.filter, this.params.filterExclude);
+ };
+
+ var Drop = function(el, params, css, scope) {
+ this._class = css.droppable;
+ this.params = params || {};
+ this.rank = params.rank || 0;
+ this._activeClass = this.params.activeClass || css.active;
+ this._hoverClass = this.params.hoverClass || css.hover;
+ Super.apply(this, arguments);
+ var hover = false;
+ this.allowLoopback = this.params.allowLoopback !== false;
+
+ this.setActive = function(val) {
+ this.params[val ? "addClass" : "removeClass"](this.el, this._activeClass);
+ };
+
+ this.updatePosition = function() {
+ this.position = this.params.getPosition(this.el);
+ this.pagePosition = this.params.getPosition(this.el, true);
+ this.size = this.params.getSize(this.el);
+ };
+
+ this.canDrop = this.params.canDrop || function(drag) {
+ return true;
+ };
+
+ this.isHover = function() { return hover; };
+
+ this.setHover = function(drag, val, e) {
+ // if turning off hover but this was not the drag that caused the hover, ignore.
+ if (val || this.el._katavorioDragHover == null || this.el._katavorioDragHover === drag.el._katavorio) {
+ this.params[val ? "addClass" : "removeClass"](this.el, this._hoverClass);
+ this.el._katavorioDragHover = val ? drag.el._katavorio : null;
+ if (hover !== val) {
+ this.params.events[val ? "over" : "out"]({el: this.el, e: e, drag: drag, drop: this});
+ }
+ hover = val;
+ }
+ };
+
+ /**
+ * A drop event. `drag` is the corresponding Drag object, which may be a Drag for some specific element, or it
+ * may be a Drag on some element acting as a delegate for elements contained within it.
+ * @param drag
+ * @param event
+ * @returns {*}
+ */
+ this.drop = function(drag, event) {
+ return this.params.events["drop"]({ drag:drag, e:event, drop:this });
+ };
+
+ this.destroy = function() {
+ this._class = null;
+ this._activeClass = null;
+ this._hoverClass = null;
+ hover = null;
+ };
+ };
+
+ var _uuid = function() {
+ return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
+ return v.toString(16);
+ }));
+ };
+
+ var _rankSort = function(a,b) {
+ return a.rank < b.rank ? 1 : a.rank > b.rank ? -1 : 0;
+ };
+
+ var _gel = function(el) {
+ if (el == null) return null;
+ el = (typeof el === "string" || el.constructor === String) ? document.getElementById(el) : el;
+ if (el == null) return null;
+ el._katavorio = el._katavorio || _uuid();
+ return el;
+ };
+
+ root.Katavorio = function(katavorioParams) {
+
+ var _selection = [],
+ _selectionMap = {};
+
+ this._dragsByScope = {};
+ this._dropsByScope = {};
+ var _zoom = 1,
+ _reg = function(obj, map) {
+ _each(obj, function(_obj) {
+ for(var i = 0; i < _obj.scopes.length; i++) {
+ map[_obj.scopes[i]] = map[_obj.scopes[i]] || [];
+ map[_obj.scopes[i]].push(_obj);
+ }
+ });
+ },
+ _unreg = function(obj, map) {
+ var c = 0;
+ _each(obj, function(_obj) {
+ for(var i = 0; i < _obj.scopes.length; i++) {
+ if (map[_obj.scopes[i]]) {
+ var idx = katavorioParams.indexOf(map[_obj.scopes[i]], _obj);
+ if (idx !== -1) {
+ map[_obj.scopes[i]].splice(idx, 1);
+ c++;
+ }
+ }
+ }
+ });
+
+ return c > 0 ;
+ },
+ _getMatchingDroppables = this.getMatchingDroppables = function(drag) {
+ var dd = [], _m = {};
+ for (var i = 0; i < drag.scopes.length; i++) {
+ var _dd = this._dropsByScope[drag.scopes[i]];
+ if (_dd) {
+ for (var j = 0; j < _dd.length; j++) {
+ if (_dd[j].canDrop(drag) && !_m[_dd[j].uuid] && (_dd[j].allowLoopback || _dd[j].el !== drag.el)) {
+ _m[_dd[j].uuid] = true;
+ dd.push(_dd[j]);
+ }
+ }
+ }
+ }
+ dd.sort(_rankSort);
+ return dd;
+ },
+ _prepareParams = function(p) {
+ p = p || {};
+ var _p = {
+ events:{}
+ }, i;
+ for (i in katavorioParams) _p[i] = katavorioParams[i];
+ for (i in p) _p[i] = p[i];
+ // events
+
+ for (i = 0; i < _events.length; i++) {
+ _p.events[_events[i]] = p[_events[i]] || _devNull;
+ }
+ _p.katavorio = this;
+ return _p;
+ }.bind(this),
+ _mistletoe = function(existingDrag, params) {
+ for (var i = 0; i < _events.length; i++) {
+ if (params[_events[i]]) {
+ existingDrag.on(_events[i], params[_events[i]]);
+ }
+ }
+ }.bind(this),
+ _css = {},
+ overrideCss = katavorioParams.css || {},
+ _scope = katavorioParams.scope || _defaultScope;
+
+ // prepare map of css classes based on defaults frst, then optional overrides
+ for (var i in _classes) _css[i] = _classes[i];
+ for (var i in overrideCss) _css[i] = overrideCss[i];
+
+ var inputFilterSelector = katavorioParams.inputFilterSelector || _defaultInputFilterSelector;
+ /**
+ * Gets the selector identifying which input elements to filter from drag events.
+ * @method getInputFilterSelector
+ * @return {String} Current input filter selector.
+ */
+ this.getInputFilterSelector = function() { return inputFilterSelector; };
+
+ /**
+ * Sets the selector identifying which input elements to filter from drag events.
+ * @method setInputFilterSelector
+ * @param {String} selector Input filter selector to set.
+ * @return {Katavorio} Current instance; method may be chained.
+ */
+ this.setInputFilterSelector = function(selector) {
+ inputFilterSelector = selector;
+ return this;
+ };
+
+ /**
+ * Either makes the given element draggable, or identifies it as an element inside which some identified list
+ * of elements may be draggable.
+ * @param el
+ * @param params
+ * @returns {Array}
+ */
+ this.draggable = function(el, params) {
+ var o = [];
+ _each(el, function (_el) {
+ _el = _gel(_el);
+ if (_el != null) {
+ if (_el._katavorioDrag == null) {
+ var p = _prepareParams(params);
+ _el._katavorioDrag = new Drag(_el, p, _css, _scope);
+ _reg(_el._katavorioDrag, this._dragsByScope);
+ o.push(_el._katavorioDrag);
+ katavorioParams.addClass(_el, p.selector ? _css.delegatedDraggable : _css.draggable);
+ }
+ else {
+ _mistletoe(_el._katavorioDrag, params);
+ }
+ }
+ }.bind(this));
+ return o;
+ };
+
+ this.droppable = function(el, params) {
+ var o = [];
+ _each(el, function(_el) {
+ _el = _gel(_el);
+ if (_el != null) {
+ var drop = new Drop(_el, _prepareParams(params), _css, _scope);
+ _el._katavorioDrop = _el._katavorioDrop || [];
+ _el._katavorioDrop.push(drop);
+ _reg(drop, this._dropsByScope);
+ o.push(drop);
+ katavorioParams.addClass(_el, _css.droppable);
+ }
+ }.bind(this));
+ return o;
+ };
+
+ /**
+ * @name Katavorio#select
+ * @function
+ * @desc Adds an element to the current selection (for multiple node drag)
+ * @param {Element|String} DOM element - or id of the element - to add.
+ */
+ this.select = function(el) {
+ _each(el, function() {
+ var _el = _gel(this);
+ if (_el && _el._katavorioDrag) {
+ if (!_selectionMap[_el._katavorio]) {
+ _selection.push(_el._katavorioDrag);
+ _selectionMap[_el._katavorio] = [ _el, _selection.length - 1 ];
+ katavorioParams.addClass(_el, _css.selected);
+ }
+ }
+ });
+ return this;
+ };
+
+ /**
+ * @name Katavorio#deselect
+ * @function
+ * @desc Removes an element from the current selection (for multiple node drag)
+ * @param {Element|String} DOM element - or id of the element - to remove.
+ */
+ this.deselect = function(el) {
+ _each(el, function() {
+ var _el = _gel(this);
+ if (_el && _el._katavorio) {
+ var e = _selectionMap[_el._katavorio];
+ if (e) {
+ var _s = [];
+ for (var i = 0; i < _selection.length; i++)
+ if (_selection[i].el !== _el) _s.push(_selection[i]);
+ _selection = _s;
+ delete _selectionMap[_el._katavorio];
+ katavorioParams.removeClass(_el, _css.selected);
+ }
+ }
+ });
+ return this;
+ };
+
+ this.deselectAll = function() {
+ for (var i in _selectionMap) {
+ var d = _selectionMap[i];
+ katavorioParams.removeClass(d[0], _css.selected);
+ }
+
+ _selection.length = 0;
+ _selectionMap = {};
+ };
+
+ this.markSelection = function(drag) {
+ _foreach(_selection, function(e) { e.mark(); }, drag);
+ };
+
+ this.markPosses = function(drag) {
+ if (drag.posses) {
+ _each(drag.posses, function(p) {
+ if (drag.posseRoles[p] && _posses[p]) {
+ _foreach(_posses[p].members, function (d) {
+ d.mark();
+ }, drag);
+ }
+ })
+ }
+ };
+
+ this.unmarkSelection = function(drag, event) {
+ _foreach(_selection, function(e) { e.unmark(event); }, drag);
+ };
+
+ this.unmarkPosses = function(drag, event) {
+ if (drag.posses) {
+ _each(drag.posses, function(p) {
+ if (drag.posseRoles[p] && _posses[p]) {
+ _foreach(_posses[p].members, function (d) {
+ d.unmark(event, true);
+ }, drag);
+ }
+ });
+ }
+ };
+
+ this.getSelection = function() { return _selection.slice(0); };
+
+ this.updateSelection = function(dx, dy, drag) {
+ _foreach(_selection, function(e) { e.moveBy(dx, dy); }, drag);
+ };
+
+ var _posseAction = function(fn, drag) {
+ if (drag.posses) {
+ _each(drag.posses, function(p) {
+ if (drag.posseRoles[p] && _posses[p]) {
+ _foreach(_posses[p].members, function (e) {
+ fn(e);
+ }, drag);
+ }
+ });
+ }
+ };
+
+ this.updatePosses = function(dx, dy, drag) {
+ _posseAction(function(e) { e.moveBy(dx, dy); }, drag);
+ };
+
+ this.notifyPosseDragStop = function(drag, evt) {
+ _posseAction(function(e) { e.stop(evt, true); }, drag);
+ };
+
+ this.notifySelectionDragStop = function(drag, evt) {
+ _foreach(_selection, function(e) { e.stop(evt, true); }, drag);
+ };
+
+ this.notifySelectionDragStart = function(drag, evt) {
+ _foreach(_selection, function(e) { e.notifyStart(evt);}, drag);
+ };
+
+ this.setZoom = function(z) { _zoom = z; };
+ this.getZoom = function() { return _zoom; };
+
+ // does the work of changing scopes
+ var _scopeManip = function(kObj, scopes, map, fn) {
+ _each(kObj, function(_kObj) {
+ _unreg(_kObj, map); // deregister existing scopes
+ _kObj[fn](scopes); // set scopes
+ _reg(_kObj, map); // register new ones
+ });
+ };
+
+ _each([ "set", "add", "remove", "toggle"], function(v) {
+ this[v + "Scope"] = function(el, scopes) {
+ _scopeManip(el._katavorioDrag, scopes, this._dragsByScope, v + "Scope");
+ _scopeManip(el._katavorioDrop, scopes, this._dropsByScope, v + "Scope");
+ }.bind(this);
+ this[v + "DragScope"] = function(el, scopes) {
+ _scopeManip(el.constructor === Drag ? el : el._katavorioDrag, scopes, this._dragsByScope, v + "Scope");
+ }.bind(this);
+ this[v + "DropScope"] = function(el, scopes) {
+ _scopeManip(el.constructor === Drop ? el : el._katavorioDrop, scopes, this._dropsByScope, v + "Scope");
+ }.bind(this);
+ }.bind(this));
+
+ this.snapToGrid = function(x, y) {
+ for (var s in this._dragsByScope) {
+ _foreach(this._dragsByScope[s], function(d) { d.snap(x, y); });
+ }
+ };
+
+ this.getDragsForScope = function(s) { return this._dragsByScope[s]; };
+ this.getDropsForScope = function(s) { return this._dropsByScope[s]; };
+
+ var _destroy = function(el, type, map) {
+ el = _gel(el);
+ if (el[type]) {
+
+ // remove from selection, if present.
+ var selIdx = _selection.indexOf(el[type]);
+ if (selIdx >= 0) {
+ _selection.splice(selIdx, 1);
+ }
+
+ if (_unreg(el[type], map)) {
+ _each(el[type], function(kObj) { kObj.destroy() });
+ }
+
+ delete el[type];
+ }
+ };
+
+ var _removeListener = function(el, type, evt, fn) {
+ el = _gel(el);
+ if (el[type]) {
+ el[type].off(evt, fn);
+ }
+ };
+
+ this.elementRemoved = function(el) {
+ this.destroyDraggable(el);
+ this.destroyDroppable(el);
+ };
+
+ /**
+ * Either completely remove drag functionality from the given element, or remove a specific event handler. If you
+ * call this method with a single argument - the element - all drag functionality is removed from it. Otherwise, if
+ * you provide an event name and listener function, this function is de-registered (if found).
+ * @param el Element to update
+ * @param {string} [evt] Optional event name to unsubscribe
+ * @param {Function} [fn] Optional function to unsubscribe
+ */
+ this.destroyDraggable = function(el, evt, fn) {
+ if (arguments.length === 1) {
+ _destroy(el, "_katavorioDrag", this._dragsByScope);
+ } else {
+ _removeListener(el, "_katavorioDrag", evt, fn);
+ }
+ };
+
+ /**
+ * Either completely remove drop functionality from the given element, or remove a specific event handler. If you
+ * call this method with a single argument - the element - all drop functionality is removed from it. Otherwise, if
+ * you provide an event name and listener function, this function is de-registered (if found).
+ * @param el Element to update
+ * @param {string} [evt] Optional event name to unsubscribe
+ * @param {Function} [fn] Optional function to unsubscribe
+ */
+ this.destroyDroppable = function(el, evt, fn) {
+ if (arguments.length === 1) {
+ _destroy(el, "_katavorioDrop", this._dropsByScope);
+ } else {
+ _removeListener(el, "_katavorioDrop", evt, fn);
+ }
+ };
+
+ this.reset = function() {
+ this._dragsByScope = {};
+ this._dropsByScope = {};
+ _selection = [];
+ _selectionMap = {};
+ _posses = {};
+ };
+
+ // ----- groups
+ var _posses = {};
+
+ var _processOneSpec = function(el, _spec, dontAddExisting) {
+ var posseId = _isString(_spec) ? _spec : _spec.id;
+ var active = _isString(_spec) ? true : _spec.active !== false;
+ var posse = _posses[posseId] || (function() {
+ var g = {name:posseId, members:[]};
+ _posses[posseId] = g;
+ return g;
+ })();
+ _each(el, function(_el) {
+ if (_el._katavorioDrag) {
+
+ if (dontAddExisting && _el._katavorioDrag.posseRoles[posse.name] != null) return;
+
+ _suggest(posse.members, _el._katavorioDrag);
+ _suggest(_el._katavorioDrag.posses, posse.name);
+ _el._katavorioDrag.posseRoles[posse.name] = active;
+ }
+ });
+ return posse;
+ };
+
+ /**
+ * Add the given element to the posse with the given id, creating the group if it at first does not exist.
+ * @method addToPosse
+ * @param {Element} el Element to add.
+ * @param {String...|Object...} spec Variable args parameters. Each argument can be a either a String, indicating
+ * the ID of a Posse to which the element should be added as an active participant, or an Object containing
+ * `{ id:"posseId", active:false/true}`. In the latter case, if `active` is not provided it is assumed to be
+ * true.
+ * @returns {Posse|Posse[]} The Posse(s) to which the element(s) was/were added.
+ */
+ this.addToPosse = function(el, spec) {
+
+ var posses = [];
+
+ for (var i = 1; i < arguments.length; i++) {
+ posses.push(_processOneSpec(el, arguments[i]));
+ }
+
+ return posses.length === 1 ? posses[0] : posses;
+ };
+
+ /**
+ * Sets the posse(s) for the element with the given id, creating those that do not yet exist, and removing from
+ * the element any current Posses that are not specified by this method call. This method will not change the
+ * active/passive state if it is given a posse in which the element is already a member.
+ * @method setPosse
+ * @param {Element} el Element to set posse(s) on.
+ * @param {String...|Object...} spec Variable args parameters. Each argument can be a either a String, indicating
+ * the ID of a Posse to which the element should be added as an active participant, or an Object containing
+ * `{ id:"posseId", active:false/true}`. In the latter case, if `active` is not provided it is assumed to be
+ * true.
+ * @returns {Posse|Posse[]} The Posse(s) to which the element(s) now belongs.
+ */
+ this.setPosse = function(el, spec) {
+
+ var posses = [];
+
+ for (var i = 1; i < arguments.length; i++) {
+ posses.push(_processOneSpec(el, arguments[i], true).name);
+ }
+
+ _each(el, function(_el) {
+ if (_el._katavorioDrag) {
+ var diff = _difference(_el._katavorioDrag.posses, posses);
+ var p = [];
+ Array.prototype.push.apply(p, _el._katavorioDrag.posses);
+ for (var i = 0; i < diff.length; i++) {
+ this.removeFromPosse(_el, diff[i]);
+ }
+ }
+ }.bind(this));
+
+ return posses.length === 1 ? posses[0] : posses;
+ };
+
+ /**
+ * Remove the given element from the given posse(s).
+ * @method removeFromPosse
+ * @param {Element} el Element to remove.
+ * @param {String...} posseId Varargs parameter: one value for each posse to remove the element from.
+ */
+ this.removeFromPosse = function(el, posseId) {
+ if (arguments.length < 2) throw new TypeError("No posse id provided for remove operation");
+ for(var i = 1; i < arguments.length; i++) {
+ posseId = arguments[i];
+ _each(el, function (_el) {
+ if (_el._katavorioDrag && _el._katavorioDrag.posses) {
+ var d = _el._katavorioDrag;
+ _each(posseId, function (p) {
+ _vanquish(_posses[p].members, d);
+ _vanquish(d.posses, p);
+ delete d.posseRoles[p];
+ });
+ }
+ });
+ }
+ };
+
+ /**
+ * Remove the given element from all Posses to which it belongs.
+ * @method removeFromAllPosses
+ * @param {Element|Element[]} el Element to remove from Posses.
+ */
+ this.removeFromAllPosses = function(el) {
+ _each(el, function(_el) {
+ if (_el._katavorioDrag && _el._katavorioDrag.posses) {
+ var d = _el._katavorioDrag;
+ _each(d.posses, function(p) {
+ _vanquish(_posses[p].members, d);
+ });
+ d.posses.length = 0;
+ d.posseRoles = {};
+ }
+ });
+ };
+
+ /**
+ * Changes the participation state for the element in the Posse with the given ID.
+ * @param {Element|Element[]} el Element(s) to change state for.
+ * @param {String} posseId ID of the Posse to change element state for.
+ * @param {Boolean} state True to make active, false to make passive.
+ */
+ this.setPosseState = function(el, posseId, state) {
+ var posse = _posses[posseId];
+ if (posse) {
+ _each(el, function(_el) {
+ if (_el._katavorioDrag && _el._katavorioDrag.posses) {
+ _el._katavorioDrag.posseRoles[posse.name] = state;
+ }
+ });
+ }
+ };
+
+ };
+
+ root.Katavorio.version = "1.0.0";
+
+ if (typeof exports !== "undefined") {
+ exports.Katavorio = root.Katavorio;
+ }
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+
+(function() {
+
+ var root = this;
+ root.jsPlumbUtil = root.jsPlumbUtil || {};
+ var jsPlumbUtil = root.jsPlumbUtil;
+
+ if (typeof exports !=='undefined') { exports.jsPlumbUtil = jsPlumbUtil;}
+
+
+ /**
+ * Tests if the given object is an Array.
+ * @param a
+ */
+ function isArray(a) {
+ return Object.prototype.toString.call(a) === "[object Array]";
+ }
+ jsPlumbUtil.isArray = isArray;
+ /**
+ * Tests if the given object is a Number.
+ * @param n
+ */
+ function isNumber(n) {
+ return Object.prototype.toString.call(n) === "[object Number]";
+ }
+ jsPlumbUtil.isNumber = isNumber;
+ function isString(s) {
+ return typeof s === "string";
+ }
+ jsPlumbUtil.isString = isString;
+ function isBoolean(s) {
+ return typeof s === "boolean";
+ }
+ jsPlumbUtil.isBoolean = isBoolean;
+ function isNull(s) {
+ return s == null;
+ }
+ jsPlumbUtil.isNull = isNull;
+ function isObject(o) {
+ return o == null ? false : Object.prototype.toString.call(o) === "[object Object]";
+ }
+ jsPlumbUtil.isObject = isObject;
+ function isDate(o) {
+ return Object.prototype.toString.call(o) === "[object Date]";
+ }
+ jsPlumbUtil.isDate = isDate;
+ function isFunction(o) {
+ return Object.prototype.toString.call(o) === "[object Function]";
+ }
+ jsPlumbUtil.isFunction = isFunction;
+ function isNamedFunction(o) {
+ return isFunction(o) && o.name != null && o.name.length > 0;
+ }
+ jsPlumbUtil.isNamedFunction = isNamedFunction;
+ function isEmpty(o) {
+ for (var i in o) {
+ if (o.hasOwnProperty(i)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ jsPlumbUtil.isEmpty = isEmpty;
+ function clone(a) {
+ if (isString(a)) {
+ return "" + a;
+ }
+ else if (isBoolean(a)) {
+ return !!a;
+ }
+ else if (isDate(a)) {
+ return new Date(a.getTime());
+ }
+ else if (isFunction(a)) {
+ return a;
+ }
+ else if (isArray(a)) {
+ var b = [];
+ for (var i = 0; i < a.length; i++) {
+ b.push(clone(a[i]));
+ }
+ return b;
+ }
+ else if (isObject(a)) {
+ var c = {};
+ for (var j in a) {
+ c[j] = clone(a[j]);
+ }
+ return c;
+ }
+ else {
+ return a;
+ }
+ }
+ jsPlumbUtil.clone = clone;
+ function merge(a, b, collations, overwrites) {
+ // first change the collations array - if present - into a lookup table, because its faster.
+ var cMap = {}, ar, i, oMap = {};
+ collations = collations || [];
+ overwrites = overwrites || [];
+ for (i = 0; i < collations.length; i++) {
+ cMap[collations[i]] = true;
+ }
+ for (i = 0; i < overwrites.length; i++) {
+ oMap[overwrites[i]] = true;
+ }
+ var c = clone(a);
+ for (i in b) {
+ if (c[i] == null || oMap[i]) {
+ c[i] = b[i];
+ }
+ else if (isString(b[i]) || isBoolean(b[i])) {
+ if (!cMap[i]) {
+ c[i] = b[i]; // if we dont want to collate, just copy it in.
+ }
+ else {
+ ar = [];
+ // if c's object is also an array we can keep its values.
+ ar.push.apply(ar, isArray(c[i]) ? c[i] : [c[i]]);
+ ar.push.apply(ar, isBoolean(b[i]) ? b[i] : [b[i]]);
+ c[i] = ar;
+ }
+ }
+ else {
+ if (isArray(b[i])) {
+ ar = [];
+ // if c's object is also an array we can keep its values.
+ if (isArray(c[i])) {
+ ar.push.apply(ar, c[i]);
+ }
+ ar.push.apply(ar, b[i]);
+ c[i] = ar;
+ }
+ else if (isObject(b[i])) {
+ // overwrite c's value with an object if it is not already one.
+ if (!isObject(c[i])) {
+ c[i] = {};
+ }
+ for (var j in b[i]) {
+ c[i][j] = b[i][j];
+ }
+ }
+ }
+ }
+ return c;
+ }
+ jsPlumbUtil.merge = merge;
+ function replace(inObj, path, value) {
+ if (inObj == null) {
+ return;
+ }
+ var q = inObj, t = q;
+ path.replace(/([^\.])+/g, function (term, lc, pos, str) {
+ var array = term.match(/([^\[0-9]+){1}(\[)([0-9+])/), last = pos + term.length >= str.length, _getArray = function () {
+ return t[array[1]] || (function () {
+ t[array[1]] = [];
+ return t[array[1]];
+ })();
+ };
+ if (last) {
+ // set term = value on current t, creating term as array if necessary.
+ if (array) {
+ _getArray()[array[3]] = value;
+ }
+ else {
+ t[term] = value;
+ }
+ }
+ else {
+ // set to current t[term], creating t[term] if necessary.
+ if (array) {
+ var a_1 = _getArray();
+ t = a_1[array[3]] || (function () {
+ a_1[array[3]] = {};
+ return a_1[array[3]];
+ })();
+ }
+ else {
+ t = t[term] || (function () {
+ t[term] = {};
+ return t[term];
+ })();
+ }
+ }
+ return "";
+ });
+ return inObj;
+ }
+ jsPlumbUtil.replace = replace;
+ //
+ // chain a list of functions, supplied by [ object, method name, args ], and return on the first
+ // one that returns the failValue. if none return the failValue, return the successValue.
+ //
+ function functionChain(successValue, failValue, fns) {
+ for (var i = 0; i < fns.length; i++) {
+ var o = fns[i][0][fns[i][1]].apply(fns[i][0], fns[i][2]);
+ if (o === failValue) {
+ return o;
+ }
+ }
+ return successValue;
+ }
+ jsPlumbUtil.functionChain = functionChain;
+ /**
+ *
+ * Take the given model and expand out any parameters. 'functionPrefix' is optional, and if present, helps jsplumb figure out what to do if a value is a Function.
+ * if you do not provide it (and doNotExpandFunctions is null, or false), jsplumb will run the given values through any functions it finds, and use the function's
+ * output as the value in the result. if you do provide the prefix, only functions that are named and have this prefix
+ * will be executed; other functions will be passed as values to the output.
+ *
+ * @param model
+ * @param values
+ * @param functionPrefix
+ * @param doNotExpandFunctions
+ * @returns {any}
+ */
+ function populate(model, values, functionPrefix, doNotExpandFunctions) {
+ // for a string, see if it has parameter matches, and if so, try to make the substitutions.
+ var getValue = function (fromString) {
+ var matches = fromString.match(/(\${.*?})/g);
+ if (matches != null) {
+ for (var i = 0; i < matches.length; i++) {
+ var val = values[matches[i].substring(2, matches[i].length - 1)] || "";
+ if (val != null) {
+ fromString = fromString.replace(matches[i], val);
+ }
+ }
+ }
+ return fromString;
+ };
+ // process one entry.
+ var _one = function (d) {
+ if (d != null) {
+ if (isString(d)) {
+ return getValue(d);
+ }
+ else if (isFunction(d) && !doNotExpandFunctions && (functionPrefix == null || (d.name || "").indexOf(functionPrefix) === 0)) {
+ return d(values);
+ }
+ else if (isArray(d)) {
+ var r = [];
+ for (var i = 0; i < d.length; i++) {
+ r.push(_one(d[i]));
+ }
+ return r;
+ }
+ else if (isObject(d)) {
+ var s = {};
+ for (var j in d) {
+ s[j] = _one(d[j]);
+ }
+ return s;
+ }
+ else {
+ return d;
+ }
+ }
+ };
+ return _one(model);
+ }
+ jsPlumbUtil.populate = populate;
+ /**
+ * Find the index of a given object in an array.
+ * @param a The array to search
+ * @param f The function to run on each element. Return true if the element matches.
+ * @returns {number} -1 if not found, otherwise the index in the array.
+ */
+ function findWithFunction(a, f) {
+ if (a) {
+ for (var i = 0; i < a.length; i++) {
+ if (f(a[i])) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+ jsPlumbUtil.findWithFunction = findWithFunction;
+ /**
+ * Remove some element from an array by matching each element in the array against some predicate function. Note that this
+ * is an in-place removal; the array is altered.
+ * @param a The array to search
+ * @param f The function to run on each element. Return true if the element matches.
+ * @returns {boolean} true if removed, false otherwise.
+ */
+ function removeWithFunction(a, f) {
+ var idx = findWithFunction(a, f);
+ if (idx > -1) {
+ a.splice(idx, 1);
+ }
+ return idx !== -1;
+ }
+ jsPlumbUtil.removeWithFunction = removeWithFunction;
+ /**
+ * Remove some element from an array by simple lookup in the array for the given element. Note that this
+ * is an in-place removal; the array is altered.
+ * @param l The array to search
+ * @param v The value to remove.
+ * @returns {boolean} true if removed, false otherwise.
+ */
+ function remove(l, v) {
+ var idx = l.indexOf(v);
+ if (idx > -1) {
+ l.splice(idx, 1);
+ }
+ return idx !== -1;
+ }
+ jsPlumbUtil.remove = remove;
+ /**
+ * Add some element to the given array, unless it is determined that it is already in the array.
+ * @param list The array to add the element to.
+ * @param item The item to add.
+ * @param hashFunction A function to use to determine if the given item already exists in the array.
+ */
+ function addWithFunction(list, item, hashFunction) {
+ if (findWithFunction(list, hashFunction) === -1) {
+ list.push(item);
+ }
+ }
+ jsPlumbUtil.addWithFunction = addWithFunction;
+ /**
+ * Add some element to a list that is contained in a map of lists.
+ * @param map The map of [ key -> list ] entries
+ * @param key The name of the list to insert into
+ * @param value The value to insert
+ * @param insertAtStart Whether or not to insert at the start; defaults to false.
+ */
+ function addToList(map, key, value, insertAtStart) {
+ var l = map[key];
+ if (l == null) {
+ l = [];
+ map[key] = l;
+ }
+ l[insertAtStart ? "unshift" : "push"](value);
+ return l;
+ }
+ jsPlumbUtil.addToList = addToList;
+ /**
+ * Add an item to a list, unless it is already in the list. The test for pre-existence is a simple list lookup.
+ * If you want to do something more complex, perhaps #addWithFunction might help.
+ * @param list List to add the item to
+ * @param item Item to add
+ * @param insertAtHead Whether or not to insert at the start; defaults to false.
+ */
+ function suggest(list, item, insertAtHead) {
+ if (list.indexOf(item) === -1) {
+ if (insertAtHead) {
+ list.unshift(item);
+ }
+ else {
+ list.push(item);
+ }
+ return true;
+ }
+ return false;
+ }
+ jsPlumbUtil.suggest = suggest;
+ /**
+ * Extends the given obj (which can be an array) with the given constructor function, prototype functions, and class members, any of which may be null.
+ * @param child
+ * @param parent
+ * @param _protoFn
+ */
+ function extend(child, parent, _protoFn) {
+ var i;
+ parent = isArray(parent) ? parent : [parent];
+ var _copyProtoChain = function (focus) {
+ var proto = focus.__proto__;
+ while (proto != null) {
+ if (proto.prototype != null) {
+ for (var j in proto.prototype) {
+ if (proto.prototype.hasOwnProperty(j) && !child.prototype.hasOwnProperty(j)) {
+ child.prototype[j] = proto.prototype[j];
+ }
+ }
+ proto = proto.prototype.__proto__;
+ }
+ else {
+ proto = null;
+ }
+ }
+ };
+ for (i = 0; i < parent.length; i++) {
+ for (var j in parent[i].prototype) {
+ if (parent[i].prototype.hasOwnProperty(j) && !child.prototype.hasOwnProperty(j)) {
+ child.prototype[j] = parent[i].prototype[j];
+ }
+ }
+ _copyProtoChain(parent[i]);
+ }
+ var _makeFn = function (name, protoFn) {
+ return function () {
+ for (i = 0; i < parent.length; i++) {
+ if (parent[i].prototype[name]) {
+ parent[i].prototype[name].apply(this, arguments);
+ }
+ }
+ return protoFn.apply(this, arguments);
+ };
+ };
+ var _oneSet = function (fns) {
+ for (var k in fns) {
+ child.prototype[k] = _makeFn(k, fns[k]);
+ }
+ };
+ if (arguments.length > 2) {
+ for (i = 2; i < arguments.length; i++) {
+ _oneSet(arguments[i]);
+ }
+ }
+ return child;
+ }
+ jsPlumbUtil.extend = extend;
+ /**
+ * Generate a UUID.
+ */
+ function uuid() {
+ return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ }));
+ }
+ jsPlumbUtil.uuid = uuid;
+ /**
+ * Trim a string.
+ * @param s String to trim
+ * @returns the String with leading and trailing whitespace removed.
+ */
+ function fastTrim(s) {
+ if (s == null) {
+ return null;
+ }
+ var str = s.replace(/^\s\s*/, ''), ws = /\s/, i = str.length;
+ while (ws.test(str.charAt(--i))) {
+ }
+ return str.slice(0, i + 1);
+ }
+ jsPlumbUtil.fastTrim = fastTrim;
+ function each(obj, fn) {
+ obj = obj.length == null || typeof obj === "string" ? [obj] : obj;
+ for (var i = 0; i < obj.length; i++) {
+ fn(obj[i]);
+ }
+ }
+ jsPlumbUtil.each = each;
+ function map(obj, fn) {
+ var o = [];
+ for (var i = 0; i < obj.length; i++) {
+ o.push(fn(obj[i]));
+ }
+ return o;
+ }
+ jsPlumbUtil.map = map;
+ function mergeWithParents(type, map, parentAttribute) {
+ parentAttribute = parentAttribute || "parent";
+ var _def = function (id) {
+ return id ? map[id] : null;
+ };
+ var _parent = function (def) {
+ return def ? _def(def[parentAttribute]) : null;
+ };
+ var _one = function (parent, def) {
+ if (parent == null) {
+ return def;
+ }
+ else {
+ var overrides = ["anchor", "anchors", "cssClass", "connector", "paintStyle", "hoverPaintStyle", "endpoint", "endpoints"];
+ if (def.mergeStrategy === "override") {
+ Array.prototype.push.apply(overrides, ["events", "overlays"]);
+ }
+ var d_1 = merge(parent, def, [], overrides);
+ return _one(_parent(parent), d_1);
+ }
+ };
+ var _getDef = function (t) {
+ if (t == null) {
+ return {};
+ }
+ if (typeof t === "string") {
+ return _def(t);
+ }
+ else if (t.length) {
+ var done = false, i = 0, _dd = void 0;
+ while (!done && i < t.length) {
+ _dd = _getDef(t[i]);
+ if (_dd) {
+ done = true;
+ }
+ else {
+ i++;
+ }
+ }
+ return _dd;
+ }
+ };
+ var d = _getDef(type);
+ if (d) {
+ return _one(_parent(d), d);
+ }
+ else {
+ return {};
+ }
+ }
+ jsPlumbUtil.mergeWithParents = mergeWithParents;
+ jsPlumbUtil.logEnabled = true;
+ function log() {
+ var args = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ args[_i] = arguments[_i];
+ }
+ if (jsPlumbUtil.logEnabled && typeof console !== "undefined") {
+ try {
+ var msg = arguments[arguments.length - 1];
+ console.log(msg);
+ }
+ catch (e) {
+ }
+ }
+ }
+ jsPlumbUtil.log = log;
+ /**
+ * Wraps one function with another, creating a placeholder for the
+ * wrapped function if it was null. this is used to wrap the various
+ * drag/drop event functions - to allow jsPlumb to be notified of
+ * important lifecycle events without imposing itself on the user's
+ * drag/drop functionality.
+ * @method jsPlumbUtil.wrap
+ * @param {Function} wrappedFunction original function to wrap; may be null.
+ * @param {Function} newFunction function to wrap the original with.
+ * @param {Object} [returnOnThisValue] Optional. Indicates that the wrappedFunction should
+ * not be executed if the newFunction returns a value matching 'returnOnThisValue'.
+ * note that this is a simple comparison and only works for primitives right now.
+ */
+ function wrap(wrappedFunction, newFunction, returnOnThisValue) {
+ return function () {
+ var r = null;
+ try {
+ if (newFunction != null) {
+ r = newFunction.apply(this, arguments);
+ }
+ }
+ catch (e) {
+ log("jsPlumb function failed : " + e);
+ }
+ if ((wrappedFunction != null) && (returnOnThisValue == null || (r !== returnOnThisValue))) {
+ try {
+ r = wrappedFunction.apply(this, arguments);
+ }
+ catch (e) {
+ log("wrapped function failed : " + e);
+ }
+ }
+ return r;
+ };
+ }
+ jsPlumbUtil.wrap = wrap;
+ var EventGenerator = /** @class */ (function () {
+ function EventGenerator() {
+ var _this = this;
+ this._listeners = {};
+ this.eventsSuspended = false;
+ this.tick = false;
+ // this is a list of events that should re-throw any errors that occur during their dispatch.
+ this.eventsToDieOn = { "ready": true };
+ this.queue = [];
+ this.bind = function (event, listener, insertAtStart) {
+ var _one = function (evt) {
+ addToList(_this._listeners, evt, listener, insertAtStart);
+ listener.__jsPlumb = listener.__jsPlumb || {};
+ listener.__jsPlumb[uuid()] = evt;
+ };
+ if (typeof event === "string") {
+ _one(event);
+ }
+ else if (event.length != null) {
+ for (var i = 0; i < event.length; i++) {
+ _one(event[i]);
+ }
+ }
+ return _this;
+ };
+ this.fire = function (event, value, originalEvent) {
+ if (!this.tick) {
+ this.tick = true;
+ if (!this.eventsSuspended && this._listeners[event]) {
+ var l = this._listeners[event].length, i = 0, _gone = false, ret = null;
+ if (!this.shouldFireEvent || this.shouldFireEvent(event, value, originalEvent)) {
+ while (!_gone && i < l && ret !== false) {
+ // doing it this way rather than catching and then possibly re-throwing means that an error propagated by this
+ // method will have the whole call stack available in the debugger.
+ if (this.eventsToDieOn[event]) {
+ this._listeners[event][i].apply(this, [value, originalEvent]);
+ }
+ else {
+ try {
+ ret = this._listeners[event][i].apply(this, [value, originalEvent]);
+ }
+ catch (e) {
+ log("jsPlumb: fire failed for event " + event + " : " + e);
+ }
+ }
+ i++;
+ if (this._listeners == null || this._listeners[event] == null) {
+ _gone = true;
+ }
+ }
+ }
+ }
+ this.tick = false;
+ this._drain();
+ }
+ else {
+ this.queue.unshift(arguments);
+ }
+ return this;
+ };
+ this._drain = function () {
+ var n = _this.queue.pop();
+ if (n) {
+ _this.fire.apply(_this, n);
+ }
+ };
+ this.unbind = function (eventOrListener, listener) {
+ if (arguments.length === 0) {
+ this._listeners = {};
+ }
+ else if (arguments.length === 1) {
+ if (typeof eventOrListener === "string") {
+ delete this._listeners[eventOrListener];
+ }
+ else if (eventOrListener.__jsPlumb) {
+ var evt = void 0;
+ for (var i in eventOrListener.__jsPlumb) {
+ evt = eventOrListener.__jsPlumb[i];
+ remove(this._listeners[evt] || [], eventOrListener);
+ }
+ }
+ }
+ else if (arguments.length === 2) {
+ remove(this._listeners[eventOrListener] || [], listener);
+ }
+ return this;
+ };
+ this.getListener = function (forEvent) {
+ return _this._listeners[forEvent];
+ };
+ this.setSuspendEvents = function (val) {
+ _this.eventsSuspended = val;
+ };
+ this.isSuspendEvents = function () {
+ return _this.eventsSuspended;
+ };
+ this.silently = function (fn) {
+ _this.setSuspendEvents(true);
+ try {
+ fn();
+ }
+ catch (e) {
+ log("Cannot execute silent function " + e);
+ }
+ _this.setSuspendEvents(false);
+ };
+ this.cleanupListeners = function () {
+ for (var i in _this._listeners) {
+ _this._listeners[i] = null;
+ }
+ };
+ }
+ return EventGenerator;
+ }());
+ jsPlumbUtil.EventGenerator = EventGenerator;
+
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains utility functions that run in browsers only.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;(function() {
+
+ "use strict";
+
+ var root = this;
+
+ root.jsPlumbUtil.matchesSelector = function(el, selector, ctx) {
+ ctx = ctx || el.parentNode;
+ var possibles = ctx.querySelectorAll(selector);
+ for (var i = 0; i < possibles.length; i++) {
+ if (possibles[i] === el) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ root.jsPlumbUtil.consume = function(e, doNotPreventDefault) {
+ if (e.stopPropagation) {
+ e.stopPropagation();
+ }
+ else {
+ e.returnValue = false;
+ }
+
+ if (!doNotPreventDefault && e.preventDefault){
+ e.preventDefault();
+ }
+ };
+
+ /*
+ * Function: sizeElement
+ * Helper to size and position an element. You would typically use
+ * this when writing your own Connector or Endpoint implementation.
+ *
+ * Parameters:
+ * x - [int] x position for the element origin
+ * y - [int] y position for the element origin
+ * w - [int] width of the element
+ * h - [int] height of the element
+ *
+ */
+ root.jsPlumbUtil.sizeElement = function(el, x, y, w, h) {
+ if (el) {
+ el.style.height = h + "px";
+ el.height = h;
+ el.style.width = w + "px";
+ el.width = w;
+ el.style.left = x + "px";
+ el.style.top = y + "px";
+ }
+ };
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+;(function() {
+
+ var DEFAULT_OPTIONS = {
+ deriveAnchor:function(edge, index, ep, conn) {
+ return {
+ top:["TopRight", "TopLeft"],
+ bottom:["BottomRight", "BottomLeft"]
+ }[edge][index];
+ }
+ };
+
+ var root = this;
+
+ var ListManager = function(jsPlumbInstance) {
+
+ this.count = 0;
+ this.instance = jsPlumbInstance;
+ this.lists = {};
+
+ this.instance.addList = function(el, options) {
+ return this.listManager.addList(el, options);
+ };
+
+ this.instance.removeList = function(el) {
+ this.listManager.removeList(el);
+ };
+
+ this.instance.bind("manageElement", function(p) {
+
+ //look for [jtk-scrollable-list] elements and attach scroll listeners if necessary
+ var scrollableLists = this.instance.getSelector(p.el, "[jtk-scrollable-list]");
+ for (var i = 0; i < scrollableLists.length; i++) {
+ this.addList(scrollableLists[i]);
+ }
+
+ }.bind(this));
+
+ this.instance.bind("unmanageElement", function(p) {
+ this.removeList(p.el);
+ });
+
+
+ this.instance.bind("connection", function(c, evt) {
+ if (evt == null) {
+ // not added by mouse. look for an ancestor of the source and/or target element that is a scrollable list, and run
+ // its scroll method.
+ this._maybeUpdateParentList(c.source);
+ this._maybeUpdateParentList(c.target);
+ }
+ }.bind(this));
+ };
+
+ root.jsPlumbListManager = ListManager;
+
+ ListManager.prototype = {
+
+ addList : function(el, options) {
+ var dp = this.instance.extend({}, DEFAULT_OPTIONS);
+ options = this.instance.extend(dp, options || {});
+ var id = [this.instance.getInstanceIndex(), this.count++].join("_");
+ this.lists[id] = new List(this.instance, el, options, id);
+ },
+
+ removeList:function(el) {
+ var list = this.lists[el._jsPlumbList];
+ if (list) {
+ list.destroy();
+ delete this.lists[el._jsPlumbList];
+ }
+ },
+
+ _maybeUpdateParentList:function (el) {
+ var parent = el.parentNode, container = this.instance.getContainer();
+ while(parent != null && parent !== container) {
+ if (parent._jsPlumbList != null && this.lists[parent._jsPlumbList] != null) {
+ parent._jsPlumbScrollHandler();
+ return
+ }
+ parent = parent.parentNode;
+ }
+ }
+
+
+ };
+
+ var List = function(instance, el, options, id) {
+
+ el["_jsPlumbList"] = id;
+
+ //
+ // Derive an anchor to use for the current situation. In contrast to the way we derive an endpoint, here we use `anchor` from the options, if present, as
+ // our first choice, and then `deriveAnchor` as our next choice. There is a default `deriveAnchor` implementation that uses TopRight/TopLeft for top and
+ // BottomRight/BottomLeft for bottom.
+ //
+ // edge - "top" or "bottom"
+ // index - 0 when endpoint is connection source, 1 when endpoint is connection target
+ // ep - the endpoint that is being proxied
+ // conn - the connection that is being proxied
+ //
+ function deriveAnchor(edge, index, ep, conn) {
+ return options.anchor ? options.anchor : options.deriveAnchor(edge, index, ep, conn);
+ }
+
+ //
+ // Derive an endpoint to use for the current situation. We'll use a `deriveEndpoint` function passed in to the options as our first choice,
+ // followed by `endpoint` (an endpoint spec) from the options, and failing either of those we just use the `type` of the endpoint that is being proxied.
+ //
+ // edge - "top" or "bottom"
+ // index - 0 when endpoint is connection source, 1 when endpoint is connection target
+ // endpoint - the endpoint that is being proxied
+ // connection - the connection that is being proxied
+ //
+ function deriveEndpoint(edge, index, ep, conn) {
+ return options.deriveEndpoint ? options.deriveEndpoint(edge, index, ep, conn) : options.endpoint ? options.endpoint : ep.type;
+ }
+
+ //
+ // look for a parent of the given scrollable list that is draggable, and then update the child offsets for it. this should not
+ // be necessary in the delegated drag stuff from the upcoming 3.0.0 release.
+ //
+ function _maybeUpdateDraggable(el) {
+ var parent = el.parentNode, container = instance.getContainer();
+ while(parent != null && parent !== container) {
+ if (instance.hasClass(parent, "jtk-managed")) {
+ instance.recalculateOffsets(parent);
+ return
+ }
+ parent = parent.parentNode;
+ }
+ }
+
+ var scrollHandler = function(e) {
+
+ var children = instance.getSelector(el, ".jtk-managed");
+ var elId = instance.getId(el);
+
+ for (var i = 0; i < children.length; i++) {
+
+ if (children[i].offsetTop < el.scrollTop) {
+ if (!children[i]._jsPlumbProxies) {
+ children[i]._jsPlumbProxies = children[i]._jsPlumbProxies || [];
+ instance.select({source: children[i]}).each(function (c) {
+
+
+ instance.proxyConnection(c, 0, el, elId, function () {
+ return deriveEndpoint("top", 0, c.endpoints[0], c);
+ }, function () {
+ return deriveAnchor("top", 0, c.endpoints[0], c);
+ });
+ children[i]._jsPlumbProxies.push([c, 0]);
+ });
+
+ instance.select({target: children[i]}).each(function (c) {
+ instance.proxyConnection(c, 1, el, elId, function () {
+ return deriveEndpoint("top", 1, c.endpoints[1], c);
+ }, function () {
+ return deriveAnchor("top", 1, c.endpoints[1], c);
+ });
+ children[i]._jsPlumbProxies.push([c, 1]);
+ });
+ }
+ }
+ //
+ else if (children[i].offsetTop > el.scrollTop + el.offsetHeight) {
+ if (!children[i]._jsPlumbProxies) {
+ children[i]._jsPlumbProxies = children[i]._jsPlumbProxies || [];
+
+ instance.select({source: children[i]}).each(function (c) {
+ instance.proxyConnection(c, 0, el, elId, function () {
+ return deriveEndpoint("bottom", 0, c.endpoints[0], c);
+ }, function () {
+ return deriveAnchor("bottom", 0, c.endpoints[0], c);
+ });
+ children[i]._jsPlumbProxies.push([c, 0]);
+ });
+
+ instance.select({target: children[i]}).each(function (c) {
+ instance.proxyConnection(c, 1, el, elId, function () {
+ return deriveEndpoint("bottom", 1, c.endpoints[1], c);
+ }, function () {
+ return deriveAnchor("bottom", 1, c.endpoints[1], c);
+ });
+ children[i]._jsPlumbProxies.push([c, 1]);
+ });
+ }
+ } else if (children[i]._jsPlumbProxies) {
+ for (var j = 0; j < children[i]._jsPlumbProxies.length; j++) {
+ instance.unproxyConnection(children[i]._jsPlumbProxies[j][0], children[i]._jsPlumbProxies[j][1], elId);
+ }
+
+ delete children[i]._jsPlumbProxies;
+ }
+
+ instance.revalidate(children[i]);
+ }
+
+ _maybeUpdateDraggable(el);
+ };
+
+ instance.setAttribute(el, "jtk-scrollable-list", "true");
+ el._jsPlumbScrollHandler = scrollHandler;
+ instance.on(el, "scroll", scrollHandler);
+ scrollHandler(); // run it once; there may be connections already.
+
+ this.destroy = function() {
+ instance.off(el, "scroll", scrollHandler);
+ delete el._jsPlumbScrollHandler;
+
+ var children = instance.getSelector(el, ".jtk-managed");
+ var elId = instance.getId(el);
+
+ for (var i = 0; i < children.length; i++) {
+ if (children[i]._jsPlumbProxies) {
+ for (var j = 0; j < children[i]._jsPlumbProxies.length; j++) {
+ instance.unproxyConnection(children[i]._jsPlumbProxies[j][0], children[i]._jsPlumbProxies[j][1], elId);
+ }
+
+ delete children[i]._jsPlumbProxies;
+ }
+ }
+ };
+ };
+
+
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains the core code.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;(function () {
+
+ "use strict";
+
+ var root = this;
+
+ var _ju = root.jsPlumbUtil,
+
+ /**
+ * creates a timestamp, using milliseconds since 1970, but as a string.
+ */
+ _timestamp = function () {
+ return "" + (new Date()).getTime();
+ },
+
+ // helper method to update the hover style whenever it, or paintStyle, changes.
+ // we use paintStyle as the foundation and merge hoverPaintStyle over the
+ // top.
+ _updateHoverStyle = function (component) {
+ if (component._jsPlumb.paintStyle && component._jsPlumb.hoverPaintStyle) {
+ var mergedHoverStyle = {};
+ jsPlumb.extend(mergedHoverStyle, component._jsPlumb.paintStyle);
+ jsPlumb.extend(mergedHoverStyle, component._jsPlumb.hoverPaintStyle);
+ delete component._jsPlumb.hoverPaintStyle;
+ // we want the fill of paintStyle to override a gradient, if possible.
+ if (mergedHoverStyle.gradient && component._jsPlumb.paintStyle.fill) {
+ delete mergedHoverStyle.gradient;
+ }
+ component._jsPlumb.hoverPaintStyle = mergedHoverStyle;
+ }
+ },
+ events = ["tap", "dbltap", "click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "contextmenu" ],
+ eventFilters = { "mouseout": "mouseleave", "mouseexit": "mouseleave" },
+ _updateAttachedElements = function (component, state, timestamp, sourceElement) {
+ var affectedElements = component.getAttachedElements();
+ if (affectedElements) {
+ for (var i = 0, j = affectedElements.length; i < j; i++) {
+ if (!sourceElement || sourceElement !== affectedElements[i]) {
+ affectedElements[i].setHover(state, true, timestamp); // tell the attached elements not to inform their own attached elements.
+ }
+ }
+ }
+ },
+ _splitType = function (t) {
+ return t == null ? null : t.split(" ");
+ },
+ _mapType = function(map, obj, typeId) {
+ for (var i in obj) {
+ map[i] = typeId;
+ }
+ },
+ _each = function(fn, obj) {
+ obj = _ju.isArray(obj) || (obj.length != null && !_ju.isString(obj)) ? obj : [ obj ];
+ for (var i = 0; i < obj.length; i++) {
+ try {
+ fn.apply(obj[i], [ obj[i] ]);
+ }
+ catch (e) {
+ _ju.log(".each iteration failed : " + e);
+ }
+ }
+ },
+ _applyTypes = function (component, params, doNotRepaint) {
+ if (component.getDefaultType) {
+ var td = component.getTypeDescriptor(), map = {};
+ var defType = component.getDefaultType();
+ var o = _ju.merge({}, defType);
+ _mapType(map, defType, "__default");
+ for (var i = 0, j = component._jsPlumb.types.length; i < j; i++) {
+ var tid = component._jsPlumb.types[i];
+ if (tid !== "__default") {
+ var _t = component._jsPlumb.instance.getType(tid, td);
+ if (_t != null) {
+
+ var overrides = ["anchor", "anchors", "connector", "paintStyle", "hoverPaintStyle", "endpoint", "endpoints", "connectorOverlays", "connectorStyle", "connectorHoverStyle", "endpointStyle", "endpointHoverStyle"];
+ var collations = [ ];
+
+ if (_t.mergeStrategy === "override") {
+ Array.prototype.push.apply(overrides, ["events", "overlays", "cssClass"]);
+ } else {
+ collations.push("cssClass");
+ }
+
+ o = _ju.merge(o, _t, collations, overrides);
+ _mapType(map, _t, tid);
+ }
+ }
+ }
+
+ if (params) {
+ o = _ju.populate(o, params, "_");
+ }
+
+ component.applyType(o, doNotRepaint, map);
+ if (!doNotRepaint) {
+ component.repaint();
+ }
+ }
+ },
+
+// ------------------------------ BEGIN jsPlumbUIComponent --------------------------------------------
+
+ jsPlumbUIComponent = root.jsPlumbUIComponent = function (params) {
+
+ _ju.EventGenerator.apply(this, arguments);
+
+ var self = this,
+ a = arguments,
+ idPrefix = self.idPrefix,
+ id = idPrefix + (new Date()).getTime();
+
+ this._jsPlumb = {
+ instance: params._jsPlumb,
+ parameters: params.parameters || {},
+ paintStyle: null,
+ hoverPaintStyle: null,
+ paintStyleInUse: null,
+ hover: false,
+ beforeDetach: params.beforeDetach,
+ beforeDrop: params.beforeDrop,
+ overlayPlacements: [],
+ hoverClass: params.hoverClass || params._jsPlumb.Defaults.HoverClass,
+ types: [],
+ typeCache:{}
+ };
+
+ this.cacheTypeItem = function(key, item, typeId) {
+ this._jsPlumb.typeCache[typeId] = this._jsPlumb.typeCache[typeId] || {};
+ this._jsPlumb.typeCache[typeId][key] = item;
+ };
+ this.getCachedTypeItem = function(key, typeId) {
+ return this._jsPlumb.typeCache[typeId] ? this._jsPlumb.typeCache[typeId][key] : null;
+ };
+
+ this.getId = function () {
+ return id;
+ };
+
+// ----------------------------- default type --------------------------------------------
+
+
+ var o = params.overlays || [], oo = {};
+ if (this.defaultOverlayKeys) {
+ for (var i = 0; i < this.defaultOverlayKeys.length; i++) {
+ Array.prototype.push.apply(o, this._jsPlumb.instance.Defaults[this.defaultOverlayKeys[i]] || []);
+ }
+
+ for (i = 0; i < o.length; i++) {
+ // if a string, convert to object representation so that we can store the typeid on it.
+ // also assign an id.
+ var fo = jsPlumb.convertToFullOverlaySpec(o[i]);
+ oo[fo[1].id] = fo;
+ }
+ }
+
+ var _defaultType = {
+ overlays:oo,
+ parameters: params.parameters || {},
+ scope: params.scope || this._jsPlumb.instance.getDefaultScope()
+ };
+ this.getDefaultType = function() {
+ return _defaultType;
+ };
+ this.appendToDefaultType = function(obj) {
+ for (var i in obj) {
+ _defaultType[i] = obj[i];
+ }
+ };
+
+// ----------------------------- end default type --------------------------------------------
+
+ // all components can generate events
+
+ if (params.events) {
+ for (var evtName in params.events) {
+ self.bind(evtName, params.events[evtName]);
+ }
+ }
+
+ // all components get this clone function.
+ // TODO issue 116 showed a problem with this - it seems 'a' that is in
+ // the clone function's scope is shared by all invocations of it, the classic
+ // JS closure problem. for now, jsPlumb does a version of this inline where
+ // it used to call clone. but it would be nice to find some time to look
+ // further at this.
+ this.clone = function () {
+ var o = Object.create(this.constructor.prototype);
+ this.constructor.apply(o, a);
+ return o;
+ }.bind(this);
+
+ // user can supply a beforeDetach callback, which will be executed before a detach
+ // is performed; returning false prevents the detach.
+ this.isDetachAllowed = function (connection) {
+ var r = true;
+ if (this._jsPlumb.beforeDetach) {
+ try {
+ r = this._jsPlumb.beforeDetach(connection);
+ }
+ catch (e) {
+ _ju.log("jsPlumb: beforeDetach callback failed", e);
+ }
+ }
+ return r;
+ };
+
+ // user can supply a beforeDrop callback, which will be executed before a dropped
+ // connection is confirmed. user can return false to reject connection.
+ this.isDropAllowed = function (sourceId, targetId, scope, connection, dropEndpoint, source, target) {
+ var r = this._jsPlumb.instance.checkCondition("beforeDrop", {
+ sourceId: sourceId,
+ targetId: targetId,
+ scope: scope,
+ connection: connection,
+ dropEndpoint: dropEndpoint,
+ source: source, target: target
+ });
+ if (this._jsPlumb.beforeDrop) {
+ try {
+ r = this._jsPlumb.beforeDrop({
+ sourceId: sourceId,
+ targetId: targetId,
+ scope: scope,
+ connection: connection,
+ dropEndpoint: dropEndpoint,
+ source: source, target: target
+ });
+ }
+ catch (e) {
+ _ju.log("jsPlumb: beforeDrop callback failed", e);
+ }
+ }
+ return r;
+ };
+
+ var domListeners = [];
+
+ // sets the component associated with listener events. for instance, an overlay delegates
+ // its events back to a connector. but if the connector is swapped on the underlying connection,
+ // then this component must be changed. This is called by setConnector in the Connection class.
+ this.setListenerComponent = function (c) {
+ for (var i = 0; i < domListeners.length; i++) {
+ domListeners[i][3] = c;
+ }
+ };
+
+
+ };
+
+ var _removeTypeCssHelper = function (component, typeIndex) {
+ var typeId = component._jsPlumb.types[typeIndex],
+ type = component._jsPlumb.instance.getType(typeId, component.getTypeDescriptor());
+
+ if (type != null && type.cssClass && component.canvas) {
+ component._jsPlumb.instance.removeClass(component.canvas, type.cssClass);
+ }
+ };
+
+ _ju.extend(root.jsPlumbUIComponent, _ju.EventGenerator, {
+
+ getParameter: function (name) {
+ return this._jsPlumb.parameters[name];
+ },
+
+ setParameter: function (name, value) {
+ this._jsPlumb.parameters[name] = value;
+ },
+
+ getParameters: function () {
+ return this._jsPlumb.parameters;
+ },
+
+ setParameters: function (p) {
+ this._jsPlumb.parameters = p;
+ },
+
+ getClass:function() {
+ return jsPlumb.getClass(this.canvas);
+ },
+
+ hasClass:function(clazz) {
+ return jsPlumb.hasClass(this.canvas, clazz);
+ },
+
+ addClass: function (clazz) {
+ jsPlumb.addClass(this.canvas, clazz);
+ },
+
+ removeClass: function (clazz) {
+ jsPlumb.removeClass(this.canvas, clazz);
+ },
+
+ updateClasses: function (classesToAdd, classesToRemove) {
+ jsPlumb.updateClasses(this.canvas, classesToAdd, classesToRemove);
+ },
+
+ setType: function (typeId, params, doNotRepaint) {
+ this.clearTypes();
+ this._jsPlumb.types = _splitType(typeId) || [];
+ _applyTypes(this, params, doNotRepaint);
+ },
+
+ getType: function () {
+ return this._jsPlumb.types;
+ },
+
+ reapplyTypes: function (params, doNotRepaint) {
+ _applyTypes(this, params, doNotRepaint);
+ },
+
+ hasType: function (typeId) {
+ return this._jsPlumb.types.indexOf(typeId) !== -1;
+ },
+
+ addType: function (typeId, params, doNotRepaint) {
+ var t = _splitType(typeId), _cont = false;
+ if (t != null) {
+ for (var i = 0, j = t.length; i < j; i++) {
+ if (!this.hasType(t[i])) {
+ this._jsPlumb.types.push(t[i]);
+ _cont = true;
+ }
+ }
+ if (_cont) {
+ _applyTypes(this, params, doNotRepaint);
+ }
+ }
+ },
+
+ removeType: function (typeId, params, doNotRepaint) {
+ var t = _splitType(typeId), _cont = false, _one = function (tt) {
+ var idx = this._jsPlumb.types.indexOf(tt);
+ if (idx !== -1) {
+ // remove css class if necessary
+ _removeTypeCssHelper(this, idx);
+ this._jsPlumb.types.splice(idx, 1);
+ return true;
+ }
+ return false;
+ }.bind(this);
+
+ if (t != null) {
+ for (var i = 0, j = t.length; i < j; i++) {
+ _cont = _one(t[i]) || _cont;
+ }
+ if (_cont) {
+ _applyTypes(this, params, doNotRepaint);
+ }
+ }
+ },
+ clearTypes: function (params, doNotRepaint) {
+ var i = this._jsPlumb.types.length;
+ for (var j = 0; j < i; j++) {
+ _removeTypeCssHelper(this, 0);
+ this._jsPlumb.types.splice(0, 1);
+ }
+ _applyTypes(this, params, doNotRepaint);
+ },
+
+ toggleType: function (typeId, params, doNotRepaint) {
+ var t = _splitType(typeId);
+ if (t != null) {
+ for (var i = 0, j = t.length; i < j; i++) {
+ var idx = this._jsPlumb.types.indexOf(t[i]);
+ if (idx !== -1) {
+ _removeTypeCssHelper(this, idx);
+ this._jsPlumb.types.splice(idx, 1);
+ }
+ else {
+ this._jsPlumb.types.push(t[i]);
+ }
+ }
+
+ _applyTypes(this, params, doNotRepaint);
+ }
+ },
+ applyType: function (t, doNotRepaint) {
+ this.setPaintStyle(t.paintStyle, doNotRepaint);
+ this.setHoverPaintStyle(t.hoverPaintStyle, doNotRepaint);
+ if (t.parameters) {
+ for (var i in t.parameters) {
+ this.setParameter(i, t.parameters[i]);
+ }
+ }
+ this._jsPlumb.paintStyleInUse = this.getPaintStyle();
+ },
+ setPaintStyle: function (style, doNotRepaint) {
+ // this._jsPlumb.paintStyle = jsPlumb.extend({}, style);
+ // TODO figure out if we want components to clone paintStyle so as not to share it.
+ this._jsPlumb.paintStyle = style;
+ this._jsPlumb.paintStyleInUse = this._jsPlumb.paintStyle;
+ _updateHoverStyle(this);
+ if (!doNotRepaint) {
+ this.repaint();
+ }
+ },
+ getPaintStyle: function () {
+ return this._jsPlumb.paintStyle;
+ },
+ setHoverPaintStyle: function (style, doNotRepaint) {
+ //this._jsPlumb.hoverPaintStyle = jsPlumb.extend({}, style);
+ // TODO figure out if we want components to clone paintStyle so as not to share it.
+ this._jsPlumb.hoverPaintStyle = style;
+ _updateHoverStyle(this);
+ if (!doNotRepaint) {
+ this.repaint();
+ }
+ },
+ getHoverPaintStyle: function () {
+ return this._jsPlumb.hoverPaintStyle;
+ },
+ destroy: function (force) {
+ if (force || this.typeId == null) {
+ this.cleanupListeners(); // this is on EventGenerator
+ this.clone = null;
+ this._jsPlumb = null;
+ }
+ },
+
+ isHover: function () {
+ return this._jsPlumb.hover;
+ },
+
+ setHover: function (hover, ignoreAttachedElements, timestamp) {
+ // while dragging, we ignore these events. this keeps the UI from flashing and
+ // swishing and whatevering.
+ if (this._jsPlumb && !this._jsPlumb.instance.currentlyDragging && !this._jsPlumb.instance.isHoverSuspended()) {
+
+ this._jsPlumb.hover = hover;
+ var method = hover ? "addClass" : "removeClass";
+
+ if (this.canvas != null) {
+ if (this._jsPlumb.instance.hoverClass != null) {
+ this._jsPlumb.instance[method](this.canvas, this._jsPlumb.instance.hoverClass);
+ }
+ if (this._jsPlumb.hoverClass != null) {
+ this._jsPlumb.instance[method](this.canvas, this._jsPlumb.hoverClass);
+ }
+ }
+ if (this._jsPlumb.hoverPaintStyle != null) {
+ this._jsPlumb.paintStyleInUse = hover ? this._jsPlumb.hoverPaintStyle : this._jsPlumb.paintStyle;
+ if (!this._jsPlumb.instance.isSuspendDrawing()) {
+ timestamp = timestamp || _timestamp();
+ this.repaint({timestamp: timestamp, recalc: false});
+ }
+ }
+ // get the list of other affected elements, if supported by this component.
+ // for a connection, its the endpoints. for an endpoint, its the connections! surprise.
+ if (this.getAttachedElements && !ignoreAttachedElements) {
+ _updateAttachedElements(this, hover, _timestamp(), this);
+ }
+ }
+ }
+ });
+
+// ------------------------------ END jsPlumbUIComponent --------------------------------------------
+
+ var _jsPlumbInstanceIndex = 0,
+ getInstanceIndex = function () {
+ var i = _jsPlumbInstanceIndex + 1;
+ _jsPlumbInstanceIndex++;
+ return i;
+ };
+
+ var jsPlumbInstance = root.jsPlumbInstance = function (_defaults) {
+
+ this.version = "2.12.6";
+
+ this.Defaults = {
+ Anchor: "Bottom",
+ Anchors: [ null, null ],
+ ConnectionsDetachable: true,
+ ConnectionOverlays: [ ],
+ Connector: "Bezier",
+ Container: null,
+ DoNotThrowErrors: false,
+ DragOptions: { },
+ DropOptions: { },
+ Endpoint: "Dot",
+ EndpointOverlays: [ ],
+ Endpoints: [ null, null ],
+ EndpointStyle: { fill: "#456" },
+ EndpointStyles: [ null, null ],
+ EndpointHoverStyle: null,
+ EndpointHoverStyles: [ null, null ],
+ HoverPaintStyle: null,
+ LabelStyle: { color: "black" },
+ LogEnabled: false,
+ Overlays: [ ],
+ MaxConnections: 1,
+ PaintStyle: { "stroke-width": 4, stroke: "#456" },
+ ReattachConnections: false,
+ RenderMode: "svg",
+ Scope: "jsPlumb_DefaultScope"
+ };
+
+ if (_defaults) {
+ jsPlumb.extend(this.Defaults, _defaults);
+ }
+
+ this.logEnabled = this.Defaults.LogEnabled;
+ this._connectionTypes = {};
+ this._endpointTypes = {};
+
+ _ju.EventGenerator.apply(this);
+
+ var _currentInstance = this,
+ _instanceIndex = getInstanceIndex(),
+ _bb = _currentInstance.bind,
+ _initialDefaults = {},
+ _zoom = 1,
+ _info = function (el) {
+ if (el == null) {
+ return null;
+ }
+ else if (el.nodeType === 3 || el.nodeType === 8) {
+ return { el:el, text:true };
+ }
+ else {
+ var _el = _currentInstance.getElement(el);
+ return { el: _el, id: (_ju.isString(el) && _el == null) ? el : _getId(_el) };
+ }
+ };
+
+ this.getInstanceIndex = function () {
+ return _instanceIndex;
+ };
+
+ // CONVERTED
+ this.setZoom = function (z, repaintEverything) {
+ _zoom = z;
+ _currentInstance.fire("zoom", _zoom);
+ if (repaintEverything) {
+ _currentInstance.repaintEverything();
+ }
+ return true;
+ };
+ // CONVERTED
+ this.getZoom = function () {
+ return _zoom;
+ };
+
+ for (var i in this.Defaults) {
+ _initialDefaults[i] = this.Defaults[i];
+ }
+
+ var _container, _containerDelegations = [];
+ this.unbindContainer = function() {
+ if (_container != null && _containerDelegations.length > 0) {
+ for (var i = 0; i < _containerDelegations.length; i++) {
+ _currentInstance.off(_container, _containerDelegations[i][0], _containerDelegations[i][1]);
+ }
+ }
+ };
+ this.setContainer = function (c) {
+
+ this.unbindContainer();
+
+ // get container as dom element.
+ c = this.getElement(c);
+ // move existing connections and endpoints, if any.
+ this.select().each(function (conn) {
+ conn.moveParent(c);
+ });
+ this.selectEndpoints().each(function (ep) {
+ ep.moveParent(c);
+ });
+
+ // set container.
+ var previousContainer = _container;
+ _container = c;
+ _containerDelegations.length = 0;
+ var eventAliases = {
+ "endpointclick":"endpointClick",
+ "endpointdblclick":"endpointDblClick"
+ };
+
+ var _oneDelegateHandler = function (id, e, componentType) {
+ var t = e.srcElement || e.target,
+ jp = (t && t.parentNode ? t.parentNode._jsPlumb : null) || (t ? t._jsPlumb : null) || (t && t.parentNode && t.parentNode.parentNode ? t.parentNode.parentNode._jsPlumb : null);
+ if (jp) {
+ jp.fire(id, jp, e);
+ var alias = componentType ? eventAliases[componentType + id] || id : id;
+ // jsplumb also fires every event coming from components/overlays. That's what the test for `jp.component` is for.
+ _currentInstance.fire(alias, jp.component || jp, e);
+ }
+ };
+
+ var _addOneDelegate = function(eventId, selector, fn) {
+ _containerDelegations.push([eventId, fn]);
+ _currentInstance.on(_container, eventId, selector, fn);
+ };
+
+ // delegate one event on the container to jsplumb elements. it might be possible to
+ // abstract this out: each of endpoint, connection and overlay could register themselves with
+ // jsplumb as "component types" or whatever, and provide a suitable selector. this would be
+ // done by the renderer (although admittedly from 2.0 onwards we're not supporting vml anymore)
+ var _oneDelegate = function (id) {
+ // connections.
+ _addOneDelegate(id, ".jtk-connector", function (e) {
+ _oneDelegateHandler(id, e);
+ });
+ // endpoints. note they can have an enclosing div, or not.
+ _addOneDelegate(id, ".jtk-endpoint", function (e) {
+ _oneDelegateHandler(id, e, "endpoint");
+ });
+ // overlays
+ _addOneDelegate(id, ".jtk-overlay", function (e) {
+ _oneDelegateHandler(id, e);
+ });
+ };
+
+ for (var i = 0; i < events.length; i++) {
+ _oneDelegate(events[i]);
+ }
+
+ // managed elements
+ for (var elId in managedElements) {
+ var el = managedElements[elId].el;
+ if (el.parentNode === previousContainer) {
+ previousContainer.removeChild(el);
+ _container.appendChild(el);
+ }
+ }
+
+ };
+ this.getContainer = function () {
+ return _container;
+ };
+
+ this.bind = function (event, fn) {
+ if ("ready" === event && initialized) {
+ fn();
+ }
+ else {
+ _bb.apply(_currentInstance, [event, fn]);
+ }
+ };
+
+ _currentInstance.importDefaults = function (d) {
+ for (var i in d) {
+ _currentInstance.Defaults[i] = d[i];
+ }
+ if (d.Container) {
+ _currentInstance.setContainer(d.Container);
+ }
+
+ return _currentInstance;
+ };
+
+ _currentInstance.restoreDefaults = function () {
+ _currentInstance.Defaults = jsPlumb.extend({}, _initialDefaults);
+ return _currentInstance;
+ };
+
+ var log = null,
+ initialized = false,
+ // TODO remove from window scope
+ connections = [],
+ // map of element id -> endpoint lists. an element can have an arbitrary
+ // number of endpoints on it, and not all of them have to be connected
+ // to anything.
+ endpointsByElement = {},
+ endpointsByUUID = {},
+ managedElements = {},
+ offsets = {},
+ offsetTimestamps = {},
+ draggableStates = {},
+ connectionBeingDragged = false,
+ sizes = [],
+ _suspendDrawing = false,
+ _suspendedAt = null,
+ DEFAULT_SCOPE = this.Defaults.Scope,
+ _curIdStamp = 1,
+ _idstamp = function () {
+ return "" + _curIdStamp++;
+ },
+
+ //
+ // appends an element to some other element, which is calculated as follows:
+ //
+ // 1. if Container exists, use that element.
+ // 2. if the 'parent' parameter exists, use that.
+ // 3. otherwise just use the root element.
+ //
+ //
+ _appendElement = function (el, parent) {
+ if (_container) {
+ _container.appendChild(el);
+ }
+ else if (!parent) {
+ this.appendToRoot(el);
+ }
+ else {
+ this.getElement(parent).appendChild(el);
+ }
+ }.bind(this),
+
+ //
+ // Draws an endpoint and its connections. this is the main entry point into drawing connections as well
+ // as endpoints, since jsPlumb is endpoint-centric under the hood.
+ //
+ // @param element element to draw (of type library specific element object)
+ // @param ui UI object from current library's event system. optional.
+ // @param timestamp timestamp for this paint cycle. used to speed things up a little by cutting down the amount of offset calculations we do.
+ // @param clearEdits defaults to false; indicates that mouse edits for connectors should be cleared
+ ///
+ _draw = function (element, ui, timestamp, clearEdits) {
+
+ if (!_suspendDrawing) {
+ var id = _getId(element),
+ repaintEls,
+ dm = _currentInstance.getDragManager();
+
+ if (dm) {
+ repaintEls = dm.getElementsForDraggable(id);
+ }
+
+ if (timestamp == null) {
+ timestamp = _timestamp();
+ }
+
+ // update the offset of everything _before_ we try to draw anything.
+ var o = _updateOffset({ elId: id, offset: ui, recalc: false, timestamp: timestamp });
+
+ if (repaintEls && o && o.o) {
+ for (var i in repaintEls) {
+ _updateOffset({
+ elId: repaintEls[i].id,
+ offset: {
+ left: o.o.left + repaintEls[i].offset.left,
+ top: o.o.top + repaintEls[i].offset.top
+ },
+ recalc: false,
+ timestamp: timestamp
+ });
+ }
+ }
+
+ _currentInstance.anchorManager.redraw(id, ui, timestamp, null, clearEdits);
+
+ if (repaintEls) {
+ for (var j in repaintEls) {
+ _currentInstance.anchorManager.redraw(repaintEls[j].id, ui, timestamp, repaintEls[j].offset, clearEdits, true);
+ }
+ }
+ }
+ },
+
+ //
+ // gets an Endpoint by uuid.
+ //
+ _getEndpoint = function (uuid) {
+ return endpointsByUUID[uuid];
+ },
+
+ /**
+ * inits a draggable if it's not already initialised.
+ * TODO: somehow abstract this to the adapter, because the concept of "draggable" has no
+ * place on the server.
+ */
+
+
+ _scopeMatch = function (e1, e2) {
+ var s1 = e1.scope.split(/\s/), s2 = e2.scope.split(/\s/);
+ for (var i = 0; i < s1.length; i++) {
+ for (var j = 0; j < s2.length; j++) {
+ if (s2[j] === s1[i]) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ _mergeOverrides = function (def, values) {
+ var m = jsPlumb.extend({}, def);
+ for (var i in values) {
+ if (values[i]) {
+ m[i] = values[i];
+ }
+ }
+ return m;
+ },
+
+ /*
+ * prepares a final params object that can be passed to _newConnection, taking into account defaults, events, etc.
+ */
+ _prepareConnectionParams = function (params, referenceParams) {
+ var _p = jsPlumb.extend({ }, params);
+ if (referenceParams) {
+ jsPlumb.extend(_p, referenceParams);
+ }
+
+ // hotwire endpoints passed as source or target to sourceEndpoint/targetEndpoint, respectively.
+ if (_p.source) {
+ if (_p.source.endpoint) {
+ _p.sourceEndpoint = _p.source;
+ }
+ else {
+ _p.source = _currentInstance.getElement(_p.source);
+ }
+ }
+ if (_p.target) {
+ if (_p.target.endpoint) {
+ _p.targetEndpoint = _p.target;
+ }
+ else {
+ _p.target = _currentInstance.getElement(_p.target);
+ }
+ }
+
+ // test for endpoint uuids to connect
+ if (params.uuids) {
+ _p.sourceEndpoint = _getEndpoint(params.uuids[0]);
+ _p.targetEndpoint = _getEndpoint(params.uuids[1]);
+ }
+
+ // now ensure that if we do have Endpoints already, they're not full.
+ // source:
+ if (_p.sourceEndpoint && _p.sourceEndpoint.isFull()) {
+ _ju.log(_currentInstance, "could not add connection; source endpoint is full");
+ return;
+ }
+
+ // target:
+ if (_p.targetEndpoint && _p.targetEndpoint.isFull()) {
+ _ju.log(_currentInstance, "could not add connection; target endpoint is full");
+ return;
+ }
+
+ // if source endpoint mandates connection type and nothing specified in our params, use it.
+ if (!_p.type && _p.sourceEndpoint) {
+ _p.type = _p.sourceEndpoint.connectionType;
+ }
+
+ // copy in any connectorOverlays that were specified on the source endpoint.
+ // it doesnt copy target endpoint overlays. i'm not sure if we want it to or not.
+ if (_p.sourceEndpoint && _p.sourceEndpoint.connectorOverlays) {
+ _p.overlays = _p.overlays || [];
+ for (var i = 0, j = _p.sourceEndpoint.connectorOverlays.length; i < j; i++) {
+ _p.overlays.push(_p.sourceEndpoint.connectorOverlays[i]);
+ }
+ }
+
+ // scope
+ if (_p.sourceEndpoint && _p.sourceEndpoint.scope) {
+ _p.scope = _p.sourceEndpoint.scope;
+ }
+
+ // pointer events
+ if (!_p["pointer-events"] && _p.sourceEndpoint && _p.sourceEndpoint.connectorPointerEvents) {
+ _p["pointer-events"] = _p.sourceEndpoint.connectorPointerEvents;
+ }
+
+
+ var _addEndpoint = function (el, def, idx) {
+ var params = _mergeOverrides(def, {
+ anchor: _p.anchors ? _p.anchors[idx] : _p.anchor,
+ endpoint: _p.endpoints ? _p.endpoints[idx] : _p.endpoint,
+ paintStyle: _p.endpointStyles ? _p.endpointStyles[idx] : _p.endpointStyle,
+ hoverPaintStyle: _p.endpointHoverStyles ? _p.endpointHoverStyles[idx] : _p.endpointHoverStyle
+ });
+ return _currentInstance.addEndpoint(el, params);
+ };
+
+ // check for makeSource/makeTarget specs.
+
+ var _oneElementDef = function (type, idx, defs, matchType) {
+ if (_p[type] && !_p[type].endpoint && !_p[type + "Endpoint"] && !_p.newConnection) {
+ var tid = _getId(_p[type]), tep = defs[tid];
+
+ tep = tep ? tep[matchType] : null;
+
+ if (tep) {
+ // if not enabled, return.
+ if (!tep.enabled) {
+ return false;
+ }
+
+ var epDef = jsPlumb.extend({}, tep.def);
+ delete epDef.label;
+
+ var newEndpoint = tep.endpoint != null && tep.endpoint._jsPlumb ? tep.endpoint : _addEndpoint(_p[type], epDef, idx);
+ if (newEndpoint.isFull()) {
+ return false;
+ }
+ _p[type + "Endpoint"] = newEndpoint;
+ if (!_p.scope && epDef.scope) {
+ _p.scope = epDef.scope;
+ } // provide scope if not already provided and endpoint def has one.
+ if (tep.uniqueEndpoint) {
+ if (!tep.endpoint) {
+ tep.endpoint = newEndpoint;
+ newEndpoint.setDeleteOnEmpty(false);
+ }
+ else {
+ newEndpoint.finalEndpoint = tep.endpoint;
+ }
+ } else {
+ newEndpoint.setDeleteOnEmpty(true);
+ }
+
+ //
+ // copy in connector overlays if present on the source definition.
+ //
+ if (idx === 0 && tep.def.connectorOverlays) {
+ _p.overlays = _p.overlays || [];
+ Array.prototype.push.apply(_p.overlays, tep.def.connectorOverlays);
+ }
+ }
+ }
+ };
+
+ if (_oneElementDef("source", 0, this.sourceEndpointDefinitions, _p.type || "default") === false) {
+ return;
+ }
+ if (_oneElementDef("target", 1, this.targetEndpointDefinitions, _p.type || "default") === false) {
+ return;
+ }
+
+ // last, ensure scopes match
+ if (_p.sourceEndpoint && _p.targetEndpoint) {
+ if (!_scopeMatch(_p.sourceEndpoint, _p.targetEndpoint)) {
+ _p = null;
+ }
+ }
+
+ return _p;
+ }.bind(_currentInstance),
+
+ _newConnection = function (params) {
+ var connectionFunc = _currentInstance.Defaults.ConnectionType || _currentInstance.getDefaultConnectionType();
+
+ params._jsPlumb = _currentInstance;
+ params.newConnection = _newConnection;
+ params.newEndpoint = _newEndpoint;
+ params.endpointsByUUID = endpointsByUUID;
+ params.endpointsByElement = endpointsByElement;
+ params.finaliseConnection = _finaliseConnection;
+ params.id = "con_" + _idstamp();
+ var con = new connectionFunc(params);
+
+ // if the connection is draggable, then maybe we need to tell the target endpoint to init the
+ // dragging code. it won't run again if it already configured to be draggable.
+ if (con.isDetachable()) {
+ con.endpoints[0].initDraggable("_jsPlumbSource");
+ con.endpoints[1].initDraggable("_jsPlumbTarget");
+ }
+
+ return con;
+ },
+
+ //
+ // adds the connection to the backing model, fires an event if necessary and then redraws
+ //
+ _finaliseConnection = _currentInstance.finaliseConnection = function (jpc, params, originalEvent, doInformAnchorManager) {
+ params = params || {};
+ // add to list of connections (by scope).
+ if (!jpc.suspendedEndpoint) {
+ connections.push(jpc);
+ }
+
+ jpc.pending = null;
+
+ // turn off isTemporarySource on the source endpoint (only viable on first draw)
+ jpc.endpoints[0].isTemporarySource = false;
+
+ // always inform the anchor manager
+ // except that if jpc has a suspended endpoint it's not true to say the
+ // connection is new; it has just (possibly) moved. the question is whether
+ // to make that call here or in the anchor manager. i think perhaps here.
+ if (doInformAnchorManager !== false) {
+ _currentInstance.anchorManager.newConnection(jpc);
+ }
+
+ // force a paint
+ _draw(jpc.source);
+
+ // fire an event
+ if (!params.doNotFireConnectionEvent && params.fireEvent !== false) {
+
+ var eventArgs = {
+ connection: jpc,
+ source: jpc.source, target: jpc.target,
+ sourceId: jpc.sourceId, targetId: jpc.targetId,
+ sourceEndpoint: jpc.endpoints[0], targetEndpoint: jpc.endpoints[1]
+ };
+
+ _currentInstance.fire("connection", eventArgs, originalEvent);
+ }
+ },
+
+ /*
+ factory method to prepare a new endpoint. this should always be used instead of creating Endpoints
+ manually, since this method attaches event listeners and an id.
+ */
+ _newEndpoint = function (params, id) {
+ var endpointFunc = _currentInstance.Defaults.EndpointType || jsPlumb.Endpoint;
+ var _p = jsPlumb.extend({}, params);
+ //delete _p.label; // not supported by endpoint.
+ _p._jsPlumb = _currentInstance;
+ _p.newConnection = _newConnection;
+ _p.newEndpoint = _newEndpoint;
+ _p.endpointsByUUID = endpointsByUUID;
+ _p.endpointsByElement = endpointsByElement;
+ _p.fireDetachEvent = fireDetachEvent;
+ _p.elementId = id || _getId(_p.source);
+ var ep = new endpointFunc(_p);
+ ep.id = "ep_" + _idstamp();
+ _manage(_p.elementId, _p.source);
+
+ if (!jsPlumb.headless) {
+ _currentInstance.getDragManager().endpointAdded(_p.source, id);
+ }
+
+ return ep;
+ },
+
+ /*
+ * performs the given function operation on all the connections found
+ * for the given element id; this means we find all the endpoints for
+ * the given element, and then for each endpoint find the connectors
+ * connected to it. then we pass each connection in to the given
+ * function.
+ */
+ _operation = function (elId, func, endpointFunc) {
+ var endpoints = endpointsByElement[elId];
+ if (endpoints && endpoints.length) {
+ for (var i = 0, ii = endpoints.length; i < ii; i++) {
+ for (var j = 0, jj = endpoints[i].connections.length; j < jj; j++) {
+ var retVal = func(endpoints[i].connections[j]);
+ // if the function passed in returns true, we exit.
+ // most functions return false.
+ if (retVal) {
+ return;
+ }
+ }
+ if (endpointFunc) {
+ endpointFunc(endpoints[i]);
+ }
+ }
+ }
+ },
+
+ _setDraggable = function (element, draggable) {
+ return jsPlumb.each(element, function (el) {
+ if (_currentInstance.isDragSupported(el)) {
+ draggableStates[_currentInstance.getAttribute(el, "id")] = draggable;
+ _currentInstance.setElementDraggable(el, draggable);
+ }
+ });
+ },
+ /*
+ * private method to do the business of hiding/showing.
+ *
+ * @param el
+ * either Id of the element in question or a library specific
+ * object for the element.
+ * @param state
+ * String specifying a value for the css 'display' property
+ * ('block' or 'none').
+ */
+ _setVisible = function (el, state, alsoChangeEndpoints) {
+ state = state === "block";
+ var endpointFunc = null;
+ if (alsoChangeEndpoints) {
+ endpointFunc = function (ep) {
+ ep.setVisible(state, true, true);
+ };
+ }
+ var info = _info(el);
+ _operation(info.id, function (jpc) {
+ if (state && alsoChangeEndpoints) {
+ // this test is necessary because this functionality is new, and i wanted to maintain backwards compatibility.
+ // this block will only set a connection to be visible if the other endpoint in the connection is also visible.
+ var oidx = jpc.sourceId === info.id ? 1 : 0;
+ if (jpc.endpoints[oidx].isVisible()) {
+ jpc.setVisible(true);
+ }
+ }
+ else { // the default behaviour for show, and what always happens for hide, is to just set the visibility without getting clever.
+ jpc.setVisible(state);
+ }
+ }, endpointFunc);
+ },
+ /**
+ * private method to do the business of toggling hiding/showing.
+ */
+ _toggleVisible = function (elId, changeEndpoints) {
+ var endpointFunc = null;
+ if (changeEndpoints) {
+ endpointFunc = function (ep) {
+ var state = ep.isVisible();
+ ep.setVisible(!state);
+ };
+ }
+ _operation(elId, function (jpc) {
+ var state = jpc.isVisible();
+ jpc.setVisible(!state);
+ }, endpointFunc);
+ },
+
+ // TODO comparison performance
+ _getCachedData = function (elId) {
+ var o = offsets[elId];
+ if (!o) {
+ return _updateOffset({elId: elId});
+ }
+ else {
+ return {o: o, s: sizes[elId]};
+ }
+ },
+
+ /**
+ * gets an id for the given element, creating and setting one if
+ * necessary. the id is of the form
+ *
+ * jsPlumb__
+ *
+ * where "index in instance" is a monotonically increasing integer that starts at 0,
+ * for each instance. this method is used not only to assign ids to elements that do not
+ * have them but also to connections and endpoints.
+ */
+ _getId = function (element, uuid, doNotCreateIfNotFound) {
+ if (_ju.isString(element)) {
+ return element;
+ }
+ if (element == null) {
+ return null;
+ }
+ var id = _currentInstance.getAttribute(element, "id");
+ if (!id || id === "undefined") {
+ // check if fixed uuid parameter is given
+ if (arguments.length === 2 && arguments[1] !== undefined) {
+ id = uuid;
+ }
+ else if (arguments.length === 1 || (arguments.length === 3 && !arguments[2])) {
+ id = "jsPlumb_" + _instanceIndex + "_" + _idstamp();
+ }
+
+ if (!doNotCreateIfNotFound) {
+ _currentInstance.setAttribute(element, "id", id);
+ }
+ }
+ return id;
+ };
+
+ this.setConnectionBeingDragged = function (v) {
+ connectionBeingDragged = v;
+ };
+ this.isConnectionBeingDragged = function () {
+ return connectionBeingDragged;
+ };
+
+ /**
+ * Returns a map of all the elements this jsPlumbInstance is currently managing.
+ * @returns {Object} Map of [id-> {el, endpoint[], connection, position}] information.
+ */
+ this.getManagedElements = function() {
+ return managedElements;
+ };
+
+ this.connectorClass = "jtk-connector";
+ this.connectorOutlineClass = "jtk-connector-outline";
+ this.connectedClass = "jtk-connected";
+ this.hoverClass = "jtk-hover";
+ this.endpointClass = "jtk-endpoint";
+ this.endpointConnectedClass = "jtk-endpoint-connected";
+ this.endpointFullClass = "jtk-endpoint-full";
+ this.endpointDropAllowedClass = "jtk-endpoint-drop-allowed";
+ this.endpointDropForbiddenClass = "jtk-endpoint-drop-forbidden";
+ this.overlayClass = "jtk-overlay";
+ this.draggingClass = "jtk-dragging";// CONVERTED
+ this.elementDraggingClass = "jtk-element-dragging";// CONVERTED
+ this.sourceElementDraggingClass = "jtk-source-element-dragging"; // CONVERTED
+ this.targetElementDraggingClass = "jtk-target-element-dragging";// CONVERTED
+ this.endpointAnchorClassPrefix = "jtk-endpoint-anchor";
+ this.hoverSourceClass = "jtk-source-hover";
+ this.hoverTargetClass = "jtk-target-hover";
+ this.dragSelectClass = "jtk-drag-select";
+
+ this.Anchors = {};
+ this.Connectors = { "svg": {} };
+ this.Endpoints = { "svg": {} };
+ this.Overlays = { "svg": {} } ;
+ this.ConnectorRenderers = {};
+ this.SVG = "svg";
+
+// --------------------------- jsPlumbInstance public API ---------------------------------------------------------
+
+
+ this.addEndpoint = function (el, params, referenceParams) {
+ referenceParams = referenceParams || {};
+ var p = jsPlumb.extend({}, referenceParams);
+ jsPlumb.extend(p, params);
+ p.endpoint = p.endpoint || _currentInstance.Defaults.Endpoint;
+ p.paintStyle = p.paintStyle || _currentInstance.Defaults.EndpointStyle;
+
+ var results = [],
+ inputs = (_ju.isArray(el) || (el.length != null && !_ju.isString(el))) ? el : [ el ];
+
+ for (var i = 0, j = inputs.length; i < j; i++) {
+ p.source = _currentInstance.getElement(inputs[i]);
+ _ensureContainer(p.source);
+
+ var id = _getId(p.source), e = _newEndpoint(p, id);
+
+ // ensure element is managed.
+ var myOffset = _manage(id, p.source).info.o;
+ _ju.addToList(endpointsByElement, id, e);
+
+ if (!_suspendDrawing) {
+ e.paint({
+ anchorLoc: e.anchor.compute({ xy: [ myOffset.left, myOffset.top ], wh: sizes[id], element: e, timestamp: _suspendedAt }),
+ timestamp: _suspendedAt
+ });
+ }
+
+ results.push(e);
+ }
+
+ return results.length === 1 ? results[0] : results;
+ };
+
+ this.addEndpoints = function (el, endpoints, referenceParams) {
+ var results = [];
+ for (var i = 0, j = endpoints.length; i < j; i++) {
+ var e = _currentInstance.addEndpoint(el, endpoints[i], referenceParams);
+ if (_ju.isArray(e)) {
+ Array.prototype.push.apply(results, e);
+ }
+ else {
+ results.push(e);
+ }
+ }
+ return results;
+ };
+
+ this.animate = function (el, properties, options) {
+ if (!this.animationSupported) {
+ return false;
+ }
+
+ options = options || {};
+ var del = _currentInstance.getElement(el),
+ id = _getId(del),
+ stepFunction = jsPlumb.animEvents.step,
+ completeFunction = jsPlumb.animEvents.complete;
+
+ options[stepFunction] = _ju.wrap(options[stepFunction], function () {
+ _currentInstance.revalidate(id);
+ });
+
+ // onComplete repaints, just to make sure everything looks good at the end of the animation.
+ options[completeFunction] = _ju.wrap(options[completeFunction], function () {
+ _currentInstance.revalidate(id);
+ });
+
+ _currentInstance.doAnimate(del, properties, options);
+ };
+
+ /**
+ * checks for a listener for the given condition, executing it if found, passing in the given value.
+ * condition listeners would have been attached using "bind" (which is, you could argue, now overloaded, since
+ * firing click events etc is a bit different to what this does). i thought about adding a "bindCondition"
+ * or something, but decided against it, for the sake of simplicity. jsPlumb will never fire one of these
+ * condition events anyway.
+ */
+ this.checkCondition = function (conditionName, args) {
+ var l = _currentInstance.getListener(conditionName),
+ r = true;
+
+ if (l && l.length > 0) {
+ var values = Array.prototype.slice.call(arguments, 1);
+ try {
+ for (var i = 0, j = l.length; i < j; i++) {
+ r = r && l[i].apply(l[i], values);
+ }
+ }
+ catch (e) {
+ _ju.log(_currentInstance, "cannot check condition [" + conditionName + "]" + e);
+ }
+ }
+ return r;
+ };
+
+ this.connect = function (params, referenceParams) {
+ // prepare a final set of parameters to create connection with
+ var _p = _prepareConnectionParams(params, referenceParams), jpc;
+ // TODO probably a nicer return value if the connection was not made. _prepareConnectionParams
+ // will return null (and log something) if either endpoint was full. what would be nicer is to
+ // create a dedicated 'error' object.
+ if (_p) {
+ if (_p.source == null && _p.sourceEndpoint == null) {
+ _ju.log("Cannot establish connection - source does not exist");
+ return;
+ }
+ if (_p.target == null && _p.targetEndpoint == null) {
+ _ju.log("Cannot establish connection - target does not exist");
+ return;
+ }
+ _ensureContainer(_p.source);
+ // create the connection. it is not yet registered
+ jpc = _newConnection(_p);
+ // now add it the model, fire an event, and redraw
+ _finaliseConnection(jpc, _p);
+ }
+ return jpc;
+ };
+
+ var stTypes = [
+ { el: "source", elId: "sourceId", epDefs: "sourceEndpointDefinitions" },
+ { el: "target", elId: "targetId", epDefs: "targetEndpointDefinitions" }
+ ];
+
+ var _set = function (c, el, idx, doNotRepaint) {
+ var ep, _st = stTypes[idx], cId = c[_st.elId], cEl = c[_st.el], sid, sep,
+ oldEndpoint = c.endpoints[idx];
+
+ var evtParams = {
+ index: idx,
+ originalSourceId: idx === 0 ? cId : c.sourceId,
+ newSourceId: c.sourceId,
+ originalTargetId: idx === 1 ? cId : c.targetId,
+ newTargetId: c.targetId,
+ connection: c
+ };
+
+ if (el.constructor === jsPlumb.Endpoint) {
+ ep = el;
+ ep.addConnection(c);
+ el = ep.element;
+ }
+ else {
+ sid = _getId(el);
+ sep = this[_st.epDefs][sid];
+
+ if (sid === c[_st.elId]) {
+ ep = null; // dont change source/target if the element is already the one given.
+ }
+ else if (sep) {
+ for (var t in sep) {
+ if (!sep[t].enabled) {
+ return;
+ }
+ ep = sep[t].endpoint != null && sep[t].endpoint._jsPlumb ? sep[t].endpoint : this.addEndpoint(el, sep[t].def);
+ if (sep[t].uniqueEndpoint) {
+ sep[t].endpoint = ep;
+ }
+ ep.addConnection(c);
+ }
+ }
+ else {
+ ep = c.makeEndpoint(idx === 0, el, sid);
+ }
+ }
+
+ if (ep != null) {
+ oldEndpoint.detachFromConnection(c);
+ c.endpoints[idx] = ep;
+ c[_st.el] = ep.element;
+ c[_st.elId] = ep.elementId;
+ evtParams[idx === 0 ? "newSourceId" : "newTargetId"] = ep.elementId;
+
+ fireMoveEvent(evtParams);
+
+ if (!doNotRepaint) {
+ c.repaint();
+ }
+ }
+
+ evtParams.element = el;
+ return evtParams;
+
+ }.bind(this);
+
+ this.setSource = function (connection, el, doNotRepaint) {
+ var p = _set(connection, el, 0, doNotRepaint);
+ this.anchorManager.sourceChanged(p.originalSourceId, p.newSourceId, connection, p.el);
+ };
+ this.setTarget = function (connection, el, doNotRepaint) {
+ var p = _set(connection, el, 1, doNotRepaint);
+ this.anchorManager.updateOtherEndpoint(p.originalSourceId, p.originalTargetId, p.newTargetId, connection);
+ };
+
+ this.deleteEndpoint = function (object, dontUpdateHover, deleteAttachedObjects) {
+ var endpoint = (typeof object === "string") ? endpointsByUUID[object] : object;
+ if (endpoint) {
+ _currentInstance.deleteObject({ endpoint: endpoint, dontUpdateHover: dontUpdateHover, deleteAttachedObjects:deleteAttachedObjects });
+ }
+ return _currentInstance;
+ };
+
+ this.deleteEveryEndpoint = function () {
+ var _is = _currentInstance.setSuspendDrawing(true);
+ for (var id in endpointsByElement) {
+ var endpoints = endpointsByElement[id];
+ if (endpoints && endpoints.length) {
+ for (var i = 0, j = endpoints.length; i < j; i++) {
+ _currentInstance.deleteEndpoint(endpoints[i], true);
+ }
+ }
+ }
+ endpointsByElement = {};
+ managedElements = {};
+ endpointsByUUID = {};
+ offsets = {};
+ offsetTimestamps = {};
+ _currentInstance.anchorManager.reset();
+ var dm = _currentInstance.getDragManager();
+ if (dm) {
+ dm.reset();
+ }
+ if (!_is) {
+ _currentInstance.setSuspendDrawing(false);
+ }
+ return _currentInstance;
+ };
+
+ var fireDetachEvent = function (jpc, doFireEvent, originalEvent) {
+ // may have been given a connection, or in special cases, an object
+ var connType = _currentInstance.Defaults.ConnectionType || _currentInstance.getDefaultConnectionType(),
+ argIsConnection = jpc.constructor === connType,
+ params = argIsConnection ? {
+ connection: jpc,
+ source: jpc.source, target: jpc.target,
+ sourceId: jpc.sourceId, targetId: jpc.targetId,
+ sourceEndpoint: jpc.endpoints[0], targetEndpoint: jpc.endpoints[1]
+ } : jpc;
+
+ if (doFireEvent) {
+ _currentInstance.fire("connectionDetached", params, originalEvent);
+ }
+
+ // always fire this. used by internal jsplumb stuff.
+ _currentInstance.fire("internal.connectionDetached", params, originalEvent);
+
+ _currentInstance.anchorManager.connectionDetached(params);
+ };
+
+ var fireMoveEvent = _currentInstance.fireMoveEvent = function (params, evt) {
+ _currentInstance.fire("connectionMoved", params, evt);
+ };
+
+ this.unregisterEndpoint = function (endpoint) {
+ if (endpoint._jsPlumb.uuid) {
+ endpointsByUUID[endpoint._jsPlumb.uuid] = null;
+ }
+ _currentInstance.anchorManager.deleteEndpoint(endpoint);
+ // TODO at least replace this with a removeWithFunction call.
+ for (var e in endpointsByElement) {
+ var endpoints = endpointsByElement[e];
+ if (endpoints) {
+ var newEndpoints = [];
+ for (var i = 0, j = endpoints.length; i < j; i++) {
+ if (endpoints[i] !== endpoint) {
+ newEndpoints.push(endpoints[i]);
+ }
+ }
+
+ endpointsByElement[e] = newEndpoints;
+ }
+ if (endpointsByElement[e].length < 1) {
+ delete endpointsByElement[e];
+ }
+ }
+ };
+
+ var IS_DETACH_ALLOWED = "isDetachAllowed";
+ var BEFORE_DETACH = "beforeDetach";
+ var CHECK_CONDITION = "checkCondition";
+
+ /**
+ * Deletes a Connection.
+ * @method deleteConnection
+ * @param connection Connection to delete
+ * @param {Object} [params] Optional delete parameters
+ * @param {Boolean} [params.doNotFireEvent=false] If true, a connection detached event will not be fired. Otherwise one will.
+ * @param {Boolean} [params.force=false] If true, the connection will be deleted even if a beforeDetach interceptor tries to stop the deletion.
+ * @returns {Boolean} True if the connection was deleted, false otherwise.
+ */
+ this.deleteConnection = function(connection, params) {
+
+ if (connection != null) {
+ params = params || {};
+
+ if (params.force || _ju.functionChain(true, false, [
+ [ connection.endpoints[0], IS_DETACH_ALLOWED, [ connection ] ],
+ [ connection.endpoints[1], IS_DETACH_ALLOWED, [ connection ] ],
+ [ connection, IS_DETACH_ALLOWED, [ connection ] ],
+ [ _currentInstance, CHECK_CONDITION, [ BEFORE_DETACH, connection ] ]
+ ])) {
+
+ connection.setHover(false);
+ fireDetachEvent(connection, !connection.pending && params.fireEvent !== false, params.originalEvent);
+
+ connection.endpoints[0].detachFromConnection(connection);
+ connection.endpoints[1].detachFromConnection(connection);
+ _ju.removeWithFunction(connections, function (_c) {
+ return connection.id === _c.id;
+ });
+
+ connection.cleanup();
+ connection.destroy();
+ return true;
+ }
+ }
+ return false;
+ };
+
+ /**
+ * Remove all Connections from all elements, but leaves Endpoints in place ((unless a connection is set to auto delete its Endpoints).
+ * @method deleteEveryConnection
+ * @param {Object} [params] optional params object for the call
+ * @param {Boolean} [params.fireEvent=true] Whether or not to fire detach events
+ * @param {Boolean} [params.forceDetach=false] If true, this call will ignore any `beforeDetach` interceptors.
+ * @returns {Number} The number of connections that were deleted.
+ */
+ this.deleteEveryConnection = function (params) {
+ params = params || {};
+ var count = connections.length, deletedCount = 0;
+ _currentInstance.batch(function () {
+ for (var i = 0; i < count; i++) {
+ deletedCount += _currentInstance.deleteConnection(connections[0], params) ? 1 : 0;
+ }
+ });
+ return deletedCount;
+ };
+
+ /**
+ * Removes all an element's Connections.
+ * @method deleteConnectionsForElement
+ * @param {Object} el Either the id of the element, or a selector for the element.
+ * @param {Object} [params] Optional parameters.
+ * @param {Boolean} [params.fireEvent=true] Whether or not to fire the detach event.
+ * @param {Boolean} [params.forceDetach=false] If true, this call will ignore any `beforeDetach` interceptors.
+ * @return {jsPlumbInstance} The current jsPlumb instance.
+ */
+ this.deleteConnectionsForElement = function (el, params) {
+ params = params || {};
+ el = _currentInstance.getElement(el);
+ var id = _getId(el), endpoints = endpointsByElement[id];
+ if (endpoints && endpoints.length) {
+ for (var i = 0, j = endpoints.length; i < j; i++) {
+ endpoints[i].deleteEveryConnection(params);
+ }
+ }
+ return _currentInstance;
+ };
+
+ /// not public. but of course its exposed. how to change this.
+ this.deleteObject = function (params) {
+ var result = {
+ endpoints: {},
+ connections: {},
+ endpointCount: 0,
+ connectionCount: 0
+ },
+ deleteAttachedObjects = params.deleteAttachedObjects !== false;
+
+ var unravelConnection = function (connection) {
+ if (connection != null && result.connections[connection.id] == null) {
+ if (!params.dontUpdateHover && connection._jsPlumb != null) {
+ connection.setHover(false);
+ }
+ result.connections[connection.id] = connection;
+ result.connectionCount++;
+ }
+ };
+ var unravelEndpoint = function (endpoint) {
+ if (endpoint != null && result.endpoints[endpoint.id] == null) {
+ if (!params.dontUpdateHover && endpoint._jsPlumb != null) {
+ endpoint.setHover(false);
+ }
+ result.endpoints[endpoint.id] = endpoint;
+ result.endpointCount++;
+
+ if (deleteAttachedObjects) {
+ for (var i = 0; i < endpoint.connections.length; i++) {
+ var c = endpoint.connections[i];
+ unravelConnection(c);
+ }
+ }
+ }
+ };
+
+ if (params.connection) {
+ unravelConnection(params.connection);
+ }
+ else {
+ unravelEndpoint(params.endpoint);
+ }
+
+ // loop through connections
+ for (var i in result.connections) {
+ var c = result.connections[i];
+ if (c._jsPlumb) {
+ _ju.removeWithFunction(connections, function (_c) {
+ return c.id === _c.id;
+ });
+
+ fireDetachEvent(c, params.fireEvent === false ? false : !c.pending, params.originalEvent);
+ var doNotCleanup = params.deleteAttachedObjects == null ? null : !params.deleteAttachedObjects;
+
+ c.endpoints[0].detachFromConnection(c, null, doNotCleanup);
+ c.endpoints[1].detachFromConnection(c, null, doNotCleanup);
+
+ c.cleanup(true);
+ c.destroy(true);
+ }
+ }
+
+ // loop through endpoints
+ for (var j in result.endpoints) {
+ var e = result.endpoints[j];
+ if (e._jsPlumb) {
+ _currentInstance.unregisterEndpoint(e);
+ // FIRE some endpoint deleted event?
+ e.cleanup(true);
+ e.destroy(true);
+ }
+ }
+
+ return result;
+ };
+
+
+ // helpers for select/selectEndpoints
+ var _setOperation = function (list, func, args, selector) {
+ for (var i = 0, j = list.length; i < j; i++) {
+ list[i][func].apply(list[i], args);
+ }
+ return selector(list);
+ },
+ _getOperation = function (list, func, args) {
+ var out = [];
+ for (var i = 0, j = list.length; i < j; i++) {
+ out.push([ list[i][func].apply(list[i], args), list[i] ]);
+ }
+ return out;
+ },
+ setter = function (list, func, selector) {
+ return function () {
+ return _setOperation(list, func, arguments, selector);
+ };
+ },
+ getter = function (list, func) {
+ return function () {
+ return _getOperation(list, func, arguments);
+ };
+ },
+ prepareList = function (input, doNotGetIds) {
+ var r = [];
+ if (input) {
+ if (typeof input === 'string') {
+ if (input === "*") {
+ return input;
+ }
+ r.push(input);
+ }
+ else {
+ if (doNotGetIds) {
+ r = input;
+ }
+ else {
+ if (input.length) {
+ for (var i = 0, j = input.length; i < j; i++) {
+ r.push(_info(input[i]).id);
+ }
+ }
+ else {
+ r.push(_info(input).id);
+ }
+ }
+ }
+ }
+ return r;
+ },
+ filterList = function (list, value, missingIsFalse) {
+ if (list === "*") {
+ return true;
+ }
+ return list.length > 0 ? list.indexOf(value) !== -1 : !missingIsFalse;
+ };
+
+ // get some connections, specifying source/target/scope
+ this.getConnections = function (options, flat) {
+ if (!options) {
+ options = {};
+ } else if (options.constructor === String) {
+ options = { "scope": options };
+ }
+ var scope = options.scope || _currentInstance.getDefaultScope(),
+ scopes = prepareList(scope, true),
+ sources = prepareList(options.source),
+ targets = prepareList(options.target),
+ results = (!flat && scopes.length > 1) ? {} : [],
+ _addOne = function (scope, obj) {
+ if (!flat && scopes.length > 1) {
+ var ss = results[scope];
+ if (ss == null) {
+ ss = results[scope] = [];
+ }
+ ss.push(obj);
+ } else {
+ results.push(obj);
+ }
+ };
+
+ for (var j = 0, jj = connections.length; j < jj; j++) {
+ var c = connections[j],
+ sourceId = c.proxies && c.proxies[0] ? c.proxies[0].originalEp.elementId : c.sourceId,
+ targetId = c.proxies && c.proxies[1] ? c.proxies[1].originalEp.elementId : c.targetId;
+
+ if (filterList(scopes, c.scope) && filterList(sources, sourceId) && filterList(targets, targetId)) {
+ _addOne(c.scope, c);
+ }
+ }
+
+ return results;
+ };
+
+ var _curryEach = function (list, executor) {
+ return function (f) {
+ for (var i = 0, ii = list.length; i < ii; i++) {
+ f(list[i]);
+ }
+ return executor(list);
+ };
+ },
+ _curryGet = function (list) {
+ return function (idx) {
+ return list[idx];
+ };
+ };
+
+ var _makeCommonSelectHandler = function (list, executor) {
+ var out = {
+ length: list.length,
+ each: _curryEach(list, executor),
+ get: _curryGet(list)
+ },
+ setters = ["setHover", "removeAllOverlays", "setLabel", "addClass", "addOverlay", "removeOverlay",
+ "removeOverlays", "showOverlay", "hideOverlay", "showOverlays", "hideOverlays", "setPaintStyle",
+ "setHoverPaintStyle", "setSuspendEvents", "setParameter", "setParameters", "setVisible",
+ "repaint", "addType", "toggleType", "removeType", "removeClass", "setType", "bind", "unbind" ],
+
+ getters = ["getLabel", "getOverlay", "isHover", "getParameter", "getParameters", "getPaintStyle",
+ "getHoverPaintStyle", "isVisible", "hasType", "getType", "isSuspendEvents" ],
+ i, ii;
+
+ for (i = 0, ii = setters.length; i < ii; i++) {
+ out[setters[i]] = setter(list, setters[i], executor);
+ }
+
+ for (i = 0, ii = getters.length; i < ii; i++) {
+ out[getters[i]] = getter(list, getters[i]);
+ }
+
+ return out;
+ };
+
+ var _makeConnectionSelectHandler = function (list) {
+ var common = _makeCommonSelectHandler(list, _makeConnectionSelectHandler);
+ return jsPlumb.extend(common, {
+ // setters
+ setDetachable: setter(list, "setDetachable", _makeConnectionSelectHandler),
+ setReattach: setter(list, "setReattach", _makeConnectionSelectHandler),
+ setConnector: setter(list, "setConnector", _makeConnectionSelectHandler),
+ delete: function () {
+ for (var i = 0, ii = list.length; i < ii; i++) {
+ _currentInstance.deleteConnection(list[i]);
+ }
+ },
+ // getters
+ isDetachable: getter(list, "isDetachable"),
+ isReattach: getter(list, "isReattach")
+ });
+ };
+
+ var _makeEndpointSelectHandler = function (list) {
+ var common = _makeCommonSelectHandler(list, _makeEndpointSelectHandler);
+ return jsPlumb.extend(common, {
+ setEnabled: setter(list, "setEnabled", _makeEndpointSelectHandler),
+ setAnchor: setter(list, "setAnchor", _makeEndpointSelectHandler),
+ isEnabled: getter(list, "isEnabled"),
+ deleteEveryConnection: function () {
+ for (var i = 0, ii = list.length; i < ii; i++) {
+ list[i].deleteEveryConnection();
+ }
+ },
+ "delete": function () {
+ for (var i = 0, ii = list.length; i < ii; i++) {
+ _currentInstance.deleteEndpoint(list[i]);
+ }
+ }
+ });
+ };
+
+ this.select = function (params) {
+ params = params || {};
+ params.scope = params.scope || "*";
+ return _makeConnectionSelectHandler(params.connections || _currentInstance.getConnections(params, true));
+ };
+
+ this.selectEndpoints = function (params) {
+ params = params || {};
+ params.scope = params.scope || "*";
+ var noElementFilters = !params.element && !params.source && !params.target,
+ elements = noElementFilters ? "*" : prepareList(params.element),
+ sources = noElementFilters ? "*" : prepareList(params.source),
+ targets = noElementFilters ? "*" : prepareList(params.target),
+ scopes = prepareList(params.scope, true);
+
+ var ep = [];
+
+ for (var el in endpointsByElement) {
+ var either = filterList(elements, el, true),
+ source = filterList(sources, el, true),
+ sourceMatchExact = sources !== "*",
+ target = filterList(targets, el, true),
+ targetMatchExact = targets !== "*";
+
+ // if they requested 'either' then just match scope. otherwise if they requested 'source' (not as a wildcard) then we have to match only endpoints that have isSource set to to true, and the same thing with isTarget.
+ if (either || source || target) {
+ inner:
+ for (var i = 0, ii = endpointsByElement[el].length; i < ii; i++) {
+ var _ep = endpointsByElement[el][i];
+ if (filterList(scopes, _ep.scope, true)) {
+
+ var noMatchSource = (sourceMatchExact && sources.length > 0 && !_ep.isSource),
+ noMatchTarget = (targetMatchExact && targets.length > 0 && !_ep.isTarget);
+
+ if (noMatchSource || noMatchTarget) {
+ continue inner;
+ }
+
+ ep.push(_ep);
+ }
+ }
+ }
+ }
+
+ return _makeEndpointSelectHandler(ep);
+ };
+
+ // get all connections managed by the instance of jsplumb.
+ this.getAllConnections = function () {
+ return connections;
+ };
+ this.getDefaultScope = function () {
+ return DEFAULT_SCOPE;
+ };
+ // get an endpoint by uuid.
+ this.getEndpoint = _getEndpoint;
+ /**
+ * Gets the list of Endpoints for a given element.
+ * @method getEndpoints
+ * @param {String|Element|Selector} el The element to get endpoints for.
+ * @return {Endpoint[]} An array of Endpoints for the specified element.
+ */
+ this.getEndpoints = function (el) {
+ return endpointsByElement[_info(el).id] || [];
+ };
+ // gets the default endpoint type. used when subclassing. see wiki.
+ this.getDefaultEndpointType = function () {
+ return jsPlumb.Endpoint;
+ };
+ // gets the default connection type. used when subclassing. see wiki.
+ this.getDefaultConnectionType = function () {
+ return jsPlumb.Connection;
+ };
+ /*
+ * Gets an element's id, creating one if necessary. really only exposed
+ * for the lib-specific functionality to access; would be better to pass
+ * the current instance into the lib-specific code (even though this is
+ * a static call. i just don't want to expose it to the public API).
+ */
+ this.getId = _getId;
+ this.draw = _draw;
+ this.info = _info;
+
+ this.appendElement = _appendElement;
+
+ var _hoverSuspended = false;
+ this.isHoverSuspended = function () {
+ return _hoverSuspended;
+ };
+ this.setHoverSuspended = function (s) {
+ _hoverSuspended = s;
+ };
+
+ // set an element's connections to be hidden
+ this.hide = function (el, changeEndpoints) {
+ _setVisible(el, "none", changeEndpoints);
+ return _currentInstance;
+ };
+
+ // exposed for other objects to use to get a unique id.
+ this.idstamp = _idstamp;
+
+ // ensure that, if the current container exists, it is a DOM element and not a selector.
+ // if it does not exist and `candidate` is supplied, the offset parent of that element will be set as the Container.
+ // this is used to do a better default behaviour for the case that the user has not set a container:
+ // addEndpoint, makeSource, makeTarget and connect all call this method with the offsetParent of the
+ // element in question (for connect it is the source element). So if no container is set, it is inferred
+ // to be the offsetParent of the first element the user tries to connect.
+ var _ensureContainer = function (candidate) {
+ if (!_container && candidate) {
+ var can = _currentInstance.getElement(candidate);
+ if (can.offsetParent) {
+ _currentInstance.setContainer(can.offsetParent);
+ }
+ }
+ };
+
+ var _getContainerFromDefaults = function () {
+ if (_currentInstance.Defaults.Container) {
+ _currentInstance.setContainer(_currentInstance.Defaults.Container);
+ }
+ };
+
+ // check if a given element is managed or not. if not, add to our map. if drawing is not suspended then
+ // we'll also stash its dimensions; otherwise we'll do this in a lazy way through updateOffset.
+ var _manage = _currentInstance.manage = function (id, element, _transient) {
+ if (!managedElements[id]) {
+ managedElements[id] = {
+ el: element,
+ endpoints: [],
+ connections: []
+ };
+
+ managedElements[id].info = _updateOffset({ elId: id, timestamp: _suspendedAt });
+ _currentInstance.addClass(element, "jtk-managed");
+
+ if (!_transient) {
+ _currentInstance.fire("manageElement", { id:id, info:managedElements[id].info, el:element });
+ }
+ }
+
+ return managedElements[id];
+ };
+
+ var _unmanage = _currentInstance.unmanage = function(id) {
+ if (managedElements[id]) {
+ var el = managedElements[id].el;
+ _currentInstance.removeClass(el, "jtk-managed");
+ delete managedElements[id];
+ _currentInstance.fire("unmanageElement", {id:id, el:el});
+ }
+ };
+
+ /**
+ * updates the offset and size for a given element, and stores the
+ * values. if 'offset' is not null we use that (it would have been
+ * passed in from a drag call) because it's faster; but if it is null,
+ * or if 'recalc' is true in order to force a recalculation, we get the current values.
+ * @method updateOffset
+ */
+ var _updateOffset = function (params) {
+
+ var timestamp = params.timestamp, recalc = params.recalc, offset = params.offset, elId = params.elId, s;
+ if (_suspendDrawing && !timestamp) {
+ timestamp = _suspendedAt;
+ }
+ if (!recalc) {
+ if (timestamp && timestamp === offsetTimestamps[elId]) {
+ return {o: params.offset || offsets[elId], s: sizes[elId]};
+ }
+ }
+ if (recalc || (!offset && offsets[elId] == null)) { // if forced repaint or no offset available, we recalculate.
+
+ // get the current size and offset, and store them
+ s = managedElements[elId] ? managedElements[elId].el : null;
+ if (s != null) {
+ sizes[elId] = _currentInstance.getSize(s);
+ offsets[elId] = _currentInstance.getOffset(s);
+ offsetTimestamps[elId] = timestamp;
+ }
+ } else {
+ offsets[elId] = offset || offsets[elId];
+ if (sizes[elId] == null) {
+ s = managedElements[elId].el;
+ if (s != null) {
+ sizes[elId] = _currentInstance.getSize(s);
+ }
+ }
+ offsetTimestamps[elId] = timestamp;
+ }
+
+ if (offsets[elId] && !offsets[elId].right) {
+ offsets[elId].right = offsets[elId].left + sizes[elId][0];
+ offsets[elId].bottom = offsets[elId].top + sizes[elId][1];
+ offsets[elId].width = sizes[elId][0];
+ offsets[elId].height = sizes[elId][1];
+ offsets[elId].centerx = offsets[elId].left + (offsets[elId].width / 2);
+ offsets[elId].centery = offsets[elId].top + (offsets[elId].height / 2);
+ }
+
+ return {o: offsets[elId], s: sizes[elId]};
+ };
+
+ this.updateOffset = _updateOffset;
+
+ /**
+ * callback from the current library to tell us to prepare ourselves (attach
+ * mouse listeners etc; can't do that until the library has provided a bind method)
+ */
+ this.init = function () {
+ if (!initialized) {
+ _getContainerFromDefaults();
+ _currentInstance.anchorManager = new root.jsPlumb.AnchorManager({jsPlumbInstance: _currentInstance});
+ initialized = true;
+ _currentInstance.fire("ready", _currentInstance);
+ }
+ }.bind(this);
+
+ this.log = log;
+ this.jsPlumbUIComponent = jsPlumbUIComponent;
+
+ /*
+ * Creates an anchor with the given params.
+ *
+ *
+ * Returns: The newly created Anchor.
+ * Throws: an error if a named anchor was not found.
+ */
+ this.makeAnchor = function () {
+ var pp, _a = function (t, p) {
+ if (root.jsPlumb.Anchors[t]) {
+ return new root.jsPlumb.Anchors[t](p);
+ }
+ if (!_currentInstance.Defaults.DoNotThrowErrors) {
+ throw { msg: "jsPlumb: unknown anchor type '" + t + "'" };
+ }
+ };
+ if (arguments.length === 0) {
+ return null;
+ }
+ var specimen = arguments[0], elementId = arguments[1], jsPlumbInstance = arguments[2], newAnchor = null;
+ // if it appears to be an anchor already...
+ if (specimen.compute && specimen.getOrientation) {
+ return specimen;
+ } //TODO hazy here about whether it should be added or is already added somehow.
+ // is it the name of an anchor type?
+ else if (typeof specimen === "string") {
+ newAnchor = _a(arguments[0], {elementId: elementId, jsPlumbInstance: _currentInstance});
+ }
+ // is it an array? it will be one of:
+ // an array of [spec, params] - this defines a single anchor, which may be dynamic, but has parameters.
+ // an array of arrays - this defines some dynamic anchors
+ // an array of numbers - this defines a single anchor.
+ else if (_ju.isArray(specimen)) {
+ if (_ju.isArray(specimen[0]) || _ju.isString(specimen[0])) {
+ // if [spec, params] format
+ if (specimen.length === 2 && _ju.isObject(specimen[1])) {
+ // if first arg is a string, its a named anchor with params
+ if (_ju.isString(specimen[0])) {
+ pp = root.jsPlumb.extend({elementId: elementId, jsPlumbInstance: _currentInstance}, specimen[1]);
+ newAnchor = _a(specimen[0], pp);
+ }
+ // otherwise first arg is array, second is params. we treat as a dynamic anchor, which is fine
+ // even if the first arg has only one entry. you could argue all anchors should be implicitly dynamic in fact.
+ else {
+ pp = root.jsPlumb.extend({elementId: elementId, jsPlumbInstance: _currentInstance, anchors: specimen[0]}, specimen[1]);
+ newAnchor = new root.jsPlumb.DynamicAnchor(pp);
+ }
+ }
+ else {
+ newAnchor = new jsPlumb.DynamicAnchor({anchors: specimen, selector: null, elementId: elementId, jsPlumbInstance: _currentInstance});
+ }
+
+ }
+ else {
+ var anchorParams = {
+ x: specimen[0], y: specimen[1],
+ orientation: (specimen.length >= 4) ? [ specimen[2], specimen[3] ] : [0, 0],
+ offsets: (specimen.length >= 6) ? [ specimen[4], specimen[5] ] : [ 0, 0 ],
+ elementId: elementId,
+ jsPlumbInstance: _currentInstance,
+ cssClass: specimen.length === 7 ? specimen[6] : null
+ };
+ newAnchor = new root.jsPlumb.Anchor(anchorParams);
+ newAnchor.clone = function () {
+ return new root.jsPlumb.Anchor(anchorParams);
+ };
+ }
+ }
+
+ if (!newAnchor.id) {
+ newAnchor.id = "anchor_" + _idstamp();
+ }
+ return newAnchor;
+ };
+
+ /**
+ * makes a list of anchors from the given list of types or coords, eg
+ * ["TopCenter", "RightMiddle", "BottomCenter", [0, 1, -1, -1] ]
+ */
+ this.makeAnchors = function (types, elementId, jsPlumbInstance) {
+ var r = [];
+ for (var i = 0, ii = types.length; i < ii; i++) {
+ if (typeof types[i] === "string") {
+ r.push(root.jsPlumb.Anchors[types[i]]({elementId: elementId, jsPlumbInstance: jsPlumbInstance}));
+ }
+ else if (_ju.isArray(types[i])) {
+ r.push(_currentInstance.makeAnchor(types[i], elementId, jsPlumbInstance));
+ }
+ }
+ return r;
+ };
+
+ /**
+ * Makes a dynamic anchor from the given list of anchors (which may be in shorthand notation as strings or dimension arrays, or Anchor
+ * objects themselves) and the given, optional, anchorSelector function (jsPlumb uses a default if this is not provided; most people will
+ * not need to provide this - i think).
+ */
+ this.makeDynamicAnchor = function (anchors, anchorSelector) {
+ return new root.jsPlumb.DynamicAnchor({anchors: anchors, selector: anchorSelector, elementId: null, jsPlumbInstance: _currentInstance});
+ };
+
+// --------------------- makeSource/makeTarget ----------------------------------------------
+
+ this.targetEndpointDefinitions = {};
+ this.sourceEndpointDefinitions = {};
+
+ var selectorFilter = function (evt, _el, selector, _instance, negate) {
+ var t = evt.target || evt.srcElement, ok = false,
+ sel = _instance.getSelector(_el, selector);
+ for (var j = 0; j < sel.length; j++) {
+ if (sel[j] === t) {
+ ok = true;
+ break;
+ }
+ }
+ return negate ? !ok : ok;
+ };
+
+ var _makeElementDropHandler = function (elInfo, p, dropOptions, isSource, isTarget) {
+ var proxyComponent = new jsPlumbUIComponent(p);
+ var _drop = p._jsPlumb.EndpointDropHandler({
+ jsPlumb: _currentInstance,
+ enabled: function () {
+ return elInfo.def.enabled;
+ },
+ isFull: function () {
+ var targetCount = _currentInstance.select({target: elInfo.id}).length;
+ return elInfo.def.maxConnections > 0 && targetCount >= elInfo.def.maxConnections;
+ },
+ element: elInfo.el,
+ elementId: elInfo.id,
+ isSource: isSource,
+ isTarget: isTarget,
+ addClass: function (clazz) {
+ _currentInstance.addClass(elInfo.el, clazz);
+ },
+ removeClass: function (clazz) {
+ _currentInstance.removeClass(elInfo.el, clazz);
+ },
+ onDrop: function (jpc) {
+ var source = jpc.endpoints[0];
+ source.anchor.unlock();
+ },
+ isDropAllowed: function () {
+ return proxyComponent.isDropAllowed.apply(proxyComponent, arguments);
+ },
+ isRedrop:function(jpc) {
+ return (jpc.suspendedElement != null && jpc.suspendedEndpoint != null && jpc.suspendedEndpoint.element === elInfo.el);
+ },
+ getEndpoint: function (jpc) {
+
+ // make a new Endpoint for the target, or get it from the cache if uniqueEndpoint
+ // is set. if its a redrop the new endpoint will be immediately cleaned up.
+
+ var newEndpoint = elInfo.def.endpoint;
+
+ // if no cached endpoint, or there was one but it has been cleaned up
+ // (ie. detached), create a new one
+ if (newEndpoint == null || newEndpoint._jsPlumb == null) {
+ var eps = _currentInstance.deriveEndpointAndAnchorSpec(jpc.getType().join(" "), true);
+ var pp = eps.endpoints ? root.jsPlumb.extend(p, {
+ endpoint:elInfo.def.def.endpoint || eps.endpoints[1]
+ }) :p;
+ if (eps.anchors) {
+ pp = root.jsPlumb.extend(pp, {
+ anchor:elInfo.def.def.anchor || eps.anchors[1]
+ });
+ }
+ newEndpoint = _currentInstance.addEndpoint(elInfo.el, pp);
+ newEndpoint._mtNew = true;
+ }
+
+ if (p.uniqueEndpoint) {
+ elInfo.def.endpoint = newEndpoint;
+ }
+
+ newEndpoint.setDeleteOnEmpty(true);
+
+ // if connection is detachable, init the new endpoint to be draggable, to support that happening.
+ if (jpc.isDetachable()) {
+ newEndpoint.initDraggable();
+ }
+
+ // if the anchor has a 'positionFinder' set, then delegate to that function to find
+ // out where to locate the anchor.
+ if (newEndpoint.anchor.positionFinder != null) {
+ var dropPosition = _currentInstance.getUIPosition(arguments, _currentInstance.getZoom()),
+ elPosition = _currentInstance.getOffset(elInfo.el),
+ elSize = _currentInstance.getSize(elInfo.el),
+ ap = dropPosition == null ? [0,0] : newEndpoint.anchor.positionFinder(dropPosition, elPosition, elSize, newEndpoint.anchor.constructorParams);
+
+ newEndpoint.anchor.x = ap[0];
+ newEndpoint.anchor.y = ap[1];
+ // now figure an orientation for it..kind of hard to know what to do actually. probably the best thing i can do is to
+ // support specifying an orientation in the anchor's spec. if one is not supplied then i will make the orientation
+ // be what will cause the most natural link to the source: it will be pointing at the source, but it needs to be
+ // specified in one axis only, and so how to make that choice? i think i will use whichever axis is the one in which
+ // the target is furthest away from the source.
+ }
+
+ return newEndpoint;
+ },
+ maybeCleanup: function (ep) {
+ if (ep._mtNew && ep.connections.length === 0) {
+ _currentInstance.deleteObject({endpoint: ep});
+ }
+ else {
+ delete ep._mtNew;
+ }
+ }
+ });
+
+ // wrap drop events as needed and initialise droppable
+ var dropEvent = root.jsPlumb.dragEvents.drop;
+ dropOptions.scope = dropOptions.scope || (p.scope || _currentInstance.Defaults.Scope);
+ dropOptions[dropEvent] = _ju.wrap(dropOptions[dropEvent], _drop, true);
+ dropOptions.rank = p.rank || 0;
+
+ // if target, return true from the over event. this will cause katavorio to stop setting drops to hover
+ // if multipleDrop is set to false.
+ if (isTarget) {
+ dropOptions[root.jsPlumb.dragEvents.over] = function () { return true; };
+ }
+
+ // vanilla jsplumb only
+ if (p.allowLoopback === false) {
+ dropOptions.canDrop = function (_drag) {
+ var de = _drag.getDragElement()._jsPlumbRelatedElement;
+ return de !== elInfo.el;
+ };
+ }
+ _currentInstance.initDroppable(elInfo.el, dropOptions, "internal");
+
+ return _drop;
+
+ };
+
+ // see API docs
+ this.makeTarget = function (el, params, referenceParams) {
+
+ // put jsplumb ref into params without altering the params passed in
+ var p = root.jsPlumb.extend({_jsPlumb: this}, referenceParams);
+ root.jsPlumb.extend(p, params);
+
+ var maxConnections = p.maxConnections || -1,
+
+ _doOne = function (el) {
+
+ // get the element's id and store the endpoint definition for it. jsPlumb.connect calls will look for one of these,
+ // and use the endpoint definition if found.
+ // decode the info for this element (id and element)
+ var elInfo = _info(el),
+ elid = elInfo.id,
+ dropOptions = root.jsPlumb.extend({}, p.dropOptions || {}),
+ type = p.connectionType || "default";
+
+ this.targetEndpointDefinitions[elid] = this.targetEndpointDefinitions[elid] || {};
+
+ _ensureContainer(elid);
+
+ // if this is a group and the user has not mandated a rank, set to -1 so that Nodes takes
+ // precedence.
+ if (elInfo.el._isJsPlumbGroup && dropOptions.rank == null) {
+ dropOptions.rank = -1;
+ }
+
+ // store the definition
+ var _def = {
+ def: root.jsPlumb.extend({}, p),
+ uniqueEndpoint: p.uniqueEndpoint,
+ maxConnections: maxConnections,
+ enabled: true
+ };
+
+ if (p.createEndpoint) {
+ _def.uniqueEndpoint = true;
+ _def.endpoint = _currentInstance.addEndpoint(el, _def.def);
+ _def.endpoint.setDeleteOnEmpty(false);
+ }
+
+ elInfo.def = _def;
+ this.targetEndpointDefinitions[elid][type] = _def;
+ _makeElementDropHandler(elInfo, p, dropOptions, p.isSource === true, true);
+ // stash the definition on the drop
+ elInfo.el._katavorioDrop[elInfo.el._katavorioDrop.length - 1].targetDef = _def;
+
+ }.bind(this);
+
+ // make an array if only given one element
+ var inputs = el.length && el.constructor !== String ? el : [ el ];
+
+ // register each one in the list.
+ for (var i = 0, ii = inputs.length; i < ii; i++) {
+ _doOne(inputs[i]);
+ }
+
+ return this;
+ };
+
+ // see api docs
+ this.unmakeTarget = function (el, doNotClearArrays) {
+ var info = _info(el);
+ _currentInstance.destroyDroppable(info.el, "internal");
+ if (!doNotClearArrays) {
+ delete this.targetEndpointDefinitions[info.id];
+ }
+
+ return this;
+ };
+
+ // see api docs
+ this.makeSource = function (el, params, referenceParams) {
+ var p = root.jsPlumb.extend({_jsPlumb: this}, referenceParams);
+ root.jsPlumb.extend(p, params);
+ var type = p.connectionType || "default";
+ var aae = _currentInstance.deriveEndpointAndAnchorSpec(type);
+ p.endpoint = p.endpoint || aae.endpoints[0];
+ p.anchor = p.anchor || aae.anchors[0];
+ var maxConnections = p.maxConnections || -1,
+ onMaxConnections = p.onMaxConnections,
+ _doOne = function (elInfo) {
+ // get the element's id and store the endpoint definition for it. jsPlumb.connect calls will look for one of these,
+ // and use the endpoint definition if found.
+ var elid = elInfo.id,
+ _del = this.getElement(elInfo.el);
+
+ this.sourceEndpointDefinitions[elid] = this.sourceEndpointDefinitions[elid] || {};
+ _ensureContainer(elid);
+
+ var _def = {
+ def:root.jsPlumb.extend({}, p),
+ uniqueEndpoint: p.uniqueEndpoint,
+ maxConnections: maxConnections,
+ enabled: true
+ };
+
+ if (p.createEndpoint) {
+ _def.uniqueEndpoint = true;
+ _def.endpoint = _currentInstance.addEndpoint(el, _def.def);
+ _def.endpoint.setDeleteOnEmpty(false);
+ }
+
+ this.sourceEndpointDefinitions[elid][type] = _def;
+ elInfo.def = _def;
+
+ var stopEvent = root.jsPlumb.dragEvents.stop,
+ dragEvent = root.jsPlumb.dragEvents.drag,
+ dragOptions = root.jsPlumb.extend({ }, p.dragOptions || {}),
+ existingDrag = dragOptions.drag,
+ existingStop = dragOptions.stop,
+ ep = null,
+ endpointAddedButNoDragYet = false;
+
+ // set scope if its not set in dragOptions but was passed in in params
+ dragOptions.scope = dragOptions.scope || p.scope;
+
+ dragOptions[dragEvent] = _ju.wrap(dragOptions[dragEvent], function () {
+ if (existingDrag) {
+ existingDrag.apply(this, arguments);
+ }
+ endpointAddedButNoDragYet = false;
+ });
+
+ dragOptions[stopEvent] = _ju.wrap(dragOptions[stopEvent], function () {
+
+ if (existingStop) {
+ existingStop.apply(this, arguments);
+ }
+ this.currentlyDragging = false;
+ if (ep._jsPlumb != null) { // if not cleaned up...
+
+ // reset the anchor to the anchor that was initially provided. the one we were using to drag
+ // the connection was just a placeholder that was located at the place the user pressed the
+ // mouse button to initiate the drag.
+ var anchorDef = p.anchor || this.Defaults.Anchor,
+ oldAnchor = ep.anchor,
+ oldConnection = ep.connections[0];
+
+ var newAnchor = this.makeAnchor(anchorDef, elid, this),
+ _el = ep.element;
+
+ // if the anchor has a 'positionFinder' set, then delegate to that function to find
+ // out where to locate the anchor. issue 117.
+ if (newAnchor.positionFinder != null) {
+ var elPosition = _currentInstance.getOffset(_el),
+ elSize = this.getSize(_el),
+ dropPosition = { left: elPosition.left + (oldAnchor.x * elSize[0]), top: elPosition.top + (oldAnchor.y * elSize[1]) },
+ ap = newAnchor.positionFinder(dropPosition, elPosition, elSize, newAnchor.constructorParams);
+
+ newAnchor.x = ap[0];
+ newAnchor.y = ap[1];
+ }
+
+ ep.setAnchor(newAnchor, true);
+ ep.repaint();
+ this.repaint(ep.elementId);
+ if (oldConnection != null) {
+ this.repaint(oldConnection.targetId);
+ }
+ }
+ }.bind(this));
+
+ // when the user presses the mouse, add an Endpoint, if we are enabled.
+ var mouseDownListener = function (e) {
+ // on right mouse button, abort.
+ if (e.which === 3 || e.button === 2) {
+ return;
+ }
+
+ // TODO store def on element.
+ var def = this.sourceEndpointDefinitions[elid][type];
+
+ // if disabled, return.
+ if (!def.enabled) {
+ return;
+ }
+
+ elid = this.getId(this.getElement(elInfo.el)); // elid might have changed since this method was called to configure the element.
+
+ // if a filter was given, run it, and return if it says no.
+ if (p.filter) {
+ var r = _ju.isString(p.filter) ? selectorFilter(e, elInfo.el, p.filter, this, p.filterExclude) : p.filter(e, elInfo.el);
+ if (r === false) {
+ return;
+ }
+ }
+
+ // if maxConnections reached
+ var sourceCount = this.select({source: elid}).length;
+ if (def.maxConnections >= 0 && (sourceCount >= def.maxConnections)) {
+ if (onMaxConnections) {
+ onMaxConnections({
+ element: elInfo.el,
+ maxConnections: maxConnections
+ }, e);
+ }
+ return false;
+ }
+
+ // find the position on the element at which the mouse was pressed; this is where the endpoint
+ // will be located.
+ var elxy = root.jsPlumb.getPositionOnElement(e, _del, _zoom);
+
+ // we need to override the anchor in here, and force 'isSource', but we don't want to mess with
+ // the params passed in, because after a connection is established we're going to reset the endpoint
+ // to have the anchor we were given.
+ var tempEndpointParams = {};
+ root.jsPlumb.extend(tempEndpointParams, def.def);
+ tempEndpointParams.isTemporarySource = true;
+ tempEndpointParams.anchor = [ elxy[0], elxy[1] , 0, 0];
+ tempEndpointParams.dragOptions = dragOptions;
+
+ if (def.def.scope) {
+ tempEndpointParams.scope = def.def.scope;
+ }
+
+ ep = this.addEndpoint(elid, tempEndpointParams);
+ endpointAddedButNoDragYet = true;
+ ep.setDeleteOnEmpty(true);
+
+ // if unique endpoint and it's already been created, push it onto the endpoint we create. at the end
+ // of a successful connection we'll switch to that endpoint.
+ // TODO this is the same code as the programmatic endpoints create on line 1050 ish
+ if (def.uniqueEndpoint) {
+ if (!def.endpoint) {
+ def.endpoint = ep;
+ ep.setDeleteOnEmpty(false);
+ }
+ else {
+ ep.finalEndpoint = def.endpoint;
+ }
+ }
+
+ var _delTempEndpoint = function () {
+ // this mouseup event is fired only if no dragging occurred, by jquery and yui, but for mootools
+ // it is fired even if dragging has occurred, in which case we would blow away a perfectly
+ // legitimate endpoint, were it not for this check. the flag is set after adding an
+ // endpoint and cleared in a drag listener we set in the dragOptions above.
+ _currentInstance.off(ep.canvas, "mouseup", _delTempEndpoint);
+ _currentInstance.off(elInfo.el, "mouseup", _delTempEndpoint);
+ if (endpointAddedButNoDragYet) {
+ endpointAddedButNoDragYet = false;
+ _currentInstance.deleteEndpoint(ep);
+ }
+ };
+
+ _currentInstance.on(ep.canvas, "mouseup", _delTempEndpoint);
+ _currentInstance.on(elInfo.el, "mouseup", _delTempEndpoint);
+
+ // optionally check for attributes to extract from the source element
+ var payload = {};
+ if (def.def.extract) {
+ for (var att in def.def.extract) {
+ var v = (e.srcElement || e.target).getAttribute(att);
+ if (v) {
+ payload[def.def.extract[att]] = v;
+ }
+ }
+ }
+
+ // and then trigger its mousedown event, which will kick off a drag, which will start dragging
+ // a new connection from this endpoint.
+ _currentInstance.trigger(ep.canvas, "mousedown", e, payload);
+
+ _ju.consume(e);
+
+ }.bind(this);
+
+ this.on(elInfo.el, "mousedown", mouseDownListener);
+ _def.trigger = mouseDownListener;
+
+ // if a filter was provided, set it as a dragFilter on the element,
+ // to prevent the element drag function from kicking in when we want to
+ // drag a new connection
+ if (p.filter && (_ju.isString(p.filter) || _ju.isFunction(p.filter))) {
+ _currentInstance.setDragFilter(elInfo.el, p.filter);
+ }
+
+ var dropOptions = root.jsPlumb.extend({}, p.dropOptions || {});
+
+ _makeElementDropHandler(elInfo, p, dropOptions, true, p.isTarget === true);
+
+ }.bind(this);
+
+ var inputs = el.length && el.constructor !== String ? el : [ el ];
+ for (var i = 0, ii = inputs.length; i < ii; i++) {
+ _doOne(_info(inputs[i]));
+ }
+
+ return this;
+ };
+
+ // see api docs
+ this.unmakeSource = function (el, connectionType, doNotClearArrays) {
+ var info = _info(el);
+ _currentInstance.destroyDroppable(info.el, "internal");
+ var eldefs = this.sourceEndpointDefinitions[info.id];
+ if (eldefs) {
+ for (var def in eldefs) {
+ if (connectionType == null || connectionType === def) {
+ var mouseDownListener = eldefs[def].trigger;
+ if (mouseDownListener) {
+ _currentInstance.off(info.el, "mousedown", mouseDownListener);
+ }
+ if (!doNotClearArrays) {
+ delete this.sourceEndpointDefinitions[info.id][def];
+ }
+ }
+ }
+ }
+
+ return this;
+ };
+
+ // see api docs
+ this.unmakeEverySource = function () {
+ for (var i in this.sourceEndpointDefinitions) {
+ _currentInstance.unmakeSource(i, null, true);
+ }
+
+ this.sourceEndpointDefinitions = {};
+ return this;
+ };
+
+ var _getScope = function (el, types, connectionType) {
+ types = _ju.isArray(types) ? types : [ types ];
+ var id = _getId(el);
+ connectionType = connectionType || "default";
+ for (var i = 0; i < types.length; i++) {
+ var eldefs = this[types[i]][id];
+ if (eldefs && eldefs[connectionType]) {
+ return eldefs[connectionType].def.scope || this.Defaults.Scope;
+ }
+ }
+ }.bind(this);
+
+ var _setScope = function (el, scope, types, connectionType) {
+ types = _ju.isArray(types) ? types : [ types ];
+ var id = _getId(el);
+ connectionType = connectionType || "default";
+ for (var i = 0; i < types.length; i++) {
+ var eldefs = this[types[i]][id];
+ if (eldefs && eldefs[connectionType]) {
+ eldefs[connectionType].def.scope = scope;
+ }
+ }
+
+ }.bind(this);
+
+ this.getScope = function (el, scope) {
+ return _getScope(el, [ "sourceEndpointDefinitions", "targetEndpointDefinitions" ]);
+ };
+ this.getSourceScope = function (el) {
+ return _getScope(el, "sourceEndpointDefinitions");
+ };
+ this.getTargetScope = function (el) {
+ return _getScope(el, "targetEndpointDefinitions");
+ };
+ this.setScope = function (el, scope, connectionType) {
+ this.setSourceScope(el, scope, connectionType);
+ this.setTargetScope(el, scope, connectionType);
+ };
+ this.setSourceScope = function (el, scope, connectionType) {
+ _setScope(el, scope, "sourceEndpointDefinitions", connectionType);
+ // we get the source scope during the mousedown event, but we also want to set this.
+ this.setDragScope(el, scope);
+ };
+ this.setTargetScope = function (el, scope, connectionType) {
+ _setScope(el, scope, "targetEndpointDefinitions", connectionType);
+ this.setDropScope(el, scope);
+ };
+
+ // see api docs
+ this.unmakeEveryTarget = function () {
+ for (var i in this.targetEndpointDefinitions) {
+ _currentInstance.unmakeTarget(i, true);
+ }
+
+ this.targetEndpointDefinitions = {};
+ return this;
+ };
+
+ // does the work of setting a source enabled or disabled.
+ var _setEnabled = function (type, el, state, toggle, connectionType) {
+ var a = type === "source" ? this.sourceEndpointDefinitions : this.targetEndpointDefinitions,
+ originalState, info, newState;
+
+ connectionType = connectionType || "default";
+
+ // a selector or an array
+ if (el.length && !_ju.isString(el)) {
+ originalState = [];
+ for (var i = 0, ii = el.length; i < ii; i++) {
+ info = _info(el[i]);
+ if (a[info.id] && a[info.id][connectionType]) {
+ originalState[i] = a[info.id][connectionType].enabled;
+ newState = toggle ? !originalState[i] : state;
+ a[info.id][connectionType].enabled = newState;
+ _currentInstance[newState ? "removeClass" : "addClass"](info.el, "jtk-" + type + "-disabled");
+ }
+ }
+ }
+ // otherwise a DOM element or a String ID.
+ else {
+ info = _info(el);
+ var id = info.id;
+ if (a[id] && a[id][connectionType]) {
+ originalState = a[id][connectionType].enabled;
+ newState = toggle ? !originalState : state;
+ a[id][connectionType].enabled = newState;
+ _currentInstance[newState ? "removeClass" : "addClass"](info.el, "jtk-" + type + "-disabled");
+ }
+ }
+ return originalState;
+ }.bind(this);
+
+ var _first = function (el, fn) {
+ if (_ju.isString(el) || !el.length) {
+ return fn.apply(this, [ el ]);
+ }
+ else if (el.length) {
+ return fn.apply(this, [ el[0] ]);
+ }
+
+ }.bind(this);
+
+ this.toggleSourceEnabled = function (el, connectionType) {
+ _setEnabled("source", el, null, true, connectionType);
+ return this.isSourceEnabled(el, connectionType);
+ };
+
+ this.setSourceEnabled = function (el, state, connectionType) {
+ return _setEnabled("source", el, state, null, connectionType);
+ };
+ this.isSource = function (el, connectionType) {
+ connectionType = connectionType || "default";
+ return _first(el, function (_el) {
+ var eldefs = this.sourceEndpointDefinitions[_info(_el).id];
+ return eldefs != null && eldefs[connectionType] != null;
+ }.bind(this));
+ };
+ this.isSourceEnabled = function (el, connectionType) {
+ connectionType = connectionType || "default";
+ return _first(el, function (_el) {
+ var sep = this.sourceEndpointDefinitions[_info(_el).id];
+ return sep && sep[connectionType] && sep[connectionType].enabled === true;
+ }.bind(this));
+ };
+
+ this.toggleTargetEnabled = function (el, connectionType) {
+ _setEnabled("target", el, null, true, connectionType);
+ return this.isTargetEnabled(el, connectionType);
+ };
+
+ this.isTarget = function (el, connectionType) {
+ connectionType = connectionType || "default";
+ return _first(el, function (_el) {
+ var eldefs = this.targetEndpointDefinitions[_info(_el).id];
+ return eldefs != null && eldefs[connectionType] != null;
+ }.bind(this));
+ };
+ this.isTargetEnabled = function (el, connectionType) {
+ connectionType = connectionType || "default";
+ return _first(el, function (_el) {
+ var tep = this.targetEndpointDefinitions[_info(_el).id];
+ return tep && tep[connectionType] && tep[connectionType].enabled === true;
+ }.bind(this));
+ };
+ this.setTargetEnabled = function (el, state, connectionType) {
+ return _setEnabled("target", el, state, null, connectionType);
+ };
+
+// --------------------- end makeSource/makeTarget ----------------------------------------------
+
+ this.ready = function (fn) {
+ _currentInstance.bind("ready", fn);
+ };
+
+ var _elEach = function(el, fn) {
+ // support both lists...
+ if (typeof el === 'object' && el.length) {
+ for (var i = 0, ii = el.length; i < ii; i++) {
+ fn(el[i]);
+ }
+ }
+ else {// ...and single strings or elements.
+ fn(el);
+ }
+
+ return _currentInstance;
+ };
+
+ // repaint some element's endpoints and connections
+ this.repaint = function (el, ui, timestamp) {
+ return _elEach(el, function(_el) {
+ _draw(_el, ui, timestamp);
+ });
+ };
+
+ this.revalidate = function (el, timestamp, isIdAlready) {
+ return _elEach(el, function(_el) {
+ var elId = isIdAlready ? _el : _currentInstance.getId(_el);
+ _currentInstance.updateOffset({ elId: elId, recalc: true, timestamp:timestamp });
+ var dm = _currentInstance.getDragManager();
+ if (dm) {
+ dm.updateOffsets(elId);
+ }
+ _currentInstance.repaint(_el);
+ });
+ };
+
+ // repaint every endpoint and connection.
+ this.repaintEverything = function () {
+ // TODO this timestamp causes continuous anchors to not repaint properly.
+ // fix this. do not just take out the timestamp. it runs a lot faster with
+ // the timestamp included.
+ var timestamp = _timestamp(), elId;
+
+ for (elId in endpointsByElement) {
+ _currentInstance.updateOffset({ elId: elId, recalc: true, timestamp: timestamp });
+ }
+
+ for (elId in endpointsByElement) {
+ _draw(elId, null, timestamp);
+ }
+
+ return this;
+ };
+
+ this.removeAllEndpoints = function (el, recurse, affectedElements) {
+ affectedElements = affectedElements || [];
+ var _one = function (_el) {
+ var info = _info(_el),
+ ebe = endpointsByElement[info.id],
+ i, ii;
+
+ if (ebe) {
+ affectedElements.push(info);
+ for (i = 0, ii = ebe.length; i < ii; i++) {
+ _currentInstance.deleteEndpoint(ebe[i], false);
+ }
+ }
+ delete endpointsByElement[info.id];
+
+ if (recurse) {
+ if (info.el && info.el.nodeType !== 3 && info.el.nodeType !== 8) {
+ for (i = 0, ii = info.el.childNodes.length; i < ii; i++) {
+ _one(info.el.childNodes[i]);
+ }
+ }
+ }
+
+ };
+ _one(el);
+ return this;
+ };
+
+ var _doRemove = function(info, affectedElements) {
+ _currentInstance.removeAllEndpoints(info.id, true, affectedElements);
+ var dm = _currentInstance.getDragManager();
+ var _one = function(_info) {
+
+ if (dm) {
+ dm.elementRemoved(_info.id);
+ }
+ _currentInstance.anchorManager.clearFor(_info.id);
+ _currentInstance.anchorManager.removeFloatingConnection(_info.id);
+
+ if (_currentInstance.isSource(_info.el)) {
+ _currentInstance.unmakeSource(_info.el);
+ }
+ if (_currentInstance.isTarget(_info.el)) {
+ _currentInstance.unmakeTarget(_info.el);
+ }
+ _currentInstance.destroyDraggable(_info.el);
+ _currentInstance.destroyDroppable(_info.el);
+
+
+ delete _currentInstance.floatingConnections[_info.id];
+ delete managedElements[_info.id];
+ delete offsets[_info.id];
+ if (_info.el) {
+ _currentInstance.removeElement(_info.el);
+ _info.el._jsPlumb = null;
+ }
+ };
+
+ // remove all affected child elements
+ for (var ae = 1; ae < affectedElements.length; ae++) {
+ _one(affectedElements[ae]);
+ }
+ // and always remove the requested one from the dom.
+ _one(info);
+ };
+
+ /**
+ * Remove the given element, including cleaning up all endpoints registered for it.
+ * This is exposed in the public API but also used internally by jsPlumb when removing the
+ * element associated with a connection drag.
+ */
+ this.remove = function (el, doNotRepaint) {
+ var info = _info(el), affectedElements = [];
+ if (info.text && info.el.parentNode) {
+ info.el.parentNode.removeChild(info.el);
+ }
+ else if (info.id) {
+ _currentInstance.batch(function () {
+ _doRemove(info, affectedElements);
+ }, doNotRepaint === true);
+ }
+ return _currentInstance;
+ };
+
+ this.empty = function (el, doNotRepaint) {
+ var affectedElements = [];
+ var _one = function(el, dontRemoveFocus) {
+ var info = _info(el);
+ if (info.text) {
+ info.el.parentNode.removeChild(info.el);
+ }
+ else if (info.el) {
+ while(info.el.childNodes.length > 0) {
+ _one(info.el.childNodes[0]);
+ }
+ if (!dontRemoveFocus) {
+ _doRemove(info, affectedElements);
+ }
+ }
+ };
+
+ _currentInstance.batch(function() {
+ _one(el, true);
+ }, doNotRepaint === false);
+
+ return _currentInstance;
+ };
+
+ this.reset = function (doNotUnbindInstanceEventListeners) {
+ _currentInstance.silently(function() {
+ _hoverSuspended = false;
+ _currentInstance.removeAllGroups();
+ _currentInstance.removeGroupManager();
+ _currentInstance.deleteEveryEndpoint();
+ if (!doNotUnbindInstanceEventListeners) {
+ _currentInstance.unbind();
+ }
+ this.targetEndpointDefinitions = {};
+ this.sourceEndpointDefinitions = {};
+ connections.length = 0;
+ if (this.doReset) {
+ this.doReset();
+ }
+ }.bind(this));
+ };
+
+ var _clearObject = function (obj) {
+ if (obj.canvas && obj.canvas.parentNode) {
+ obj.canvas.parentNode.removeChild(obj.canvas);
+ }
+ obj.cleanup();
+ obj.destroy();
+ };
+
+ this.clear = function () {
+ _currentInstance.select().each(_clearObject);
+ _currentInstance.selectEndpoints().each(_clearObject);
+
+ endpointsByElement = {};
+ endpointsByUUID = {};
+ };
+
+ this.setDefaultScope = function (scope) {
+ DEFAULT_SCOPE = scope;
+ return _currentInstance;
+ };
+
+ this.deriveEndpointAndAnchorSpec = function(type, dontPrependDefault) {
+ var bits = ((dontPrependDefault ? "" : "default ") + type).split(/[\s]/), eps = null, ep = null, a = null, as = null;
+ for (var i = 0; i < bits.length; i++) {
+ var _t = _currentInstance.getType(bits[i], "connection");
+ if (_t) {
+ if (_t.endpoints) {
+ eps = _t.endpoints;
+ }
+ if (_t.endpoint) {
+ ep = _t.endpoint;
+ }
+ if (_t.anchors) {
+ as = _t.anchors;
+ }
+ if (_t.anchor) {
+ a = _t.anchor;
+ }
+ }
+ }
+ return { endpoints: eps ? eps : [ ep, ep ], anchors: as ? as : [a, a ]};
+ };
+
+ // sets the id of some element, changing whatever we need to to keep track.
+ this.setId = function (el, newId, doNotSetAttribute) {
+ //
+ var id;
+
+ if (_ju.isString(el)) {
+ id = el;
+ }
+ else {
+ el = this.getElement(el);
+ id = this.getId(el);
+ }
+
+ var sConns = this.getConnections({source: id, scope: '*'}, true),
+ tConns = this.getConnections({target: id, scope: '*'}, true);
+
+ newId = "" + newId;
+
+ if (!doNotSetAttribute) {
+ el = this.getElement(id);
+ this.setAttribute(el, "id", newId);
+ }
+ else {
+ el = this.getElement(newId);
+ }
+
+ endpointsByElement[newId] = endpointsByElement[id] || [];
+ for (var i = 0, ii = endpointsByElement[newId].length; i < ii; i++) {
+ endpointsByElement[newId][i].setElementId(newId);
+ endpointsByElement[newId][i].setReferenceElement(el);
+ }
+ delete endpointsByElement[id];
+
+ this.sourceEndpointDefinitions[newId] = this.sourceEndpointDefinitions[id];
+ delete this.sourceEndpointDefinitions[id];
+ this.targetEndpointDefinitions[newId] = this.targetEndpointDefinitions[id];
+ delete this.targetEndpointDefinitions[id];
+
+ this.anchorManager.changeId(id, newId);
+ var dm = this.getDragManager();
+ if (dm) {
+ dm.changeId(id, newId);
+ }
+ managedElements[newId] = managedElements[id];
+ delete managedElements[id];
+
+ var _conns = function (list, epIdx, type) {
+ for (var i = 0, ii = list.length; i < ii; i++) {
+ list[i].endpoints[epIdx].setElementId(newId);
+ list[i].endpoints[epIdx].setReferenceElement(el);
+ list[i][type + "Id"] = newId;
+ list[i][type] = el;
+ }
+ };
+ _conns(sConns, 0, "source");
+ _conns(tConns, 1, "target");
+
+ this.repaint(newId);
+ };
+
+ this.setDebugLog = function (debugLog) {
+ log = debugLog;
+ };
+
+ this.setSuspendDrawing = function (val, repaintAfterwards) {
+ var curVal = _suspendDrawing;
+ _suspendDrawing = val;
+ if (val) {
+ _suspendedAt = new Date().getTime();
+ } else {
+ _suspendedAt = null;
+ }
+ if (repaintAfterwards) {
+ this.repaintEverything();
+ }
+ return curVal;
+ };
+
+ // returns whether or not drawing is currently suspended.
+ this.isSuspendDrawing = function () {
+ return _suspendDrawing;
+ };
+
+ // return timestamp for when drawing was suspended.
+ this.getSuspendedAt = function () {
+ return _suspendedAt;
+ };
+
+ this.batch = function (fn, doNotRepaintAfterwards) {
+ var _wasSuspended = this.isSuspendDrawing();
+ if (!_wasSuspended) {
+ this.setSuspendDrawing(true);
+ }
+ try {
+ fn();
+ }
+ catch (e) {
+ _ju.log("Function run while suspended failed", e);
+ }
+ if (!_wasSuspended) {
+ this.setSuspendDrawing(false, !doNotRepaintAfterwards);
+ }
+ };
+
+ this.doWhileSuspended = this.batch;
+
+ this.getCachedData = _getCachedData;
+ this.timestamp = _timestamp;
+ this.show = function (el, changeEndpoints) {
+ _setVisible(el, "block", changeEndpoints);
+ return _currentInstance;
+ };
+
+ // TODO: update this method to return the current state.
+ this.toggleVisible = _toggleVisible;
+ this.addListener = this.bind;
+
+ var floatingConnections = [];
+ this.registerFloatingConnection = function(info, conn, ep) {
+ floatingConnections[info.id] = conn;
+ // only register for the target endpoint; we will not be dragging the source at any time
+ // before this connection is either discarded or made into a permanent connection.
+ _ju.addToList(endpointsByElement, info.id, ep);
+ };
+ this.getFloatingConnectionFor = function(id) {
+ return floatingConnections[id];
+ };
+
+ this.listManager = new root.jsPlumbListManager(this);
+ };
+
+ _ju.extend(root.jsPlumbInstance, _ju.EventGenerator, {
+ setAttribute: function (el, a, v) {
+ this.setAttribute(el, a, v);
+ },
+ getAttribute: function (el, a) {
+ return this.getAttribute(root.jsPlumb.getElement(el), a);
+ },
+ convertToFullOverlaySpec: function(spec) {
+ if (_ju.isString(spec)) {
+ spec = [ spec, { } ];
+ }
+ spec[1].id = spec[1].id || _ju.uuid();
+ return spec;
+ },
+ registerConnectionType: function (id, type) {
+ this._connectionTypes[id] = root.jsPlumb.extend({}, type);
+ if (type.overlays) {
+ var to = {};
+ for (var i = 0; i < type.overlays.length; i++) {
+ // if a string, convert to object representation so that we can store the typeid on it.
+ // also assign an id.
+ var fo = this.convertToFullOverlaySpec(type.overlays[i]);
+ to[fo[1].id] = fo;
+ }
+ this._connectionTypes[id].overlays = to;
+ }
+ },
+ registerConnectionTypes: function (types) {
+ for (var i in types) {
+ this.registerConnectionType(i, types[i]);
+ }
+ },
+ registerEndpointType: function (id, type) {
+ this._endpointTypes[id] = root.jsPlumb.extend({}, type);
+ if (type.overlays) {
+ var to = {};
+ for (var i = 0; i < type.overlays.length; i++) {
+ // if a string, convert to object representation so that we can store the typeid on it.
+ // also assign an id.
+ var fo = this.convertToFullOverlaySpec(type.overlays[i]);
+ to[fo[1].id] = fo;
+ }
+ this._endpointTypes[id].overlays = to;
+ }
+ },
+ registerEndpointTypes: function (types) {
+ for (var i in types) {
+ this.registerEndpointType(i, types[i]);
+ }
+ },
+ getType: function (id, typeDescriptor) {
+ return typeDescriptor === "connection" ? this._connectionTypes[id] : this._endpointTypes[id];
+ },
+ setIdChanged: function (oldId, newId) {
+ this.setId(oldId, newId, true);
+ },
+ // set parent: change the parent for some node and update all the registrations we need to.
+ setParent: function (el, newParent) {
+ var _dom = this.getElement(el),
+ _id = this.getId(_dom),
+ _pdom = this.getElement(newParent),
+ _pid = this.getId(_pdom),
+ dm = this.getDragManager();
+
+ _dom.parentNode.removeChild(_dom);
+ _pdom.appendChild(_dom);
+ if (dm) {
+ dm.setParent(_dom, _id, _pdom, _pid);
+ }
+ },
+ extend: function (o1, o2, names) {
+ var i;
+ if (names) {
+ for (i = 0; i < names.length; i++) {
+ o1[names[i]] = o2[names[i]];
+ }
+ }
+ else {
+ for (i in o2) {
+ o1[i] = o2[i];
+ }
+ }
+
+ return o1;
+ },
+ floatingConnections: {},
+ getFloatingAnchorIndex: function (jpc) {
+ return jpc.endpoints[0].isFloating() ? 0 : jpc.endpoints[1].isFloating() ? 1 : -1;
+ },
+ proxyConnection :function(connection, index, proxyEl, proxyElId, endpointGenerator, anchorGenerator) {
+ var proxyEp,
+ originalElementId = connection.endpoints[index].elementId,
+ originalEndpoint = connection.endpoints[index];
+
+ connection.proxies = connection.proxies || [];
+ if(connection.proxies[index]) {
+ proxyEp = connection.proxies[index].ep;
+ }else {
+ proxyEp = this.addEndpoint(proxyEl, {
+ endpoint:endpointGenerator(connection, index),
+ anchor:anchorGenerator(connection, index),
+ parameters:{
+ isProxyEndpoint:true
+ }
+ });
+ }
+ proxyEp.setDeleteOnEmpty(true);
+
+ // for this index, stash proxy info: the new EP, the original EP.
+ connection.proxies[index] = { ep:proxyEp, originalEp: originalEndpoint };
+
+ // and advise the anchor manager
+ if (index === 0) {
+ // TODO why are there two differently named methods? Why is there not one method that says "some end of this
+ // connection changed (you give the index), and here's the new element and element id."
+ this.anchorManager.sourceChanged(originalElementId, proxyElId, connection, proxyEl);
+ }
+ else {
+ this.anchorManager.updateOtherEndpoint(connection.endpoints[0].elementId, originalElementId, proxyElId, connection);
+ connection.target = proxyEl;
+ connection.targetId = proxyElId;
+ }
+
+ // detach the original EP from the connection.
+ originalEndpoint.detachFromConnection(connection, null, true);
+
+ // set the proxy as the new ep
+ proxyEp.connections = [ connection ];
+ connection.endpoints[index] = proxyEp;
+
+ originalEndpoint.setVisible(false);
+
+ connection.setVisible(true);
+
+ this.revalidate(proxyEl);
+ },
+ unproxyConnection : function(connection, index, proxyElId) {
+ // if connection cleaned up, no proxies, or none for this end of the connection, abort.
+ if (connection._jsPlumb == null || connection.proxies == null || connection.proxies[index] == null) {
+ return;
+ }
+
+ var originalElement = connection.proxies[index].originalEp.element,
+ originalElementId = connection.proxies[index].originalEp.elementId;
+
+ connection.endpoints[index] = connection.proxies[index].originalEp;
+ // and advise the anchor manager
+ if (index === 0) {
+ // TODO why are there two differently named methods? Why is there not one method that says "some end of this
+ // connection changed (you give the index), and here's the new element and element id."
+ this.anchorManager.sourceChanged(proxyElId, originalElementId, connection, originalElement);
+ }
+ else {
+ this.anchorManager.updateOtherEndpoint(connection.endpoints[0].elementId, proxyElId, originalElementId, connection);
+ connection.target = originalElement;
+ connection.targetId = originalElementId;
+ }
+
+ // detach the proxy EP from the connection (which will cause it to be removed as we no longer need it)
+ connection.proxies[index].ep.detachFromConnection(connection, null);
+
+ connection.proxies[index].originalEp.addConnection(connection);
+ if(connection.isVisible()) {
+ connection.proxies[index].originalEp.setVisible(true);
+ }
+
+ // cleanup
+ delete connection.proxies[index];
+ }
+ });
+
+// --------------------- static instance + module registration -------------------------------------------
+
+// create static instance and assign to window if window exists.
+ var jsPlumb = new jsPlumbInstance();
+ // register on 'root' (lets us run on server or browser)
+ root.jsPlumb = jsPlumb;
+ // add 'getInstance' method to static instance
+ jsPlumb.getInstance = function (_defaults, overrideFns) {
+ var j = new jsPlumbInstance(_defaults);
+ if (overrideFns) {
+ for (var ovf in overrideFns) {
+ j[ovf] = overrideFns[ovf];
+ }
+ }
+ j.init();
+ return j;
+ };
+ jsPlumb.each = function (spec, fn) {
+ if (spec == null) {
+ return;
+ }
+ if (typeof spec === "string") {
+ fn(jsPlumb.getElement(spec));
+ }
+ else if (spec.length != null) {
+ for (var i = 0; i < spec.length; i++) {
+ fn(jsPlumb.getElement(spec[i]));
+ }
+ }
+ else {
+ fn(spec);
+ } // assume it's an element.
+ };
+
+ // CommonJS
+ if (typeof exports !== 'undefined') {
+ exports.jsPlumb = jsPlumb;
+ }
+
+// --------------------- end static instance + AMD registration -------------------------------------------
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+/*
+ * 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;(function() {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+
+ // ------------------------------ BEGIN OverlayCapablejsPlumbUIComponent --------------------------------------------
+
+ var _internalLabelOverlayId = "__label",
+ // this is a shortcut helper method to let people add a label as
+ // overlay.
+ _makeLabelOverlay = function (component, params) {
+
+ var _params = {
+ cssClass: params.cssClass,
+ labelStyle: component.labelStyle,
+ id: _internalLabelOverlayId,
+ component: component,
+ _jsPlumb: component._jsPlumb.instance // TODO not necessary, since the instance can be accessed through the component.
+ },
+ mergedParams = _jp.extend(_params, params);
+
+ return new _jp.Overlays[component._jsPlumb.instance.getRenderMode()].Label(mergedParams);
+ },
+ _processOverlay = function (component, o) {
+ var _newOverlay = null;
+ if (_ju.isArray(o)) { // this is for the shorthand ["Arrow", { width:50 }] syntax
+ // there's also a three arg version:
+ // ["Arrow", { width:50 }, {location:0.7}]
+ // which merges the 3rd arg into the 2nd.
+ var type = o[0],
+ // make a copy of the object so as not to mess up anyone else's reference...
+ p = _jp.extend({component: component, _jsPlumb: component._jsPlumb.instance}, o[1]);
+ if (o.length === 3) {
+ _jp.extend(p, o[2]);
+ }
+ _newOverlay = new _jp.Overlays[component._jsPlumb.instance.getRenderMode()][type](p);
+ } else if (o.constructor === String) {
+ _newOverlay = new _jp.Overlays[component._jsPlumb.instance.getRenderMode()][o]({component: component, _jsPlumb: component._jsPlumb.instance});
+ } else {
+ _newOverlay = o;
+ }
+
+ _newOverlay.id = _newOverlay.id || _ju.uuid();
+ component.cacheTypeItem("overlay", _newOverlay, _newOverlay.id);
+ component._jsPlumb.overlays[_newOverlay.id] = _newOverlay;
+
+ return _newOverlay;
+ };
+
+ _jp.OverlayCapableJsPlumbUIComponent = function (params) {
+
+ root.jsPlumbUIComponent.apply(this, arguments);
+ this._jsPlumb.overlays = {};
+ this._jsPlumb.overlayPositions = {};
+
+ if (params.label) {
+ this.getDefaultType().overlays[_internalLabelOverlayId] = ["Label", {
+ label: params.label,
+ location: params.labelLocation || this.defaultLabelLocation || 0.5,
+ labelStyle: params.labelStyle || this._jsPlumb.instance.Defaults.LabelStyle,
+ id:_internalLabelOverlayId
+ }];
+ }else if(params.id){
+ // 新增 label 为空时设置的cssClass无效问题,可以使用 emptyLabelStyle: {cssClass: 'emptyFlowLabel'} 进行设置 by_ 萌级小菜鸟
+ this.getDefaultType().overlays[_internalLabelOverlayId] = ["Label", {
+ label: params.label,
+ location: params.labelLocation || this.defaultLabelLocation || 0.5,
+ labelStyle: params.emptyLabelStyle || this._jsPlumb.instance.Defaults.emptyLabelStyle,
+ id:_internalLabelOverlayId
+ }];
+ }
+
+ this.setListenerComponent = function (c) {
+ if (this._jsPlumb) {
+ for (var i in this._jsPlumb.overlays) {
+ this._jsPlumb.overlays[i].setListenerComponent(c);
+ }
+ }
+ };
+ };
+
+ _jp.OverlayCapableJsPlumbUIComponent.applyType = function (component, t) {
+ if (t.overlays) {
+ // loop through the ones in the type. if already present on the component,
+ // dont remove or re-add.
+ var keep = {}, i;
+
+ for (i in t.overlays) {
+
+ var existing = component._jsPlumb.overlays[t.overlays[i][1].id];
+ if (existing) {
+ // maybe update from data, if there were parameterised values for instance.
+ existing.updateFrom(t.overlays[i][1]);
+ keep[t.overlays[i][1].id] = true;
+ }
+ else {
+ var c = component.getCachedTypeItem("overlay", t.overlays[i][1].id);
+ if (c != null) {
+ c.reattach(component._jsPlumb.instance, component);
+ c.setVisible(true);
+ // maybe update from data, if there were parameterised values for instance.
+ c.updateFrom(t.overlays[i][1]);
+ component._jsPlumb.overlays[c.id] = c;
+ }
+ else {
+ c = component.addOverlay(t.overlays[i], true);
+ }
+ keep[c.id] = true;
+ }
+ }
+
+ // now loop through the full overlays and remove those that we dont want to keep
+ for (i in component._jsPlumb.overlays) {
+ if (keep[component._jsPlumb.overlays[i].id] == null) {
+ component.removeOverlay(component._jsPlumb.overlays[i].id, true); // remove overlay but dont clean it up.
+ // that would remove event listeners etc; overlays are never discarded by the types stuff, they are
+ // just detached/reattached.
+ }
+ }
+ }
+ };
+
+ _ju.extend(_jp.OverlayCapableJsPlumbUIComponent, root.jsPlumbUIComponent, {
+
+ setHover: function (hover, ignoreAttachedElements) {
+ if (this._jsPlumb && !this._jsPlumb.instance.isConnectionBeingDragged()) {
+ for (var i in this._jsPlumb.overlays) {
+ this._jsPlumb.overlays[i][hover ? "addClass" : "removeClass"](this._jsPlumb.instance.hoverClass);
+ }
+ }
+ },
+ addOverlay: function (overlay, doNotRepaint) {
+ var o = _processOverlay(this, overlay);
+
+ if (this.getData && o.type === "Label" && _ju.isArray(overlay)) {
+ //
+ // component data might contain label location - look for it here.
+ var d = this.getData(), p = overlay[1];
+ if (d) {
+ var locationAttribute = p.labelLocationAttribute || "labelLocation";
+ var loc = d ? d[locationAttribute] : null;
+
+ if (loc) {
+ o.loc = loc;
+ }
+ }
+ }
+
+ if (!doNotRepaint) {
+ this.repaint();
+ }
+ return o;
+ },
+ getOverlay: function (id) {
+ return this._jsPlumb.overlays[id];
+ },
+ getOverlays: function () {
+ return this._jsPlumb.overlays;
+ },
+ hideOverlay: function (id) {
+ var o = this.getOverlay(id);
+ if (o) {
+ o.hide();
+ }
+ },
+ hideOverlays: function () {
+ for (var i in this._jsPlumb.overlays) {
+ this._jsPlumb.overlays[i].hide();
+ }
+ },
+ showOverlay: function (id) {
+ var o = this.getOverlay(id);
+ if (o) {
+ o.show();
+ }
+ },
+ showOverlays: function () {
+ for (var i in this._jsPlumb.overlays) {
+ this._jsPlumb.overlays[i].show();
+ }
+ },
+ removeAllOverlays: function (doNotRepaint) {
+ for (var i in this._jsPlumb.overlays) {
+ if (this._jsPlumb.overlays[i].cleanup) {
+ this._jsPlumb.overlays[i].cleanup();
+ }
+ }
+
+ this._jsPlumb.overlays = {};
+ this._jsPlumb.overlayPositions = null;
+ this._jsPlumb.overlayPlacements= {};
+ if (!doNotRepaint) {
+ this.repaint();
+ }
+ },
+ removeOverlay: function (overlayId, dontCleanup) {
+ var o = this._jsPlumb.overlays[overlayId];
+ if (o) {
+ o.setVisible(false);
+ if (!dontCleanup && o.cleanup) {
+ o.cleanup();
+ }
+ delete this._jsPlumb.overlays[overlayId];
+ if (this._jsPlumb.overlayPositions) {
+ delete this._jsPlumb.overlayPositions[overlayId];
+ }
+
+ if (this._jsPlumb.overlayPlacements) {
+ delete this._jsPlumb.overlayPlacements[overlayId];
+ }
+ }
+ },
+ removeOverlays: function () {
+ for (var i = 0, j = arguments.length; i < j; i++) {
+ this.removeOverlay(arguments[i]);
+ }
+ },
+ moveParent: function (newParent) {
+ if (this.bgCanvas) {
+ this.bgCanvas.parentNode.removeChild(this.bgCanvas);
+ newParent.appendChild(this.bgCanvas);
+ }
+
+ if (this.canvas && this.canvas.parentNode) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ newParent.appendChild(this.canvas);
+
+ for (var i in this._jsPlumb.overlays) {
+ if (this._jsPlumb.overlays[i].isAppendedAtTopLevel) {
+ var el = this._jsPlumb.overlays[i].getElement();
+ el.parentNode.removeChild(el);
+ newParent.appendChild(el);
+ }
+ }
+ }
+ },
+ getLabel: function () {
+ var lo = this.getOverlay(_internalLabelOverlayId);
+ return lo != null ? lo.getLabel() : null;
+ },
+ getLabelOverlay: function () {
+ return this.getOverlay(_internalLabelOverlayId);
+ },
+ setLabel: function (l) {
+ var lo = this.getOverlay(_internalLabelOverlayId);
+ if (!lo) {
+ var params = l.constructor === String || l.constructor === Function ? { label: l } : l;
+ lo = _makeLabelOverlay(this, params);
+ this._jsPlumb.overlays[_internalLabelOverlayId] = lo;
+ }
+ else {
+ if (l.constructor === String || l.constructor === Function) {
+ lo.setLabel(l);
+ }
+ else {
+ // 修复设置label为空时原来的值无法替换,by_萌级小菜鸟 2020年05月08日21:26:15
+ if (!l.label) {
+ l.label = ''
+ }
+ lo.setLabel(l.label);
+ if (l.location) {
+ lo.setLocation(l.location);
+ }
+ }
+ }
+
+ if (!this._jsPlumb.instance.isSuspendDrawing()) {
+ this.repaint();
+ }
+ },
+ cleanup: function (force) {
+ for (var i in this._jsPlumb.overlays) {
+ this._jsPlumb.overlays[i].cleanup(force);
+ this._jsPlumb.overlays[i].destroy(force);
+ }
+ if (force) {
+ this._jsPlumb.overlays = {};
+ this._jsPlumb.overlayPositions = null;
+ }
+ },
+ setVisible: function (v) {
+ this[v ? "showOverlays" : "hideOverlays"]();
+ },
+ setAbsoluteOverlayPosition: function (overlay, xy) {
+ this._jsPlumb.overlayPositions[overlay.id] = xy;
+ },
+ getAbsoluteOverlayPosition: function (overlay) {
+ return this._jsPlumb.overlayPositions ? this._jsPlumb.overlayPositions[overlay.id] : null;
+ },
+ _clazzManip:function(action, clazz, dontUpdateOverlays) {
+ if (!dontUpdateOverlays) {
+ for (var i in this._jsPlumb.overlays) {
+ this._jsPlumb.overlays[i][action + "Class"](clazz);
+ }
+ }
+ },
+ addClass:function(clazz, dontUpdateOverlays) {
+ this._clazzManip("add", clazz, dontUpdateOverlays);
+ },
+ removeClass:function(clazz, dontUpdateOverlays) {
+ this._clazzManip("remove", clazz, dontUpdateOverlays);
+ }
+ });
+
+// ------------------------------ END OverlayCapablejsPlumbUIComponent --------------------------------------------
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+/*
+ * This file contains the code for Endpoints.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;(function () {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+
+ // create the drag handler for a connection
+ var _makeConnectionDragHandler = function (endpoint, placeholder, _jsPlumb) {
+ var stopped = false;
+ return {
+ drag: function () {
+ if (stopped) {
+ stopped = false;
+ return true;
+ }
+
+ if (placeholder.element) {
+ var _ui = _jsPlumb.getUIPosition(arguments, _jsPlumb.getZoom());
+ if (_ui != null) {
+ _jsPlumb.setPosition(placeholder.element, _ui);
+ }
+ _jsPlumb.repaint(placeholder.element, _ui);
+ // always repaint the source endpoint, because only continuous/dynamic anchors cause the endpoint
+ // to be repainted, so static anchors need to be told (or the endpoint gets dragged around)
+ endpoint.paint({anchorPoint:endpoint.anchor.getCurrentLocation({element:endpoint})});
+ }
+ },
+ stopDrag: function () {
+ stopped = true;
+ }
+ };
+ };
+
+ // creates a placeholder div for dragging purposes, adds it, and pre-computes its offset.
+ var _makeDraggablePlaceholder = function (placeholder, _jsPlumb, ipco, ips) {
+ var n = _jsPlumb.createElement("div", { position : "absolute" });
+ _jsPlumb.appendElement(n);
+ var id = _jsPlumb.getId(n);
+ _jsPlumb.setPosition(n, ipco);
+ n.style.width = ips[0] + "px";
+ n.style.height = ips[1] + "px";
+ _jsPlumb.manage(id, n, true); // TRANSIENT MANAGE
+ // create and assign an id, and initialize the offset.
+ placeholder.id = id;
+ placeholder.element = n;
+ };
+
+ // create a floating endpoint (for drag connections)
+ var _makeFloatingEndpoint = function (paintStyle, referenceAnchor, endpoint, referenceCanvas, sourceElement, _jsPlumb, _newEndpoint, scope) {
+ var floatingAnchor = new _jp.FloatingAnchor({ reference: referenceAnchor, referenceCanvas: referenceCanvas, jsPlumbInstance: _jsPlumb });
+ //setting the scope here should not be the way to fix that mootools issue. it should be fixed by not
+ // adding the floating endpoint as a droppable. that makes more sense anyway!
+ // TRANSIENT MANAGE
+ return _newEndpoint({
+ paintStyle: paintStyle,
+ endpoint: endpoint,
+ anchor: floatingAnchor,
+ source: sourceElement,
+ scope: scope
+ });
+ };
+
+ var typeParameters = [ "connectorStyle", "connectorHoverStyle", "connectorOverlays",
+ "connector", "connectionType", "connectorClass", "connectorHoverClass" ];
+
+ // a helper function that tries to find a connection to the given element, and returns it if so. if elementWithPrecedence is null,
+ // or no connection to it is found, we return the first connection in our list.
+ var findConnectionToUseForDynamicAnchor = function (ep, elementWithPrecedence) {
+ var idx = 0;
+ if (elementWithPrecedence != null) {
+ for (var i = 0; i < ep.connections.length; i++) {
+ if (ep.connections[i].sourceId === elementWithPrecedence || ep.connections[i].targetId === elementWithPrecedence) {
+ idx = i;
+ break;
+ }
+ }
+ }
+
+ return ep.connections[idx];
+ };
+
+ _jp.Endpoint = function (params) {
+ var _jsPlumb = params._jsPlumb,
+ _newConnection = params.newConnection,
+ _newEndpoint = params.newEndpoint;
+
+ this.idPrefix = "_jsplumb_e_";
+ this.defaultLabelLocation = [ 0.5, 0.5 ];
+ this.defaultOverlayKeys = ["Overlays", "EndpointOverlays"];
+ _jp.OverlayCapableJsPlumbUIComponent.apply(this, arguments);
+
+// TYPE
+
+ this.appendToDefaultType({
+ connectionType:params.connectionType,
+ maxConnections: params.maxConnections == null ? this._jsPlumb.instance.Defaults.MaxConnections : params.maxConnections, // maximum number of connections this endpoint can be the source of.,
+ paintStyle: params.endpointStyle || params.paintStyle || params.style || this._jsPlumb.instance.Defaults.EndpointStyle || _jp.Defaults.EndpointStyle,
+ hoverPaintStyle: params.endpointHoverStyle || params.hoverPaintStyle || this._jsPlumb.instance.Defaults.EndpointHoverStyle || _jp.Defaults.EndpointHoverStyle,
+ connectorStyle: params.connectorStyle,
+ connectorHoverStyle: params.connectorHoverStyle,
+ connectorClass: params.connectorClass,
+ connectorHoverClass: params.connectorHoverClass,
+ connectorOverlays: params.connectorOverlays,
+ connector: params.connector,
+ connectorTooltip: params.connectorTooltip
+ });
+
+// END TYPE
+
+ this._jsPlumb.enabled = !(params.enabled === false);
+ this._jsPlumb.visible = true;
+ this.element = _jp.getElement(params.source);
+ this._jsPlumb.uuid = params.uuid;
+ this._jsPlumb.floatingEndpoint = null;
+ var inPlaceCopy = null;
+ if (this._jsPlumb.uuid) {
+ params.endpointsByUUID[this._jsPlumb.uuid] = this;
+ }
+ this.elementId = params.elementId;
+ this.dragProxy = params.dragProxy;
+
+ this._jsPlumb.connectionCost = params.connectionCost;
+ this._jsPlumb.connectionsDirected = params.connectionsDirected;
+ this._jsPlumb.currentAnchorClass = "";
+ this._jsPlumb.events = {};
+
+ var deleteOnEmpty = params.deleteOnEmpty === true;
+ this.setDeleteOnEmpty = function(d) {
+ deleteOnEmpty = d;
+ };
+
+ var _updateAnchorClass = function () {
+ // stash old, get new
+ var oldAnchorClass = _jsPlumb.endpointAnchorClassPrefix + "-" + this._jsPlumb.currentAnchorClass;
+ this._jsPlumb.currentAnchorClass = this.anchor.getCssClass();
+ var anchorClass = _jsPlumb.endpointAnchorClassPrefix + (this._jsPlumb.currentAnchorClass ? "-" + this._jsPlumb.currentAnchorClass : "");
+
+ this.removeClass(oldAnchorClass);
+ this.addClass(anchorClass);
+ // add and remove at the same time to reduce the number of reflows.
+ _jp.updateClasses(this.element, anchorClass, oldAnchorClass);
+ }.bind(this);
+
+ this.prepareAnchor = function(anchorParams) {
+ var a = this._jsPlumb.instance.makeAnchor(anchorParams, this.elementId, _jsPlumb);
+ a.bind("anchorChanged", function (currentAnchor) {
+ this.fire("anchorChanged", {endpoint: this, anchor: currentAnchor});
+ _updateAnchorClass();
+ }.bind(this));
+ return a;
+ };
+
+ this.setPreparedAnchor = function(anchor, doNotRepaint) {
+ this._jsPlumb.instance.continuousAnchorFactory.clear(this.elementId);
+ this.anchor = anchor;
+ _updateAnchorClass();
+
+ if (!doNotRepaint) {
+ this._jsPlumb.instance.repaint(this.elementId);
+ }
+
+ return this;
+ };
+
+ this.setAnchor = function (anchorParams, doNotRepaint) {
+ var a = this.prepareAnchor(anchorParams);
+ this.setPreparedAnchor(a, doNotRepaint);
+ return this;
+ };
+
+ var internalHover = function (state) {
+ if (this.connections.length > 0) {
+ for (var i = 0; i < this.connections.length; i++) {
+ this.connections[i].setHover(state, false);
+ }
+ }
+ else {
+ this.setHover(state);
+ }
+ }.bind(this);
+
+ this.bind("mouseover", function () {
+ internalHover(true);
+ });
+ this.bind("mouseout", function () {
+ internalHover(false);
+ });
+
+ // ANCHOR MANAGER
+ if (!params._transient) { // in place copies, for example, are transient. they will never need to be retrieved during a paint cycle, because they dont move, and then they are deleted.
+ this._jsPlumb.instance.anchorManager.add(this, this.elementId);
+ }
+
+ this.prepareEndpoint = function(ep, typeId) {
+ var _e = function (t, p) {
+ var rm = _jsPlumb.getRenderMode();
+ if (_jp.Endpoints[rm][t]) {
+ return new _jp.Endpoints[rm][t](p);
+ }
+ if (!_jsPlumb.Defaults.DoNotThrowErrors) {
+ throw { msg: "jsPlumb: unknown endpoint type '" + t + "'" };
+ }
+ };
+
+ var endpointArgs = {
+ _jsPlumb: this._jsPlumb.instance,
+ cssClass: params.cssClass,
+ container: params.container,
+ tooltip: params.tooltip,
+ connectorTooltip: params.connectorTooltip,
+ endpoint: this
+ };
+
+ var endpoint;
+
+ if (_ju.isString(ep)) {
+ endpoint = _e(ep, endpointArgs);
+ }
+ else if (_ju.isArray(ep)) {
+ endpointArgs = _ju.merge(ep[1], endpointArgs);
+ endpoint = _e(ep[0], endpointArgs);
+ }
+ else {
+ endpoint = ep.clone();
+ }
+
+ // assign a clone function using a copy of endpointArgs. this is used when a drag starts: the endpoint that was dragged is cloned,
+ // and the clone is left in its place while the original one goes off on a magical journey.
+ // the copy is to get around a closure problem, in which endpointArgs ends up getting shared by
+ // the whole world.
+ //var argsForClone = jsPlumb.extend({}, endpointArgs);
+ endpoint.clone = function () {
+ // TODO this, and the code above, can be refactored to be more dry.
+ if (_ju.isString(ep)) {
+ return _e(ep, endpointArgs);
+ }
+ else if (_ju.isArray(ep)) {
+ endpointArgs = _ju.merge(ep[1], endpointArgs);
+ return _e(ep[0], endpointArgs);
+ }
+ }.bind(this);
+
+ endpoint.typeId = typeId;
+ return endpoint;
+ };
+
+ this.setEndpoint = function(ep, doNotRepaint) {
+ var _ep = this.prepareEndpoint(ep);
+ this.setPreparedEndpoint(_ep, true);
+ };
+
+ this.setPreparedEndpoint = function (ep, doNotRepaint) {
+ if (this.endpoint != null) {
+ this.endpoint.cleanup();
+ this.endpoint.destroy();
+ }
+ this.endpoint = ep;
+ this.type = this.endpoint.type;
+ this.canvas = this.endpoint.canvas;
+ };
+
+ _jp.extend(this, params, typeParameters);
+
+ this.isSource = params.isSource || false;
+ this.isTemporarySource = params.isTemporarySource || false;
+ this.isTarget = params.isTarget || false;
+
+ this.connections = params.connections || [];
+ this.connectorPointerEvents = params["connector-pointer-events"];
+
+ this.scope = params.scope || _jsPlumb.getDefaultScope();
+ this.timestamp = null;
+ this.reattachConnections = params.reattach || _jsPlumb.Defaults.ReattachConnections;
+ this.connectionsDetachable = _jsPlumb.Defaults.ConnectionsDetachable;
+ if (params.connectionsDetachable === false || params.detachable === false) {
+ this.connectionsDetachable = false;
+ }
+ this.dragAllowedWhenFull = params.dragAllowedWhenFull !== false;
+
+ if (params.onMaxConnections) {
+ this.bind("maxConnections", params.onMaxConnections);
+ }
+
+ //
+ // add a connection. not part of public API.
+ //
+ this.addConnection = function (connection) {
+ this.connections.push(connection);
+ this[(this.connections.length > 0 ? "add" : "remove") + "Class"](_jsPlumb.endpointConnectedClass);
+ this[(this.isFull() ? "add" : "remove") + "Class"](_jsPlumb.endpointFullClass);
+ };
+
+ this.detachFromConnection = function (connection, idx, doNotCleanup) {
+ idx = idx == null ? this.connections.indexOf(connection) : idx;
+ if (idx >= 0) {
+ this.connections.splice(idx, 1);
+ this[(this.connections.length > 0 ? "add" : "remove") + "Class"](_jsPlumb.endpointConnectedClass);
+ this[(this.isFull() ? "add" : "remove") + "Class"](_jsPlumb.endpointFullClass);
+ }
+
+ if (!doNotCleanup && deleteOnEmpty && this.connections.length === 0) {
+ _jsPlumb.deleteObject({
+ endpoint: this,
+ fireEvent: false,
+ deleteAttachedObjects: doNotCleanup !== true
+ });
+ }
+ };
+
+ this.deleteEveryConnection = function(params) {
+ var c = this.connections.length;
+ for (var i = 0; i < c; i++) {
+ _jsPlumb.deleteConnection(this.connections[0], params);
+ }
+ };
+
+ this.detachFrom = function (targetEndpoint, fireEvent, originalEvent) {
+ var c = [];
+ for (var i = 0; i < this.connections.length; i++) {
+ if (this.connections[i].endpoints[1] === targetEndpoint || this.connections[i].endpoints[0] === targetEndpoint) {
+ c.push(this.connections[i]);
+ }
+ }
+ for (var j = 0, count = c.length; j < count; j++) {
+ _jsPlumb.deleteConnection(c[0]);
+ }
+ return this;
+ };
+
+ this.getElement = function () {
+ return this.element;
+ };
+
+ this.setElement = function (el) {
+ var parentId = this._jsPlumb.instance.getId(el),
+ curId = this.elementId;
+ // remove the endpoint from the list for the current endpoint's element
+ _ju.removeWithFunction(params.endpointsByElement[this.elementId], function (e) {
+ return e.id === this.id;
+ }.bind(this));
+ this.element = _jp.getElement(el);
+ this.elementId = _jsPlumb.getId(this.element);
+ _jsPlumb.anchorManager.rehomeEndpoint(this, curId, this.element);
+ _jsPlumb.dragManager.endpointAdded(this.element);
+ _ju.addToList(params.endpointsByElement, parentId, this);
+ return this;
+ };
+
+ /**
+ * private but must be exposed.
+ */
+ this.makeInPlaceCopy = function () {
+ var loc = this.anchor.getCurrentLocation({element: this}),
+ o = this.anchor.getOrientation(this),
+ acc = this.anchor.getCssClass(),
+ inPlaceAnchor = {
+ bind: function () {
+ },
+ compute: function () {
+ return [ loc[0], loc[1] ];
+ },
+ getCurrentLocation: function () {
+ return [ loc[0], loc[1] ];
+ },
+ getOrientation: function () {
+ return o;
+ },
+ getCssClass: function () {
+ return acc;
+ }
+ };
+
+ return _newEndpoint({
+ dropOptions: params.dropOptions,
+ anchor: inPlaceAnchor,
+ source: this.element,
+ paintStyle: this.getPaintStyle(),
+ endpoint: params.hideOnDrag ? "Blank" : this.endpoint,
+ _transient: true,
+ scope: this.scope,
+ reference:this
+ });
+ };
+
+ /**
+ * returns a connection from the pool; used when dragging starts. just gets the head of the array if it can.
+ */
+ this.connectorSelector = function () {
+ return this.connections[0];
+ };
+
+ this.setStyle = this.setPaintStyle;
+
+ this.paint = function (params) {
+ params = params || {};
+ var timestamp = params.timestamp, recalc = !(params.recalc === false);
+ if (!timestamp || this.timestamp !== timestamp) {
+
+ var info = _jsPlumb.updateOffset({ elId: this.elementId, timestamp: timestamp });
+
+ var xy = params.offset ? params.offset.o : info.o;
+ if (xy != null) {
+ var ap = params.anchorPoint, connectorPaintStyle = params.connectorPaintStyle;
+ if (ap == null) {
+ var wh = params.dimensions || info.s,
+ anchorParams = { xy: [ xy.left, xy.top ], wh: wh, element: this, timestamp: timestamp };
+ if (recalc && this.anchor.isDynamic && this.connections.length > 0) {
+ var c = findConnectionToUseForDynamicAnchor(this, params.elementWithPrecedence),
+ oIdx = c.endpoints[0] === this ? 1 : 0,
+ oId = oIdx === 0 ? c.sourceId : c.targetId,
+ oInfo = _jsPlumb.getCachedData(oId),
+ oOffset = oInfo.o, oWH = oInfo.s;
+
+ anchorParams.index = oIdx === 0 ? 1 : 0;
+ anchorParams.connection = c;
+ anchorParams.txy = [ oOffset.left, oOffset.top ];
+ anchorParams.twh = oWH;
+ anchorParams.tElement = c.endpoints[oIdx];
+ } else if (this.connections.length > 0) {
+ anchorParams.connection = this.connections[0];
+ }
+ ap = this.anchor.compute(anchorParams);
+ }
+
+ this.endpoint.compute(ap, this.anchor.getOrientation(this), this._jsPlumb.paintStyleInUse, connectorPaintStyle || this.paintStyleInUse);
+ this.endpoint.paint(this._jsPlumb.paintStyleInUse, this.anchor);
+ this.timestamp = timestamp;
+
+ // paint overlays
+ for (var i in this._jsPlumb.overlays) {
+ if (this._jsPlumb.overlays.hasOwnProperty(i)) {
+ var o = this._jsPlumb.overlays[i];
+ if (o.isVisible()) {
+ this._jsPlumb.overlayPlacements[i] = o.draw(this.endpoint, this._jsPlumb.paintStyleInUse);
+ o.paint(this._jsPlumb.overlayPlacements[i]);
+ }
+ }
+ }
+ }
+ }
+ };
+
+ this.getTypeDescriptor = function () {
+ return "endpoint";
+ };
+ this.isVisible = function () {
+ return this._jsPlumb.visible;
+ };
+
+ this.repaint = this.paint;
+
+ var draggingInitialised = false;
+ this.initDraggable = function () {
+
+ // is this a connection source? we make it draggable and have the
+ // drag listener maintain a connection with a floating endpoint.
+ if (!draggingInitialised && _jp.isDragSupported(this.element)) {
+ var placeholderInfo = { id: null, element: null },
+ jpc = null,
+ existingJpc = false,
+ existingJpcParams = null,
+ _dragHandler = _makeConnectionDragHandler(this, placeholderInfo, _jsPlumb),
+ dragOptions = params.dragOptions || {},
+ defaultOpts = {},
+ startEvent = _jp.dragEvents.start,
+ stopEvent = _jp.dragEvents.stop,
+ dragEvent = _jp.dragEvents.drag,
+ beforeStartEvent = _jp.dragEvents.beforeStart,
+ payload;
+
+ // respond to beforeStart from katavorio; this will have, optionally, a payload of attribute values
+ // that were placed there by the makeSource mousedown listener.
+ var beforeStart = function(beforeStartParams) {
+ payload = beforeStartParams.e.payload || {};
+ };
+
+ var start = function (startParams) {
+
+// ------------- first, get a connection to drag. this may be null, in which case we are dragging a new one.
+
+ jpc = this.connectorSelector();
+
+// -------------------------------- now a bunch of tests about whether or not to proceed -------------------------
+
+ var _continue = true;
+ // if not enabled, return
+ if (!this.isEnabled()) {
+ _continue = false;
+ }
+ // if no connection and we're not a source - or temporarily a source, as is the case with makeSource - return.
+ if (jpc == null && !this.isSource && !this.isTemporarySource) {
+ _continue = false;
+ }
+ // otherwise if we're full and not allowed to drag, also return false.
+ if (this.isSource && this.isFull() && !(jpc != null && this.dragAllowedWhenFull)) {
+ _continue = false;
+ }
+ // if the connection was setup as not detachable or one of its endpoints
+ // was setup as connectionsDetachable = false, or Defaults.ConnectionsDetachable
+ // is set to false...
+ if (jpc != null && !jpc.isDetachable(this)) {
+ // .. and the endpoint is full
+ if (this.isFull()) {
+ _continue = false;
+ } else {
+ // otherwise, if not full, set the connection to null, and we will now proceed
+ // to drag a new connection.
+ jpc = null;
+ }
+ }
+
+ var beforeDrag = _jsPlumb.checkCondition(jpc == null ? "beforeDrag" : "beforeStartDetach", {
+ endpoint:this,
+ source:this.element,
+ sourceId:this.elementId,
+ connection:jpc
+ });
+ if (beforeDrag === false) {
+ _continue = false;
+ }
+ // else we might have been given some data. we'll pass it in to a new connection as 'data'.
+ // here we also merge in the optional payload we were given on mousedown.
+ else if (typeof beforeDrag === "object") {
+ _jp.extend(beforeDrag, payload || {});
+ }
+ else {
+ // or if no beforeDrag data, maybe use the payload on its own.
+ beforeDrag = payload || {};
+ }
+
+ if (_continue === false) {
+ // this is for mootools and yui. returning false from this causes jquery to stop drag.
+ // the events are wrapped in both mootools and yui anyway, but i don't think returning
+ // false from the start callback would stop a drag.
+ if (_jsPlumb.stopDrag) {
+ _jsPlumb.stopDrag(this.canvas);
+ }
+ _dragHandler.stopDrag();
+ return false;
+ }
+
+// ---------------------------------------------------------------------------------------------------------------------
+
+ // ok to proceed.
+
+ // clear hover for all connections for this endpoint before continuing.
+ for (var i = 0; i < this.connections.length; i++) {
+ this.connections[i].setHover(false);
+ }
+
+ this.addClass("endpointDrag");
+ _jsPlumb.setConnectionBeingDragged(true);
+
+ // if we're not full but there was a connection, make it null. we'll create a new one.
+ if (jpc && !this.isFull() && this.isSource) {
+ jpc = null;
+ }
+
+ _jsPlumb.updateOffset({ elId: this.elementId });
+
+// ---------------- make the element we will drag around, and position it -----------------------------
+
+ var ipco = this._jsPlumb.instance.getOffset(this.canvas),
+ canvasElement = this.canvas,
+ ips = this._jsPlumb.instance.getSize(this.canvas);
+
+ _makeDraggablePlaceholder(placeholderInfo, _jsPlumb, ipco, ips);
+
+ // store the id of the dragging div and the source element. the drop function will pick these up.
+ _jsPlumb.setAttributes(this.canvas, {
+ "dragId": placeholderInfo.id,
+ "elId": this.elementId
+ });
+
+// ------------------- create an endpoint that will be our floating endpoint ------------------------------------
+
+ var endpointToFloat = this.dragProxy || this.endpoint;
+ if (this.dragProxy == null && this.connectionType != null) {
+ var aae = this._jsPlumb.instance.deriveEndpointAndAnchorSpec(this.connectionType);
+ if (aae.endpoints[1]) {
+ endpointToFloat = aae.endpoints[1];
+ }
+ }
+ var centerAnchor = this._jsPlumb.instance.makeAnchor("Center");
+ centerAnchor.isFloating = true;
+ this._jsPlumb.floatingEndpoint = _makeFloatingEndpoint(this.getPaintStyle(), centerAnchor, endpointToFloat, this.canvas, placeholderInfo.element, _jsPlumb, _newEndpoint, this.scope);
+ var _savedAnchor = this._jsPlumb.floatingEndpoint.anchor;
+
+
+ if (jpc == null) {
+
+ this.setHover(false, false);
+ // create a connection. one end is this endpoint, the other is a floating endpoint.
+ jpc = _newConnection({
+ sourceEndpoint: this,
+ targetEndpoint: this._jsPlumb.floatingEndpoint,
+ source: this.element, // for makeSource with parent option. ensure source element is represented correctly.
+ target: placeholderInfo.element,
+ anchors: [ this.anchor, this._jsPlumb.floatingEndpoint.anchor ],
+ paintStyle: params.connectorStyle, // this can be null. Connection will use the default.
+ hoverPaintStyle: params.connectorHoverStyle,
+ connector: params.connector, // this can also be null. Connection will use the default.
+ overlays: params.connectorOverlays,
+ type: this.connectionType,
+ cssClass: this.connectorClass,
+ hoverClass: this.connectorHoverClass,
+ scope:params.scope,
+ data:beforeDrag
+ });
+ jpc.pending = true;
+ jpc.addClass(_jsPlumb.draggingClass);
+ this._jsPlumb.floatingEndpoint.addClass(_jsPlumb.draggingClass);
+ this._jsPlumb.floatingEndpoint.anchor = _savedAnchor;
+ // fire an event that informs that a connection is being dragged
+ _jsPlumb.fire("connectionDrag", jpc);
+
+ // register the new connection on the drag manager. This connection, at this point, is 'pending',
+ // and has as its target a temporary element (the 'placeholder'). If the connection subsequently
+ // becomes established, the anchor manager is informed that the target of the connection has
+ // changed.
+
+ _jsPlumb.anchorManager.newConnection(jpc);
+
+ } else {
+ existingJpc = true;
+ jpc.setHover(false);
+ // new anchor idx
+ var anchorIdx = jpc.endpoints[0].id === this.id ? 0 : 1;
+ this.detachFromConnection(jpc, null, true); // detach from the connection while dragging is occurring. but dont cleanup automatically.
+
+ // store the original scope (issue 57)
+ var dragScope = _jsPlumb.getDragScope(canvasElement);
+ _jsPlumb.setAttribute(this.canvas, "originalScope", dragScope);
+
+ // fire an event that informs that a connection is being dragged. we do this before
+ // replacing the original target with the floating element info.
+ _jsPlumb.fire("connectionDrag", jpc);
+
+ // now we replace ourselves with the temporary div we created above:
+ if (anchorIdx === 0) {
+ existingJpcParams = [ jpc.source, jpc.sourceId, canvasElement, dragScope ];
+ _jsPlumb.anchorManager.sourceChanged(jpc.endpoints[anchorIdx].elementId, placeholderInfo.id, jpc, placeholderInfo.element);
+
+ } else {
+ existingJpcParams = [ jpc.target, jpc.targetId, canvasElement, dragScope ];
+ jpc.target = placeholderInfo.element;
+ jpc.targetId = placeholderInfo.id;
+
+ _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.endpoints[anchorIdx].elementId, jpc.targetId, jpc);
+ }
+
+ // store the original endpoint and assign the new floating endpoint for the drag.
+ jpc.suspendedEndpoint = jpc.endpoints[anchorIdx];
+
+ // PROVIDE THE SUSPENDED ELEMENT, BE IT A SOURCE OR TARGET (ISSUE 39)
+ jpc.suspendedElement = jpc.endpoints[anchorIdx].getElement();
+ jpc.suspendedElementId = jpc.endpoints[anchorIdx].elementId;
+ jpc.suspendedElementType = anchorIdx === 0 ? "source" : "target";
+
+ jpc.suspendedEndpoint.setHover(false);
+ this._jsPlumb.floatingEndpoint.referenceEndpoint = jpc.suspendedEndpoint;
+ jpc.endpoints[anchorIdx] = this._jsPlumb.floatingEndpoint;
+
+ jpc.addClass(_jsPlumb.draggingClass);
+ this._jsPlumb.floatingEndpoint.addClass(_jsPlumb.draggingClass);
+ }
+
+ _jsPlumb.registerFloatingConnection(placeholderInfo, jpc, this._jsPlumb.floatingEndpoint);
+
+ // // register it and register connection on it.
+ // _jsPlumb.floatingConnections[placeholderInfo.id] = jpc;
+ //
+ // // only register for the target endpoint; we will not be dragging the source at any time
+ // // before this connection is either discarded or made into a permanent connection.
+ // _ju.addToList(params.endpointsByElement, placeholderInfo.id, this._jsPlumb.floatingEndpoint);
+
+
+ // tell jsplumb about it
+ _jsPlumb.currentlyDragging = true;
+ }.bind(this);
+
+ var stop = function () {
+ _jsPlumb.setConnectionBeingDragged(false);
+
+ if (jpc && jpc.endpoints != null) {
+ // get the actual drop event (decode from library args to stop function)
+ var originalEvent = _jsPlumb.getDropEvent(arguments);
+ // unlock the other endpoint (if it is dynamic, it would have been locked at drag start)
+ var idx = _jsPlumb.getFloatingAnchorIndex(jpc);
+ jpc.endpoints[idx === 0 ? 1 : 0].anchor.unlock();
+ // TODO: Dont want to know about css classes inside jsplumb, ideally.
+ jpc.removeClass(_jsPlumb.draggingClass);
+
+ // if we have the floating endpoint then the connection has not been dropped
+ // on another endpoint. If it is a new connection we throw it away. If it is an
+ // existing connection we check to see if we should reattach it, throwing it away
+ // if not.
+ if (this._jsPlumb && (jpc.deleteConnectionNow || jpc.endpoints[idx] === this._jsPlumb.floatingEndpoint)) {
+ // 6a. if the connection was an existing one...
+ if (existingJpc && jpc.suspendedEndpoint) {
+ // fix for issue35, thanks Sylvain Gizard: when firing the detach event make sure the
+ // floating endpoint has been replaced.
+ if (idx === 0) {
+ jpc.floatingElement = jpc.source;
+ jpc.floatingId = jpc.sourceId;
+ jpc.floatingEndpoint = jpc.endpoints[0];
+ jpc.floatingIndex = 0;
+ jpc.source = existingJpcParams[0];
+ jpc.sourceId = existingJpcParams[1];
+ } else {
+ // keep a copy of the floating element; the anchor manager will want to clean up.
+ jpc.floatingElement = jpc.target;
+ jpc.floatingId = jpc.targetId;
+ jpc.floatingEndpoint = jpc.endpoints[1];
+ jpc.floatingIndex = 1;
+ jpc.target = existingJpcParams[0];
+ jpc.targetId = existingJpcParams[1];
+ }
+
+ var fe = this._jsPlumb.floatingEndpoint; // store for later removal.
+ // restore the original scope (issue 57)
+ _jsPlumb.setDragScope(existingJpcParams[2], existingJpcParams[3]);
+ jpc.endpoints[idx] = jpc.suspendedEndpoint;
+ // if the connection should be reattached, or the other endpoint refuses detach, then
+ // reset the connection to its original state
+ if (jpc.isReattach() || jpc._forceReattach || jpc._forceDetach || !_jsPlumb.deleteConnection(jpc, {originalEvent: originalEvent})) {
+
+ jpc.setHover(false);
+ jpc._forceDetach = null;
+ jpc._forceReattach = null;
+ this._jsPlumb.floatingEndpoint.detachFromConnection(jpc);
+ jpc.suspendedEndpoint.addConnection(jpc);
+
+ // TODO this code is duplicated in lots of places...and there is nothing external
+ // in the code; it all refers to the connection itself. we could add a
+ // `checkSanity(connection)` method to anchorManager that did this.
+ if (idx === 1) {
+ _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.floatingId, jpc.targetId, jpc);
+ }
+ else {
+ _jsPlumb.anchorManager.sourceChanged(jpc.floatingId, jpc.sourceId, jpc, jpc.source);
+ }
+
+ _jsPlumb.repaint(existingJpcParams[1]);
+ }
+ else {
+ _jsPlumb.deleteObject({endpoint: fe});
+ }
+ }
+ }
+
+ // makeTargets sets this flag, to tell us we have been replaced and should delete this object.
+ if (this.deleteAfterDragStop) {
+ _jsPlumb.deleteObject({endpoint: this});
+ }
+ else {
+ if (this._jsPlumb) {
+ this.paint({recalc: false});
+ }
+ }
+
+ // although the connection is no longer valid, there are use cases where this is useful.
+ _jsPlumb.fire("connectionDragStop", jpc, originalEvent);
+ // fire this event to give people more fine-grained control (connectionDragStop fires a lot)
+ if (jpc.pending) {
+ _jsPlumb.fire("connectionAborted", jpc, originalEvent);
+ }
+ // tell jsplumb that dragging is finished.
+ _jsPlumb.currentlyDragging = false;
+ jpc.suspendedElement = null;
+ jpc.suspendedEndpoint = null;
+ jpc = null;
+ }
+
+ // if no endpoints, jpc already cleaned up. but still we want to ensure we're reset properly.
+ // remove the element associated with the floating endpoint
+ // (and its associated floating endpoint and visual artefacts)
+ if (placeholderInfo && placeholderInfo.element) {
+ _jsPlumb.remove(placeholderInfo.element, false, false);
+ }
+ // remove the inplace copy
+ if (inPlaceCopy) {
+ _jsPlumb.deleteObject({endpoint: inPlaceCopy});
+ }
+
+ if (this._jsPlumb) {
+ // make our canvas visible (TODO: hand off to library; we should not know about DOM)
+ this.canvas.style.visibility = "visible";
+ // unlock our anchor
+ this.anchor.unlock();
+ // clear floating anchor.
+ this._jsPlumb.floatingEndpoint = null;
+ }
+
+ }.bind(this);
+
+ dragOptions = _jp.extend(defaultOpts, dragOptions);
+ dragOptions.scope = this.scope || dragOptions.scope;
+ dragOptions[beforeStartEvent] = _ju.wrap(dragOptions[beforeStartEvent], beforeStart, false);
+ dragOptions[startEvent] = _ju.wrap(dragOptions[startEvent], start, false);
+ // extracted drag handler function so can be used by makeSource
+ dragOptions[dragEvent] = _ju.wrap(dragOptions[dragEvent], _dragHandler.drag);
+ dragOptions[stopEvent] = _ju.wrap(dragOptions[stopEvent], stop);
+ dragOptions.multipleDrop = false;
+
+ dragOptions.canDrag = function () {
+ return this.isSource || this.isTemporarySource || (this.connections.length > 0 && this.connectionsDetachable !== false);
+ }.bind(this);
+
+ _jsPlumb.initDraggable(this.canvas, dragOptions, "internal");
+
+ this.canvas._jsPlumbRelatedElement = this.element;
+
+ draggingInitialised = true;
+ }
+ };
+
+ var ep = params.endpoint || this._jsPlumb.instance.Defaults.Endpoint || _jp.Defaults.Endpoint;
+ this.setEndpoint(ep, true);
+ var anchorParamsToUse = params.anchor ? params.anchor : params.anchors ? params.anchors : (_jsPlumb.Defaults.Anchor || "Top");
+ this.setAnchor(anchorParamsToUse, true);
+
+ // finally, set type if it was provided
+ var type = [ "default", (params.type || "")].join(" ");
+ this.addType(type, params.data, true);
+ this.canvas = this.endpoint.canvas;
+ this.canvas._jsPlumb = this;
+
+ this.initDraggable();
+
+ // pulled this out into a function so we can reuse it for the inPlaceCopy canvas; you can now drop detached connections
+ // back onto the endpoint you detached it from.
+ var _initDropTarget = function (canvas, isTransient, endpoint, referenceEndpoint) {
+
+ if (_jp.isDropSupported(this.element)) {
+ var dropOptions = params.dropOptions || _jsPlumb.Defaults.DropOptions || _jp.Defaults.DropOptions;
+ dropOptions = _jp.extend({}, dropOptions);
+ dropOptions.scope = dropOptions.scope || this.scope;
+ var dropEvent = _jp.dragEvents.drop,
+ overEvent = _jp.dragEvents.over,
+ outEvent = _jp.dragEvents.out,
+ _ep = this,
+ drop = _jsPlumb.EndpointDropHandler({
+ getEndpoint: function () {
+ return _ep;
+ },
+ jsPlumb: _jsPlumb,
+ enabled: function () {
+ return endpoint != null ? endpoint.isEnabled() : true;
+ },
+ isFull: function () {
+ return endpoint.isFull();
+ },
+ element: this.element,
+ elementId: this.elementId,
+ isSource: this.isSource,
+ isTarget: this.isTarget,
+ addClass: function (clazz) {
+ _ep.addClass(clazz);
+ },
+ removeClass: function (clazz) {
+ _ep.removeClass(clazz);
+ },
+ isDropAllowed: function () {
+ return _ep.isDropAllowed.apply(_ep, arguments);
+ },
+ reference:referenceEndpoint,
+ isRedrop:function(jpc, dhParams) {
+ return jpc.suspendedEndpoint && dhParams.reference && (jpc.suspendedEndpoint.id === dhParams.reference.id);
+ }
+ });
+
+ dropOptions[dropEvent] = _ju.wrap(dropOptions[dropEvent], drop, true);
+ dropOptions[overEvent] = _ju.wrap(dropOptions[overEvent], function () {
+ var draggable = _jp.getDragObject(arguments),
+ id = _jsPlumb.getAttribute(_jp.getElement(draggable), "dragId"),
+ _jpc = _jsPlumb.getFloatingConnectionFor(id);//_jsPlumb.floatingConnections[id];
+
+ if (_jpc != null) {
+ var idx = _jsPlumb.getFloatingAnchorIndex(_jpc);
+ // here we should fire the 'over' event if we are a target and this is a new connection,
+ // or we are the same as the floating endpoint.
+ var _cont = (this.isTarget && idx !== 0) || (_jpc.suspendedEndpoint && this.referenceEndpoint && this.referenceEndpoint.id === _jpc.suspendedEndpoint.id);
+ if (_cont) {
+ var bb = _jsPlumb.checkCondition("checkDropAllowed", {
+ sourceEndpoint: _jpc.endpoints[idx],
+ targetEndpoint: this,
+ connection: _jpc
+ });
+ this[(bb ? "add" : "remove") + "Class"](_jsPlumb.endpointDropAllowedClass);
+ this[(bb ? "remove" : "add") + "Class"](_jsPlumb.endpointDropForbiddenClass);
+ _jpc.endpoints[idx].anchor.over(this.anchor, this);
+ }
+ }
+ }.bind(this));
+
+ dropOptions[outEvent] = _ju.wrap(dropOptions[outEvent], function () {
+ var draggable = _jp.getDragObject(arguments),
+ id = draggable == null ? null : _jsPlumb.getAttribute(_jp.getElement(draggable), "dragId"),
+ _jpc = id ? _jsPlumb.getFloatingConnectionFor(id) : null;
+
+ if (_jpc != null) {
+ var idx = _jsPlumb.getFloatingAnchorIndex(_jpc);
+ var _cont = (this.isTarget && idx !== 0) || (_jpc.suspendedEndpoint && this.referenceEndpoint && this.referenceEndpoint.id === _jpc.suspendedEndpoint.id);
+ if (_cont) {
+ this.removeClass(_jsPlumb.endpointDropAllowedClass);
+ this.removeClass(_jsPlumb.endpointDropForbiddenClass);
+ _jpc.endpoints[idx].anchor.out();
+ }
+ }
+ }.bind(this));
+
+ _jsPlumb.initDroppable(canvas, dropOptions, "internal", isTransient);
+ }
+ }.bind(this);
+
+ // Initialise the endpoint's canvas as a drop target. The drop handler will take care of the logic of whether
+ // something can actually be dropped.
+ if (!this.anchor.isFloating) {
+ _initDropTarget(this.canvas, !(params._transient || this.anchor.isFloating), this, params.reference);
+ }
+
+ return this;
+ };
+
+ _ju.extend(_jp.Endpoint, _jp.OverlayCapableJsPlumbUIComponent, {
+
+ setVisible: function (v, doNotChangeConnections, doNotNotifyOtherEndpoint) {
+ this._jsPlumb.visible = v;
+ if (this.canvas) {
+ this.canvas.style.display = v ? "block" : "none";
+ }
+ this[v ? "showOverlays" : "hideOverlays"]();
+ if (!doNotChangeConnections) {
+ for (var i = 0; i < this.connections.length; i++) {
+ this.connections[i].setVisible(v);
+ if (!doNotNotifyOtherEndpoint) {
+ var oIdx = this === this.connections[i].endpoints[0] ? 1 : 0;
+ // only change the other endpoint if this is its only connection.
+ if (this.connections[i].endpoints[oIdx].connections.length === 1) {
+ this.connections[i].endpoints[oIdx].setVisible(v, true, true);
+ }
+ }
+ }
+ }
+ },
+ getAttachedElements: function () {
+ return this.connections;
+ },
+ applyType: function (t, doNotRepaint) {
+ this.setPaintStyle(t.endpointStyle || t.paintStyle, doNotRepaint);
+ this.setHoverPaintStyle(t.endpointHoverStyle || t.hoverPaintStyle, doNotRepaint);
+ if (t.maxConnections != null) {
+ this._jsPlumb.maxConnections = t.maxConnections;
+ }
+ if (t.scope) {
+ this.scope = t.scope;
+ }
+ _jp.extend(this, t, typeParameters);
+ if (t.cssClass != null && this.canvas) {
+ this._jsPlumb.instance.addClass(this.canvas, t.cssClass);
+ }
+ _jp.OverlayCapableJsPlumbUIComponent.applyType(this, t);
+ },
+ isEnabled: function () {
+ return this._jsPlumb.enabled;
+ },
+ setEnabled: function (e) {
+ this._jsPlumb.enabled = e;
+ },
+ cleanup: function () {
+ var anchorClass = this._jsPlumb.instance.endpointAnchorClassPrefix + (this._jsPlumb.currentAnchorClass ? "-" + this._jsPlumb.currentAnchorClass : "");
+ _jp.removeClass(this.element, anchorClass);
+ this.anchor = null;
+ this.endpoint.cleanup(true);
+ this.endpoint.destroy();
+ this.endpoint = null;
+ // drag/drop
+ this._jsPlumb.instance.destroyDraggable(this.canvas, "internal");
+ this._jsPlumb.instance.destroyDroppable(this.canvas, "internal");
+ },
+ setHover: function (h) {
+ if (this.endpoint && this._jsPlumb && !this._jsPlumb.instance.isConnectionBeingDragged()) {
+ this.endpoint.setHover(h);
+ }
+ },
+ isFull: function () {
+ return this._jsPlumb.maxConnections === 0 ? true : !(this.isFloating() || this._jsPlumb.maxConnections < 0 || this.connections.length < this._jsPlumb.maxConnections);
+ },
+ /**
+ * private but needs to be exposed.
+ */
+ isFloating: function () {
+ return this.anchor != null && this.anchor.isFloating;
+ },
+ isConnectedTo: function (endpoint) {
+ var found = false;
+ if (endpoint) {
+ for (var i = 0; i < this.connections.length; i++) {
+ if (this.connections[i].endpoints[1] === endpoint || this.connections[i].endpoints[0] === endpoint) {
+ found = true;
+ break;
+ }
+ }
+ }
+ return found;
+ },
+ getConnectionCost: function () {
+ return this._jsPlumb.connectionCost;
+ },
+ setConnectionCost: function (c) {
+ this._jsPlumb.connectionCost = c;
+ },
+ areConnectionsDirected: function () {
+ return this._jsPlumb.connectionsDirected;
+ },
+ setConnectionsDirected: function (b) {
+ this._jsPlumb.connectionsDirected = b;
+ },
+ setElementId: function (_elId) {
+ this.elementId = _elId;
+ this.anchor.elementId = _elId;
+ },
+ setReferenceElement: function (_el) {
+ this.element = _jp.getElement(_el);
+ },
+ setDragAllowedWhenFull: function (allowed) {
+ this.dragAllowedWhenFull = allowed;
+ },
+ equals: function (endpoint) {
+ return this.anchor.equals(endpoint.anchor);
+ },
+ getUuid: function () {
+ return this._jsPlumb.uuid;
+ },
+ computeAnchor: function (params) {
+ return this.anchor.compute(params);
+ }
+ });
+
+ root.jsPlumbInstance.prototype.EndpointDropHandler = function (dhParams) {
+ return function (e) {
+
+ var _jsPlumb = dhParams.jsPlumb;
+
+ // remove the classes that are added dynamically. drop is neither forbidden nor allowed now that
+ // the drop is finishing.
+ dhParams.removeClass(_jsPlumb.endpointDropAllowedClass);
+ dhParams.removeClass(_jsPlumb.endpointDropForbiddenClass);
+
+ var originalEvent = _jsPlumb.getDropEvent(arguments),
+ draggable = _jsPlumb.getDragObject(arguments),
+ id = _jsPlumb.getAttribute(draggable, "dragId"),
+ elId = _jsPlumb.getAttribute(draggable, "elId"),
+ scope = _jsPlumb.getAttribute(draggable, "originalScope"),
+ jpc = _jsPlumb.getFloatingConnectionFor(id);
+
+ // if no active connection, bail.
+ if (jpc == null) {
+ return;
+ }
+
+ // calculate if this is an existing connection.
+ var existingConnection = jpc.suspendedEndpoint != null;
+
+ // if suspended endpoint exists but has been cleaned up, bail. This means it's an existing connection
+ // that has been detached and will shortly be discarded.
+ if (existingConnection && jpc.suspendedEndpoint._jsPlumb == null) {
+ return;
+ }
+
+ // get the drop endpoint. for a normal connection this is just the one that would replace the currently
+ // floating endpoint. for a makeTarget this is a new endpoint that is created on drop. But we leave that to
+ // the handler to figure out.
+ var _ep = dhParams.getEndpoint(jpc);
+
+ // If we're not given an endpoint to use, bail.
+ if (_ep == null) {
+ return;
+ }
+
+ // if this is a drop back where the connection came from, mark it force reattach and
+ // return; the stop handler will reattach. without firing an event.
+ if (dhParams.isRedrop(jpc, dhParams)) {
+ jpc._forceReattach = true;
+ jpc.setHover(false);
+ if (dhParams.maybeCleanup) {
+ dhParams.maybeCleanup(_ep);
+ }
+ return;
+ }
+
+ // ensure we dont bother trying to drop sources on non-source eps, and same for target.
+ var idx = _jsPlumb.getFloatingAnchorIndex(jpc);
+ if ((idx === 0 && !dhParams.isSource)|| (idx === 1 && !dhParams.isTarget)){
+ if (dhParams.maybeCleanup) {
+ dhParams.maybeCleanup(_ep);
+ }
+ return;
+ }
+
+ if (dhParams.onDrop) {
+ dhParams.onDrop(jpc);
+ }
+
+ // restore the original scope if necessary (issue 57)
+ if (scope) {
+ _jsPlumb.setDragScope(draggable, scope);
+ }
+
+ // if the target of the drop is full, fire an event (we abort below)
+ // makeTarget: keep.
+ var isFull = dhParams.isFull(e);
+ if (isFull) {
+ _ep.fire("maxConnections", {
+ endpoint: this,
+ connection: jpc,
+ maxConnections: _ep._jsPlumb.maxConnections
+ }, originalEvent);
+ }
+ //
+ // if endpoint enabled, not full, and matches the index of the floating endpoint...
+ if (!isFull && dhParams.enabled()) {
+ var _doContinue = true;
+
+ // before testing for beforeDrop, reset the connection's source/target to be the actual DOM elements
+ // involved (that is, stash any temporary stuff used for dragging. but we need to keep it around in
+ // order that the anchor manager can clean things up properly).
+ if (idx === 0) {
+ jpc.floatingElement = jpc.source;
+ jpc.floatingId = jpc.sourceId;
+ jpc.floatingEndpoint = jpc.endpoints[0];
+ jpc.floatingIndex = 0;
+ jpc.source = dhParams.element;
+ jpc.sourceId = dhParams.elementId;
+ } else {
+ jpc.floatingElement = jpc.target;
+ jpc.floatingId = jpc.targetId;
+ jpc.floatingEndpoint = jpc.endpoints[1];
+ jpc.floatingIndex = 1;
+ jpc.target = dhParams.element;
+ jpc.targetId = dhParams.elementId;
+ }
+
+ // if this is an existing connection and detach is not allowed we won't continue. The connection's
+ // endpoints have been reinstated; everything is back to how it was.
+ if (existingConnection && jpc.suspendedEndpoint.id !== _ep.id) {
+ if (!jpc.isDetachAllowed(jpc) || !jpc.endpoints[idx].isDetachAllowed(jpc) || !jpc.suspendedEndpoint.isDetachAllowed(jpc) || !_jsPlumb.checkCondition("beforeDetach", jpc)) {
+ _doContinue = false;
+ }
+ }
+
+// ------------ wrap the execution path in a function so we can support asynchronous beforeDrop
+
+ var continueFunction = function (optionalData) {
+ // remove this jpc from the current endpoint, which is a floating endpoint that we will
+ // subsequently discard.
+ jpc.endpoints[idx].detachFromConnection(jpc);
+
+ // if there's a suspended endpoint, detach it from the connection.
+ if (jpc.suspendedEndpoint) {
+ jpc.suspendedEndpoint.detachFromConnection(jpc);
+ }
+
+ jpc.endpoints[idx] = _ep;
+ _ep.addConnection(jpc);
+
+ // copy our parameters in to the connection:
+ var params = _ep.getParameters();
+ for (var aParam in params) {
+ jpc.setParameter(aParam, params[aParam]);
+ }
+
+ if (!existingConnection) {
+ // if not an existing connection and
+ if (params.draggable) {
+ _jsPlumb.initDraggable(this.element, dhParams.dragOptions, "internal", _jsPlumb);
+ }
+ }
+ else {
+ var suspendedElementId = jpc.suspendedEndpoint.elementId;
+ _jsPlumb.fireMoveEvent({
+ index: idx,
+ originalSourceId: idx === 0 ? suspendedElementId : jpc.sourceId,
+ newSourceId: idx === 0 ? _ep.elementId : jpc.sourceId,
+ originalTargetId: idx === 1 ? suspendedElementId : jpc.targetId,
+ newTargetId: idx === 1 ? _ep.elementId : jpc.targetId,
+ originalSourceEndpoint: idx === 0 ? jpc.suspendedEndpoint : jpc.endpoints[0],
+ newSourceEndpoint: idx === 0 ? _ep : jpc.endpoints[0],
+ originalTargetEndpoint: idx === 1 ? jpc.suspendedEndpoint : jpc.endpoints[1],
+ newTargetEndpoint: idx === 1 ? _ep : jpc.endpoints[1],
+ connection: jpc
+ }, originalEvent);
+ }
+
+ if (idx === 1) {
+ _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.floatingId, jpc.targetId, jpc);
+ }
+ else {
+ _jsPlumb.anchorManager.sourceChanged(jpc.floatingId, jpc.sourceId, jpc, jpc.source);
+ }
+
+ // when makeSource has uniqueEndpoint:true, we want to create connections with new endpoints
+ // that are subsequently deleted. So makeSource sets `finalEndpoint`, which is the Endpoint to
+ // which the connection should be attached. The `detachFromConnection` call below results in the
+ // temporary endpoint being cleaned up.
+ if (jpc.endpoints[0].finalEndpoint) {
+ var _toDelete = jpc.endpoints[0];
+ _toDelete.detachFromConnection(jpc);
+ jpc.endpoints[0] = jpc.endpoints[0].finalEndpoint;
+ jpc.endpoints[0].addConnection(jpc);
+ }
+
+ // if optionalData was given, merge it onto the connection's data.
+ if (_ju.isObject(optionalData)) {
+ jpc.mergeData(optionalData);
+ }
+ // finalise will inform the anchor manager and also add to
+ // connectionsByScope if necessary.
+ _jsPlumb.finaliseConnection(jpc, null, originalEvent, false);
+ jpc.setHover(false);
+
+ // SP continuous anchor flush
+ _jsPlumb.revalidate(jpc.endpoints[0].element);
+
+ }.bind(this);
+
+ var dontContinueFunction = function () {
+ // otherwise just put it back on the endpoint it was on before the drag.
+ if (jpc.suspendedEndpoint) {
+ jpc.endpoints[idx] = jpc.suspendedEndpoint;
+ jpc.setHover(false);
+ jpc._forceDetach = true;
+ if (idx === 0) {
+ jpc.source = jpc.suspendedEndpoint.element;
+ jpc.sourceId = jpc.suspendedEndpoint.elementId;
+ } else {
+ jpc.target = jpc.suspendedEndpoint.element;
+ jpc.targetId = jpc.suspendedEndpoint.elementId;
+ }
+ jpc.suspendedEndpoint.addConnection(jpc);
+
+ // TODO checkSanity
+ if (idx === 1) {
+ _jsPlumb.anchorManager.updateOtherEndpoint(jpc.sourceId, jpc.floatingId, jpc.targetId, jpc);
+ }
+ else {
+ _jsPlumb.anchorManager.sourceChanged(jpc.floatingId, jpc.sourceId, jpc, jpc.source);
+ }
+
+ _jsPlumb.repaint(jpc.sourceId);
+ jpc._forceDetach = false;
+ }
+ };
+
+// --------------------------------------
+ // now check beforeDrop. this will be available only on Endpoints that are setup to
+ // have a beforeDrop condition (although, secretly, under the hood all Endpoints and
+ // the Connection have them, because they are on jsPlumbUIComponent. shhh!), because
+ // it only makes sense to have it on a target endpoint.
+ _doContinue = _doContinue && dhParams.isDropAllowed(jpc.sourceId, jpc.targetId, jpc.scope, jpc, _ep);// && jpc.pending;
+
+ if (_doContinue) {
+ continueFunction(_doContinue);
+ return true;
+ }
+ else {
+ dontContinueFunction();
+ }
+ }
+
+ if (dhParams.maybeCleanup) {
+ dhParams.maybeCleanup(_ep);
+ }
+
+ _jsPlumb.currentlyDragging = false;
+ };
+ };
+}).call(typeof window !== 'undefined' ? window : this);
+
+/*
+ * This file contains the code for Connections.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+ var root = this,
+ _jp = root.jsPlumb,
+ _ju = root.jsPlumbUtil;
+
+ var makeConnector = function (_jsPlumb, renderMode, connectorName, connectorArgs, forComponent) {
+ // first make sure we have a cache for the specified renderer
+ _jp.Connectors[renderMode] = _jp.Connectors[renderMode] || {};
+
+ // now see if the one we want exists; if not we will try to make it
+ if (_jp.Connectors[renderMode][connectorName] == null) {
+
+ if (_jp.Connectors[connectorName] == null) {
+ if (!_jsPlumb.Defaults.DoNotThrowErrors) {
+ throw new TypeError("jsPlumb: unknown connector type '" + connectorName + "'");
+ } else {
+ return null;
+ }
+ }
+
+ _jp.Connectors[renderMode][connectorName] = function() {
+ _jp.Connectors[connectorName].apply(this, arguments);
+ _jp.ConnectorRenderers[renderMode].apply(this, arguments);
+ };
+
+ _ju.extend(_jp.Connectors[renderMode][connectorName], [ _jp.Connectors[connectorName], _jp.ConnectorRenderers[renderMode]]);
+
+ }
+
+ return new _jp.Connectors[renderMode][connectorName](connectorArgs, forComponent);
+ },
+ _makeAnchor = function (anchorParams, elementId, _jsPlumb) {
+ return (anchorParams) ? _jsPlumb.makeAnchor(anchorParams, elementId, _jsPlumb) : null;
+ },
+ _updateConnectedClass = function (conn, element, _jsPlumb, remove) {
+ if (element != null) {
+ element._jsPlumbConnections = element._jsPlumbConnections || {};
+ if (remove) {
+ delete element._jsPlumbConnections[conn.id];
+ }
+ else {
+ element._jsPlumbConnections[conn.id] = true;
+ }
+
+ if (_ju.isEmpty(element._jsPlumbConnections)) {
+ _jsPlumb.removeClass(element, _jsPlumb.connectedClass);
+ }
+ else {
+ _jsPlumb.addClass(element, _jsPlumb.connectedClass);
+ }
+ }
+ };
+
+ _jp.Connection = function (params) {
+ var _newEndpoint = params.newEndpoint;
+
+ this.id = params.id;
+ this.connector = null;
+ this.idPrefix = "_jsplumb_c_";
+ this.defaultLabelLocation = 0.5;
+ this.defaultOverlayKeys = ["Overlays", "ConnectionOverlays"];
+ // if a new connection is the result of moving some existing connection, params.previousConnection
+ // will have that Connection in it. listeners for the jsPlumbConnection event can look for that
+ // member and take action if they need to.
+ this.previousConnection = params.previousConnection;
+ this.source = _jp.getElement(params.source);
+ this.target = _jp.getElement(params.target);
+
+
+ _jp.OverlayCapableJsPlumbUIComponent.apply(this, arguments);
+
+ // sourceEndpoint and targetEndpoint override source/target, if they are present. but
+ // source is not overridden if the Endpoint has declared it is not the final target of a connection;
+ // instead we use the source that the Endpoint declares will be the final source element.
+ if (params.sourceEndpoint) {
+ this.source = params.sourceEndpoint.getElement();
+ this.sourceId = params.sourceEndpoint.elementId;
+ } else {
+ this.sourceId = this._jsPlumb.instance.getId(this.source);
+ }
+
+ if (params.targetEndpoint) {
+ this.target = params.targetEndpoint.getElement();
+ this.targetId = params.targetEndpoint.elementId;
+ } else {
+ this.targetId = this._jsPlumb.instance.getId(this.target);
+ }
+
+
+ this.scope = params.scope; // scope may have been passed in to the connect call. if it wasn't, we will pull it from the source endpoint, after having initialised the endpoints.
+ this.endpoints = [];
+ this.endpointStyles = [];
+
+ var _jsPlumb = this._jsPlumb.instance;
+
+ _jsPlumb.manage(this.sourceId, this.source);
+ _jsPlumb.manage(this.targetId, this.target);
+
+ this._jsPlumb.visible = true;
+
+ this._jsPlumb.params = {
+ cssClass: params.cssClass,
+ container: params.container,
+ "pointer-events": params["pointer-events"],
+ editorParams: params.editorParams,
+ overlays: params.overlays
+ };
+ this._jsPlumb.lastPaintedAt = null;
+
+ // listen to mouseover and mouseout events passed from the container delegate.
+ this.bind("mouseover", function () {
+ this.setHover(true);
+ }.bind(this));
+ this.bind("mouseout", function () {
+ this.setHover(false);
+ }.bind(this));
+
+
+// INITIALISATION CODE
+
+ this.makeEndpoint = function (isSource, el, elId, ep, definition) {
+ elId = elId || this._jsPlumb.instance.getId(el);
+ return this.prepareEndpoint(_jsPlumb, _newEndpoint, this, ep, isSource ? 0 : 1, params, el, elId, definition);
+ };
+
+ // if type given, get the endpoint definitions mapping to that type from the jsplumb instance, and use those.
+ // we apply types at the end of this constructor but endpoints are only honoured in a type definition at
+ // create time.
+ if (params.type) {
+ params.endpoints = params.endpoints || this._jsPlumb.instance.deriveEndpointAndAnchorSpec(params.type).endpoints;
+ }
+
+ var eS = this.makeEndpoint(true, this.source, this.sourceId, params.sourceEndpoint),
+ eT = this.makeEndpoint(false, this.target, this.targetId, params.targetEndpoint);
+
+ if (eS) {
+ _ju.addToList(params.endpointsByElement, this.sourceId, eS);
+ }
+ if (eT) {
+ _ju.addToList(params.endpointsByElement, this.targetId, eT);
+ }
+ // if scope not set, set it to be the scope for the source endpoint.
+ if (!this.scope) {
+ this.scope = this.endpoints[0].scope;
+ }
+
+ // if explicitly told to (or not to) delete endpoints when empty, override endpoint's preferences
+ if (params.deleteEndpointsOnEmpty != null) {
+ this.endpoints[0].setDeleteOnEmpty(params.deleteEndpointsOnEmpty);
+ this.endpoints[1].setDeleteOnEmpty(params.deleteEndpointsOnEmpty);
+ }
+
+// -------------------------- DEFAULT TYPE ---------------------------------------------
+
+ // DETACHABLE
+ var _detachable = _jsPlumb.Defaults.ConnectionsDetachable;
+ if (params.detachable === false) {
+ _detachable = false;
+ }
+ if (this.endpoints[0].connectionsDetachable === false) {
+ _detachable = false;
+ }
+ if (this.endpoints[1].connectionsDetachable === false) {
+ _detachable = false;
+ }
+ // REATTACH
+ var _reattach = params.reattach || this.endpoints[0].reattachConnections || this.endpoints[1].reattachConnections || _jsPlumb.Defaults.ReattachConnections;
+
+ this.appendToDefaultType({
+ detachable: _detachable,
+ reattach: _reattach,
+ paintStyle:this.endpoints[0].connectorStyle || this.endpoints[1].connectorStyle || params.paintStyle || _jsPlumb.Defaults.PaintStyle || _jp.Defaults.PaintStyle,
+ hoverPaintStyle:this.endpoints[0].connectorHoverStyle || this.endpoints[1].connectorHoverStyle || params.hoverPaintStyle || _jsPlumb.Defaults.HoverPaintStyle || _jp.Defaults.HoverPaintStyle
+ });
+
+ var _suspendedAt = _jsPlumb.getSuspendedAt();
+ if (!_jsPlumb.isSuspendDrawing()) {
+ // paint the endpoints
+ var myInfo = _jsPlumb.getCachedData(this.sourceId),
+ myOffset = myInfo.o, myWH = myInfo.s,
+ otherInfo = _jsPlumb.getCachedData(this.targetId),
+ otherOffset = otherInfo.o,
+ otherWH = otherInfo.s,
+ initialTimestamp = _suspendedAt || _jsPlumb.timestamp(),
+ anchorLoc = this.endpoints[0].anchor.compute({
+ xy: [ myOffset.left, myOffset.top ], wh: myWH, element: this.endpoints[0],
+ elementId: this.endpoints[0].elementId,
+ txy: [ otherOffset.left, otherOffset.top ], twh: otherWH, tElement: this.endpoints[1],
+ timestamp: initialTimestamp
+ });
+
+ this.endpoints[0].paint({ anchorLoc: anchorLoc, timestamp: initialTimestamp });
+
+ anchorLoc = this.endpoints[1].anchor.compute({
+ xy: [ otherOffset.left, otherOffset.top ], wh: otherWH, element: this.endpoints[1],
+ elementId: this.endpoints[1].elementId,
+ txy: [ myOffset.left, myOffset.top ], twh: myWH, tElement: this.endpoints[0],
+ timestamp: initialTimestamp
+ });
+ this.endpoints[1].paint({ anchorLoc: anchorLoc, timestamp: initialTimestamp });
+ }
+
+ this.getTypeDescriptor = function () {
+ return "connection";
+ };
+ this.getAttachedElements = function () {
+ return this.endpoints;
+ };
+
+ this.isDetachable = function (ep) {
+ return this._jsPlumb.detachable === false ? false : ep != null ? ep.connectionsDetachable === true : this._jsPlumb.detachable === true;
+ };
+ this.setDetachable = function (detachable) {
+ this._jsPlumb.detachable = detachable === true;
+ };
+ this.isReattach = function () {
+ return this._jsPlumb.reattach === true || this.endpoints[0].reattachConnections === true || this.endpoints[1].reattachConnections === true;
+ };
+ this.setReattach = function (reattach) {
+ this._jsPlumb.reattach = reattach === true;
+ };
+
+// END INITIALISATION CODE
+
+
+// COST + DIRECTIONALITY
+ // if cost not supplied, try to inherit from source endpoint
+ this._jsPlumb.cost = params.cost || this.endpoints[0].getConnectionCost();
+ this._jsPlumb.directed = params.directed;
+ // inherit directed flag if set no source endpoint
+ if (params.directed == null) {
+ this._jsPlumb.directed = this.endpoints[0].areConnectionsDirected();
+ }
+// END COST + DIRECTIONALITY
+
+// PARAMETERS
+ // merge all the parameters objects into the connection. parameters set
+ // on the connection take precedence; then source endpoint params, then
+ // finally target endpoint params.
+ var _p = _jp.extend({}, this.endpoints[1].getParameters());
+ _jp.extend(_p, this.endpoints[0].getParameters());
+ _jp.extend(_p, this.getParameters());
+ this.setParameters(_p);
+// END PARAMETERS
+
+// PAINTING
+
+ this.setConnector(this.endpoints[0].connector || this.endpoints[1].connector || params.connector || _jsPlumb.Defaults.Connector || _jp.Defaults.Connector, true);
+ var data = params.data == null || !_ju.isObject(params.data) ? {} : params.data;
+ this.getData = function() { return data; };
+ this.setData = function(d) { data = d || {}; };
+ this.mergeData = function(d) { data = _jp.extend(data, d); };
+
+ // the very last thing we do is apply types, if there are any.
+ var _types = [ "default", this.endpoints[0].connectionType, this.endpoints[1].connectionType, params.type ].join(" ");
+ if (/[^\s]/.test(_types)) {
+ this.addType(_types, params.data, true);
+ }
+
+ this.updateConnectedClass();
+
+// END PAINTING
+ };
+
+ _ju.extend(_jp.Connection, _jp.OverlayCapableJsPlumbUIComponent, {
+ applyType: function (t, doNotRepaint, typeMap) {
+
+ var _connector = null;
+ if (t.connector != null) {
+ _connector = this.getCachedTypeItem("connector", typeMap.connector);
+ if (_connector == null) {
+ _connector = this.prepareConnector(t.connector, typeMap.connector);
+ this.cacheTypeItem("connector", _connector, typeMap.connector);
+ }
+ this.setPreparedConnector(_connector);
+ }
+
+ // none of these things result in the creation of objects so can be ignored.
+ if (t.detachable != null) {
+ this.setDetachable(t.detachable);
+ }
+ if (t.reattach != null) {
+ this.setReattach(t.reattach);
+ }
+ if (t.scope) {
+ this.scope = t.scope;
+ }
+
+ if (t.cssClass != null && this.canvas) {
+ this._jsPlumb.instance.addClass(this.canvas, t.cssClass);
+ }
+
+ var _anchors = null;
+ // this also results in the creation of objects.
+ if (t.anchor) {
+ // note that even if the param was anchor, we store `anchors`.
+ _anchors = this.getCachedTypeItem("anchors", typeMap.anchor);
+ if (_anchors == null) {
+ _anchors = [ this._jsPlumb.instance.makeAnchor(t.anchor), this._jsPlumb.instance.makeAnchor(t.anchor) ];
+ this.cacheTypeItem("anchors", _anchors, typeMap.anchor);
+ }
+ }
+ else if (t.anchors) {
+ _anchors = this.getCachedTypeItem("anchors", typeMap.anchors);
+ if (_anchors == null) {
+ _anchors = [
+ this._jsPlumb.instance.makeAnchor(t.anchors[0]),
+ this._jsPlumb.instance.makeAnchor(t.anchors[1])
+ ];
+ this.cacheTypeItem("anchors", _anchors, typeMap.anchors);
+ }
+ }
+ if (_anchors != null) {
+ this.endpoints[0].anchor = _anchors[0];
+ this.endpoints[1].anchor = _anchors[1];
+ if (this.endpoints[1].anchor.isDynamic) {
+ this._jsPlumb.instance.repaint(this.endpoints[1].elementId);
+ }
+ }
+
+ _jp.OverlayCapableJsPlumbUIComponent.applyType(this, t);
+ },
+ addClass: function (c, informEndpoints) {
+ if (informEndpoints) {
+ this.endpoints[0].addClass(c);
+ this.endpoints[1].addClass(c);
+ if (this.suspendedEndpoint) {
+ this.suspendedEndpoint.addClass(c);
+ }
+ }
+ if (this.connector) {
+ this.connector.addClass(c);
+ }
+ },
+ removeClass: function (c, informEndpoints) {
+ if (informEndpoints) {
+ this.endpoints[0].removeClass(c);
+ this.endpoints[1].removeClass(c);
+ if (this.suspendedEndpoint) {
+ this.suspendedEndpoint.removeClass(c);
+ }
+ }
+ if (this.connector) {
+ this.connector.removeClass(c);
+ }
+ },
+ isVisible: function () {
+ return this._jsPlumb.visible;
+ },
+ setVisible: function (v) {
+ this._jsPlumb.visible = v;
+ if (this.connector) {
+ this.connector.setVisible(v);
+ }
+ this.repaint();
+ },
+ cleanup: function () {
+ this.updateConnectedClass(true);
+ this.endpoints = null;
+ this.source = null;
+ this.target = null;
+ if (this.connector != null) {
+ this.connector.cleanup(true);
+ this.connector.destroy(true);
+ }
+ this.connector = null;
+ },
+ updateConnectedClass:function(remove) {
+ if (this._jsPlumb) {
+ _updateConnectedClass(this, this.source, this._jsPlumb.instance, remove);
+ _updateConnectedClass(this, this.target, this._jsPlumb.instance, remove);
+ }
+ },
+ setHover: function (state) {
+ if (this.connector && this._jsPlumb && !this._jsPlumb.instance.isConnectionBeingDragged()) {
+ this.connector.setHover(state);
+ root.jsPlumb[state ? "addClass" : "removeClass"](this.source, this._jsPlumb.instance.hoverSourceClass);
+ root.jsPlumb[state ? "addClass" : "removeClass"](this.target, this._jsPlumb.instance.hoverTargetClass);
+ }
+ },
+ getUuids:function() {
+ return [ this.endpoints[0].getUuid(), this.endpoints[1].getUuid() ];
+ },
+ getCost: function () {
+ return this._jsPlumb ? this._jsPlumb.cost : -Infinity;
+ },
+ setCost: function (c) {
+ this._jsPlumb.cost = c;
+ },
+ isDirected: function () {
+ return this._jsPlumb.directed;
+ },
+ getConnector: function () {
+ return this.connector;
+ },
+ prepareConnector:function(connectorSpec, typeId) {
+ var connectorArgs = {
+ _jsPlumb: this._jsPlumb.instance,
+ cssClass: this._jsPlumb.params.cssClass,
+ container: this._jsPlumb.params.container,
+ "pointer-events": this._jsPlumb.params["pointer-events"]
+ },
+ renderMode = this._jsPlumb.instance.getRenderMode(),
+ connector;
+
+ if (_ju.isString(connectorSpec)) {
+ connector = makeConnector(this._jsPlumb.instance, renderMode, connectorSpec, connectorArgs, this);
+ } // lets you use a string as shorthand.
+ else if (_ju.isArray(connectorSpec)) {
+ if (connectorSpec.length === 1) {
+ connector = makeConnector(this._jsPlumb.instance, renderMode, connectorSpec[0], connectorArgs, this);
+ }
+ else {
+ connector = makeConnector(this._jsPlumb.instance, renderMode, connectorSpec[0], _ju.merge(connectorSpec[1], connectorArgs), this);
+ }
+ }
+ if (typeId != null) {
+ connector.typeId = typeId;
+ }
+ return connector;
+ },
+ setPreparedConnector: function(connector, doNotRepaint, doNotChangeListenerComponent, typeId) {
+
+ if (this.connector !== connector) {
+
+ var previous, previousClasses = "";
+ // the connector will not be cleaned up if it was set as part of a type, because `typeId` will be set on it
+ // and we havent passed in `true` for "force" here.
+ if (this.connector != null) {
+ previous = this.connector;
+ previousClasses = previous.getClass();
+ this.connector.cleanup();
+ this.connector.destroy();
+ }
+
+ this.connector = connector;
+ if (typeId) {
+ this.cacheTypeItem("connector", connector, typeId);
+ }
+
+ this.canvas = this.connector.canvas;
+ this.bgCanvas = this.connector.bgCanvas;
+
+ this.connector.reattach(this._jsPlumb.instance);
+
+ // put classes from prior connector onto the canvas
+ this.addClass(previousClasses);
+
+ // new: instead of binding listeners per connector, we now just have one delegate on the container.
+ // so for that handler we set the connection as the '_jsPlumb' member of the canvas element, and
+ // bgCanvas, if it exists, which it does right now in the VML renderer, so it won't from v 2.0.0 onwards.
+ if (this.canvas) {
+ this.canvas._jsPlumb = this;
+ }
+ if (this.bgCanvas) {
+ this.bgCanvas._jsPlumb = this;
+ }
+
+ if (previous != null) {
+ var o = this.getOverlays();
+ for (var i = 0; i < o.length; i++) {
+ if (o[i].transfer) {
+ o[i].transfer(this.connector);
+ }
+ }
+ }
+
+ if (!doNotChangeListenerComponent) {
+ this.setListenerComponent(this.connector);
+ }
+ if (!doNotRepaint) {
+ this.repaint();
+ }
+ }
+ },
+ setConnector: function (connectorSpec, doNotRepaint, doNotChangeListenerComponent, typeId) {
+ var connector = this.prepareConnector(connectorSpec, typeId);
+ this.setPreparedConnector(connector, doNotRepaint, doNotChangeListenerComponent, typeId);
+ },
+ paint: function (params) {
+
+ if (!this._jsPlumb.instance.isSuspendDrawing() && this._jsPlumb.visible) {
+ params = params || {};
+ var timestamp = params.timestamp,
+ // if the moving object is not the source we must transpose the two references.
+ swap = false,
+ tId = swap ? this.sourceId : this.targetId, sId = swap ? this.targetId : this.sourceId,
+ tIdx = swap ? 0 : 1, sIdx = swap ? 1 : 0;
+
+ if (timestamp == null || timestamp !== this._jsPlumb.lastPaintedAt) {
+ var sourceInfo = this._jsPlumb.instance.updateOffset({elId:sId}).o,
+ targetInfo = this._jsPlumb.instance.updateOffset({elId:tId}).o,
+ sE = this.endpoints[sIdx], tE = this.endpoints[tIdx];
+
+ var sAnchorP = sE.anchor.getCurrentLocation({xy: [sourceInfo.left, sourceInfo.top], wh: [sourceInfo.width, sourceInfo.height], element: sE, timestamp: timestamp}),
+ tAnchorP = tE.anchor.getCurrentLocation({xy: [targetInfo.left, targetInfo.top], wh: [targetInfo.width, targetInfo.height], element: tE, timestamp: timestamp});
+
+ this.connector.resetBounds();
+
+ this.connector.compute({
+ sourcePos: sAnchorP,
+ targetPos: tAnchorP,
+ sourceOrientation:sE.anchor.getOrientation(sE),
+ targetOrientation:tE.anchor.getOrientation(tE),
+ sourceEndpoint: this.endpoints[sIdx],
+ targetEndpoint: this.endpoints[tIdx],
+ "stroke-width": this._jsPlumb.paintStyleInUse.strokeWidth,
+ sourceInfo: sourceInfo,
+ targetInfo: targetInfo
+ });
+
+ var overlayExtents = { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity };
+
+ // compute overlays. we do this first so we can get their placements, and adjust the
+ // container if needs be (if an overlay would be clipped)
+ for (var i in this._jsPlumb.overlays) {
+ if (this._jsPlumb.overlays.hasOwnProperty(i)) {
+ var o = this._jsPlumb.overlays[i];
+ if (o.isVisible()) {
+ this._jsPlumb.overlayPlacements[i] = o.draw(this.connector, this._jsPlumb.paintStyleInUse, this.getAbsoluteOverlayPosition(o));
+ overlayExtents.minX = Math.min(overlayExtents.minX, this._jsPlumb.overlayPlacements[i].minX);
+ overlayExtents.maxX = Math.max(overlayExtents.maxX, this._jsPlumb.overlayPlacements[i].maxX);
+ overlayExtents.minY = Math.min(overlayExtents.minY, this._jsPlumb.overlayPlacements[i].minY);
+ overlayExtents.maxY = Math.max(overlayExtents.maxY, this._jsPlumb.overlayPlacements[i].maxY);
+ }
+ }
+ }
+
+ var lineWidth = parseFloat(this._jsPlumb.paintStyleInUse.strokeWidth || 1) / 2,
+ outlineWidth = parseFloat(this._jsPlumb.paintStyleInUse.strokeWidth || 0),
+ extents = {
+ xmin: Math.min(this.connector.bounds.minX - (lineWidth + outlineWidth), overlayExtents.minX),
+ ymin: Math.min(this.connector.bounds.minY - (lineWidth + outlineWidth), overlayExtents.minY),
+ xmax: Math.max(this.connector.bounds.maxX + (lineWidth + outlineWidth), overlayExtents.maxX),
+ ymax: Math.max(this.connector.bounds.maxY + (lineWidth + outlineWidth), overlayExtents.maxY)
+ };
+ // paint the connector.
+ this.connector.paintExtents = extents;
+ this.connector.paint(this._jsPlumb.paintStyleInUse, null, extents);
+ // and then the overlays
+ for (var j in this._jsPlumb.overlays) {
+ if (this._jsPlumb.overlays.hasOwnProperty(j)) {
+ var p = this._jsPlumb.overlays[j];
+ if (p.isVisible()) {
+ p.paint(this._jsPlumb.overlayPlacements[j], extents);
+ }
+ }
+ }
+ }
+ this._jsPlumb.lastPaintedAt = timestamp;
+ }
+ },
+ repaint: function (params) {
+ var p = jsPlumb.extend(params || {}, {});
+ p.elId = this.sourceId;
+ this.paint(p);
+ },
+ prepareEndpoint: function (_jsPlumb, _newEndpoint, conn, existing, index, params, element, elementId, definition) {
+ var e;
+ if (existing) {
+ conn.endpoints[index] = existing;
+ existing.addConnection(conn);
+ } else {
+ if (!params.endpoints) {
+ params.endpoints = [ null, null ];
+ }
+ var ep = definition || params.endpoints[index] || params.endpoint || _jsPlumb.Defaults.Endpoints[index] || _jp.Defaults.Endpoints[index] || _jsPlumb.Defaults.Endpoint || _jp.Defaults.Endpoint;
+ if (!params.endpointStyles) {
+ params.endpointStyles = [ null, null ];
+ }
+ if (!params.endpointHoverStyles) {
+ params.endpointHoverStyles = [ null, null ];
+ }
+ var es = params.endpointStyles[index] || params.endpointStyle || _jsPlumb.Defaults.EndpointStyles[index] || _jp.Defaults.EndpointStyles[index] || _jsPlumb.Defaults.EndpointStyle || _jp.Defaults.EndpointStyle;
+ // Endpoints derive their fill from the connector's stroke, if no fill was specified.
+ if (es.fill == null && params.paintStyle != null) {
+ es.fill = params.paintStyle.stroke;
+ }
+
+ if (es.outlineStroke == null && params.paintStyle != null) {
+ es.outlineStroke = params.paintStyle.outlineStroke;
+ }
+ if (es.outlineWidth == null && params.paintStyle != null) {
+ es.outlineWidth = params.paintStyle.outlineWidth;
+ }
+
+ var ehs = params.endpointHoverStyles[index] || params.endpointHoverStyle || _jsPlumb.Defaults.EndpointHoverStyles[index] || _jp.Defaults.EndpointHoverStyles[index] || _jsPlumb.Defaults.EndpointHoverStyle || _jp.Defaults.EndpointHoverStyle;
+ // endpoint hover fill style is derived from connector's hover stroke style
+ if (params.hoverPaintStyle != null) {
+ if (ehs == null) {
+ ehs = {};
+ }
+ if (ehs.fill == null) {
+ ehs.fill = params.hoverPaintStyle.stroke;
+ }
+ }
+ var a = params.anchors ? params.anchors[index] :
+ params.anchor ? params.anchor :
+ _makeAnchor(_jsPlumb.Defaults.Anchors[index], elementId, _jsPlumb) ||
+ _makeAnchor(_jp.Defaults.Anchors[index], elementId, _jsPlumb) ||
+ _makeAnchor(_jsPlumb.Defaults.Anchor, elementId, _jsPlumb) ||
+ _makeAnchor(_jp.Defaults.Anchor, elementId, _jsPlumb),
+ u = params.uuids ? params.uuids[index] : null;
+
+ e = _newEndpoint({
+ paintStyle: es, hoverPaintStyle: ehs, endpoint: ep, connections: [ conn ],
+ uuid: u, anchor: a, source: element, scope: params.scope,
+ reattach: params.reattach || _jsPlumb.Defaults.ReattachConnections,
+ detachable: params.detachable || _jsPlumb.Defaults.ConnectionsDetachable
+ });
+ if (existing == null) {
+ e.setDeleteOnEmpty(true);
+ }
+ conn.endpoints[index] = e;
+
+ if (params.drawEndpoints === false) {
+ e.setVisible(false, true, true);
+ }
+
+ }
+ return e;
+ },
+ replaceEndpoint:function(idx, endpointDef) {
+
+ var current = this.endpoints[idx],
+ elId = current.elementId,
+ ebe = this._jsPlumb.instance.getEndpoints(elId),
+ _idx = ebe.indexOf(current),
+ _new = this.makeEndpoint(idx === 0, current.element, elId, null, endpointDef);
+
+ this.endpoints[idx] = _new;
+
+ ebe.splice(_idx, 1, _new);
+ this._jsPlumb.instance.deleteObject({endpoint:current, deleteAttachedObjects:false});
+ this._jsPlumb.instance.fire("endpointReplaced", {previous:current, current:_new});
+
+ this._jsPlumb.instance.anchorManager.updateOtherEndpoint(this.endpoints[0].elementId, this.endpoints[1].elementId, this.endpoints[1].elementId, this);
+
+ }
+
+ }); // END Connection class
+}).call(typeof window !== 'undefined' ? window : this);
+
+/*
+ * This file contains the code for creating and manipulating anchors.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+
+ var root = this,
+ _ju = root.jsPlumbUtil,
+ _jp = root.jsPlumb;
+
+ //
+ // manages anchors for all elements.
+ //
+ _jp.AnchorManager = function (params) {
+ var _amEndpoints = {},
+ continuousAnchorLocations = {},
+ continuousAnchorOrientations = {},
+ connectionsByElementId = {},
+ self = this,
+ anchorLists = {},
+ jsPlumbInstance = params.jsPlumbInstance,
+ floatingConnections = {},
+ // used by placeAnchors function
+ placeAnchorsOnLine = function (desc, elementDimensions, elementPosition, connections, horizontal, otherMultiplier, reverse) {
+ var a = [], step = elementDimensions[horizontal ? 0 : 1] / (connections.length + 1);
+
+ for (var i = 0; i < connections.length; i++) {
+ var val = (i + 1) * step, other = otherMultiplier * elementDimensions[horizontal ? 1 : 0];
+ if (reverse) {
+ val = elementDimensions[horizontal ? 0 : 1] - val;
+ }
+
+ var dx = (horizontal ? val : other), x = elementPosition[0] + dx, xp = dx / elementDimensions[0],
+ dy = (horizontal ? other : val), y = elementPosition[1] + dy, yp = dy / elementDimensions[1];
+
+ a.push([ x, y, xp, yp, connections[i][1], connections[i][2] ]);
+ }
+
+ return a;
+ },
+ // used by edgeSortFunctions
+ currySort = function (reverseAngles) {
+ return function (a, b) {
+ var r = true;
+ if (reverseAngles) {
+ r = a[0][0] < b[0][0];
+ }
+ else {
+ r = a[0][0] > b[0][0];
+ }
+ return r === false ? -1 : 1;
+ };
+ },
+ // used by edgeSortFunctions
+ leftSort = function (a, b) {
+ // first get adjusted values
+ var p1 = a[0][0] < 0 ? -Math.PI - a[0][0] : Math.PI - a[0][0],
+ p2 = b[0][0] < 0 ? -Math.PI - b[0][0] : Math.PI - b[0][0];
+ if (p1 > p2) {
+ return 1;
+ }
+ else {
+ return -1;
+ }
+ },
+ // used by placeAnchors
+ edgeSortFunctions = {
+ "top": function (a, b) {
+ return a[0] > b[0] ? 1 : -1;
+ },
+ "right": currySort(true),
+ "bottom": currySort(true),
+ "left": leftSort
+ },
+ // used by placeAnchors
+ _sortHelper = function (_array, _fn) {
+ return _array.sort(_fn);
+ },
+ // used by AnchorManager.redraw
+ placeAnchors = function (elementId, _anchorLists) {
+ var cd = jsPlumbInstance.getCachedData(elementId), sS = cd.s, sO = cd.o,
+ placeSomeAnchors = function (desc, elementDimensions, elementPosition, unsortedConnections, isHorizontal, otherMultiplier, orientation) {
+ if (unsortedConnections.length > 0) {
+ var sc = _sortHelper(unsortedConnections, edgeSortFunctions[desc]), // puts them in order based on the target element's pos on screen
+ reverse = desc === "right" || desc === "top",
+ anchors = placeAnchorsOnLine(desc, elementDimensions,
+ elementPosition, sc,
+ isHorizontal, otherMultiplier, reverse);
+
+ // takes a computed anchor position and adjusts it for parent offset and scroll, then stores it.
+ var _setAnchorLocation = function (endpoint, anchorPos) {
+ continuousAnchorLocations[endpoint.id] = [ anchorPos[0], anchorPos[1], anchorPos[2], anchorPos[3] ];
+ continuousAnchorOrientations[endpoint.id] = orientation;
+ };
+
+ for (var i = 0; i < anchors.length; i++) {
+ var c = anchors[i][4], weAreSource = c.endpoints[0].elementId === elementId, weAreTarget = c.endpoints[1].elementId === elementId;
+ if (weAreSource) {
+ _setAnchorLocation(c.endpoints[0], anchors[i]);
+ }
+ if (weAreTarget) {
+ _setAnchorLocation(c.endpoints[1], anchors[i]);
+ }
+ }
+ }
+ };
+
+ placeSomeAnchors("bottom", sS, [sO.left, sO.top], _anchorLists.bottom, true, 1, [0, 1]);
+ placeSomeAnchors("top", sS, [sO.left, sO.top], _anchorLists.top, true, 0, [0, -1]);
+ placeSomeAnchors("left", sS, [sO.left, sO.top], _anchorLists.left, false, 0, [-1, 0]);
+ placeSomeAnchors("right", sS, [sO.left, sO.top], _anchorLists.right, false, 1, [1, 0]);
+ };
+
+ this.reset = function () {
+ _amEndpoints = {};
+ connectionsByElementId = {};
+ anchorLists = {};
+ };
+ this.addFloatingConnection = function (key, conn) {
+ floatingConnections[key] = conn;
+ };
+ this.removeFloatingConnection = function (key) {
+ delete floatingConnections[key];
+ };
+ this.newConnection = function (conn) {
+ var sourceId = conn.sourceId, targetId = conn.targetId,
+ ep = conn.endpoints,
+ doRegisterTarget = true,
+ registerConnection = function (otherIndex, otherEndpoint, otherAnchor, elId, c) {
+ if ((sourceId === targetId) && otherAnchor.isContinuous) {
+ // remove the target endpoint's canvas. we dont need it.
+ conn._jsPlumb.instance.removeElement(ep[1].canvas);
+ doRegisterTarget = false;
+ }
+ _ju.addToList(connectionsByElementId, elId, [c, otherEndpoint, otherAnchor.constructor === _jp.DynamicAnchor]);
+ };
+
+ registerConnection(0, ep[0], ep[0].anchor, targetId, conn);
+ if (doRegisterTarget) {
+ registerConnection(1, ep[1], ep[1].anchor, sourceId, conn);
+ }
+ };
+ var removeEndpointFromAnchorLists = function (endpoint) {
+ (function (list, eId) {
+ if (list) { // transient anchors dont get entries in this list.
+ var f = function (e) {
+ return e[4] === eId;
+ };
+ _ju.removeWithFunction(list.top, f);
+ _ju.removeWithFunction(list.left, f);
+ _ju.removeWithFunction(list.bottom, f);
+ _ju.removeWithFunction(list.right, f);
+ }
+ })(anchorLists[endpoint.elementId], endpoint.id);
+ };
+ this.connectionDetached = function (connInfo, doNotRedraw) {
+ var connection = connInfo.connection || connInfo,
+ sourceId = connInfo.sourceId,
+ targetId = connInfo.targetId,
+ ep = connection.endpoints,
+ removeConnection = function (otherIndex, otherEndpoint, otherAnchor, elId, c) {
+ _ju.removeWithFunction(connectionsByElementId[elId], function (_c) {
+ return _c[0].id === c.id;
+ });
+ };
+
+ removeConnection(1, ep[1], ep[1].anchor, sourceId, connection);
+ removeConnection(0, ep[0], ep[0].anchor, targetId, connection);
+ if (connection.floatingId) {
+ removeConnection(connection.floatingIndex, connection.floatingEndpoint, connection.floatingEndpoint.anchor, connection.floatingId, connection);
+ removeEndpointFromAnchorLists(connection.floatingEndpoint);
+ }
+
+ // remove from anchorLists
+ removeEndpointFromAnchorLists(connection.endpoints[0]);
+ removeEndpointFromAnchorLists(connection.endpoints[1]);
+
+ if (!doNotRedraw) {
+ self.redraw(connection.sourceId);
+ if (connection.targetId !== connection.sourceId) {
+ self.redraw(connection.targetId);
+ }
+ }
+ };
+ this.add = function (endpoint, elementId) {
+ _ju.addToList(_amEndpoints, elementId, endpoint);
+ };
+ this.changeId = function (oldId, newId) {
+ connectionsByElementId[newId] = connectionsByElementId[oldId];
+ _amEndpoints[newId] = _amEndpoints[oldId];
+ delete connectionsByElementId[oldId];
+ delete _amEndpoints[oldId];
+ };
+ this.getConnectionsFor = function (elementId) {
+ return connectionsByElementId[elementId] || [];
+ };
+ this.getEndpointsFor = function (elementId) {
+ return _amEndpoints[elementId] || [];
+ };
+ this.deleteEndpoint = function (endpoint) {
+ _ju.removeWithFunction(_amEndpoints[endpoint.elementId], function (e) {
+ return e.id === endpoint.id;
+ });
+ removeEndpointFromAnchorLists(endpoint);
+ };
+ this.clearFor = function (elementId) {
+ delete _amEndpoints[elementId];
+ _amEndpoints[elementId] = [];
+ };
+ // updates the given anchor list by either updating an existing anchor's info, or adding it. this function
+ // also removes the anchor from its previous list, if the edge it is on has changed.
+ // all connections found along the way (those that are connected to one of the faces this function
+ // operates on) are added to the connsToPaint list, as are their endpoints. in this way we know to repaint
+ // them wthout having to calculate anything else about them.
+ var _updateAnchorList = function (lists, theta, order, conn, aBoolean, otherElId, idx, reverse, edgeId, elId, connsToPaint, endpointsToPaint) {
+ // first try to find the exact match, but keep track of the first index of a matching element id along the way.s
+ var exactIdx = -1,
+ firstMatchingElIdx = -1,
+ endpoint = conn.endpoints[idx],
+ endpointId = endpoint.id,
+ oIdx = [1, 0][idx],
+ values = [
+ [ theta, order ],
+ conn,
+ aBoolean,
+ otherElId,
+ endpointId
+ ],
+ listToAddTo = lists[edgeId],
+ listToRemoveFrom = endpoint._continuousAnchorEdge ? lists[endpoint._continuousAnchorEdge] : null,
+ i,
+ candidate;
+
+ if (listToRemoveFrom) {
+ var rIdx = _ju.findWithFunction(listToRemoveFrom, function (e) {
+ return e[4] === endpointId;
+ });
+ if (rIdx !== -1) {
+ listToRemoveFrom.splice(rIdx, 1);
+ // get all connections from this list
+ for (i = 0; i < listToRemoveFrom.length; i++) {
+ candidate = listToRemoveFrom[i][1];
+ _ju.addWithFunction(connsToPaint, candidate, function (c) {
+ return c.id === candidate.id;
+ });
+ _ju.addWithFunction(endpointsToPaint, listToRemoveFrom[i][1].endpoints[idx], function (e) {
+ return e.id === candidate.endpoints[idx].id;
+ });
+ _ju.addWithFunction(endpointsToPaint, listToRemoveFrom[i][1].endpoints[oIdx], function (e) {
+ return e.id === candidate.endpoints[oIdx].id;
+ });
+ }
+ }
+ }
+
+ for (i = 0; i < listToAddTo.length; i++) {
+ candidate = listToAddTo[i][1];
+ if (params.idx === 1 && listToAddTo[i][3] === otherElId && firstMatchingElIdx === -1) {
+ firstMatchingElIdx = i;
+ }
+ _ju.addWithFunction(connsToPaint, candidate, function (c) {
+ return c.id === candidate.id;
+ });
+ _ju.addWithFunction(endpointsToPaint, listToAddTo[i][1].endpoints[idx], function (e) {
+ return e.id === candidate.endpoints[idx].id;
+ });
+ _ju.addWithFunction(endpointsToPaint, listToAddTo[i][1].endpoints[oIdx], function (e) {
+ return e.id === candidate.endpoints[oIdx].id;
+ });
+ }
+ if (exactIdx !== -1) {
+ listToAddTo[exactIdx] = values;
+ }
+ else {
+ var insertIdx = reverse ? firstMatchingElIdx !== -1 ? firstMatchingElIdx : 0 : listToAddTo.length; // of course we will get this from having looked through the array shortly.
+ listToAddTo.splice(insertIdx, 0, values);
+ }
+
+ // store this for next time.
+ endpoint._continuousAnchorEdge = edgeId;
+ };
+
+ //
+ // find the entry in an endpoint's list for this connection and update its target endpoint
+ // with the current target in the connection.
+ // This method and sourceChanged need to be folder into one.
+ //
+ this.updateOtherEndpoint = function (sourceElId, oldTargetId, newTargetId, connection) {
+ var sIndex = _ju.findWithFunction(connectionsByElementId[sourceElId], function (i) {
+ return i[0].id === connection.id;
+ }),
+ tIndex = _ju.findWithFunction(connectionsByElementId[oldTargetId], function (i) {
+ return i[0].id === connection.id;
+ });
+
+ // update or add data for source
+ if (sIndex !== -1) {
+ connectionsByElementId[sourceElId][sIndex][0] = connection;
+ connectionsByElementId[sourceElId][sIndex][1] = connection.endpoints[1];
+ connectionsByElementId[sourceElId][sIndex][2] = connection.endpoints[1].anchor.constructor === _jp.DynamicAnchor;
+ }
+
+ // remove entry for previous target (if there)
+ if (tIndex > -1) {
+ connectionsByElementId[oldTargetId].splice(tIndex, 1);
+ // add entry for new target
+ _ju.addToList(connectionsByElementId, newTargetId, [connection, connection.endpoints[0], connection.endpoints[0].anchor.constructor === _jp.DynamicAnchor]);
+ }
+
+ connection.updateConnectedClass();
+ };
+
+ //
+ // notification that the connection given has changed source from the originalId to the newId.
+ // This involves:
+ // 1. removing the connection from the list of connections stored for the originalId
+ // 2. updating the source information for the target of the connection
+ // 3. re-registering the connection in connectionsByElementId with the newId
+ //
+ this.sourceChanged = function (originalId, newId, connection, newElement) {
+ if (originalId !== newId) {
+
+ connection.sourceId = newId;
+ connection.source = newElement;
+
+ // remove the entry that points from the old source to the target
+ _ju.removeWithFunction(connectionsByElementId[originalId], function (info) {
+ return info[0].id === connection.id;
+ });
+ // find entry for target and update it
+ var tIdx = _ju.findWithFunction(connectionsByElementId[connection.targetId], function (i) {
+ return i[0].id === connection.id;
+ });
+ if (tIdx > -1) {
+ connectionsByElementId[connection.targetId][tIdx][0] = connection;
+ connectionsByElementId[connection.targetId][tIdx][1] = connection.endpoints[0];
+ connectionsByElementId[connection.targetId][tIdx][2] = connection.endpoints[0].anchor.constructor === _jp.DynamicAnchor;
+ }
+ // add entry for new source
+ _ju.addToList(connectionsByElementId, newId, [connection, connection.endpoints[1], connection.endpoints[1].anchor.constructor === _jp.DynamicAnchor]);
+
+ // TODO SP not final on this yet. when a user drags an existing connection and it turns into a self
+ // loop, then this code hides the target endpoint (by removing it from the DOM) But I think this should
+ // occur only if the anchor is Continuous
+ if (connection.endpoints[1].anchor.isContinuous) {
+ if (connection.source === connection.target) {
+ connection._jsPlumb.instance.removeElement(connection.endpoints[1].canvas);
+ }
+ else {
+ if (connection.endpoints[1].canvas.parentNode == null) {
+ connection._jsPlumb.instance.appendElement(connection.endpoints[1].canvas);
+ }
+ }
+ }
+
+ connection.updateConnectedClass();
+ }
+ };
+
+ //
+ // moves the given endpoint from `currentId` to `element`.
+ // This involves:
+ //
+ // 1. changing the key in _amEndpoints under which the endpoint is stored
+ // 2. changing the source or target values in all of the endpoint's connections
+ // 3. changing the array in connectionsByElementId in which the endpoint's connections
+ // are stored (done by either sourceChanged or updateOtherEndpoint)
+ //
+ this.rehomeEndpoint = function (ep, currentId, element) {
+ var eps = _amEndpoints[currentId] || [],
+ elementId = jsPlumbInstance.getId(element);
+
+ if (elementId !== currentId) {
+ var idx = eps.indexOf(ep);
+ if (idx > -1) {
+ var _ep = eps.splice(idx, 1)[0];
+ self.add(_ep, elementId);
+ }
+ }
+
+ for (var i = 0; i < ep.connections.length; i++) {
+ if (ep.connections[i].sourceId === currentId) {
+ self.sourceChanged(currentId, ep.elementId, ep.connections[i], ep.element);
+ }
+ else if (ep.connections[i].targetId === currentId) {
+ ep.connections[i].targetId = ep.elementId;
+ ep.connections[i].target = ep.element;
+ self.updateOtherEndpoint(ep.connections[i].sourceId, currentId, ep.elementId, ep.connections[i]);
+ }
+ }
+ };
+
+ this.redraw = function (elementId, ui, timestamp, offsetToUI, clearEdits, doNotRecalcEndpoint) {
+
+ if (!jsPlumbInstance.isSuspendDrawing()) {
+ // get all the endpoints for this element
+ var ep = _amEndpoints[elementId] || [],
+ endpointConnections = connectionsByElementId[elementId] || [],
+ connectionsToPaint = [],
+ endpointsToPaint = [],
+ anchorsToUpdate = [];
+
+ timestamp = timestamp || jsPlumbInstance.timestamp();
+ // offsetToUI are values that would have been calculated in the dragManager when registering
+ // an endpoint for an element that had a parent (somewhere in the hierarchy) that had been
+ // registered as draggable.
+ offsetToUI = offsetToUI || {left: 0, top: 0};
+ if (ui) {
+ ui = {
+ left: ui.left + offsetToUI.left,
+ top: ui.top + offsetToUI.top
+ };
+ }
+
+ // valid for one paint cycle.
+ var myOffset = jsPlumbInstance.updateOffset({ elId: elementId, offset: ui, recalc: false, timestamp: timestamp }),
+ orientationCache = {};
+
+ // actually, first we should compute the orientation of this element to all other elements to which
+ // this element is connected with a continuous anchor (whether both ends of the connection have
+ // a continuous anchor or just one)
+
+ for (var i = 0; i < endpointConnections.length; i++) {
+ var conn = endpointConnections[i][0],
+ sourceId = conn.sourceId,
+ targetId = conn.targetId,
+ sourceContinuous = conn.endpoints[0].anchor.isContinuous,
+ targetContinuous = conn.endpoints[1].anchor.isContinuous;
+
+ if (sourceContinuous || targetContinuous) {
+ var oKey = sourceId + "_" + targetId,
+ o = orientationCache[oKey],
+ oIdx = conn.sourceId === elementId ? 1 : 0;
+
+ if (sourceContinuous && !anchorLists[sourceId]) {
+ anchorLists[sourceId] = { top: [], right: [], bottom: [], left: [] };
+ }
+ if (targetContinuous && !anchorLists[targetId]) {
+ anchorLists[targetId] = { top: [], right: [], bottom: [], left: [] };
+ }
+
+ if (elementId !== targetId) {
+ jsPlumbInstance.updateOffset({ elId: targetId, timestamp: timestamp });
+ }
+ if (elementId !== sourceId) {
+ jsPlumbInstance.updateOffset({ elId: sourceId, timestamp: timestamp });
+ }
+
+ var td = jsPlumbInstance.getCachedData(targetId),
+ sd = jsPlumbInstance.getCachedData(sourceId);
+
+ if (targetId === sourceId && (sourceContinuous || targetContinuous)) {
+ // here we may want to improve this by somehow determining the face we'd like
+ // to put the connector on. ideally, when drawing, the face should be calculated
+ // by determining which face is closest to the point at which the mouse button
+ // was released. for now, we're putting it on the top face.
+ _updateAnchorList( anchorLists[sourceId], -Math.PI / 2, 0, conn, false, targetId, 0, false, "top", sourceId, connectionsToPaint, endpointsToPaint);
+ _updateAnchorList( anchorLists[targetId], -Math.PI / 2, 0, conn, false, sourceId, 1, false, "top", targetId, connectionsToPaint, endpointsToPaint);
+ }
+ else {
+ if (!o) {
+ o = this.calculateOrientation(sourceId, targetId, sd.o, td.o, conn.endpoints[0].anchor, conn.endpoints[1].anchor, conn);
+ orientationCache[oKey] = o;
+ // this would be a performance enhancement, but the computed angles need to be clamped to
+ //the (-PI/2 -> PI/2) range in order for the sorting to work properly.
+ /* orientationCache[oKey2] = {
+ orientation:o.orientation,
+ a:[o.a[1], o.a[0]],
+ theta:o.theta + Math.PI,
+ theta2:o.theta2 + Math.PI
+ };*/
+ }
+ if (sourceContinuous) {
+ _updateAnchorList(anchorLists[sourceId], o.theta, 0, conn, false, targetId, 0, false, o.a[0], sourceId, connectionsToPaint, endpointsToPaint);
+ }
+ if (targetContinuous) {
+ _updateAnchorList(anchorLists[targetId], o.theta2, -1, conn, true, sourceId, 1, true, o.a[1], targetId, connectionsToPaint, endpointsToPaint);
+ }
+ }
+
+ if (sourceContinuous) {
+ _ju.addWithFunction(anchorsToUpdate, sourceId, function (a) {
+ return a === sourceId;
+ });
+ }
+ if (targetContinuous) {
+ _ju.addWithFunction(anchorsToUpdate, targetId, function (a) {
+ return a === targetId;
+ });
+ }
+ _ju.addWithFunction(connectionsToPaint, conn, function (c) {
+ return c.id === conn.id;
+ });
+ if ((sourceContinuous && oIdx === 0) || (targetContinuous && oIdx === 1)) {
+ _ju.addWithFunction(endpointsToPaint, conn.endpoints[oIdx], function (e) {
+ return e.id === conn.endpoints[oIdx].id;
+ });
+ }
+ }
+ }
+
+ // place Endpoints whose anchors are continuous but have no Connections
+ for (i = 0; i < ep.length; i++) {
+ if (ep[i].connections.length === 0 && ep[i].anchor.isContinuous) {
+ if (!anchorLists[elementId]) {
+ anchorLists[elementId] = { top: [], right: [], bottom: [], left: [] };
+ }
+ _updateAnchorList(anchorLists[elementId], -Math.PI / 2, 0, {endpoints: [ep[i], ep[i]], paint: function () {
+ }}, false, elementId, 0, false, ep[i].anchor.getDefaultFace(), elementId, connectionsToPaint, endpointsToPaint);
+ _ju.addWithFunction(anchorsToUpdate, elementId, function (a) {
+ return a === elementId;
+ });
+ }
+ }
+
+ // now place all the continuous anchors we need to;
+ for (i = 0; i < anchorsToUpdate.length; i++) {
+ placeAnchors(anchorsToUpdate[i], anchorLists[anchorsToUpdate[i]]);
+ }
+
+ // now that continuous anchors have been placed, paint all the endpoints for this element
+ for (i = 0; i < ep.length; i++) {
+ ep[i].paint({ timestamp: timestamp, offset: myOffset, dimensions: myOffset.s, recalc: doNotRecalcEndpoint !== true });
+ }
+
+ // ... and any other endpoints we came across as a result of the continuous anchors.
+ for (i = 0; i < endpointsToPaint.length; i++) {
+ var cd = jsPlumbInstance.getCachedData(endpointsToPaint[i].elementId);
+ //endpointsToPaint[i].paint({ timestamp: timestamp, offset: cd, dimensions: cd.s });
+ endpointsToPaint[i].paint({ timestamp: null, offset: cd, dimensions: cd.s });
+ }
+
+ // paint all the standard and "dynamic connections", which are connections whose other anchor is
+ // static and therefore does need to be recomputed; we make sure that happens only one time.
+
+ // TODO we could have compiled a list of these in the first pass through connections; might save some time.
+ for (i = 0; i < endpointConnections.length; i++) {
+ var otherEndpoint = endpointConnections[i][1];
+ if (otherEndpoint.anchor.constructor === _jp.DynamicAnchor) {
+ otherEndpoint.paint({ elementWithPrecedence: elementId, timestamp: timestamp });
+ _ju.addWithFunction(connectionsToPaint, endpointConnections[i][0], function (c) {
+ return c.id === endpointConnections[i][0].id;
+ });
+ // all the connections for the other endpoint now need to be repainted
+ for (var k = 0; k < otherEndpoint.connections.length; k++) {
+ if (otherEndpoint.connections[k] !== endpointConnections[i][0]) {
+ _ju.addWithFunction(connectionsToPaint, otherEndpoint.connections[k], function (c) {
+ return c.id === otherEndpoint.connections[k].id;
+ });
+ }
+ }
+ } else {
+ _ju.addWithFunction(connectionsToPaint, endpointConnections[i][0], function (c) {
+ return c.id === endpointConnections[i][0].id;
+ });
+ }
+ }
+
+ // paint current floating connection for this element, if there is one.
+ var fc = floatingConnections[elementId];
+ if (fc) {
+ fc.paint({timestamp: timestamp, recalc: false, elId: elementId});
+ }
+
+ // paint all the connections
+ for (i = 0; i < connectionsToPaint.length; i++) {
+ connectionsToPaint[i].paint({elId: elementId, timestamp: null, recalc: false, clearEdits: clearEdits});
+ }
+ }
+ };
+
+ var ContinuousAnchor = function (anchorParams) {
+ _ju.EventGenerator.apply(this);
+ this.type = "Continuous";
+ this.isDynamic = true;
+ this.isContinuous = true;
+ var faces = anchorParams.faces || ["top", "right", "bottom", "left"],
+ clockwise = !(anchorParams.clockwise === false),
+ availableFaces = { },
+ opposites = { "top": "bottom", "right": "left", "left": "right", "bottom": "top" },
+ clockwiseOptions = { "top": "right", "right": "bottom", "left": "top", "bottom": "left" },
+ antiClockwiseOptions = { "top": "left", "right": "top", "left": "bottom", "bottom": "right" },
+ secondBest = clockwise ? clockwiseOptions : antiClockwiseOptions,
+ lastChoice = clockwise ? antiClockwiseOptions : clockwiseOptions,
+ cssClass = anchorParams.cssClass || "",
+ _currentFace = null, _lockedFace = null, X_AXIS_FACES = ["left", "right"], Y_AXIS_FACES = ["top", "bottom"],
+ _lockedAxis = null;
+
+ for (var i = 0; i < faces.length; i++) {
+ availableFaces[faces[i]] = true;
+ }
+
+ this.getDefaultFace = function () {
+ return faces.length === 0 ? "top" : faces[0];
+ };
+
+ this.isRelocatable = function() { return true; };
+ this.isSnapOnRelocate = function() { return true; };
+
+ // if the given edge is supported, returns it. otherwise looks for a substitute that _is_
+ // supported. if none supported we also return the request edge.
+ this.verifyEdge = function (edge) {
+ if (availableFaces[edge]) {
+ return edge;
+ }
+ else if (availableFaces[opposites[edge]]) {
+ return opposites[edge];
+ }
+ else if (availableFaces[secondBest[edge]]) {
+ return secondBest[edge];
+ }
+ else if (availableFaces[lastChoice[edge]]) {
+ return lastChoice[edge];
+ }
+ return edge; // we have to give them something.
+ };
+
+ this.isEdgeSupported = function (edge) {
+ return _lockedAxis == null ?
+
+ (_lockedFace == null ? availableFaces[edge] === true : _lockedFace === edge)
+
+ : _lockedAxis.indexOf(edge) !== -1;
+ };
+
+ this.setCurrentFace = function(face, overrideLock) {
+ _currentFace = face;
+ // if currently locked, and the user wants to override, do that.
+ if (overrideLock && _lockedFace != null) {
+ _lockedFace = _currentFace;
+ }
+ };
+
+ this.getCurrentFace = function() { return _currentFace; };
+ this.getSupportedFaces = function() {
+ var af = [];
+ for (var k in availableFaces) {
+ if (availableFaces[k]) {
+ af.push(k);
+ }
+ }
+ return af;
+ };
+
+ this.lock = function() {
+ _lockedFace = _currentFace;
+ };
+ this.unlock = function() {
+ _lockedFace = null;
+ };
+ this.isLocked = function() {
+ return _lockedFace != null;
+ };
+
+ this.lockCurrentAxis = function() {
+ if (_currentFace != null) {
+ _lockedAxis = (_currentFace === "left" || _currentFace === "right") ? X_AXIS_FACES : Y_AXIS_FACES;
+ }
+ };
+
+ this.unlockCurrentAxis = function() {
+ _lockedAxis = null;
+ };
+
+ this.compute = function (params) {
+ return continuousAnchorLocations[params.element.id] || [0, 0];
+ };
+ this.getCurrentLocation = function (params) {
+ return continuousAnchorLocations[params.element.id] || [0, 0];
+ };
+ this.getOrientation = function (endpoint) {
+ return continuousAnchorOrientations[endpoint.id] || [0, 0];
+ };
+ this.getCssClass = function () {
+ return cssClass;
+ };
+ };
+
+ // continuous anchors
+ jsPlumbInstance.continuousAnchorFactory = {
+ get: function (params) {
+ return new ContinuousAnchor(params);
+ },
+ clear: function (elementId) {
+ delete continuousAnchorLocations[elementId];
+ }
+ };
+ };
+
+ _jp.AnchorManager.prototype.calculateOrientation = function (sourceId, targetId, sd, td, sourceAnchor, targetAnchor) {
+
+ var Orientation = { HORIZONTAL: "horizontal", VERTICAL: "vertical", DIAGONAL: "diagonal", IDENTITY: "identity" },
+ axes = ["left", "top", "right", "bottom"];
+
+ if (sourceId === targetId) {
+ return {
+ orientation: Orientation.IDENTITY,
+ a: ["top", "top"]
+ };
+ }
+
+ var theta = Math.atan2((td.centery - sd.centery), (td.centerx - sd.centerx)),
+ theta2 = Math.atan2((sd.centery - td.centery), (sd.centerx - td.centerx));
+
+// --------------------------------------------------------------------------------------
+
+ // improved face calculation. get midpoints of each face for source and target, then put in an array with all combinations of
+ // source/target faces. sort this array by distance between midpoints. the entry at index 0 is our preferred option. we can
+ // go through the array one by one until we find an entry in which each requested face is supported.
+ var candidates = [], midpoints = { };
+ (function (types, dim) {
+ for (var i = 0; i < types.length; i++) {
+ midpoints[types[i]] = {
+ "left": [ dim[i].left, dim[i].centery ],
+ "right": [ dim[i].right, dim[i].centery ],
+ "top": [ dim[i].centerx, dim[i].top ],
+ "bottom": [ dim[i].centerx , dim[i].bottom]
+ };
+ }
+ })([ "source", "target" ], [ sd, td ]);
+
+ for (var sf = 0; sf < axes.length; sf++) {
+ for (var tf = 0; tf < axes.length; tf++) {
+ candidates.push({
+ source: axes[sf],
+ target: axes[tf],
+ dist: Biltong.lineLength(midpoints.source[axes[sf]], midpoints.target[axes[tf]])
+ });
+ }
+ }
+
+ candidates.sort(function (a, b) {
+ return a.dist < b.dist ? -1 : a.dist > b.dist ? 1 : 0;
+ });
+
+ // now go through this list and try to get an entry that satisfies both (there will be one, unless one of the anchors
+ // declares no available faces)
+ var sourceEdge = candidates[0].source, targetEdge = candidates[0].target;
+ for (var i = 0; i < candidates.length; i++) {
+
+ if (!sourceAnchor.isContinuous || sourceAnchor.isEdgeSupported(candidates[i].source)) {
+ sourceEdge = candidates[i].source;
+ }
+ else {
+ sourceEdge = null;
+ }
+
+ if (!targetAnchor.isContinuous || targetAnchor.isEdgeSupported(candidates[i].target)) {
+ targetEdge = candidates[i].target;
+ }
+ else {
+ targetEdge = null;
+ }
+
+ if (sourceEdge != null && targetEdge != null) {
+ break;
+ }
+ }
+
+ if (sourceAnchor.isContinuous) {
+ sourceAnchor.setCurrentFace(sourceEdge);
+ }
+
+ if (targetAnchor.isContinuous) {
+ targetAnchor.setCurrentFace(targetEdge);
+ }
+
+// --------------------------------------------------------------------------------------
+
+ return {
+ a: [ sourceEdge, targetEdge ],
+ theta: theta,
+ theta2: theta2
+ };
+ };
+
+ /**
+ * Anchors model a position on some element at which an Endpoint may be located. They began as a first class citizen of jsPlumb, ie. a user
+ * was required to create these themselves, but over time this has been replaced by the concept of referring to them either by name (eg. "TopMiddle"),
+ * or by an array describing their coordinates (eg. [ 0, 0.5, 0, -1 ], which is the same as "TopMiddle"). jsPlumb now handles all of the
+ * creation of Anchors without user intervention.
+ */
+ _jp.Anchor = function (params) {
+ this.x = params.x || 0;
+ this.y = params.y || 0;
+ this.elementId = params.elementId;
+ this.cssClass = params.cssClass || "";
+ this.userDefinedLocation = null;
+ this.orientation = params.orientation || [ 0, 0 ];
+ this.lastReturnValue = null;
+ this.offsets = params.offsets || [ 0, 0 ];
+ this.timestamp = null;
+
+ var relocatable = params.relocatable !== false;
+ this.isRelocatable = function() { return relocatable; };
+ this.setRelocatable = function(_relocatable) { relocatable = _relocatable; };
+ var snapOnRelocate = params.snapOnRelocate !== false;
+ this.isSnapOnRelocate = function() { return snapOnRelocate; };
+
+ var locked = false;
+ this.lock = function() { locked = true; };
+ this.unlock = function() { locked = false; };
+ this.isLocked = function() { return locked; };
+
+ _ju.EventGenerator.apply(this);
+
+ this.compute = function (params) {
+
+ var xy = params.xy, wh = params.wh, timestamp = params.timestamp;
+
+ if (params.clearUserDefinedLocation) {
+ this.userDefinedLocation = null;
+ }
+
+ if (timestamp && timestamp === this.timestamp) {
+ return this.lastReturnValue;
+ }
+
+ if (this.userDefinedLocation != null) {
+ this.lastReturnValue = this.userDefinedLocation;
+ }
+ else {
+ this.lastReturnValue = [ xy[0] + (this.x * wh[0]) + this.offsets[0], xy[1] + (this.y * wh[1]) + this.offsets[1], this.x, this.y ];
+ }
+
+ this.timestamp = timestamp;
+ return this.lastReturnValue;
+ };
+
+ this.getCurrentLocation = function (params) {
+ params = params || {};
+ return (this.lastReturnValue == null || (params.timestamp != null && this.timestamp !== params.timestamp)) ? this.compute(params) : this.lastReturnValue;
+ };
+
+ this.setPosition = function(x, y, ox, oy, overrideLock) {
+ if (!locked || overrideLock) {
+ this.x = x;
+ this.y = y;
+ this.orientation = [ ox, oy ];
+ this.lastReturnValue = null;
+ }
+ };
+ };
+ _ju.extend(_jp.Anchor, _ju.EventGenerator, {
+ equals: function (anchor) {
+ if (!anchor) {
+ return false;
+ }
+ var ao = anchor.getOrientation(),
+ o = this.getOrientation();
+ return this.x === anchor.x && this.y === anchor.y && this.offsets[0] === anchor.offsets[0] && this.offsets[1] === anchor.offsets[1] && o[0] === ao[0] && o[1] === ao[1];
+ },
+ getUserDefinedLocation: function () {
+ return this.userDefinedLocation;
+ },
+ setUserDefinedLocation: function (l) {
+ this.userDefinedLocation = l;
+ },
+ clearUserDefinedLocation: function () {
+ this.userDefinedLocation = null;
+ },
+ getOrientation: function () {
+ return this.orientation;
+ },
+ getCssClass: function () {
+ return this.cssClass;
+ }
+ });
+
+ /**
+ * An Anchor that floats. its orientation is computed dynamically from
+ * its position relative to the anchor it is floating relative to. It is used when creating
+ * a connection through drag and drop.
+ *
+ * TODO FloatingAnchor could totally be refactored to extend Anchor just slightly.
+ */
+ _jp.FloatingAnchor = function (params) {
+
+ _jp.Anchor.apply(this, arguments);
+
+ // this is the anchor that this floating anchor is referenced to for
+ // purposes of calculating the orientation.
+ var ref = params.reference,
+ // the canvas this refers to.
+ refCanvas = params.referenceCanvas,
+ size = _jp.getSize(refCanvas),
+ // these are used to store the current relative position of our
+ // anchor wrt the reference anchor. they only indicate
+ // direction, so have a value of 1 or -1 (or, very rarely, 0). these
+ // values are written by the compute method, and read
+ // by the getOrientation method.
+ xDir = 0, yDir = 0,
+ // temporary member used to store an orientation when the floating
+ // anchor is hovering over another anchor.
+ orientation = null,
+ _lastResult = null;
+
+ // clear from parent. we want floating anchor orientation to always be computed.
+ this.orientation = null;
+
+ // set these to 0 each; they are used by certain types of connectors in the loopback case,
+ // when the connector is trying to clear the element it is on. but for floating anchor it's not
+ // very important.
+ this.x = 0;
+ this.y = 0;
+
+ this.isFloating = true;
+
+ this.compute = function (params) {
+ var xy = params.xy,
+ result = [ xy[0] + (size[0] / 2), xy[1] + (size[1] / 2) ]; // return origin of the element. we may wish to improve this so that any object can be the drag proxy.
+ _lastResult = result;
+ return result;
+ };
+
+ this.getOrientation = function (_endpoint) {
+ if (orientation) {
+ return orientation;
+ }
+ else {
+ var o = ref.getOrientation(_endpoint);
+ // here we take into account the orientation of the other
+ // anchor: if it declares zero for some direction, we declare zero too. this might not be the most awesome. perhaps we can come
+ // up with a better way. it's just so that the line we draw looks like it makes sense. maybe this wont make sense.
+ return [ Math.abs(o[0]) * xDir * -1,
+ Math.abs(o[1]) * yDir * -1 ];
+ }
+ };
+
+ /**
+ * notification the endpoint associated with this anchor is hovering
+ * over another anchor; we want to assume that anchor's orientation
+ * for the duration of the hover.
+ */
+ this.over = function (anchor, endpoint) {
+ orientation = anchor.getOrientation(endpoint);
+ };
+
+ /**
+ * notification the endpoint associated with this anchor is no
+ * longer hovering over another anchor; we should resume calculating
+ * orientation as we normally do.
+ */
+ this.out = function () {
+ orientation = null;
+ };
+
+ this.getCurrentLocation = function (params) {
+ return _lastResult == null ? this.compute(params) : _lastResult;
+ };
+ };
+ _ju.extend(_jp.FloatingAnchor, _jp.Anchor);
+
+ var _convertAnchor = function (anchor, jsPlumbInstance, elementId) {
+ return anchor.constructor === _jp.Anchor ? anchor : jsPlumbInstance.makeAnchor(anchor, elementId, jsPlumbInstance);
+ };
+
+ /*
+ * A DynamicAnchor is an Anchor that contains a list of other Anchors, which it cycles
+ * through at compute time to find the one that is located closest to
+ * the center of the target element, and returns that Anchor's compute
+ * method result. this causes endpoints to follow each other with
+ * respect to the orientation of their target elements, which is a useful
+ * feature for some applications.
+ *
+ */
+ _jp.DynamicAnchor = function (params) {
+ _jp.Anchor.apply(this, arguments);
+
+ this.isDynamic = true;
+ this.anchors = [];
+ this.elementId = params.elementId;
+ this.jsPlumbInstance = params.jsPlumbInstance;
+
+ for (var i = 0; i < params.anchors.length; i++) {
+ this.anchors[i] = _convertAnchor(params.anchors[i], this.jsPlumbInstance, this.elementId);
+ }
+
+ this.getAnchors = function () {
+ return this.anchors;
+ };
+
+ var _curAnchor = this.anchors.length > 0 ? this.anchors[0] : null,
+ _lastAnchor = _curAnchor,
+ self = this,
+
+ // helper method to calculate the distance between the centers of the two elements.
+ _distance = function (anchor, cx, cy, xy, wh) {
+ var ax = xy[0] + (anchor.x * wh[0]), ay = xy[1] + (anchor.y * wh[1]),
+ acx = xy[0] + (wh[0] / 2), acy = xy[1] + (wh[1] / 2);
+ return (Math.sqrt(Math.pow(cx - ax, 2) + Math.pow(cy - ay, 2)) +
+ Math.sqrt(Math.pow(acx - ax, 2) + Math.pow(acy - ay, 2)));
+ },
+ // default method uses distance between element centers. you can provide your own method in the dynamic anchor
+ // constructor (and also to jsPlumb.makeDynamicAnchor). the arguments to it are four arrays:
+ // xy - xy loc of the anchor's element
+ // wh - anchor's element's dimensions
+ // txy - xy loc of the element of the other anchor in the connection
+ // twh - dimensions of the element of the other anchor in the connection.
+ // anchors - the list of selectable anchors
+ _anchorSelector = params.selector || function (xy, wh, txy, twh, anchors) {
+ var cx = txy[0] + (twh[0] / 2), cy = txy[1] + (twh[1] / 2);
+ var minIdx = -1, minDist = Infinity;
+ for (var i = 0; i < anchors.length; i++) {
+ var d = _distance(anchors[i], cx, cy, xy, wh);
+ if (d < minDist) {
+ minIdx = i + 0;
+ minDist = d;
+ }
+ }
+ return anchors[minIdx];
+ };
+
+ this.compute = function (params) {
+ var xy = params.xy, wh = params.wh, txy = params.txy, twh = params.twh;
+
+ this.timestamp = params.timestamp;
+
+ var udl = self.getUserDefinedLocation();
+ if (udl != null) {
+ return udl;
+ }
+
+ // if anchor is locked or an opposite element was not given, we
+ // maintain our state. anchor will be locked
+ // if it is the source of a drag and drop.
+ if (this.isLocked() || txy == null || twh == null) {
+ return _curAnchor.compute(params);
+ }
+ else {
+ params.timestamp = null; // otherwise clear this, i think. we want the anchor to compute.
+ }
+
+ _curAnchor = _anchorSelector(xy, wh, txy, twh, this.anchors);
+ this.x = _curAnchor.x;
+ this.y = _curAnchor.y;
+
+ if (_curAnchor !== _lastAnchor) {
+ this.fire("anchorChanged", _curAnchor);
+ }
+
+ _lastAnchor = _curAnchor;
+
+ return _curAnchor.compute(params);
+ };
+
+ this.getCurrentLocation = function (params) {
+ return this.getUserDefinedLocation() || (_curAnchor != null ? _curAnchor.getCurrentLocation(params) : null);
+ };
+
+ this.getOrientation = function (_endpoint) {
+ return _curAnchor != null ? _curAnchor.getOrientation(_endpoint) : [ 0, 0 ];
+ };
+ this.over = function (anchor, endpoint) {
+ if (_curAnchor != null) {
+ _curAnchor.over(anchor, endpoint);
+ }
+ };
+ this.out = function () {
+ if (_curAnchor != null) {
+ _curAnchor.out();
+ }
+ };
+
+ this.setAnchor = function(a) {
+ _curAnchor = a;
+ };
+
+ this.getCssClass = function () {
+ return (_curAnchor && _curAnchor.getCssClass()) || "";
+ };
+
+ /**
+ * Attempt to match an anchor with the given coordinates and then set it.
+ * @param coords
+ * @returns true if matching anchor found, false otherwise.
+ */
+ this.setAnchorCoordinates = function(coords) {
+ var idx = jsPlumbUtil.findWithFunction(this.anchors, function(a) {
+ return a.x === coords[0] && a.y === coords[1];
+ });
+ if (idx !== -1) {
+ this.setAnchor(this.anchors[idx]);
+ return true;
+ } else {
+ return false;
+ }
+ };
+ };
+ _ju.extend(_jp.DynamicAnchor, _jp.Anchor);
+
+// -------- basic anchors ------------------
+ var _curryAnchor = function (x, y, ox, oy, type, fnInit) {
+ _jp.Anchors[type] = function (params) {
+ var a = params.jsPlumbInstance.makeAnchor([ x, y, ox, oy, 0, 0 ], params.elementId, params.jsPlumbInstance);
+ a.type = type;
+ if (fnInit) {
+ fnInit(a, params);
+ }
+ return a;
+ };
+ };
+
+ _curryAnchor(0.5, 0, 0, -1, "TopCenter");
+ _curryAnchor(0.5, 1, 0, 1, "BottomCenter");
+ _curryAnchor(0, 0.5, -1, 0, "LeftMiddle");
+ _curryAnchor(1, 0.5, 1, 0, "RightMiddle");
+
+ _curryAnchor(0.5, 0, 0, -1, "Top");
+ _curryAnchor(0.5, 1, 0, 1, "Bottom");
+ _curryAnchor(0, 0.5, -1, 0, "Left");
+ _curryAnchor(1, 0.5, 1, 0, "Right");
+ _curryAnchor(0.5, 0.5, 0, 0, "Center");
+ _curryAnchor(1, 0, 0, -1, "TopRight");
+ _curryAnchor(1, 1, 0, 1, "BottomRight");
+ _curryAnchor(0, 0, 0, -1, "TopLeft");
+ _curryAnchor(0, 1, 0, 1, "BottomLeft");
+
+// ------- dynamic anchors -------------------
+
+ // default dynamic anchors chooses from Top, Right, Bottom, Left
+ _jp.Defaults.DynamicAnchors = function (params) {
+ return params.jsPlumbInstance.makeAnchors(["TopCenter", "RightMiddle", "BottomCenter", "LeftMiddle"], params.elementId, params.jsPlumbInstance);
+ };
+
+ // default dynamic anchors bound to name 'AutoDefault'
+ _jp.Anchors.AutoDefault = function (params) {
+ var a = params.jsPlumbInstance.makeDynamicAnchor(_jp.Defaults.DynamicAnchors(params));
+ a.type = "AutoDefault";
+ return a;
+ };
+
+// ------- continuous anchors -------------------
+
+ var _curryContinuousAnchor = function (type, faces) {
+ _jp.Anchors[type] = function (params) {
+ var a = params.jsPlumbInstance.makeAnchor(["Continuous", { faces: faces }], params.elementId, params.jsPlumbInstance);
+ a.type = type;
+ return a;
+ };
+ };
+
+ _jp.Anchors.Continuous = function (params) {
+ return params.jsPlumbInstance.continuousAnchorFactory.get(params);
+ };
+
+ _curryContinuousAnchor("ContinuousLeft", ["left"]);
+ _curryContinuousAnchor("ContinuousTop", ["top"]);
+ _curryContinuousAnchor("ContinuousBottom", ["bottom"]);
+ _curryContinuousAnchor("ContinuousRight", ["right"]);
+
+// ------- position assign anchors -------------------
+
+ // this anchor type lets you assign the position at connection time.
+ _curryAnchor(0, 0, 0, 0, "Assign", function (anchor, params) {
+ // find what to use as the "position finder". the user may have supplied a String which represents
+ // the id of a position finder in jsPlumb.AnchorPositionFinders, or the user may have supplied the
+ // position finder as a function. we find out what to use and then set it on the anchor.
+ var pf = params.position || "Fixed";
+ anchor.positionFinder = pf.constructor === String ? params.jsPlumbInstance.AnchorPositionFinders[pf] : pf;
+ // always set the constructor params; the position finder might need them later (the Grid one does,
+ // for example)
+ anchor.constructorParams = params;
+ });
+
+ // these are the default anchor positions finders, which are used by the makeTarget function. supplying
+ // a position finder argument to that function allows you to specify where the resulting anchor will
+ // be located
+ root.jsPlumbInstance.prototype.AnchorPositionFinders = {
+ "Fixed": function (dp, ep, es) {
+ return [ (dp.left - ep.left) / es[0], (dp.top - ep.top) / es[1] ];
+ },
+ "Grid": function (dp, ep, es, params) {
+ var dx = dp.left - ep.left, dy = dp.top - ep.top,
+ gx = es[0] / (params.grid[0]), gy = es[1] / (params.grid[1]),
+ mx = Math.floor(dx / gx), my = Math.floor(dy / gy);
+ return [ ((mx * gx) + (gx / 2)) / es[0], ((my * gy) + (gy / 2)) / es[1] ];
+ }
+ };
+
+// ------- perimeter anchors -------------------
+
+ _jp.Anchors.Perimeter = function (params) {
+ params = params || {};
+ var anchorCount = params.anchorCount || 60,
+ shape = params.shape;
+
+ if (!shape) {
+ throw new Error("no shape supplied to Perimeter Anchor type");
+ }
+
+ var _circle = function () {
+ var r = 0.5, step = Math.PI * 2 / anchorCount, current = 0, a = [];
+ for (var i = 0; i < anchorCount; i++) {
+ var x = r + (r * Math.sin(current)),
+ y = r + (r * Math.cos(current));
+ a.push([ x, y, 0, 0 ]);
+ current += step;
+ }
+ return a;
+ },
+ _path = function (segments) {
+ var anchorsPerFace = anchorCount / segments.length, a = [],
+ _computeFace = function (x1, y1, x2, y2, fractionalLength, ox, oy) {
+ anchorsPerFace = anchorCount * fractionalLength;
+ var dx = (x2 - x1) / anchorsPerFace, dy = (y2 - y1) / anchorsPerFace;
+ for (var i = 0; i < anchorsPerFace; i++) {
+ a.push([
+ x1 + (dx * i),
+ y1 + (dy * i),
+ ox == null ? 0 : ox,
+ oy == null ? 0 : oy
+ ]);
+ }
+ };
+
+ for (var i = 0; i < segments.length; i++) {
+ _computeFace.apply(null, segments[i]);
+ }
+
+ return a;
+ },
+ _shape = function (faces) {
+ var s = [];
+ for (var i = 0; i < faces.length; i++) {
+ s.push([faces[i][0], faces[i][1], faces[i][2], faces[i][3], 1 / faces.length, faces[i][4], faces[i][5]]);
+ }
+ return _path(s);
+ },
+ _rectangle = function () {
+ return _shape([
+ [ 0, 0, 1, 0, 0, -1 ],
+ [ 1, 0, 1, 1, 1, 0 ],
+ [ 1, 1, 0, 1, 0, 1 ],
+ [ 0, 1, 0, 0, -1, 0 ]
+ ]);
+ };
+
+ var _shapes = {
+ "Circle": _circle,
+ "Ellipse": _circle,
+ "Diamond": function () {
+ return _shape([
+ [ 0.5, 0, 1, 0.5 ],
+ [ 1, 0.5, 0.5, 1 ],
+ [ 0.5, 1, 0, 0.5 ],
+ [ 0, 0.5, 0.5, 0 ]
+ ]);
+ },
+ "Rectangle": _rectangle,
+ "Square": _rectangle,
+ "Triangle": function () {
+ return _shape([
+ [ 0.5, 0, 1, 1 ],
+ [ 1, 1, 0, 1 ],
+ [ 0, 1, 0.5, 0]
+ ]);
+ },
+ "Path": function (params) {
+ var points = params.points, p = [], tl = 0;
+ for (var i = 0; i < points.length - 1; i++) {
+ var l = Math.sqrt(Math.pow(points[i][2] - points[i][0]) + Math.pow(points[i][3] - points[i][1]));
+ tl += l;
+ p.push([points[i][0], points[i][1], points[i + 1][0], points[i + 1][1], l]);
+ }
+ for (var j = 0; j < p.length; j++) {
+ p[j][4] = p[j][4] / tl;
+ }
+ return _path(p);
+ }
+ },
+ _rotate = function (points, amountInDegrees) {
+ var o = [], theta = amountInDegrees / 180 * Math.PI;
+ for (var i = 0; i < points.length; i++) {
+ var _x = points[i][0] - 0.5,
+ _y = points[i][1] - 0.5;
+
+ o.push([
+ 0.5 + ((_x * Math.cos(theta)) - (_y * Math.sin(theta))),
+ 0.5 + ((_x * Math.sin(theta)) + (_y * Math.cos(theta))),
+ points[i][2],
+ points[i][3]
+ ]);
+ }
+ return o;
+ };
+
+ if (!_shapes[shape]) {
+ throw new Error("Shape [" + shape + "] is unknown by Perimeter Anchor type");
+ }
+
+ var da = _shapes[shape](params);
+ if (params.rotation) {
+ da = _rotate(da, params.rotation);
+ }
+ var a = params.jsPlumbInstance.makeDynamicAnchor(da);
+ a.type = "Perimeter";
+ return a;
+ };
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains the default Connectors, Endpoint and Overlay definitions.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil, _jg = root.Biltong;
+
+ _jp.Segments = {
+
+ /*
+ * Class: AbstractSegment
+ * A Connector is made up of 1..N Segments, each of which has a Type, such as 'Straight', 'Arc',
+ * 'Bezier'. This is new from 1.4.2, and gives us a lot more flexibility when drawing connections: things such
+ * as rounded corners for flowchart connectors, for example, or a straight line stub for Bezier connections, are
+ * much easier to do now.
+ *
+ * A Segment is responsible for providing coordinates for painting it, and also must be able to report its length.
+ *
+ */
+ AbstractSegment: function (params) {
+ this.params = params;
+
+ /**
+ * Function: findClosestPointOnPath
+ * Finds the closest point on this segment to the given [x, y],
+ * returning both the x and y of the point plus its distance from
+ * the supplied point, and its location along the length of the
+ * path inscribed by the segment. This implementation returns
+ * Infinity for distance and null values for everything else;
+ * subclasses are expected to override.
+ */
+ this.findClosestPointOnPath = function (x, y) {
+ return {
+ d: Infinity,
+ x: null,
+ y: null,
+ l: null
+ };
+ };
+
+ this.getBounds = function () {
+ return {
+ minX: Math.min(params.x1, params.x2),
+ minY: Math.min(params.y1, params.y2),
+ maxX: Math.max(params.x1, params.x2),
+ maxY: Math.max(params.y1, params.y2)
+ };
+ };
+
+ /**
+ * Computes the list of points on the segment that intersect the given line.
+ * @method lineIntersection
+ * @param {number} x1
+ * @param {number} y1
+ * @param {number} x2
+ * @param {number} y2
+ * @returns {Array<[number, number]>}
+ */
+ this.lineIntersection = function(x1, y1, x2, y2) {
+ return [];
+ };
+
+ /**
+ * Computes the list of points on the segment that intersect the box with the given origin and size.
+ * @method boxIntersection
+ * @param {number} x1
+ * @param {number} y1
+ * @param {number} w
+ * @param {number} h
+ * @returns {Array<[number, number]>}
+ */
+ this.boxIntersection = function(x, y, w, h) {
+ var a = [];
+ a.push.apply(a, this.lineIntersection(x, y, x + w, y));
+ a.push.apply(a, this.lineIntersection(x + w, y, x + w, y + h));
+ a.push.apply(a, this.lineIntersection(x + w, y + h, x, y + h));
+ a.push.apply(a, this.lineIntersection(x, y + h, x, y));
+ return a;
+ };
+
+ /**
+ * Computes the list of points on the segment that intersect the given bounding box, which is an object of the form { x:.., y:.., w:.., h:.. }.
+ * @method lineIntersection
+ * @param {BoundingRectangle} box
+ * @returns {Array<[number, number]>}
+ */
+ this.boundingBoxIntersection = function(box) {
+ return this.boxIntersection(box.x, box.y, box.w, box.y);
+ };
+ },
+ Straight: function (params) {
+ var _super = _jp.Segments.AbstractSegment.apply(this, arguments),
+ length, m, m2, x1, x2, y1, y2,
+ _recalc = function () {
+ length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
+ m = _jg.gradient({x: x1, y: y1}, {x: x2, y: y2});
+ m2 = -1 / m;
+ };
+
+ this.type = "Straight";
+
+ this.getLength = function () {
+ return length;
+ };
+ this.getGradient = function () {
+ return m;
+ };
+
+ this.getCoordinates = function () {
+ return { x1: x1, y1: y1, x2: x2, y2: y2 };
+ };
+ this.setCoordinates = function (coords) {
+ x1 = coords.x1;
+ y1 = coords.y1;
+ x2 = coords.x2;
+ y2 = coords.y2;
+ _recalc();
+ };
+ this.setCoordinates({x1: params.x1, y1: params.y1, x2: params.x2, y2: params.y2});
+
+ this.getBounds = function () {
+ return {
+ minX: Math.min(x1, x2),
+ minY: Math.min(y1, y2),
+ maxX: Math.max(x1, x2),
+ maxY: Math.max(y1, y2)
+ };
+ };
+
+ /**
+ * returns the point on the segment's path that is 'location' along the length of the path, where 'location' is a decimal from
+ * 0 to 1 inclusive. for the straight line segment this is simple maths.
+ */
+ this.pointOnPath = function (location, absolute) {
+ if (location === 0 && !absolute) {
+ return { x: x1, y: y1 };
+ }
+ else if (location === 1 && !absolute) {
+ return { x: x2, y: y2 };
+ }
+ else {
+ var l = absolute ? location > 0 ? location : length + location : location * length;
+ return _jg.pointOnLine({x: x1, y: y1}, {x: x2, y: y2}, l);
+ }
+ };
+
+ /**
+ * returns the gradient of the segment at the given point - which for us is constant.
+ */
+ this.gradientAtPoint = function (_) {
+ return m;
+ };
+
+ /**
+ * returns the point on the segment's path that is 'distance' along the length of the path from 'location', where
+ * 'location' is a decimal from 0 to 1 inclusive, and 'distance' is a number of pixels.
+ * this hands off to jsPlumbUtil to do the maths, supplying two points and the distance.
+ */
+ this.pointAlongPathFrom = function (location, distance, absolute) {
+ var p = this.pointOnPath(location, absolute),
+ farAwayPoint = distance <= 0 ? {x: x1, y: y1} : {x: x2, y: y2 };
+
+ /*
+ location == 1 ? {
+ x:x1 + ((x2 - x1) * 10),
+ y:y1 + ((y1 - y2) * 10)
+ } :
+ */
+
+ if (distance <= 0 && Math.abs(distance) > 1) {
+ distance *= -1;
+ }
+
+ return _jg.pointOnLine(p, farAwayPoint, distance);
+ };
+
+ // is c between a and b?
+ var within = function (a, b, c) {
+ return c >= Math.min(a, b) && c <= Math.max(a, b);
+ };
+ // find which of a and b is closest to c
+ var closest = function (a, b, c) {
+ return Math.abs(c - a) < Math.abs(c - b) ? a : b;
+ };
+
+ /**
+ Function: findClosestPointOnPath
+ Finds the closest point on this segment to [x,y]. See
+ notes on this method in AbstractSegment.
+ */
+ this.findClosestPointOnPath = function (x, y) {
+ var out = {
+ d: Infinity,
+ x: null,
+ y: null,
+ l: null,
+ x1: x1,
+ x2: x2,
+ y1: y1,
+ y2: y2
+ };
+
+ if (m === 0) {
+ out.y = y1;
+ out.x = within(x1, x2, x) ? x : closest(x1, x2, x);
+ }
+ else if (m === Infinity || m === -Infinity) {
+ out.x = x1;
+ out.y = within(y1, y2, y) ? y : closest(y1, y2, y);
+ }
+ else {
+ // closest point lies on normal from given point to this line.
+ var b = y1 - (m * x1),
+ b2 = y - (m2 * x),
+ // y1 = m.x1 + b and y1 = m2.x1 + b2
+ // so m.x1 + b = m2.x1 + b2
+ // x1(m - m2) = b2 - b
+ // x1 = (b2 - b) / (m - m2)
+ _x1 = (b2 - b) / (m - m2),
+ _y1 = (m * _x1) + b;
+
+ out.x = within(x1, x2, _x1) ? _x1 : closest(x1, x2, _x1);//_x1;
+ out.y = within(y1, y2, _y1) ? _y1 : closest(y1, y2, _y1);//_y1;
+ }
+
+ var fractionInSegment = _jg.lineLength([ out.x, out.y ], [ x1, y1 ]);
+ out.d = _jg.lineLength([x, y], [out.x, out.y]);
+ out.l = fractionInSegment / length;
+ return out;
+ };
+
+ var _pointLiesBetween = function(q, p1, p2) {
+ return (p2 > p1) ? (p1 <= q && q <= p2) : (p1 >= q && q >= p2);
+ }, _plb = _pointLiesBetween;
+
+ /**
+ * Calculates all intersections of the given line with this segment.
+ * @param _x1
+ * @param _y1
+ * @param _x2
+ * @param _y2
+ * @returns {Array}
+ */
+ this.lineIntersection = function(_x1, _y1, _x2, _y2) {
+ var m2 = Math.abs(_jg.gradient({x: _x1, y: _y1}, {x: _x2, y: _y2})),
+ m1 = Math.abs(m),
+ b = m1 === Infinity ? x1 : y1 - (m1 * x1),
+ out = [],
+ b2 = m2 === Infinity ? _x1 : _y1 - (m2 * _x1);
+
+ // if lines parallel, no intersection
+ if (m2 !== m1) {
+ // perpendicular, segment horizontal
+ if(m2 === Infinity && m1 === 0) {
+ if (_plb(_x1, x1, x2) && _plb(y1, _y1, _y2)) {
+ out = [ _x1, y1 ]; // we return X on the incident line and Y from the segment
+ }
+ } else if(m2 === 0 && m1 === Infinity) {
+ // perpendicular, segment vertical
+ if(_plb(_y1, y1, y2) && _plb(x1, _x1, _x2)) {
+ out = [x1, _y1]; // we return X on the segment and Y from the incident line
+ }
+ } else {
+ var X, Y;
+ if (m2 === Infinity) {
+ // test line is a vertical line. where does it cross the segment?
+ X = _x1;
+ if (_plb(X, x1, x2)) {
+ Y = (m1 * _x1) + b;
+ if (_plb(Y, _y1, _y2)) {
+ out = [ X, Y ];
+ }
+ }
+ } else if (m2 === 0) {
+ Y = _y1;
+ // test line is a horizontal line. where does it cross the segment?
+ if (_plb(Y, y1, y2)) {
+ X = (_y1 - b) / m1;
+ if (_plb(X, _x1, _x2)) {
+ out = [ X, Y ];
+ }
+ }
+ } else {
+ // mX + b = m2X + b2
+ // mX - m2X = b2 - b
+ // X(m - m2) = b2 - b
+ // X = (b2 - b) / (m - m2)
+ // Y = mX + b
+ X = (b2 - b) / (m1 - m2);
+ Y = (m1 * X) + b;
+ if(_plb(X, x1, x2) && _plb(Y, y1, y2)) {
+ out = [ X, Y];
+ }
+ }
+ }
+ }
+
+ return out;
+ };
+
+ /**
+ * Calculates all intersections of the given box with this segment. By default this method simply calls `lineIntersection` with each of the four
+ * faces of the box; subclasses can override this if they think there's a faster way to compute the entire box at once.
+ * @param x X position of top left corner of box
+ * @param y Y position of top left corner of box
+ * @param w width of box
+ * @param h height of box
+ * @returns {Array}
+ */
+ this.boxIntersection = function(x, y, w, h) {
+ var a = [];
+ a.push.apply(a, this.lineIntersection(x, y, x + w, y));
+ a.push.apply(a, this.lineIntersection(x + w, y, x + w, y + h));
+ a.push.apply(a, this.lineIntersection(x + w, y + h, x, y + h));
+ a.push.apply(a, this.lineIntersection(x, y + h, x, y));
+ return a;
+ };
+
+ /**
+ * Calculates all intersections of the given bounding box with this segment. By default this method simply calls `lineIntersection` with each of the four
+ * faces of the box; subclasses can override this if they think there's a faster way to compute the entire box at once.
+ * @param box Bounding box, in { x:.., y:..., w:..., h:... } format.
+ * @returns {Array}
+ */
+ this.boundingBoxIntersection = function(box) {
+ return this.boxIntersection(box.x, box.y, box.w, box.h);
+ };
+ },
+
+ /*
+ Arc Segment. You need to supply:
+
+ r - radius
+ cx - center x for the arc
+ cy - center y for the arc
+ ac - whether the arc is anticlockwise or not. default is clockwise.
+
+ and then either:
+
+ startAngle - startAngle for the arc.
+ endAngle - endAngle for the arc.
+
+ or:
+
+ x1 - x for start point
+ y1 - y for start point
+ x2 - x for end point
+ y2 - y for end point
+
+ */
+ Arc: function (params) {
+ var _super = _jp.Segments.AbstractSegment.apply(this, arguments),
+ _calcAngle = function (_x, _y) {
+ return _jg.theta([params.cx, params.cy], [_x, _y]);
+ },
+ _calcAngleForLocation = function (segment, location) {
+ if (segment.anticlockwise) {
+ var sa = segment.startAngle < segment.endAngle ? segment.startAngle + TWO_PI : segment.startAngle,
+ s = Math.abs(sa - segment.endAngle);
+ return sa - (s * location);
+ }
+ else {
+ var ea = segment.endAngle < segment.startAngle ? segment.endAngle + TWO_PI : segment.endAngle,
+ ss = Math.abs(ea - segment.startAngle);
+
+ return segment.startAngle + (ss * location);
+ }
+ },
+ TWO_PI = 2 * Math.PI;
+
+ this.radius = params.r;
+ this.anticlockwise = params.ac;
+ this.type = "Arc";
+
+ if (params.startAngle && params.endAngle) {
+ this.startAngle = params.startAngle;
+ this.endAngle = params.endAngle;
+ this.x1 = params.cx + (this.radius * Math.cos(params.startAngle));
+ this.y1 = params.cy + (this.radius * Math.sin(params.startAngle));
+ this.x2 = params.cx + (this.radius * Math.cos(params.endAngle));
+ this.y2 = params.cy + (this.radius * Math.sin(params.endAngle));
+ }
+ else {
+ this.startAngle = _calcAngle(params.x1, params.y1);
+ this.endAngle = _calcAngle(params.x2, params.y2);
+ this.x1 = params.x1;
+ this.y1 = params.y1;
+ this.x2 = params.x2;
+ this.y2 = params.y2;
+ }
+
+ if (this.endAngle < 0) {
+ this.endAngle += TWO_PI;
+ }
+ if (this.startAngle < 0) {
+ this.startAngle += TWO_PI;
+ }
+
+ // segment is used by vml
+ //this.segment = _jg.quadrant([this.x1, this.y1], [this.x2, this.y2]);
+
+ // we now have startAngle and endAngle as positive numbers, meaning the
+ // absolute difference (|d|) between them is the sweep (s) of this arc, unless the
+ // arc is 'anticlockwise' in which case 's' is given by 2PI - |d|.
+
+ var ea = this.endAngle < this.startAngle ? this.endAngle + TWO_PI : this.endAngle;
+ this.sweep = Math.abs(ea - this.startAngle);
+ if (this.anticlockwise) {
+ this.sweep = TWO_PI - this.sweep;
+ }
+ var circumference = 2 * Math.PI * this.radius,
+ frac = this.sweep / TWO_PI,
+ length = circumference * frac;
+
+ this.getLength = function () {
+ return length;
+ };
+
+ this.getBounds = function () {
+ return {
+ minX: params.cx - params.r,
+ maxX: params.cx + params.r,
+ minY: params.cy - params.r,
+ maxY: params.cy + params.r
+ };
+ };
+
+ var VERY_SMALL_VALUE = 0.0000000001,
+ gentleRound = function (n) {
+ var f = Math.floor(n), r = Math.ceil(n);
+ if (n - f < VERY_SMALL_VALUE) {
+ return f;
+ }
+ else if (r - n < VERY_SMALL_VALUE) {
+ return r;
+ }
+ return n;
+ };
+
+ /**
+ * returns the point on the segment's path that is 'location' along the length of the path, where 'location' is a decimal from
+ * 0 to 1 inclusive.
+ */
+ this.pointOnPath = function (location, absolute) {
+
+ if (location === 0) {
+ return { x: this.x1, y: this.y1, theta: this.startAngle };
+ }
+ else if (location === 1) {
+ return { x: this.x2, y: this.y2, theta: this.endAngle };
+ }
+
+ if (absolute) {
+ location = location / length;
+ }
+
+ var angle = _calcAngleForLocation(this, location),
+ _x = params.cx + (params.r * Math.cos(angle)),
+ _y = params.cy + (params.r * Math.sin(angle));
+
+ return { x: gentleRound(_x), y: gentleRound(_y), theta: angle };
+ };
+
+ /**
+ * returns the gradient of the segment at the given point.
+ */
+ this.gradientAtPoint = function (location, absolute) {
+ var p = this.pointOnPath(location, absolute);
+ var m = _jg.normal([ params.cx, params.cy ], [p.x, p.y ]);
+ if (!this.anticlockwise && (m === Infinity || m === -Infinity)) {
+ m *= -1;
+ }
+ return m;
+ };
+
+ this.pointAlongPathFrom = function (location, distance, absolute) {
+ var p = this.pointOnPath(location, absolute),
+ arcSpan = distance / circumference * 2 * Math.PI,
+ dir = this.anticlockwise ? -1 : 1,
+ startAngle = p.theta + (dir * arcSpan),
+ startX = params.cx + (this.radius * Math.cos(startAngle)),
+ startY = params.cy + (this.radius * Math.sin(startAngle));
+
+ return {x: startX, y: startY};
+ };
+
+ // TODO: lineIntersection
+ },
+
+ Bezier: function (params) {
+ this.curve = [
+ { x: params.x1, y: params.y1},
+ { x: params.cp1x, y: params.cp1y },
+ { x: params.cp2x, y: params.cp2y },
+ { x: params.x2, y: params.y2 }
+ ];
+
+ var _super = _jp.Segments.AbstractSegment.apply(this, arguments);
+ // although this is not a strictly rigorous determination of bounds
+ // of a bezier curve, it works for the types of curves that this segment
+ // type produces.
+ this.bounds = {
+ minX: Math.min(params.x1, params.x2, params.cp1x, params.cp2x),
+ minY: Math.min(params.y1, params.y2, params.cp1y, params.cp2y),
+ maxX: Math.max(params.x1, params.x2, params.cp1x, params.cp2x),
+ maxY: Math.max(params.y1, params.y2, params.cp1y, params.cp2y)
+ };
+
+ this.type = "Bezier";
+
+ var _translateLocation = function (_curve, location, absolute) {
+ if (absolute) {
+ location = root.jsBezier.locationAlongCurveFrom(_curve, location > 0 ? 0 : 1, location);
+ }
+
+ return location;
+ };
+
+ /**
+ * returns the point on the segment's path that is 'location' along the length of the path, where 'location' is a decimal from
+ * 0 to 1 inclusive.
+ */
+ this.pointOnPath = function (location, absolute) {
+ location = _translateLocation(this.curve, location, absolute);
+ return root.jsBezier.pointOnCurve(this.curve, location);
+ };
+
+ /**
+ * returns the gradient of the segment at the given point.
+ */
+ this.gradientAtPoint = function (location, absolute) {
+ location = _translateLocation(this.curve, location, absolute);
+ return root.jsBezier.gradientAtPoint(this.curve, location);
+ };
+
+ this.pointAlongPathFrom = function (location, distance, absolute) {
+ location = _translateLocation(this.curve, location, absolute);
+ return root.jsBezier.pointAlongCurveFrom(this.curve, location, distance);
+ };
+
+ this.getLength = function () {
+ return root.jsBezier.getLength(this.curve);
+ };
+
+ this.getBounds = function () {
+ return this.bounds;
+ };
+
+ this.findClosestPointOnPath = function (x, y) {
+ var p = root.jsBezier.nearestPointOnCurve({x:x,y:y}, this.curve);
+ return {
+ d:Math.sqrt(Math.pow(p.point.x - x, 2) + Math.pow(p.point.y - y, 2)),
+ x:p.point.x,
+ y:p.point.y,
+ l:1 - p.location,
+ s:this
+ };
+ };
+
+ this.lineIntersection = function(x1, y1, x2, y2) {
+ return root.jsBezier.lineIntersection(x1, y1, x2, y2, this.curve);
+ };
+ }
+ };
+
+ _jp.SegmentRenderer = {
+ getPath: function (segment, isFirstSegment) {
+ return ({
+ "Straight": function (isFirstSegment) {
+ var d = segment.getCoordinates();
+ return (isFirstSegment ? "M " + d.x1 + " " + d.y1 + " " : "") + "L " + d.x2 + " " + d.y2;
+ },
+ "Bezier": function (isFirstSegment) {
+ var d = segment.params;
+ return (isFirstSegment ? "M " + d.x2 + " " + d.y2 + " " : "") +
+ "C " + d.cp2x + " " + d.cp2y + " " + d.cp1x + " " + d.cp1y + " " + d.x1 + " " + d.y1;
+ },
+ "Arc": function (isFirstSegment) {
+ var d = segment.params,
+ laf = segment.sweep > Math.PI ? 1 : 0,
+ sf = segment.anticlockwise ? 0 : 1;
+
+ return (isFirstSegment ? "M" + segment.x1 + " " + segment.y1 + " " : "") + "A " + segment.radius + " " + d.r + " 0 " + laf + "," + sf + " " + segment.x2 + " " + segment.y2;
+ }
+ })[segment.type](isFirstSegment);
+ }
+ };
+
+ /*
+ Class: UIComponent
+ Superclass for Connector and AbstractEndpoint.
+ */
+ var AbstractComponent = function () {
+ this.resetBounds = function () {
+ this.bounds = { minX: Infinity, minY: Infinity, maxX: -Infinity, maxY: -Infinity };
+ };
+ this.resetBounds();
+ };
+
+ /*
+ * Class: Connector
+ * Superclass for all Connectors; here is where Segments are managed. This is exposed on jsPlumb just so it
+ * can be accessed from other files. You should not try to instantiate one of these directly.
+ *
+ * When this class is asked for a pointOnPath, or gradient etc, it must first figure out which segment to dispatch
+ * that request to. This is done by keeping track of the total connector length as segments are added, and also
+ * their cumulative ratios to the total length. Then when the right segment is found it is a simple case of dispatching
+ * the request to it (and adjusting 'location' so that it is relative to the beginning of that segment.)
+ */
+ _jp.Connectors.AbstractConnector = function (params) {
+
+ AbstractComponent.apply(this, arguments);
+
+ var segments = [],
+ totalLength = 0,
+ segmentProportions = [],
+ segmentProportionalLengths = [],
+ stub = params.stub || 0,
+ sourceStub = _ju.isArray(stub) ? stub[0] : stub,
+ targetStub = _ju.isArray(stub) ? stub[1] : stub,
+ gap = params.gap || 0,
+ sourceGap = _ju.isArray(gap) ? gap[0] : gap,
+ targetGap = _ju.isArray(gap) ? gap[1] : gap,
+ userProvidedSegments = null,
+ paintInfo = null;
+
+ this.getPathData = function() {
+ var p = "";
+ for (var i = 0; i < segments.length; i++) {
+ p += _jp.SegmentRenderer.getPath(segments[i], i === 0);
+ p += " ";
+ }
+ return p;
+ };
+
+ /**
+ * Function: findSegmentForPoint
+ * Returns the segment that is closest to the given [x,y],
+ * null if nothing found. This function returns a JS
+ * object with:
+ *
+ * d - distance from segment
+ * l - proportional location in segment
+ * x - x point on the segment
+ * y - y point on the segment
+ * s - the segment itself.
+ * connectorLocation - the location on the connector of the point, expressed as a decimal between 0 and 1 inclusive.
+ */
+ this.findSegmentForPoint = function (x, y) {
+ var out = { d: Infinity, s: null, x: null, y: null, l: null };
+ for (var i = 0; i < segments.length; i++) {
+ var _s = segments[i].findClosestPointOnPath(x, y);
+ if (_s.d < out.d) {
+ out.d = _s.d;
+ out.l = _s.l;
+ out.x = _s.x;
+ out.y = _s.y;
+ out.s = segments[i];
+ out.x1 = _s.x1;
+ out.x2 = _s.x2;
+ out.y1 = _s.y1;
+ out.y2 = _s.y2;
+ out.index = i;
+ out.connectorLocation = segmentProportions[i][0] + (_s.l * (segmentProportions[i][1] - segmentProportions[i][0]));
+ }
+ }
+
+ return out;
+ };
+
+ this.lineIntersection = function(x1, y1, x2, y2) {
+ var out = [];
+ for (var i = 0; i < segments.length; i++) {
+ out.push.apply(out, segments[i].lineIntersection(x1, y1, x2, y2));
+ }
+ return out;
+ };
+
+ this.boxIntersection = function(x, y, w, h) {
+ var out = [];
+ for (var i = 0; i < segments.length; i++) {
+ out.push.apply(out, segments[i].boxIntersection(x, y, w, h));
+ }
+ return out;
+ };
+
+ this.boundingBoxIntersection = function(box) {
+ var out = [];
+ for (var i = 0; i < segments.length; i++) {
+ out.push.apply(out, segments[i].boundingBoxIntersection(box));
+ }
+ return out;
+ };
+
+ var _updateSegmentProportions = function () {
+ var curLoc = 0;
+ for (var i = 0; i < segments.length; i++) {
+ var sl = segments[i].getLength();
+ segmentProportionalLengths[i] = sl / totalLength;
+ segmentProportions[i] = [curLoc, (curLoc += (sl / totalLength)) ];
+ }
+ },
+
+ /**
+ * returns [segment, proportion of travel in segment, segment index] for the segment
+ * that contains the point which is 'location' distance along the entire path, where
+ * 'location' is a decimal between 0 and 1 inclusive. in this connector type, paths
+ * are made up of a list of segments, each of which contributes some fraction to
+ * the total length.
+ * From 1.3.10 this also supports the 'absolute' property, which lets us specify a location
+ * as the absolute distance in pixels, rather than a proportion of the total path.
+ */
+ _findSegmentForLocation = function (location, absolute) {
+ if (absolute) {
+ location = location > 0 ? location / totalLength : (totalLength + location) / totalLength;
+ }
+ var idx = segmentProportions.length - 1, inSegmentProportion = 1;
+ for (var i = 0; i < segmentProportions.length; i++) {
+ if (segmentProportions[i][1] >= location) {
+ idx = i;
+ // todo is this correct for all connector path types?
+ inSegmentProportion = location === 1 ? 1 : location === 0 ? 0 : (location - segmentProportions[i][0]) / segmentProportionalLengths[i];
+ break;
+ }
+ }
+ return { segment: segments[idx], proportion: inSegmentProportion, index: idx };
+ },
+ _addSegment = function (conn, type, params) {
+ if (params.x1 === params.x2 && params.y1 === params.y2) {
+ return;
+ }
+ var s = new _jp.Segments[type](params);
+ segments.push(s);
+ totalLength += s.getLength();
+ conn.updateBounds(s);
+ },
+ _clearSegments = function () {
+ totalLength = segments.length = segmentProportions.length = segmentProportionalLengths.length = 0;
+ };
+
+ this.setSegments = function (_segs) {
+ userProvidedSegments = [];
+ totalLength = 0;
+ for (var i = 0; i < _segs.length; i++) {
+ userProvidedSegments.push(_segs[i]);
+ totalLength += _segs[i].getLength();
+ }
+ };
+
+ this.getLength = function() {
+ return totalLength;
+ };
+
+ var _prepareCompute = function (params) {
+ this.strokeWidth = params.strokeWidth;
+ var segment = _jg.quadrant(params.sourcePos, params.targetPos),
+ swapX = params.targetPos[0] < params.sourcePos[0],
+ swapY = params.targetPos[1] < params.sourcePos[1],
+ lw = params.strokeWidth || 1,
+ so = params.sourceEndpoint.anchor.getOrientation(params.sourceEndpoint),
+ to = params.targetEndpoint.anchor.getOrientation(params.targetEndpoint),
+ x = swapX ? params.targetPos[0] : params.sourcePos[0],
+ y = swapY ? params.targetPos[1] : params.sourcePos[1],
+ w = Math.abs(params.targetPos[0] - params.sourcePos[0]),
+ h = Math.abs(params.targetPos[1] - params.sourcePos[1]);
+
+ // if either anchor does not have an orientation set, we derive one from their relative
+ // positions. we fix the axis to be the one in which the two elements are further apart, and
+ // point each anchor at the other element. this is also used when dragging a new connection.
+ if (so[0] === 0 && so[1] === 0 || to[0] === 0 && to[1] === 0) {
+ var index = w > h ? 0 : 1, oIndex = [1, 0][index];
+ so = [];
+ to = [];
+ so[index] = params.sourcePos[index] > params.targetPos[index] ? -1 : 1;
+ to[index] = params.sourcePos[index] > params.targetPos[index] ? 1 : -1;
+ so[oIndex] = 0;
+ to[oIndex] = 0;
+ }
+
+ var sx = swapX ? w + (sourceGap * so[0]) : sourceGap * so[0],
+ sy = swapY ? h + (sourceGap * so[1]) : sourceGap * so[1],
+ tx = swapX ? targetGap * to[0] : w + (targetGap * to[0]),
+ ty = swapY ? targetGap * to[1] : h + (targetGap * to[1]),
+ oProduct = ((so[0] * to[0]) + (so[1] * to[1]));
+
+ var result = {
+ sx: sx, sy: sy, tx: tx, ty: ty, lw: lw,
+ xSpan: Math.abs(tx - sx),
+ ySpan: Math.abs(ty - sy),
+ mx: (sx + tx) / 2,
+ my: (sy + ty) / 2,
+ so: so, to: to, x: x, y: y, w: w, h: h,
+ segment: segment,
+ startStubX: sx + (so[0] * sourceStub),
+ startStubY: sy + (so[1] * sourceStub),
+ endStubX: tx + (to[0] * targetStub),
+ endStubY: ty + (to[1] * targetStub),
+ isXGreaterThanStubTimes2: Math.abs(sx - tx) > (sourceStub + targetStub),
+ isYGreaterThanStubTimes2: Math.abs(sy - ty) > (sourceStub + targetStub),
+ opposite: oProduct === -1,
+ perpendicular: oProduct === 0,
+ orthogonal: oProduct === 1,
+ sourceAxis: so[0] === 0 ? "y" : "x",
+ points: [x, y, w, h, sx, sy, tx, ty ],
+ stubs:[sourceStub, targetStub]
+ };
+ result.anchorOrientation = result.opposite ? "opposite" : result.orthogonal ? "orthogonal" : "perpendicular";
+ return result;
+ };
+
+ this.getSegments = function () {
+ return segments;
+ };
+
+ this.updateBounds = function (segment) {
+ var segBounds = segment.getBounds();
+ this.bounds.minX = Math.min(this.bounds.minX, segBounds.minX);
+ this.bounds.maxX = Math.max(this.bounds.maxX, segBounds.maxX);
+ this.bounds.minY = Math.min(this.bounds.minY, segBounds.minY);
+ this.bounds.maxY = Math.max(this.bounds.maxY, segBounds.maxY);
+ };
+
+ var dumpSegmentsToConsole = function () {
+ console.log("SEGMENTS:");
+ for (var i = 0; i < segments.length; i++) {
+ console.log(segments[i].type, segments[i].getLength(), segmentProportions[i]);
+ }
+ };
+
+ this.pointOnPath = function (location, absolute) {
+ var seg = _findSegmentForLocation(location, absolute);
+ return seg.segment && seg.segment.pointOnPath(seg.proportion, false) || [0, 0];
+ };
+
+ this.gradientAtPoint = function (location, absolute) {
+ var seg = _findSegmentForLocation(location, absolute);
+ return seg.segment && seg.segment.gradientAtPoint(seg.proportion, false) || 0;
+ };
+
+ this.pointAlongPathFrom = function (location, distance, absolute) {
+ var seg = _findSegmentForLocation(location, absolute);
+ // TODO what happens if this crosses to the next segment?
+ return seg.segment && seg.segment.pointAlongPathFrom(seg.proportion, distance, false) || [0, 0];
+ };
+
+ this.compute = function (params) {
+ paintInfo = _prepareCompute.call(this, params);
+
+ _clearSegments();
+ this._compute(paintInfo, params);
+ this.x = paintInfo.points[0];
+ this.y = paintInfo.points[1];
+ this.w = paintInfo.points[2];
+ this.h = paintInfo.points[3];
+ this.segment = paintInfo.segment;
+ _updateSegmentProportions();
+ };
+
+ return {
+ addSegment: _addSegment,
+ prepareCompute: _prepareCompute,
+ sourceStub: sourceStub,
+ targetStub: targetStub,
+ maxStub: Math.max(sourceStub, targetStub),
+ sourceGap: sourceGap,
+ targetGap: targetGap,
+ maxGap: Math.max(sourceGap, targetGap)
+ };
+ };
+ _ju.extend(_jp.Connectors.AbstractConnector, AbstractComponent);
+
+
+ // ********************************* END OF CONNECTOR TYPES *******************************************************************
+
+ // ********************************* ENDPOINT TYPES *******************************************************************
+
+ _jp.Endpoints.AbstractEndpoint = function (params) {
+ AbstractComponent.apply(this, arguments);
+ var compute = this.compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {
+ var out = this._compute.apply(this, arguments);
+ this.x = out[0];
+ this.y = out[1];
+ this.w = out[2];
+ this.h = out[3];
+ this.bounds.minX = this.x;
+ this.bounds.minY = this.y;
+ this.bounds.maxX = this.x + this.w;
+ this.bounds.maxY = this.y + this.h;
+ return out;
+ };
+ return {
+ compute: compute,
+ cssClass: params.cssClass
+ };
+ };
+ _ju.extend(_jp.Endpoints.AbstractEndpoint, AbstractComponent);
+
+ /**
+ * Class: Endpoints.Dot
+ * A round endpoint, with default radius 10 pixels.
+ */
+
+ /**
+ * Function: Constructor
+ *
+ * Parameters:
+ *
+ * radius - radius of the endpoint. defaults to 10 pixels.
+ */
+ _jp.Endpoints.Dot = function (params) {
+ this.type = "Dot";
+ var _super = _jp.Endpoints.AbstractEndpoint.apply(this, arguments);
+ params = params || {};
+ this.radius = params.radius || 10;
+ this.defaultOffset = 0.5 * this.radius;
+ this.defaultInnerRadius = this.radius / 3;
+
+ this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {
+ this.radius = endpointStyle.radius || this.radius;
+ var x = anchorPoint[0] - this.radius,
+ y = anchorPoint[1] - this.radius,
+ w = this.radius * 2,
+ h = this.radius * 2;
+
+ if (endpointStyle.stroke) {
+ var lw = endpointStyle.strokeWidth || 1;
+ x -= lw;
+ y -= lw;
+ w += (lw * 2);
+ h += (lw * 2);
+ }
+ return [ x, y, w, h, this.radius ];
+ };
+ };
+ _ju.extend(_jp.Endpoints.Dot, _jp.Endpoints.AbstractEndpoint);
+
+ _jp.Endpoints.Rectangle = function (params) {
+ this.type = "Rectangle";
+ var _super = _jp.Endpoints.AbstractEndpoint.apply(this, arguments);
+ params = params || {};
+ this.width = params.width || 20;
+ this.height = params.height || 20;
+
+ this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {
+ var width = endpointStyle.width || this.width,
+ height = endpointStyle.height || this.height,
+ x = anchorPoint[0] - (width / 2),
+ y = anchorPoint[1] - (height / 2);
+
+ return [ x, y, width, height];
+ };
+ };
+ _ju.extend(_jp.Endpoints.Rectangle, _jp.Endpoints.AbstractEndpoint);
+
+ var DOMElementEndpoint = function (params) {
+ _jp.jsPlumbUIComponent.apply(this, arguments);
+ this._jsPlumb.displayElements = [];
+ };
+ _ju.extend(DOMElementEndpoint, _jp.jsPlumbUIComponent, {
+ getDisplayElements: function () {
+ return this._jsPlumb.displayElements;
+ },
+ appendDisplayElement: function (el) {
+ this._jsPlumb.displayElements.push(el);
+ }
+ });
+
+ /**
+ * Class: Endpoints.Image
+ * Draws an image as the Endpoint.
+ */
+ /**
+ * Function: Constructor
+ *
+ * Parameters:
+ *
+ * src - location of the image to use.
+
+ TODO: multiple references to self. not sure quite how to get rid of them entirely. perhaps self = null in the cleanup
+ function will suffice
+
+ TODO this class still might leak memory.
+
+ */
+ _jp.Endpoints.Image = function (params) {
+
+ this.type = "Image";
+ DOMElementEndpoint.apply(this, arguments);
+ _jp.Endpoints.AbstractEndpoint.apply(this, arguments);
+
+ var _onload = params.onload,
+ src = params.src || params.url,
+ clazz = params.cssClass ? " " + params.cssClass : "";
+
+ this._jsPlumb.img = new Image();
+ this._jsPlumb.ready = false;
+ this._jsPlumb.initialized = false;
+ this._jsPlumb.deleted = false;
+ this._jsPlumb.widthToUse = params.width;
+ this._jsPlumb.heightToUse = params.height;
+ this._jsPlumb.endpoint = params.endpoint;
+
+ this._jsPlumb.img.onload = function () {
+ if (this._jsPlumb != null) {
+ this._jsPlumb.ready = true;
+ this._jsPlumb.widthToUse = this._jsPlumb.widthToUse || this._jsPlumb.img.width;
+ this._jsPlumb.heightToUse = this._jsPlumb.heightToUse || this._jsPlumb.img.height;
+ if (_onload) {
+ _onload(this);
+ }
+ }
+ }.bind(this);
+
+ /*
+ Function: setImage
+ Sets the Image to use in this Endpoint.
+
+ Parameters:
+ img - may be a URL or an Image object
+ onload - optional; a callback to execute once the image has loaded.
+ */
+ this._jsPlumb.endpoint.setImage = function (_img, onload) {
+ var s = _img.constructor === String ? _img : _img.src;
+ _onload = onload;
+ this._jsPlumb.img.src = s;
+
+ if (this.canvas != null) {
+ this.canvas.setAttribute("src", this._jsPlumb.img.src);
+ }
+ }.bind(this);
+
+ this._jsPlumb.endpoint.setImage(src, _onload);
+ this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {
+ this.anchorPoint = anchorPoint;
+ if (this._jsPlumb.ready) {
+ return [anchorPoint[0] - this._jsPlumb.widthToUse / 2, anchorPoint[1] - this._jsPlumb.heightToUse / 2,
+ this._jsPlumb.widthToUse, this._jsPlumb.heightToUse];
+ }
+ else {
+ return [0, 0, 0, 0];
+ }
+ };
+
+ this.canvas = _jp.createElement("img", {
+ position:"absolute",
+ margin:0,
+ padding:0,
+ outline:0
+ }, this._jsPlumb.instance.endpointClass + clazz);
+
+ if (this._jsPlumb.widthToUse) {
+ this.canvas.setAttribute("width", this._jsPlumb.widthToUse);
+ }
+ if (this._jsPlumb.heightToUse) {
+ this.canvas.setAttribute("height", this._jsPlumb.heightToUse);
+ }
+ this._jsPlumb.instance.appendElement(this.canvas);
+
+ this.actuallyPaint = function (d, style, anchor) {
+ if (!this._jsPlumb.deleted) {
+ if (!this._jsPlumb.initialized) {
+ this.canvas.setAttribute("src", this._jsPlumb.img.src);
+ this.appendDisplayElement(this.canvas);
+ this._jsPlumb.initialized = true;
+ }
+ var x = this.anchorPoint[0] - (this._jsPlumb.widthToUse / 2),
+ y = this.anchorPoint[1] - (this._jsPlumb.heightToUse / 2);
+ _ju.sizeElement(this.canvas, x, y, this._jsPlumb.widthToUse, this._jsPlumb.heightToUse);
+ }
+ };
+
+ this.paint = function (style, anchor) {
+ if (this._jsPlumb != null) { // may have been deleted
+ if (this._jsPlumb.ready) {
+ this.actuallyPaint(style, anchor);
+ }
+ else {
+ root.setTimeout(function () {
+ this.paint(style, anchor);
+ }.bind(this), 200);
+ }
+ }
+ };
+ };
+ _ju.extend(_jp.Endpoints.Image, [ DOMElementEndpoint, _jp.Endpoints.AbstractEndpoint ], {
+ cleanup: function (force) {
+ if (force) {
+ this._jsPlumb.deleted = true;
+ if (this.canvas) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ }
+ this.canvas = null;
+ }
+ }
+ });
+
+ /*
+ * Class: Endpoints.Blank
+ * An Endpoint that paints nothing (visible) on the screen. Supports cssClass and hoverClass parameters like all Endpoints.
+ */
+ _jp.Endpoints.Blank = function (params) {
+ var _super = _jp.Endpoints.AbstractEndpoint.apply(this, arguments);
+ this.type = "Blank";
+ DOMElementEndpoint.apply(this, arguments);
+ this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {
+ return [anchorPoint[0], anchorPoint[1], 10, 0];
+ };
+
+ var clazz = params.cssClass ? " " + params.cssClass : "";
+
+ this.canvas = _jp.createElement("div", {
+ display: "block",
+ width: "1px",
+ height: "1px",
+ background: "transparent",
+ position: "absolute"
+ }, this._jsPlumb.instance.endpointClass + clazz);
+
+ this._jsPlumb.instance.appendElement(this.canvas);
+
+ this.paint = function (style, anchor) {
+ _ju.sizeElement(this.canvas, this.x, this.y, this.w, this.h);
+ };
+ };
+ _ju.extend(_jp.Endpoints.Blank, [_jp.Endpoints.AbstractEndpoint, DOMElementEndpoint], {
+ cleanup: function () {
+ if (this.canvas && this.canvas.parentNode) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ }
+ }
+ });
+
+ /*
+ * Class: Endpoints.Triangle
+ * A triangular Endpoint.
+ */
+ /*
+ * Function: Constructor
+ *
+ * Parameters:
+ *
+ * width width of the triangle's base. defaults to 55 pixels.
+ * height height of the triangle from base to apex. defaults to 55 pixels.
+ */
+ _jp.Endpoints.Triangle = function (params) {
+ this.type = "Triangle";
+ _jp.Endpoints.AbstractEndpoint.apply(this, arguments);
+ var self = this;
+ params = params || { };
+ params.width = params.width || 55;
+ params.height = params.height || 55;
+ this.width = params.width;
+ this.height = params.height;
+ this._compute = function (anchorPoint, orientation, endpointStyle, connectorPaintStyle) {
+ var width = endpointStyle.width || self.width,
+ height = endpointStyle.height || self.height,
+ x = anchorPoint[0] - (width / 2),
+ y = anchorPoint[1] - (height / 2);
+ return [ x, y, width, height ];
+ };
+ };
+// ********************************* END OF ENDPOINT TYPES *******************************************************************
+
+
+// ********************************* OVERLAY DEFINITIONS ***********************************************************************
+
+ var AbstractOverlay = _jp.Overlays.AbstractOverlay = function (params) {
+ this.visible = true;
+ this.isAppendedAtTopLevel = true;
+ this.component = params.component;
+ this.loc = params.location == null ? 0.5 : params.location;
+ this.endpointLoc = params.endpointLocation == null ? [ 0.5, 0.5] : params.endpointLocation;
+ this.visible = params.visible !== false;
+ };
+ AbstractOverlay.prototype = {
+ cleanup: function (force) {
+ if (force) {
+ this.component = null;
+ this.canvas = null;
+ this.endpointLoc = null;
+ }
+ },
+ reattach:function(instance, component) { },
+ setVisible: function (val) {
+ this.visible = val;
+ this.component.repaint();
+ },
+ isVisible: function () {
+ return this.visible;
+ },
+ hide: function () {
+ this.setVisible(false);
+ },
+ show: function () {
+ this.setVisible(true);
+ },
+ incrementLocation: function (amount) {
+ this.loc += amount;
+ this.component.repaint();
+ },
+ setLocation: function (l) {
+ this.loc = l;
+ this.component.repaint();
+ },
+ getLocation: function () {
+ return this.loc;
+ },
+ updateFrom:function() { }
+ };
+
+
+ /*
+ * Class: Overlays.Arrow
+ *
+ * An arrow overlay, defined by four points: the head, the two sides of the tail, and a 'foldback' point at some distance along the length
+ * of the arrow that lines from each tail point converge into. The foldback point is defined using a decimal that indicates some fraction
+ * of the length of the arrow and has a default value of 0.623. A foldback point value of 1 would mean that the arrow had a straight line
+ * across the tail.
+ */
+ /*
+ * @constructor
+ *
+ * @param {Object} params Constructor params.
+ * @param {Number} [params.length] Distance in pixels from head to tail baseline. default 20.
+ * @param {Number} [params.width] Width in pixels of the tail baseline. default 20.
+ * @param {String} [params.fill] Style to use when filling the arrow. defaults to "black".
+ * @param {String} [params.stroke] Style to use when stroking the arrow. defaults to null, which means the arrow is not stroked.
+ * @param {Number} [params.stroke-width] Line width to use when stroking the arrow. defaults to 1, but only used if stroke is not null.
+ * @param {Number} [params.foldback] Distance (as a decimal from 0 to 1 inclusive) along the length of the arrow marking the point the tail points should fold back to. defaults to 0.623.
+ * @param {Number} [params.location] Distance (as a decimal from 0 to 1 inclusive) marking where the arrow should sit on the connector. defaults to 0.5.
+ * @param {NUmber} [params.direction] Indicates the direction the arrow points in. valid values are -1 and 1; 1 is default.
+ */
+ _jp.Overlays.Arrow = function (params) {
+ this.type = "Arrow";
+ AbstractOverlay.apply(this, arguments);
+ this.isAppendedAtTopLevel = false;
+ params = params || {};
+ var self = this;
+
+ this.length = params.length || 20;
+ this.width = params.width || 20;
+ this.id = params.id;
+ this.direction = (params.direction || 1) < 0 ? -1 : 1;
+ var paintStyle = params.paintStyle || { "stroke-width": 1 },
+ // how far along the arrow the lines folding back in come to. default is 62.3%.
+ foldback = params.foldback || 0.623;
+
+ this.computeMaxSize = function () {
+ return self.width * 1.5;
+ };
+
+ this.elementCreated = function(p, component) {
+ this.path = p;
+ if (params.events) {
+ for (var i in params.events) {
+ _jp.on(p, i, params.events[i]);
+ }
+ }
+ };
+
+ this.draw = function (component, currentConnectionPaintStyle) {
+
+ var hxy, mid, txy, tail, cxy;
+ if (component.pointAlongPathFrom) {
+
+ if (_ju.isString(this.loc) || this.loc > 1 || this.loc < 0) {
+ var l = parseInt(this.loc, 10),
+ fromLoc = this.loc < 0 ? 1 : 0;
+ hxy = component.pointAlongPathFrom(fromLoc, l, false);
+ mid = component.pointAlongPathFrom(fromLoc, l - (this.direction * this.length / 2), false);
+ txy = _jg.pointOnLine(hxy, mid, this.length);
+ }
+ else if (this.loc === 1) {
+ hxy = component.pointOnPath(this.loc);
+ mid = component.pointAlongPathFrom(this.loc, -(this.length));
+ txy = _jg.pointOnLine(hxy, mid, this.length);
+
+ if (this.direction === -1) {
+ var _ = txy;
+ txy = hxy;
+ hxy = _;
+ }
+ }
+ else if (this.loc === 0) {
+ txy = component.pointOnPath(this.loc);
+ mid = component.pointAlongPathFrom(this.loc, this.length);
+ hxy = _jg.pointOnLine(txy, mid, this.length);
+ if (this.direction === -1) {
+ var __ = txy;
+ txy = hxy;
+ hxy = __;
+ }
+ }
+ else {
+ hxy = component.pointAlongPathFrom(this.loc, this.direction * this.length / 2);
+ mid = component.pointOnPath(this.loc);
+ txy = _jg.pointOnLine(hxy, mid, this.length);
+ }
+
+ tail = _jg.perpendicularLineTo(hxy, txy, this.width);
+ cxy = _jg.pointOnLine(hxy, txy, foldback * this.length);
+
+ var d = { hxy: hxy, tail: tail, cxy: cxy },
+ stroke = paintStyle.stroke || currentConnectionPaintStyle.stroke,
+ fill = paintStyle.fill || currentConnectionPaintStyle.stroke,
+ lineWidth = paintStyle.strokeWidth || currentConnectionPaintStyle.strokeWidth;
+
+ return {
+ component: component,
+ d: d,
+ "stroke-width": lineWidth,
+ stroke: stroke,
+ fill: fill,
+ minX: Math.min(hxy.x, tail[0].x, tail[1].x),
+ maxX: Math.max(hxy.x, tail[0].x, tail[1].x),
+ minY: Math.min(hxy.y, tail[0].y, tail[1].y),
+ maxY: Math.max(hxy.y, tail[0].y, tail[1].y)
+ };
+ }
+ else {
+ return {component: component, minX: 0, maxX: 0, minY: 0, maxY: 0};
+ }
+ };
+ };
+ _ju.extend(_jp.Overlays.Arrow, AbstractOverlay, {
+ updateFrom:function(d) {
+ this.length = d.length || this.length;
+ this.width = d.width|| this.width;
+ this.direction = d.direction != null ? d.direction : this.direction;
+ this.foldback = d.foldback|| this.foldback;
+ },
+ cleanup:function() {
+ if (this.path && this.canvas) {
+ this.canvas.removeChild(this.path);
+ }
+ }
+ });
+
+ /*
+ * Class: Overlays.PlainArrow
+ *
+ * A basic arrow. This is in fact just one instance of the more generic case in which the tail folds back on itself to some
+ * point along the length of the arrow: in this case, that foldback point is the full length of the arrow. so it just does
+ * a 'call' to Arrow with foldback set appropriately.
+ */
+ /*
+ * Function: Constructor
+ * See for allowed parameters for this overlay.
+ */
+ _jp.Overlays.PlainArrow = function (params) {
+ params = params || {};
+ var p = _jp.extend(params, {foldback: 1});
+ _jp.Overlays.Arrow.call(this, p);
+ this.type = "PlainArrow";
+ };
+ _ju.extend(_jp.Overlays.PlainArrow, _jp.Overlays.Arrow);
+
+ /*
+ * Class: Overlays.Diamond
+ *
+ * A diamond. Like PlainArrow, this is a concrete case of the more generic case of the tail points converging on some point...it just
+ * happens that in this case, that point is greater than the length of the the arrow.
+ *
+ * this could probably do with some help with positioning...due to the way it reuses the Arrow paint code, what Arrow thinks is the
+ * center is actually 1/4 of the way along for this guy. but we don't have any knowledge of pixels at this point, so we're kind of
+ * stuck when it comes to helping out the Arrow class. possibly we could pass in a 'transpose' parameter or something. the value
+ * would be -l/4 in this case - move along one quarter of the total length.
+ */
+ /*
+ * Function: Constructor
+ * See for allowed parameters for this overlay.
+ */
+ _jp.Overlays.Diamond = function (params) {
+ params = params || {};
+ var l = params.length || 40,
+ p = _jp.extend(params, {length: l / 2, foldback: 2});
+ _jp.Overlays.Arrow.call(this, p);
+ this.type = "Diamond";
+ };
+ _ju.extend(_jp.Overlays.Diamond, _jp.Overlays.Arrow);
+
+ var _getDimensions = function (component, forceRefresh) {
+ if (component._jsPlumb.cachedDimensions == null || forceRefresh) {
+ component._jsPlumb.cachedDimensions = component.getDimensions();
+ }
+ return component._jsPlumb.cachedDimensions;
+ };
+
+ // abstract superclass for overlays that add an element to the DOM.
+ var AbstractDOMOverlay = function (params) {
+ _jp.jsPlumbUIComponent.apply(this, arguments);
+ AbstractOverlay.apply(this, arguments);
+
+ // hand off fired events to associated component.
+ var _f = this.fire;
+ this.fire = function () {
+ _f.apply(this, arguments);
+ if (this.component) {
+ this.component.fire.apply(this.component, arguments);
+ }
+ };
+
+ this.detached=false;
+ this.id = params.id;
+ this._jsPlumb.div = null;
+ this._jsPlumb.initialised = false;
+ this._jsPlumb.component = params.component;
+ this._jsPlumb.cachedDimensions = null;
+ this._jsPlumb.create = params.create;
+ this._jsPlumb.initiallyInvisible = params.visible === false;
+
+ this.getElement = function () {
+ if (this._jsPlumb.div == null) {
+ var div = this._jsPlumb.div = _jp.getElement(this._jsPlumb.create(this._jsPlumb.component));
+ div.style.position = "absolute";
+ jsPlumb.addClass(div, this._jsPlumb.instance.overlayClass + " " +
+ (this.cssClass ? this.cssClass :
+ params.cssClass ? params.cssClass : ""));
+ this._jsPlumb.instance.appendElement(div);
+ this._jsPlumb.instance.getId(div);
+ this.canvas = div;
+
+ // in IE the top left corner is what it placed at the desired location. This will not
+ // be fixed. IE8 is not going to be supported for much longer.
+ var ts = "translate(-50%, -50%)";
+ div.style.webkitTransform = ts;
+ div.style.mozTransform = ts;
+ div.style.msTransform = ts;
+ div.style.oTransform = ts;
+ div.style.transform = ts;
+
+ // write the related component into the created element
+ div._jsPlumb = this;
+
+ if (params.visible === false) {
+ div.style.display = "none";
+ }
+ }
+ return this._jsPlumb.div;
+ };
+
+ this.draw = function (component, currentConnectionPaintStyle, absolutePosition) {
+ var td = _getDimensions(this);
+ if (td != null && td.length === 2) {
+ var cxy = { x: 0, y: 0 };
+
+ // absolutePosition would have been set by a call to connection.setAbsoluteOverlayPosition.
+ if (absolutePosition) {
+ cxy = { x: absolutePosition[0], y: absolutePosition[1] };
+ }
+ else if (component.pointOnPath) {
+ var loc = this.loc, absolute = false;
+ if (_ju.isString(this.loc) || this.loc < 0 || this.loc > 1) {
+ loc = parseInt(this.loc, 10);
+ absolute = true;
+ }
+ cxy = component.pointOnPath(loc, absolute); // a connection
+ }
+ else {
+ var locToUse = this.loc.constructor === Array ? this.loc : this.endpointLoc;
+ cxy = { x: locToUse[0] * component.w,
+ y: locToUse[1] * component.h };
+ }
+
+ var minx = cxy.x - (td[0] / 2),
+ miny = cxy.y - (td[1] / 2);
+
+ return {
+ component: component,
+ d: { minx: minx, miny: miny, td: td, cxy: cxy },
+ minX: minx,
+ maxX: minx + td[0],
+ minY: miny,
+ maxY: miny + td[1]
+ };
+ }
+ else {
+ return {minX: 0, maxX: 0, minY: 0, maxY: 0};
+ }
+ };
+ };
+ _ju.extend(AbstractDOMOverlay, [_jp.jsPlumbUIComponent, AbstractOverlay], {
+ getDimensions: function () {
+ return [1,1];
+ },
+ setVisible: function (state) {
+ if (this._jsPlumb.div) {
+ this._jsPlumb.div.style.display = state ? "block" : "none";
+ // if initially invisible, dimensions are 0,0 and never get updated
+ if (state && this._jsPlumb.initiallyInvisible) {
+ _getDimensions(this, true);
+ this.component.repaint();
+ this._jsPlumb.initiallyInvisible = false;
+ }
+ }
+ },
+ /*
+ * Function: clearCachedDimensions
+ * Clears the cached dimensions for the label. As a performance enhancement, label dimensions are
+ * cached from 1.3.12 onwards. The cache is cleared when you change the label text, of course, but
+ * there are other reasons why the text dimensions might change - if you make a change through CSS, for
+ * example, you might change the font size. in that case you should explicitly call this method.
+ */
+ clearCachedDimensions: function () {
+ this._jsPlumb.cachedDimensions = null;
+ },
+ cleanup: function (force) {
+ if (force) {
+ if (this._jsPlumb.div != null) {
+ this._jsPlumb.div._jsPlumb = null;
+ this._jsPlumb.instance.removeElement(this._jsPlumb.div);
+ }
+ }
+ else {
+ // if not a forced cleanup, just detach child from parent for now.
+ if (this._jsPlumb && this._jsPlumb.div && this._jsPlumb.div.parentNode) {
+ this._jsPlumb.div.parentNode.removeChild(this._jsPlumb.div);
+ }
+ this.detached = true;
+ }
+
+ },
+ reattach:function(instance, component) {
+ if (this._jsPlumb.div != null) {
+ instance.getContainer().appendChild(this._jsPlumb.div);
+ }
+ this.detached = false;
+ },
+ computeMaxSize: function () {
+ var td = _getDimensions(this);
+ return Math.max(td[0], td[1]);
+ },
+ paint: function (p, containerExtents) {
+ if (!this._jsPlumb.initialised) {
+ this.getElement();
+ p.component.appendDisplayElement(this._jsPlumb.div);
+ this._jsPlumb.initialised = true;
+ if (this.detached) {
+ this._jsPlumb.div.parentNode.removeChild(this._jsPlumb.div);
+ }
+ }
+ this._jsPlumb.div.style.left = (p.component.x + p.d.minx) + "px";
+ this._jsPlumb.div.style.top = (p.component.y + p.d.miny) + "px";
+ }
+ });
+
+ /*
+ * Class: Overlays.Custom
+ * A Custom overlay. You supply a 'create' function which returns some DOM element, and jsPlumb positions it.
+ * The 'create' function is passed a Connection or Endpoint.
+ */
+ /*
+ * Function: Constructor
+ *
+ * Parameters:
+ * create - function for jsPlumb to call that returns a DOM element.
+ * location - distance (as a decimal from 0 to 1 inclusive) marking where the label should sit on the connector. defaults to 0.5.
+ * id - optional id to use for later retrieval of this overlay.
+ *
+ */
+ _jp.Overlays.Custom = function (params) {
+ this.type = "Custom";
+ AbstractDOMOverlay.apply(this, arguments);
+ };
+ _ju.extend(_jp.Overlays.Custom, AbstractDOMOverlay);
+
+ _jp.Overlays.GuideLines = function () {
+ var self = this;
+ self.length = 50;
+ self.strokeWidth = 5;
+ this.type = "GuideLines";
+ AbstractOverlay.apply(this, arguments);
+ _jp.jsPlumbUIComponent.apply(this, arguments);
+ this.draw = function (connector, currentConnectionPaintStyle) {
+
+ var head = connector.pointAlongPathFrom(self.loc, self.length / 2),
+ mid = connector.pointOnPath(self.loc),
+ tail = _jg.pointOnLine(head, mid, self.length),
+ tailLine = _jg.perpendicularLineTo(head, tail, 40),
+ headLine = _jg.perpendicularLineTo(tail, head, 20);
+
+ return {
+ connector: connector,
+ head: head,
+ tail: tail,
+ headLine: headLine,
+ tailLine: tailLine,
+ minX: Math.min(head.x, tail.x, headLine[0].x, headLine[1].x),
+ minY: Math.min(head.y, tail.y, headLine[0].y, headLine[1].y),
+ maxX: Math.max(head.x, tail.x, headLine[0].x, headLine[1].x),
+ maxY: Math.max(head.y, tail.y, headLine[0].y, headLine[1].y)
+ };
+ };
+
+ // this.cleanup = function() { }; // nothing to clean up for GuideLines
+ };
+
+ /*
+ * Class: Overlays.Label
+
+ */
+ /*
+ * Function: Constructor
+ *
+ * Parameters:
+ * cssClass - optional css class string to append to css class. This string is appended "as-is", so you can of course have multiple classes
+ * defined. This parameter is preferred to using labelStyle, borderWidth and borderStyle.
+ * label - the label to paint. May be a string or a function that returns a string. Nothing will be painted if your label is null or your
+ * label function returns null. empty strings _will_ be painted.
+ * location - distance (as a decimal from 0 to 1 inclusive) marking where the label should sit on the connector. defaults to 0.5.
+ * id - optional id to use for later retrieval of this overlay.
+ *
+ *
+ */
+ _jp.Overlays.Label = function (params) {
+ this.labelStyle = params.labelStyle;
+
+ var labelWidth = null, labelHeight = null, labelText = null, labelPadding = null;
+ this.cssClass = this.labelStyle != null ? this.labelStyle.cssClass : null;
+ var p = _jp.extend({
+ create: function () {
+ return _jp.createElement("div");
+ }}, params);
+ _jp.Overlays.Custom.call(this, p);
+ this.type = "Label";
+ this.label = params.label || "";
+ this.labelText = null;
+ if (this.labelStyle) {
+ var el = this.getElement();
+ this.labelStyle.font = this.labelStyle.font || "12px sans-serif";
+ el.style.font = this.labelStyle.font;
+ el.style.color = this.labelStyle.color || "black";
+ if (this.labelStyle.fill) {
+ el.style.background = this.labelStyle.fill;
+ }
+ if (this.labelStyle.borderWidth > 0) {
+ var dStyle = this.labelStyle.borderStyle ? this.labelStyle.borderStyle : "black";
+ el.style.border = this.labelStyle.borderWidth + "px solid " + dStyle;
+ }
+ if (this.labelStyle.padding) {
+ el.style.padding = this.labelStyle.padding;
+ }
+ }
+
+ };
+ _ju.extend(_jp.Overlays.Label, _jp.Overlays.Custom, {
+ cleanup: function (force) {
+ if (force) {
+ this.div = null;
+ this.label = null;
+ this.labelText = null;
+ this.cssClass = null;
+ this.labelStyle = null;
+ }
+ },
+ getLabel: function () {
+ return this.label;
+ },
+ /*
+ * Function: setLabel
+ * sets the label's, um, label. you would think i'd call this function
+ * 'setText', but you can pass either a Function or a String to this, so
+ * it makes more sense as 'setLabel'. This uses innerHTML on the label div, so keep
+ * that in mind if you need escaped HTML.
+ */
+ setLabel: function (l) {
+ this.label = l;
+ this.labelText = null;
+ this.clearCachedDimensions();
+ this.update();
+ this.component.repaint();
+ },
+ getDimensions: function () {
+ this.update();
+ return AbstractDOMOverlay.prototype.getDimensions.apply(this, arguments);
+ },
+ update: function () {
+ if (typeof this.label === "function") {
+ var lt = this.label(this);
+ this.getElement().innerHTML = lt.replace(/\r\n/g, " ");
+ }
+ else {
+ if (this.labelText == null) {
+ this.labelText = this.label;
+ this.getElement().innerHTML = this.labelText.replace(/\r\n/g, " ");
+ }
+ }
+ },
+ updateFrom:function(d) {
+ if(d.label != null){
+ this.setLabel(d.label);
+ }
+ }
+ });
+
+ // ********************************* END OF OVERLAY DEFINITIONS ***********************************************************************
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+/*
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;(function() {
+ "use strict";
+
+ var root = this,
+ _ju = root.jsPlumbUtil,
+ _jpi = root.jsPlumbInstance;
+
+ var GROUP_COLLAPSED_CLASS = "jtk-group-collapsed";
+ var GROUP_EXPANDED_CLASS = "jtk-group-expanded";
+ var GROUP_CONTAINER_SELECTOR = "[jtk-group-content]";
+ var ELEMENT_DRAGGABLE_EVENT = "elementDraggable";
+ var STOP = "stop";
+ var REVERT = "revert";
+ var GROUP_MANAGER = "_groupManager";
+ var GROUP = "_jsPlumbGroup";
+ var GROUP_DRAG_SCOPE = "_jsPlumbGroupDrag";
+ var EVT_CHILD_ADDED = "group:addMember";
+ var EVT_CHILD_REMOVED = "group:removeMember";
+ var EVT_GROUP_ADDED = "group:add";
+ var EVT_GROUP_REMOVED = "group:remove";
+ var EVT_EXPAND = "group:expand";
+ var EVT_COLLAPSE = "group:collapse";
+ var EVT_GROUP_DRAG_STOP = "groupDragStop";
+ var EVT_CONNECTION_MOVED = "connectionMoved";
+ var EVT_INTERNAL_CONNECTION_DETACHED = "internal.connectionDetached";
+
+ var CMD_REMOVE_ALL = "removeAll";
+ var CMD_ORPHAN_ALL = "orphanAll";
+ var CMD_SHOW = "show";
+ var CMD_HIDE = "hide";
+
+ var GroupManager = function(_jsPlumb) {
+ var _managedGroups = {}, _connectionSourceMap = {}, _connectionTargetMap = {}, self = this;
+
+ _jsPlumb.bind("connection", function(p) {
+ if (p.source[GROUP] != null && p.target[GROUP] != null && p.source[GROUP] === p.target[GROUP]) {
+ _connectionSourceMap[p.connection.id] = p.source[GROUP];
+ _connectionTargetMap[p.connection.id] = p.source[GROUP];
+ }
+ else {
+ if (p.source[GROUP] != null) {
+ _ju.suggest(p.source[GROUP].connections.source, p.connection);
+ _connectionSourceMap[p.connection.id] = p.source[GROUP];
+ }
+ if (p.target[GROUP] != null) {
+ _ju.suggest(p.target[GROUP].connections.target, p.connection);
+ _connectionTargetMap[p.connection.id] = p.target[GROUP];
+ }
+ }
+ });
+
+ function _cleanupDetachedConnection(conn) {
+ delete conn.proxies;
+ var group = _connectionSourceMap[conn.id], f;
+ if (group != null) {
+ f = function(c) { return c.id === conn.id; };
+ _ju.removeWithFunction(group.connections.source, f);
+ _ju.removeWithFunction(group.connections.target, f);
+ delete _connectionSourceMap[conn.id];
+ }
+
+ group = _connectionTargetMap[conn.id];
+ if (group != null) {
+ f = function(c) { return c.id === conn.id; };
+ _ju.removeWithFunction(group.connections.source, f);
+ _ju.removeWithFunction(group.connections.target, f);
+ delete _connectionTargetMap[conn.id];
+ }
+ }
+
+ _jsPlumb.bind(EVT_INTERNAL_CONNECTION_DETACHED, function(p) {
+ _cleanupDetachedConnection(p.connection);
+ });
+
+ _jsPlumb.bind(EVT_CONNECTION_MOVED, function(p) {
+ var connMap = p.index === 0 ? _connectionSourceMap : _connectionTargetMap;
+ var group = connMap[p.connection.id];
+ if (group) {
+ var list = group.connections[p.index === 0 ? "source" : "target"];
+ var idx = list.indexOf(p.connection);
+ if (idx !== -1) {
+ list.splice(idx, 1);
+ }
+ }
+ });
+
+ this.addGroup = function(group) {
+ _jsPlumb.addClass(group.getEl(), GROUP_EXPANDED_CLASS);
+ _managedGroups[group.id] = group;
+ group.manager = this;
+ _updateConnectionsForGroup(group);
+ _jsPlumb.fire(EVT_GROUP_ADDED, { group:group });
+ };
+
+ this.addToGroup = function(group, el, doNotFireEvent) {
+ group = this.getGroup(group);
+ if (group) {
+ var groupEl = group.getEl();
+
+ if (el._isJsPlumbGroup) {
+ return;
+ }
+ var currentGroup = el._jsPlumbGroup;
+ // if already a member of this group, do nothing
+ if (currentGroup !== group) {
+ var elpos = _jsPlumb.getOffset(el, true);
+ var cpos = group.collapsed ? _jsPlumb.getOffset(groupEl, true) : _jsPlumb.getOffset(group.getDragArea(), true);
+
+ // otherwise, transfer to this group.
+ if (currentGroup != null) {
+ currentGroup.remove(el, false, doNotFireEvent, false, group);
+ self.updateConnectionsForGroup(currentGroup);
+ }
+ group.add(el, doNotFireEvent/*, currentGroup*/);
+
+ var handleDroppedConnections = function (list, index) {
+ var oidx = index === 0 ? 1 : 0;
+ list.each(function (c) {
+ c.setVisible(false);
+ if (c.endpoints[oidx].element._jsPlumbGroup === group) {
+ c.endpoints[oidx].setVisible(false);
+ _expandConnection(c, oidx, group);
+ }
+ else {
+ c.endpoints[index].setVisible(false);
+ _collapseConnection(c, index, group);
+ }
+ });
+ };
+
+ if (group.collapsed) {
+ handleDroppedConnections(_jsPlumb.select({source: el}), 0);
+ handleDroppedConnections(_jsPlumb.select({target: el}), 1);
+ }
+
+ var elId = _jsPlumb.getId(el);
+ _jsPlumb.dragManager.setParent(el, elId, groupEl, _jsPlumb.getId(groupEl), elpos);
+
+ var newPosition = { left: elpos.left - cpos.left, top: elpos.top - cpos.top };
+
+ _jsPlumb.setPosition(el, newPosition);
+
+ _jsPlumb.dragManager.revalidateParent(el, elId, elpos);
+
+ self.updateConnectionsForGroup(group);
+
+ _jsPlumb.revalidate(elId);
+
+ if (!doNotFireEvent) {
+ var p = {group: group, el: el, pos:newPosition};
+ if (currentGroup) {
+ p.sourceGroup = currentGroup;
+ }
+ _jsPlumb.fire(EVT_CHILD_ADDED, p);
+ }
+ }
+ }
+ };
+
+ this.removeFromGroup = function(group, el, doNotFireEvent) {
+ group = this.getGroup(group);
+ if (group) {
+ group.remove(el, null, doNotFireEvent);
+ }
+ };
+
+ this.getGroup = function(groupId) {
+ var group = groupId;
+ if (_ju.isString(groupId)) {
+ group = _managedGroups[groupId];
+ if (group == null) {
+ throw new TypeError("No such group [" + groupId + "]");
+ }
+ }
+ return group;
+ };
+
+ this.getGroups = function() {
+ var o = [];
+ for (var g in _managedGroups) {
+ o.push(_managedGroups[g]);
+ }
+ return o;
+ };
+
+ this.removeGroup = function(group, deleteMembers, manipulateDOM, doNotFireEvent) {
+ group = this.getGroup(group);
+ this.expandGroup(group, true); // this reinstates any original connections and removes all proxies, but does not fire an event.
+ var newPositions = group[deleteMembers ? CMD_REMOVE_ALL : CMD_ORPHAN_ALL](manipulateDOM, doNotFireEvent);
+ _jsPlumb.remove(group.getEl());
+ delete _managedGroups[group.id];
+ delete _jsPlumb._groups[group.id];
+ _jsPlumb.fire(EVT_GROUP_REMOVED, { group:group });
+ return newPositions; // this will be null in the case or remove, but be a map of {id->[x,y]} in the case of orphan
+ };
+
+ this.removeAllGroups = function(deleteMembers, manipulateDOM, doNotFireEvent) {
+ for (var g in _managedGroups) {
+ this.removeGroup(_managedGroups[g], deleteMembers, manipulateDOM, doNotFireEvent);
+ }
+ };
+
+ function _setVisible(group, state) {
+ var m = group.getMembers();
+ for (var i = 0; i < m.length; i++) {
+ _jsPlumb[state ? CMD_SHOW : CMD_HIDE](m[i], true);
+ }
+ }
+
+ var _collapseConnection = function(c, index, group) {
+
+ var otherEl = c.endpoints[index === 0 ? 1 : 0].element;
+ if (otherEl[GROUP] && (!otherEl[GROUP].shouldProxy() && otherEl[GROUP].collapsed)) {
+ return;
+ }
+
+ var groupEl = group.getEl(), groupElId = _jsPlumb.getId(groupEl);
+
+ _jsPlumb.proxyConnection(c, index, groupEl, groupElId, function(c, index) { return group.getEndpoint(c, index); }, function(c, index) { return group.getAnchor(c, index); });
+ };
+
+ this.collapseGroup = function(group) {
+ group = this.getGroup(group);
+ if (group == null || group.collapsed) {
+ return;
+ }
+ var groupEl = group.getEl();
+
+ // todo remove old proxy endpoints first, just in case?
+ //group.proxies.length = 0;
+
+ // hide all connections
+ _setVisible(group, false);
+
+ if (group.shouldProxy()) {
+ // collapses all connections in a group.
+ var _collapseSet = function (conns, index) {
+ for (var i = 0; i < conns.length; i++) {
+ var c = conns[i];
+ _collapseConnection(c, index, group);
+ }
+ };
+
+ // setup proxies for sources and targets
+ _collapseSet(group.connections.source, 0);
+ _collapseSet(group.connections.target, 1);
+ }
+
+ group.collapsed = true;
+ _jsPlumb.removeClass(groupEl, GROUP_EXPANDED_CLASS);
+ _jsPlumb.addClass(groupEl, GROUP_COLLAPSED_CLASS);
+ _jsPlumb.revalidate(groupEl);
+ _jsPlumb.fire(EVT_COLLAPSE, { group:group });
+ };
+
+ var _expandConnection = function(c, index, group) {
+ _jsPlumb.unproxyConnection(c, index, _jsPlumb.getId(group.getEl()));
+ };
+
+ this.expandGroup = function(group, doNotFireEvent) {
+
+ group = this.getGroup(group);
+
+ if (group == null || !group.collapsed) {
+ return;
+ }
+ var groupEl = group.getEl();
+
+ _setVisible(group, true);
+
+ if (group.shouldProxy()) {
+ // collapses all connections in a group.
+ var _expandSet = function (conns, index) {
+ for (var i = 0; i < conns.length; i++) {
+ var c = conns[i];
+ _expandConnection(c, index, group);
+ }
+ };
+
+ // setup proxies for sources and targets
+ _expandSet(group.connections.source, 0);
+ _expandSet(group.connections.target, 1);
+ }
+
+ group.collapsed = false;
+ _jsPlumb.addClass(groupEl, GROUP_EXPANDED_CLASS);
+ _jsPlumb.removeClass(groupEl, GROUP_COLLAPSED_CLASS);
+ _jsPlumb.revalidate(groupEl);
+ this.repaintGroup(group);
+ if (!doNotFireEvent) {
+ _jsPlumb.fire(EVT_EXPAND, { group: group});
+ }
+ };
+
+ this.repaintGroup = function(group) {
+ group = this.getGroup(group);
+ var m = group.getMembers();
+ for (var i = 0; i < m.length; i++) {
+ _jsPlumb.revalidate(m[i]);
+ }
+ };
+
+ // TODO refactor this with the code that responds to `connection` events.
+ function _updateConnectionsForGroup(group) {
+ var members = group.getMembers();
+ var c1 = _jsPlumb.getConnections({source:members, scope:"*"}, true);
+ var c2 = _jsPlumb.getConnections({target:members, scope:"*"}, true);
+ var processed = {};
+ group.connections.source.length = 0;
+ group.connections.target.length = 0;
+ var oneSet = function(c) {
+ for (var i = 0; i < c.length; i++) {
+ if (processed[c[i].id]) {
+ continue;
+ }
+ processed[c[i].id] = true;
+ if (c[i].source._jsPlumbGroup === group) {
+ if (c[i].target._jsPlumbGroup !== group) {
+ group.connections.source.push(c[i]);
+ }
+ _connectionSourceMap[c[i].id] = group;
+ }
+ else if (c[i].target._jsPlumbGroup === group) {
+ group.connections.target.push(c[i]);
+ _connectionTargetMap[c[i].id] = group;
+ }
+ }
+ };
+ oneSet(c1); oneSet(c2);
+ }
+
+ this.updateConnectionsForGroup = _updateConnectionsForGroup;
+ this.refreshAllGroups = function() {
+ for (var g in _managedGroups) {
+ _updateConnectionsForGroup(_managedGroups[g]);
+ _jsPlumb.dragManager.updateOffsets(_jsPlumb.getId(_managedGroups[g].getEl()));
+ }
+ };
+ };
+
+ /**
+ *
+ * @param {jsPlumbInstance} _jsPlumb Associated jsPlumb instance.
+ * @param {Object} params
+ * @param {Element} params.el The DOM element representing the Group.
+ * @param {String} [params.id] Optional ID for the Group. A UUID will be assigned as the Group's ID if you do not provide one.
+ * @param {Boolean} [params.constrain=false] If true, child elements will not be able to be dragged outside of the Group container.
+ * @param {Boolean} [params.revert=true] By default, child elements revert to the container if dragged outside. You can change this by setting `revert:false`. This behaviour is also overridden if you set `orphan` or `prune`.
+ * @param {Boolean} [params.orphan=false] If true, child elements dropped outside of the Group container will be removed from the Group (but not from the DOM).
+ * @param {Boolean} [params.prune=false] If true, child elements dropped outside of the Group container will be removed from the Group and also from the DOM.
+ * @param {Boolean} [params.dropOverride=false] If true, a child element that has been dropped onto some other Group will not be subject to the controls imposed by `prune`, `revert` or `orphan`.
+ * @constructor
+ */
+ var Group = function(_jsPlumb, params) {
+ var self = this;
+ var el = params.el;
+ this.getEl = function() { return el; };
+ this.id = params.id || _ju.uuid();
+ el._isJsPlumbGroup = true;
+
+ var getDragArea = this.getDragArea = function() {
+ var da = _jsPlumb.getSelector(el, GROUP_CONTAINER_SELECTOR);
+ return da && da.length > 0 ? da[0] : el;
+ };
+
+ var ghost = params.ghost === true;
+ var constrain = ghost || (params.constrain === true);
+ var revert = params.revert !== false;
+ var orphan = params.orphan === true;
+ var prune = params.prune === true;
+ var dropOverride = params.dropOverride === true;
+ var proxied = params.proxied !== false;
+ var elements = [];
+ this.connections = { source:[], target:[], internal:[] };
+
+ // this function, and getEndpoint below, are stubs for a future setup in which we can choose endpoint
+ // and anchor based upon the connection and the index (source/target) of the endpoint to be proxied.
+ this.getAnchor = function(conn, endpointIndex) {
+ return params.anchor || "Continuous";
+ };
+
+ this.getEndpoint = function(conn, endpointIndex) {
+ return params.endpoint || [ "Dot", { radius:10 }];
+ };
+
+ this.collapsed = false;
+ if (params.draggable !== false) {
+ var opts = {
+ stop:function(params) {
+ _jsPlumb.fire(EVT_GROUP_DRAG_STOP, jsPlumb.extend(params, {group:self}));
+ },
+ scope:GROUP_DRAG_SCOPE
+ };
+ if (params.dragOptions) {
+ root.jsPlumb.extend(opts, params.dragOptions);
+ }
+ _jsPlumb.draggable(params.el, opts);
+ }
+ if (params.droppable !== false) {
+ _jsPlumb.droppable(params.el, {
+ drop:function(p) {
+ var el = p.drag.el;
+ if (el._isJsPlumbGroup) {
+ return;
+ }
+ var currentGroup = el._jsPlumbGroup;
+ if (currentGroup !== self) {
+ if (currentGroup != null) {
+ if (currentGroup.overrideDrop(el, self)) {
+ return;
+ }
+ }
+ _jsPlumb.getGroupManager().addToGroup(self, el, false);
+ }
+
+ }
+ });
+ }
+ var _each = function(_el, fn) {
+ var els = _el.nodeType == null ? _el : [ _el ];
+ for (var i = 0; i < els.length; i++) {
+ fn(els[i]);
+ }
+ };
+
+ this.overrideDrop = function(_el, targetGroup) {
+ return dropOverride && (revert || prune || orphan);
+ };
+
+ this.add = function(_el, doNotFireEvent/*, sourceGroup*/) {
+ var dragArea = getDragArea();
+ _each(_el, function(__el) {
+
+ if (__el._jsPlumbGroup != null) {
+ if (__el._jsPlumbGroup === self) {
+ return;
+ } else {
+ __el._jsPlumbGroup.remove(__el, true, doNotFireEvent, false);
+ }
+ }
+
+ __el._jsPlumbGroup = self;
+ elements.push(__el);
+ // test if draggable and add handlers if so.
+ if (_jsPlumb.isAlreadyDraggable(__el)) {
+ _bindDragHandlers(__el);
+ }
+
+ if (__el.parentNode !== dragArea) {
+ dragArea.appendChild(__el);
+ }
+
+ // if (!doNotFireEvent) {
+ // var p = {group: self, el: __el};
+ // if (sourceGroup) {
+ // p.sourceGroup = sourceGroup;
+ // }
+ // //_jsPlumb.fire(EVT_CHILD_ADDED, p);
+ // }
+ });
+
+ _jsPlumb.getGroupManager().updateConnectionsForGroup(self);
+ };
+
+ this.remove = function(el, manipulateDOM, doNotFireEvent, doNotUpdateConnections, targetGroup) {
+
+ _each(el, function(__el) {
+ if (__el._jsPlumbGroup === self) {
+ delete __el._jsPlumbGroup;
+ _ju.removeWithFunction(elements, function (e) {
+ return e === __el;
+ });
+
+ if (manipulateDOM) {
+ try {
+ self.getDragArea().removeChild(__el);
+ } catch (e) {
+ jsPlumbUtil.log("Could not remove element from Group " + e);
+ }
+ }
+ _unbindDragHandlers(__el);
+ if (!doNotFireEvent) {
+ var p = {group: self, el: __el};
+ if (targetGroup) {
+ p.targetGroup = targetGroup;
+ }
+ _jsPlumb.fire(EVT_CHILD_REMOVED, p);
+ }
+ }
+ });
+ if (!doNotUpdateConnections) {
+ _jsPlumb.getGroupManager().updateConnectionsForGroup(self);
+ }
+ };
+ this.removeAll = function(manipulateDOM, doNotFireEvent) {
+ for (var i = 0, l = elements.length; i < l; i++) {
+ var el = elements[0];
+ self.remove(el, manipulateDOM, doNotFireEvent, true);
+ _jsPlumb.remove(el, true);
+ }
+ elements.length = 0;
+ _jsPlumb.getGroupManager().updateConnectionsForGroup(self);
+ };
+ this.orphanAll = function() {
+ var orphanedPositions = {};
+ for (var i = 0; i < elements.length; i++) {
+ var newPosition = _orphan(elements[i]);
+ orphanedPositions[newPosition[0]] = newPosition[1];
+ }
+ elements.length = 0;
+
+ return orphanedPositions;
+ };
+ this.getMembers = function() { return elements; };
+
+ el[GROUP] = this;
+
+ _jsPlumb.bind(ELEMENT_DRAGGABLE_EVENT, function(dragParams) {
+ // if its for the current group,
+ if (dragParams.el._jsPlumbGroup === this) {
+ _bindDragHandlers(dragParams.el);
+ }
+ }.bind(this));
+
+ function _findParent(_el) {
+ return _el.offsetParent;
+ }
+
+ function _isInsideParent(_el, pos) {
+ var p = _findParent(_el),
+ s = _jsPlumb.getSize(p),
+ ss = _jsPlumb.getSize(_el),
+ leftEdge = pos[0],
+ rightEdge = leftEdge + ss[0],
+ topEdge = pos[1],
+ bottomEdge = topEdge + ss[1];
+
+ return rightEdge > 0 && leftEdge < s[0] && bottomEdge > 0 && topEdge < s[1];
+ }
+
+ //
+ // orphaning an element means taking it out of the group and adding it to the main jsplumb container.
+ // we return the new calculated position from this method and the element's id.
+ //
+ function _orphan(_el) {
+ var id = _jsPlumb.getId(_el);
+ var pos = _jsPlumb.getOffset(_el);
+ _el.parentNode.removeChild(_el);
+ _jsPlumb.getContainer().appendChild(_el);
+ _jsPlumb.setPosition(_el, pos);
+ _unbindDragHandlers(_el);
+ _jsPlumb.dragManager.clearParent(_el, id);
+ return [id, pos];
+ }
+
+ //
+ // remove an element from the group, then either prune it from the jsplumb instance, or just orphan it.
+ //
+ function _pruneOrOrphan(p) {
+
+ var out = [];
+
+ function _one(el, left, top) {
+ var orphanedPosition = null;
+ if (!_isInsideParent(el, [left, top])) {
+ var group = el._jsPlumbGroup;
+ if (prune) {
+ _jsPlumb.remove(el);
+ } else {
+ orphanedPosition = _orphan(el);
+ }
+
+ group.remove(el);
+ }
+
+ return orphanedPosition;
+ }
+
+ for (var i = 0; i < p.selection.length; i++) {
+ out.push(_one(p.selection[i][0], p.selection[i][1].left, p.selection[i][1].top));
+ }
+
+ return out.length === 1 ? out[0] : out;
+
+ }
+
+ //
+ // redraws the element
+ //
+ function _revalidate(_el) {
+ var id = _jsPlumb.getId(_el);
+ _jsPlumb.revalidate(_el);
+ _jsPlumb.dragManager.revalidateParent(_el, id);
+ }
+
+ //
+ // unbind the group specific drag/revert handlers.
+ //
+ function _unbindDragHandlers(_el) {
+ if (!_el._katavorioDrag) {
+ return;
+ }
+ if (prune || orphan) {
+ _el._katavorioDrag.off(STOP, _pruneOrOrphan);
+ }
+ if (!prune && !orphan && revert) {
+ _el._katavorioDrag.off(REVERT, _revalidate);
+ _el._katavorioDrag.setRevert(null);
+ }
+ }
+
+ function _bindDragHandlers(_el) {
+ if (!_el._katavorioDrag) {
+ return;
+ }
+ if (prune || orphan) {
+ _el._katavorioDrag.on(STOP, _pruneOrOrphan);
+ }
+
+ if (constrain) {
+ _el._katavorioDrag.setConstrain(true);
+ }
+
+ if (ghost) {
+ _el._katavorioDrag.setUseGhostProxy(true);
+ }
+
+ if (!prune && !orphan && revert) {
+ _el._katavorioDrag.on(REVERT, _revalidate);
+ _el._katavorioDrag.setRevert(function(__el, pos) {
+ return !_isInsideParent(__el, pos);
+ });
+ }
+ }
+
+ this.shouldProxy = function() {
+ return proxied;
+ };
+
+ _jsPlumb.getGroupManager().addGroup(this);
+ };
+
+ /**
+ * Adds a group to the jsPlumb instance.
+ * @method addGroup
+ * @param {Object} params
+ * @return {Group} The newly created Group.
+ */
+ _jpi.prototype.addGroup = function(params) {
+ var j = this;
+ j._groups = j._groups || {};
+ if (j._groups[params.id] != null) {
+ throw new TypeError("cannot create Group [" + params.id + "]; a Group with that ID exists");
+ }
+ if (params.el[GROUP] != null) {
+ throw new TypeError("cannot create Group [" + params.id + "]; the given element is already a Group");
+ }
+ var group = new Group(j, params);
+ j._groups[group.id] = group;
+ if (params.collapsed) {
+ this.collapseGroup(group);
+ }
+ return group;
+ };
+
+ /**
+ * Add an element to a group.
+ * @method addToGroup
+ * @param {String} group Group, or ID of the group, to add the element to.
+ * @param {Element} el Element to add to the group.
+ */
+ _jpi.prototype.addToGroup = function(group, el, doNotFireEvent) {
+
+ var _one = function(_el) {
+ var id = this.getId(_el);
+ this.manage(id, _el);
+ this.getGroupManager().addToGroup(group, _el, doNotFireEvent);
+ }.bind(this);
+
+ if (Array.isArray(el)) {
+ for (var i = 0; i < el.length; i++) {
+ _one(el[i]);
+ }
+ } else {
+ _one(el);
+ }
+ };
+
+ /**
+ * Remove an element from a group.
+ * @method removeFromGroup
+ * @param {String} group Group, or ID of the group, to remove the element from.
+ * @param {Element} el Element to add to the group.
+ */
+ _jpi.prototype.removeFromGroup = function(group, el, doNotFireEvent) {
+ this.getGroupManager().removeFromGroup(group, el, doNotFireEvent);
+ };
+
+ /**
+ * Remove a group, and optionally remove its members from the jsPlumb instance.
+ * @method removeGroup
+ * @param {String|Group} group Group to delete, or ID of Group to delete.
+ * @param {Boolean} [deleteMembers=false] If true, group members will be removed along with the group. Otherwise they will
+ * just be 'orphaned' (returned to the main container).
+ * @returns {Map[String, Position}} When deleteMembers is false, this method returns a map of {id->position}
+ */
+ _jpi.prototype.removeGroup = function(group, deleteMembers, manipulateDOM, doNotFireEvent) {
+ return this.getGroupManager().removeGroup(group, deleteMembers, manipulateDOM, doNotFireEvent);
+ };
+
+ /**
+ * Remove all groups, and optionally remove their members from the jsPlumb instance.
+ * @method removeAllGroup
+ * @param {Boolean} [deleteMembers=false] If true, group members will be removed along with the groups. Otherwise they will
+ * just be 'orphaned' (returned to the main container).
+ */
+ _jpi.prototype.removeAllGroups = function(deleteMembers, manipulateDOM, doNotFireEvent) {
+ this.getGroupManager().removeAllGroups(deleteMembers, manipulateDOM, doNotFireEvent);
+ };
+
+ /**
+ * Get a Group
+ * @method getGroup
+ * @param {String} groupId ID of the group to get
+ * @return {Group} Group with the given ID, null if not found.
+ */
+ _jpi.prototype.getGroup = function(groupId) {
+ return this.getGroupManager().getGroup(groupId);
+ };
+
+ /**
+ * Gets all the Groups managed by the jsPlumb instance.
+ * @returns {Group[]} List of Groups. Empty if none.
+ */
+ _jpi.prototype.getGroups = function() {
+ return this.getGroupManager().getGroups();
+ };
+
+ /**
+ * Expands a group element. jsPlumb doesn't do "everything" for you here, because what it means to expand a Group
+ * will vary from application to application. jsPlumb does these things:
+ *
+ * - Hides any connections that are internal to the group (connections between members, and connections from member of
+ * the group to the group itself)
+ * - Proxies all connections for which the source or target is a member of the group.
+ * - Hides the proxied connections.
+ * - Adds the jtk-group-expanded class to the group's element
+ * - Removes the jtk-group-collapsed class from the group's element.
+ *
+ * @method expandGroup
+ * @param {String|Group} group Group to expand, or ID of Group to expand.
+ */
+ _jpi.prototype.expandGroup = function(group) {
+ this.getGroupManager().expandGroup(group);
+ };
+
+ /**
+ * Collapses a group element. jsPlumb doesn't do "everything" for you here, because what it means to collapse a Group
+ * will vary from application to application. jsPlumb does these things:
+ *
+ * - Shows any connections that are internal to the group (connections between members, and connections from member of
+ * the group to the group itself)
+ * - Removes proxies for all connections for which the source or target is a member of the group.
+ * - Shows the previously proxied connections.
+ * - Adds the jtk-group-collapsed class to the group's element
+ * - Removes the jtk-group-expanded class from the group's element.
+ *
+ * @method expandGroup
+ * @param {String|Group} group Group to expand, or ID of Group to expand.
+ */
+ _jpi.prototype.collapseGroup = function(groupId) {
+ this.getGroupManager().collapseGroup(groupId);
+ };
+
+
+ _jpi.prototype.repaintGroup = function(group) {
+ this.getGroupManager().repaintGroup(group);
+ };
+
+ /**
+ * Collapses or expands a group element depending on its current state. See notes in the collapseGroup and expandGroup method.
+ *
+ * @method toggleGroup
+ * @param {String|Group} group Group to expand/collapse, or ID of Group to expand/collapse.
+ */
+ _jpi.prototype.toggleGroup = function(group) {
+ group = this.getGroupManager().getGroup(group);
+ if (group != null) {
+ this.getGroupManager()[group.collapsed ? "expandGroup" : "collapseGroup"](group);
+ }
+ };
+
+ //
+ // lazy init a group manager for the given jsplumb instance.
+ //
+ _jpi.prototype.getGroupManager = function() {
+ var mgr = this[GROUP_MANAGER];
+ if (mgr == null) {
+ mgr = this[GROUP_MANAGER] = new GroupManager(this);
+ }
+ return mgr;
+ };
+
+ _jpi.prototype.removeGroupManager = function() {
+ delete this[GROUP_MANAGER];
+ };
+
+ /**
+ * Gets the Group that the given element belongs to, null if none.
+ * @method getGroupFor
+ * @param {String|Element} el Element, or element ID.
+ * @returns {Group} A Group, if found, or null.
+ */
+ _jpi.prototype.getGroupFor = function(el) {
+ el = this.getElement(el);
+ if (el) {
+ return el[GROUP];
+ }
+ };
+
+}).call(typeof window !== 'undefined' ? window : this);
+
+
+/*
+ * This file contains the 'flowchart' connectors, consisting of vertical and horizontal line segments.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+ var STRAIGHT = "Straight";
+ var ARC = "Arc";
+
+ var Flowchart = function (params) {
+ this.type = "Flowchart";
+ params = params || {};
+ params.stub = params.stub == null ? 30 : params.stub;
+ var segments,
+ _super = _jp.Connectors.AbstractConnector.apply(this, arguments),
+ midpoint = params.midpoint == null ? 0.5 : params.midpoint,
+ alwaysRespectStubs = params.alwaysRespectStubs === true,
+ lastx = null, lasty = null, lastOrientation,
+ cornerRadius = params.cornerRadius != null ? params.cornerRadius : 0,
+
+ // TODO now common between this and AbstractBezierEditor; refactor into superclass?
+ loopbackRadius = params.loopbackRadius || 25,
+ isLoopbackCurrently = false,
+
+ sgn = function (n) {
+ return n < 0 ? -1 : n === 0 ? 0 : 1;
+ },
+ segmentDirections = function(segment) {
+ return [
+ sgn( segment[2] - segment[0] ),
+ sgn( segment[3] - segment[1] )
+ ];
+ },
+ /**
+ * helper method to add a segment.
+ */
+ addSegment = function (segments, x, y, paintInfo) {
+ if (lastx === x && lasty === y) {
+ return;
+ }
+ var lx = lastx == null ? paintInfo.sx : lastx,
+ ly = lasty == null ? paintInfo.sy : lasty,
+ o = lx === x ? "v" : "h";
+
+ lastx = x;
+ lasty = y;
+ segments.push([ lx, ly, x, y, o ]);
+ },
+ segLength = function (s) {
+ return Math.sqrt(Math.pow(s[0] - s[2], 2) + Math.pow(s[1] - s[3], 2));
+ },
+ _cloneArray = function (a) {
+ var _a = [];
+ _a.push.apply(_a, a);
+ return _a;
+ },
+ writeSegments = function (conn, segments, paintInfo) {
+ var current = null, next, currentDirection, nextDirection;
+ for (var i = 0; i < segments.length - 1; i++) {
+
+ current = current || _cloneArray(segments[i]);
+ next = _cloneArray(segments[i + 1]);
+
+ currentDirection = segmentDirections(current);
+ nextDirection = segmentDirections(next);
+
+ if (cornerRadius > 0 && current[4] !== next[4]) {
+
+ var minSegLength = Math.min(segLength(current), segLength(next));
+ var radiusToUse = Math.min(cornerRadius, minSegLength / 2);
+
+ current[2] -= currentDirection[0] * radiusToUse;
+ current[3] -= currentDirection[1] * radiusToUse;
+ next[0] += nextDirection[0] * radiusToUse;
+ next[1] += nextDirection[1] * radiusToUse;
+
+ var ac = (currentDirection[1] === nextDirection[0] && nextDirection[0] === 1) ||
+ ((currentDirection[1] === nextDirection[0] && nextDirection[0] === 0) && currentDirection[0] !== nextDirection[1]) ||
+ (currentDirection[1] === nextDirection[0] && nextDirection[0] === -1),
+ sgny = next[1] > current[3] ? 1 : -1,
+ sgnx = next[0] > current[2] ? 1 : -1,
+ sgnEqual = sgny === sgnx,
+ cx = (sgnEqual && ac || (!sgnEqual && !ac)) ? next[0] : current[2],
+ cy = (sgnEqual && ac || (!sgnEqual && !ac)) ? current[3] : next[1];
+
+ _super.addSegment(conn, STRAIGHT, {
+ x1: current[0], y1: current[1], x2: current[2], y2: current[3]
+ });
+
+ _super.addSegment(conn, ARC, {
+ r: radiusToUse,
+ x1: current[2],
+ y1: current[3],
+ x2: next[0],
+ y2: next[1],
+ cx: cx,
+ cy: cy,
+ ac: ac
+ });
+ }
+ else {
+ // dx + dy are used to adjust for line width.
+ var dx = (current[2] === current[0]) ? 0 : (current[2] > current[0]) ? (paintInfo.lw / 2) : -(paintInfo.lw / 2),
+ dy = (current[3] === current[1]) ? 0 : (current[3] > current[1]) ? (paintInfo.lw / 2) : -(paintInfo.lw / 2);
+
+ _super.addSegment(conn, STRAIGHT, {
+ x1: current[0] - dx, y1: current[1] - dy, x2: current[2] + dx, y2: current[3] + dy
+ });
+ }
+ current = next;
+ }
+ if (next != null) {
+ // last segment
+ _super.addSegment(conn, STRAIGHT, {
+ x1: next[0], y1: next[1], x2: next[2], y2: next[3]
+ });
+ }
+ };
+
+ this._compute = function (paintInfo, params) {
+
+ segments = [];
+ lastx = null;
+ lasty = null;
+ lastOrientation = null;
+
+ var commonStubCalculator = function () {
+ return [paintInfo.startStubX, paintInfo.startStubY, paintInfo.endStubX, paintInfo.endStubY];
+ },
+ stubCalculators = {
+ perpendicular: commonStubCalculator,
+ orthogonal: commonStubCalculator,
+ opposite: function (axis) {
+ var pi = paintInfo,
+ idx = axis === "x" ? 0 : 1,
+ areInProximity = {
+ "x": function () {
+ return ( (pi.so[idx] === 1 && (
+ ( (pi.startStubX > pi.endStubX) && (pi.tx > pi.startStubX) ) ||
+ ( (pi.sx > pi.endStubX) && (pi.tx > pi.sx))))) ||
+
+ ( (pi.so[idx] === -1 && (
+ ( (pi.startStubX < pi.endStubX) && (pi.tx < pi.startStubX) ) ||
+ ( (pi.sx < pi.endStubX) && (pi.tx < pi.sx)))));
+ },
+ "y": function () {
+ return ( (pi.so[idx] === 1 && (
+ ( (pi.startStubY > pi.endStubY) && (pi.ty > pi.startStubY) ) ||
+ ( (pi.sy > pi.endStubY) && (pi.ty > pi.sy))))) ||
+
+ ( (pi.so[idx] === -1 && (
+ ( (pi.startStubY < pi.endStubY) && (pi.ty < pi.startStubY) ) ||
+ ( (pi.sy < pi.endStubY) && (pi.ty < pi.sy)))));
+ }
+ };
+
+ if (!alwaysRespectStubs && areInProximity[axis]()) {
+ return {
+ "x": [(paintInfo.sx + paintInfo.tx) / 2, paintInfo.startStubY, (paintInfo.sx + paintInfo.tx) / 2, paintInfo.endStubY],
+ "y": [paintInfo.startStubX, (paintInfo.sy + paintInfo.ty) / 2, paintInfo.endStubX, (paintInfo.sy + paintInfo.ty) / 2]
+ }[axis];
+ }
+ else {
+ return [paintInfo.startStubX, paintInfo.startStubY, paintInfo.endStubX, paintInfo.endStubY];
+ }
+ }
+ };
+
+ // calculate Stubs.
+ var stubs = stubCalculators[paintInfo.anchorOrientation](paintInfo.sourceAxis),
+ idx = paintInfo.sourceAxis === "x" ? 0 : 1,
+ oidx = paintInfo.sourceAxis === "x" ? 1 : 0,
+ ss = stubs[idx],
+ oss = stubs[oidx],
+ es = stubs[idx + 2],
+ oes = stubs[oidx + 2];
+
+ // add the start stub segment. use stubs for loopback as it will look better, with the loop spaced
+ // away from the element.
+ addSegment(segments, stubs[0], stubs[1], paintInfo);
+
+ // if its a loopback and we should treat it differently.
+ // if (false && params.sourcePos[0] === params.targetPos[0] && params.sourcePos[1] === params.targetPos[1]) {
+ //
+ // // we use loopbackRadius here, as statemachine connectors do.
+ // // so we go radius to the left from stubs[0], then upwards by 2*radius, to the right by 2*radius,
+ // // down by 2*radius, left by radius.
+ // addSegment(segments, stubs[0] - loopbackRadius, stubs[1], paintInfo);
+ // addSegment(segments, stubs[0] - loopbackRadius, stubs[1] - (2 * loopbackRadius), paintInfo);
+ // addSegment(segments, stubs[0] + loopbackRadius, stubs[1] - (2 * loopbackRadius), paintInfo);
+ // addSegment(segments, stubs[0] + loopbackRadius, stubs[1], paintInfo);
+ // addSegment(segments, stubs[0], stubs[1], paintInfo);
+ //
+ // }
+ // else {
+
+
+ var midx = paintInfo.startStubX + ((paintInfo.endStubX - paintInfo.startStubX) * midpoint),
+ midy = paintInfo.startStubY + ((paintInfo.endStubY - paintInfo.startStubY) * midpoint);
+
+ var orientations = {x: [0, 1], y: [1, 0]},
+ lineCalculators = {
+ perpendicular: function (axis) {
+ var pi = paintInfo,
+ sis = {
+ x: [
+ [[1, 2, 3, 4], null, [2, 1, 4, 3]],
+ null,
+ [[4, 3, 2, 1], null, [3, 4, 1, 2]]
+ ],
+ y: [
+ [[3, 2, 1, 4], null, [2, 3, 4, 1]],
+ null,
+ [[4, 1, 2, 3], null, [1, 4, 3, 2]]
+ ]
+ },
+ stubs = {
+ x: [[pi.startStubX, pi.endStubX], null, [pi.endStubX, pi.startStubX]],
+ y: [[pi.startStubY, pi.endStubY], null, [pi.endStubY, pi.startStubY]]
+ },
+ midLines = {
+ x: [[midx, pi.startStubY], [midx, pi.endStubY]],
+ y: [[pi.startStubX, midy], [pi.endStubX, midy]]
+ },
+ linesToEnd = {
+ x: [[pi.endStubX, pi.startStubY]],
+ y: [[pi.startStubX, pi.endStubY]]
+ },
+ startToEnd = {
+ x: [[pi.startStubX, pi.endStubY], [pi.endStubX, pi.endStubY]],
+ y: [[pi.endStubX, pi.startStubY], [pi.endStubX, pi.endStubY]]
+ },
+ startToMidToEnd = {
+ x: [[pi.startStubX, midy], [pi.endStubX, midy], [pi.endStubX, pi.endStubY]],
+ y: [[midx, pi.startStubY], [midx, pi.endStubY], [pi.endStubX, pi.endStubY]]
+ },
+ otherStubs = {
+ x: [pi.startStubY, pi.endStubY],
+ y: [pi.startStubX, pi.endStubX]
+ },
+ soIdx = orientations[axis][0], toIdx = orientations[axis][1],
+ _so = pi.so[soIdx] + 1,
+ _to = pi.to[toIdx] + 1,
+ otherFlipped = (pi.to[toIdx] === -1 && (otherStubs[axis][1] < otherStubs[axis][0])) || (pi.to[toIdx] === 1 && (otherStubs[axis][1] > otherStubs[axis][0])),
+ stub1 = stubs[axis][_so][0],
+ stub2 = stubs[axis][_so][1],
+ segmentIndexes = sis[axis][_so][_to];
+
+ if (pi.segment === segmentIndexes[3] || (pi.segment === segmentIndexes[2] && otherFlipped)) {
+ return midLines[axis];
+ }
+ else if (pi.segment === segmentIndexes[2] && stub2 < stub1) {
+ return linesToEnd[axis];
+ }
+ else if ((pi.segment === segmentIndexes[2] && stub2 >= stub1) || (pi.segment === segmentIndexes[1] && !otherFlipped)) {
+ return startToMidToEnd[axis];
+ }
+ else if (pi.segment === segmentIndexes[0] || (pi.segment === segmentIndexes[1] && otherFlipped)) {
+ return startToEnd[axis];
+ }
+ },
+ orthogonal: function (axis, startStub, otherStartStub, endStub, otherEndStub) {
+ var pi = paintInfo,
+ extent = {
+ "x": pi.so[0] === -1 ? Math.min(startStub, endStub) : Math.max(startStub, endStub),
+ "y": pi.so[1] === -1 ? Math.min(startStub, endStub) : Math.max(startStub, endStub)
+ }[axis];
+
+ return {
+ "x": [
+ [extent, otherStartStub],
+ [extent, otherEndStub],
+ [endStub, otherEndStub]
+ ],
+ "y": [
+ [otherStartStub, extent],
+ [otherEndStub, extent],
+ [otherEndStub, endStub]
+ ]
+ }[axis];
+ },
+ opposite: function (axis, ss, oss, es) {
+ var pi = paintInfo,
+ otherAxis = {"x": "y", "y": "x"}[axis],
+ dim = {"x": "height", "y": "width"}[axis],
+ comparator = pi["is" + axis.toUpperCase() + "GreaterThanStubTimes2"];
+
+ if (params.sourceEndpoint.elementId === params.targetEndpoint.elementId) {
+ var _val = oss + ((1 - params.sourceEndpoint.anchor[otherAxis]) * params.sourceInfo[dim]) + _super.maxStub;
+ return {
+ "x": [
+ [ss, _val],
+ [es, _val]
+ ],
+ "y": [
+ [_val, ss],
+ [_val, es]
+ ]
+ }[axis];
+
+ }
+ else if (!comparator || (pi.so[idx] === 1 && ss > es) || (pi.so[idx] === -1 && ss < es)) {
+ return {
+ "x": [
+ [ss, midy],
+ [es, midy]
+ ],
+ "y": [
+ [midx, ss],
+ [midx, es]
+ ]
+ }[axis];
+ }
+ else if ((pi.so[idx] === 1 && ss < es) || (pi.so[idx] === -1 && ss > es)) {
+ return {
+ "x": [
+ [midx, pi.sy],
+ [midx, pi.ty]
+ ],
+ "y": [
+ [pi.sx, midy],
+ [pi.tx, midy]
+ ]
+ }[axis];
+ }
+ }
+ };
+
+ // compute the rest of the line
+ var p = lineCalculators[paintInfo.anchorOrientation](paintInfo.sourceAxis, ss, oss, es, oes);
+ if (p) {
+ for (var i = 0; i < p.length; i++) {
+ addSegment(segments, p[i][0], p[i][1], paintInfo);
+ }
+ }
+
+ // line to end stub
+ addSegment(segments, stubs[2], stubs[3], paintInfo);
+
+ //}
+
+ // end stub to end (common)
+ addSegment(segments, paintInfo.tx, paintInfo.ty, paintInfo);
+
+
+
+ // write out the segments.
+ writeSegments(this, segments, paintInfo);
+
+ };
+ };
+
+ _jp.Connectors.Flowchart = Flowchart;
+ _ju.extend(_jp.Connectors.Flowchart, _jp.Connectors.AbstractConnector);
+
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains the code for the Bezier connector type.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+
+ _jp.Connectors.AbstractBezierConnector = function(params) {
+ params = params || {};
+ var showLoopback = params.showLoopback !== false,
+ curviness = params.curviness || 10,
+ margin = params.margin || 5,
+ proximityLimit = params.proximityLimit || 80,
+ clockwise = params.orientation && params.orientation === "clockwise",
+ loopbackRadius = params.loopbackRadius || 25,
+ isLoopbackCurrently = false,
+ _super;
+
+ this._compute = function (paintInfo, p) {
+
+ var sp = p.sourcePos,
+ tp = p.targetPos,
+ _w = Math.abs(sp[0] - tp[0]),
+ _h = Math.abs(sp[1] - tp[1]);
+
+ if (!showLoopback || (p.sourceEndpoint.elementId !== p.targetEndpoint.elementId)) {
+ isLoopbackCurrently = false;
+ this._computeBezier(paintInfo, p, sp, tp, _w, _h);
+ } else {
+ isLoopbackCurrently = true;
+ // a loopback connector. draw an arc from one anchor to the other.
+ var x1 = p.sourcePos[0], y1 = p.sourcePos[1] - margin,
+ cx = x1, cy = y1 - loopbackRadius,
+ // canvas sizing stuff, to ensure the whole painted area is visible.
+ _x = cx - loopbackRadius,
+ _y = cy - loopbackRadius;
+
+ _w = 2 * loopbackRadius;
+ _h = 2 * loopbackRadius;
+
+ paintInfo.points[0] = _x;
+ paintInfo.points[1] = _y;
+ paintInfo.points[2] = _w;
+ paintInfo.points[3] = _h;
+
+ // ADD AN ARC SEGMENT.
+ _super.addSegment(this, "Arc", {
+ loopback: true,
+ x1: (x1 - _x) + 4,
+ y1: y1 - _y,
+ startAngle: 0,
+ endAngle: 2 * Math.PI,
+ r: loopbackRadius,
+ ac: !clockwise,
+ x2: (x1 - _x) - 4,
+ y2: y1 - _y,
+ cx: cx - _x,
+ cy: cy - _y
+ });
+ }
+ };
+
+ _super = _jp.Connectors.AbstractConnector.apply(this, arguments);
+ return _super;
+ };
+ _ju.extend(_jp.Connectors.AbstractBezierConnector, _jp.Connectors.AbstractConnector);
+
+ var Bezier = function (params) {
+ params = params || {};
+ this.type = "Bezier";
+
+ var _super = _jp.Connectors.AbstractBezierConnector.apply(this, arguments),
+ majorAnchor = params.curviness || 150,
+ minorAnchor = 10;
+
+ this.getCurviness = function () {
+ return majorAnchor;
+ };
+
+ this._findControlPoint = function (point, sourceAnchorPosition, targetAnchorPosition, sourceEndpoint, targetEndpoint, soo, too) {
+ // determine if the two anchors are perpendicular to each other in their orientation. we swap the control
+ // points around if so (code could be tightened up)
+ var perpendicular = soo[0] !== too[0] || soo[1] === too[1],
+ p = [];
+
+ if (!perpendicular) {
+ if (soo[0] === 0) {
+ p.push(sourceAnchorPosition[0] < targetAnchorPosition[0] ? point[0] + minorAnchor : point[0] - minorAnchor);
+ }
+ else {
+ p.push(point[0] - (majorAnchor * soo[0]));
+ }
+
+ if (soo[1] === 0) {
+ p.push(sourceAnchorPosition[1] < targetAnchorPosition[1] ? point[1] + minorAnchor : point[1] - minorAnchor);
+ }
+ else {
+ p.push(point[1] + (majorAnchor * too[1]));
+ }
+ }
+ else {
+ if (too[0] === 0) {
+ p.push(targetAnchorPosition[0] < sourceAnchorPosition[0] ? point[0] + minorAnchor : point[0] - minorAnchor);
+ }
+ else {
+ p.push(point[0] + (majorAnchor * too[0]));
+ }
+
+ if (too[1] === 0) {
+ p.push(targetAnchorPosition[1] < sourceAnchorPosition[1] ? point[1] + minorAnchor : point[1] - minorAnchor);
+ }
+ else {
+ p.push(point[1] + (majorAnchor * soo[1]));
+ }
+ }
+
+ return p;
+ };
+
+ this._computeBezier = function (paintInfo, p, sp, tp, _w, _h) {
+
+ var _CP, _CP2,
+ _sx = sp[0] < tp[0] ? _w : 0,
+ _sy = sp[1] < tp[1] ? _h : 0,
+ _tx = sp[0] < tp[0] ? 0 : _w,
+ _ty = sp[1] < tp[1] ? 0 : _h;
+
+ _CP = this._findControlPoint([_sx, _sy], sp, tp, p.sourceEndpoint, p.targetEndpoint, paintInfo.so, paintInfo.to);
+ _CP2 = this._findControlPoint([_tx, _ty], tp, sp, p.targetEndpoint, p.sourceEndpoint, paintInfo.to, paintInfo.so);
+
+
+ _super.addSegment(this, "Bezier", {
+ x1: _sx, y1: _sy, x2: _tx, y2: _ty,
+ cp1x: _CP[0], cp1y: _CP[1], cp2x: _CP2[0], cp2y: _CP2[1]
+ });
+ };
+
+
+ };
+
+ _jp.Connectors.Bezier = Bezier;
+ _ju.extend(Bezier, _jp.Connectors.AbstractBezierConnector);
+
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains the state machine connectors, which extend AbstractBezierConnector.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+
+ var _segment = function (x1, y1, x2, y2) {
+ if (x1 <= x2 && y2 <= y1) {
+ return 1;
+ }
+ else if (x1 <= x2 && y1 <= y2) {
+ return 2;
+ }
+ else if (x2 <= x1 && y2 >= y1) {
+ return 3;
+ }
+ return 4;
+ },
+
+ // the control point we will use depends on the faces to which each end of the connection is assigned, specifically whether or not the
+ // two faces are parallel or perpendicular. if they are parallel then the control point lies on the midpoint of the axis in which they
+ // are parellel and varies only in the other axis; this variation is proportional to the distance that the anchor points lie from the
+ // center of that face. if the two faces are perpendicular then the control point is at some distance from both the midpoints; the amount and
+ // direction are dependent on the orientation of the two elements. 'seg', passed in to this method, tells you which segment the target element
+ // lies in with respect to the source: 1 is top right, 2 is bottom right, 3 is bottom left, 4 is top left.
+ //
+ // sourcePos and targetPos are arrays of info about where on the source and target each anchor is located. their contents are:
+ //
+ // 0 - absolute x
+ // 1 - absolute y
+ // 2 - proportional x in element (0 is left edge, 1 is right edge)
+ // 3 - proportional y in element (0 is top edge, 1 is bottom edge)
+ //
+ _findControlPoint = function (midx, midy, segment, sourceEdge, targetEdge, dx, dy, distance, proximityLimit) {
+ // TODO (maybe)
+ // - if anchor pos is 0.5, make the control point take into account the relative position of the elements.
+ if (distance <= proximityLimit) {
+ return [midx, midy];
+ }
+
+ if (segment === 1) {
+ if (sourceEdge[3] <= 0 && targetEdge[3] >= 1) {
+ return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];
+ }
+ else if (sourceEdge[2] >= 1 && targetEdge[2] <= 0) {
+ return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];
+ }
+ else {
+ return [ midx + (-1 * dx) , midy + (-1 * dy) ];
+ }
+ }
+ else if (segment === 2) {
+ if (sourceEdge[3] >= 1 && targetEdge[3] <= 0) {
+ return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];
+ }
+ else if (sourceEdge[2] >= 1 && targetEdge[2] <= 0) {
+ return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];
+ }
+ else {
+ return [ midx + dx, midy + (-1 * dy) ];
+ }
+ }
+ else if (segment === 3) {
+ if (sourceEdge[3] >= 1 && targetEdge[3] <= 0) {
+ return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];
+ }
+ else if (sourceEdge[2] <= 0 && targetEdge[2] >= 1) {
+ return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];
+ }
+ else {
+ return [ midx + (-1 * dx) , midy + (-1 * dy) ];
+ }
+ }
+ else if (segment === 4) {
+ if (sourceEdge[3] <= 0 && targetEdge[3] >= 1) {
+ return [ midx + (sourceEdge[2] < 0.5 ? -1 * dx : dx), midy ];
+ }
+ else if (sourceEdge[2] <= 0 && targetEdge[2] >= 1) {
+ return [ midx, midy + (sourceEdge[3] < 0.5 ? -1 * dy : dy) ];
+ }
+ else {
+ return [ midx + dx , midy + (-1 * dy) ];
+ }
+ }
+
+ };
+
+ var StateMachine = function (params) {
+ params = params || {};
+ this.type = "StateMachine";
+
+ var _super = _jp.Connectors.AbstractBezierConnector.apply(this, arguments),
+ curviness = params.curviness || 10,
+ margin = params.margin || 5,
+ proximityLimit = params.proximityLimit || 80,
+ clockwise = params.orientation && params.orientation === "clockwise",
+ _controlPoint;
+
+ this._computeBezier = function(paintInfo, params, sp, tp, w, h) {
+ var _sx = params.sourcePos[0] < params.targetPos[0] ? 0 : w,
+ _sy = params.sourcePos[1] < params.targetPos[1] ? 0 : h,
+ _tx = params.sourcePos[0] < params.targetPos[0] ? w : 0,
+ _ty = params.sourcePos[1] < params.targetPos[1] ? h : 0;
+
+ // now adjust for the margin
+ if (params.sourcePos[2] === 0) {
+ _sx -= margin;
+ }
+ if (params.sourcePos[2] === 1) {
+ _sx += margin;
+ }
+ if (params.sourcePos[3] === 0) {
+ _sy -= margin;
+ }
+ if (params.sourcePos[3] === 1) {
+ _sy += margin;
+ }
+ if (params.targetPos[2] === 0) {
+ _tx -= margin;
+ }
+ if (params.targetPos[2] === 1) {
+ _tx += margin;
+ }
+ if (params.targetPos[3] === 0) {
+ _ty -= margin;
+ }
+ if (params.targetPos[3] === 1) {
+ _ty += margin;
+ }
+
+ //
+ // these connectors are quadratic bezier curves, having a single control point. if both anchors
+ // are located at 0.5 on their respective faces, the control point is set to the midpoint and you
+ // get a straight line. this is also the case if the two anchors are within 'proximityLimit', since
+ // it seems to make good aesthetic sense to do that. outside of that, the control point is positioned
+ // at 'curviness' pixels away along the normal to the straight line connecting the two anchors.
+ //
+ // there may be two improvements to this. firstly, we might actually support the notion of avoiding nodes
+ // in the UI, or at least making a good effort at doing so. if a connection would pass underneath some node,
+ // for example, we might increase the distance the control point is away from the midpoint in a bid to
+ // steer it around that node. this will work within limits, but i think those limits would also be the likely
+ // limits for, once again, aesthetic good sense in the layout of a chart using these connectors.
+ //
+ // the second possible change is actually two possible changes: firstly, it is possible we should gradually
+ // decrease the 'curviness' as the distance between the anchors decreases; start tailing it off to 0 at some
+ // point (which should be configurable). secondly, we might slightly increase the 'curviness' for connectors
+ // with respect to how far their anchor is from the center of its respective face. this could either look cool,
+ // or stupid, and may indeed work only in a way that is so subtle as to have been a waste of time.
+ //
+
+ var _midx = (_sx + _tx) / 2,
+ _midy = (_sy + _ty) / 2,
+ segment = _segment(_sx, _sy, _tx, _ty),
+ distance = Math.sqrt(Math.pow(_tx - _sx, 2) + Math.pow(_ty - _sy, 2)),
+ cp1x, cp2x, cp1y, cp2y;
+
+
+ // calculate the control point. this code will be where we'll put in a rudimentary element avoidance scheme; it
+ // will work by extending the control point to force the curve to be, um, curvier.
+ _controlPoint = _findControlPoint(_midx,
+ _midy,
+ segment,
+ params.sourcePos,
+ params.targetPos,
+ curviness, curviness,
+ distance,
+ proximityLimit);
+
+ cp1x = _controlPoint[0];
+ cp2x = _controlPoint[0];
+ cp1y = _controlPoint[1];
+ cp2y = _controlPoint[1];
+
+ _super.addSegment(this, "Bezier", {
+ x1: _tx, y1: _ty, x2: _sx, y2: _sy,
+ cp1x: cp1x, cp1y: cp1y,
+ cp2x: cp2x, cp2y: cp2y
+ });
+ };
+ };
+
+ _jp.Connectors.StateMachine = StateMachine;
+ _ju.extend(StateMachine, _jp.Connectors.AbstractBezierConnector);
+
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains the 'flowchart' connectors, consisting of vertical and horizontal line segments.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+ var STRAIGHT = "Straight";
+
+ var Straight = function (params) {
+ this.type = STRAIGHT;
+ var _super = _jp.Connectors.AbstractConnector.apply(this, arguments);
+
+ this._compute = function (paintInfo, _) {
+ _super.addSegment(this, STRAIGHT, {x1: paintInfo.sx, y1: paintInfo.sy, x2: paintInfo.startStubX, y2: paintInfo.startStubY});
+ _super.addSegment(this, STRAIGHT, {x1: paintInfo.startStubX, y1: paintInfo.startStubY, x2: paintInfo.endStubX, y2: paintInfo.endStubY});
+ _super.addSegment(this, STRAIGHT, {x1: paintInfo.endStubX, y1: paintInfo.endStubY, x2: paintInfo.tx, y2: paintInfo.ty});
+ };
+ };
+
+ _jp.Connectors.Straight = Straight;
+ _ju.extend(Straight, _jp.Connectors.AbstractConnector);
+
+}).call(typeof window !== 'undefined' ? window : this);
+/*
+ * This file contains the SVG renderers.
+ *
+ * Copyright (c) 2010 - 2018 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+// ************************** SVG utility methods ********************************************
+
+ "use strict";
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil;
+
+ var svgAttributeMap = {
+ "stroke-linejoin": "stroke-linejoin",
+ "stroke-dashoffset": "stroke-dashoffset",
+ "stroke-linecap": "stroke-linecap"
+ },
+ STROKE_DASHARRAY = "stroke-dasharray",
+ DASHSTYLE = "dashstyle",
+ LINEAR_GRADIENT = "linearGradient",
+ RADIAL_GRADIENT = "radialGradient",
+ DEFS = "defs",
+ FILL = "fill",
+ STOP = "stop",
+ STROKE = "stroke",
+ STROKE_WIDTH = "stroke-width",
+ STYLE = "style",
+ NONE = "none",
+ JSPLUMB_GRADIENT = "jsplumb_gradient_",
+ LINE_WIDTH = "strokeWidth",
+ ns = {
+ svg: "http://www.w3.org/2000/svg"
+ },
+ _attr = function (node, attributes) {
+ for (var i in attributes) {
+ node.setAttribute(i, "" + attributes[i]);
+ }
+ },
+ _node = function (name, attributes) {
+ attributes = attributes || {};
+ attributes.version = "1.1";
+ attributes.xmlns = ns.svg;
+ return _jp.createElementNS(ns.svg, name, null, null, attributes);
+ },
+ _pos = function (d) {
+ return "position:absolute;left:" + d[0] + "px;top:" + d[1] + "px";
+ },
+ _clearGradient = function (parent) {
+ var els = parent.querySelectorAll(" defs,linearGradient,radialGradient");
+ for (var i = 0; i < els.length; i++) {
+ els[i].parentNode.removeChild(els[i]);
+ }
+ },
+ _updateGradient = function (parent, node, style, dimensions, uiComponent) {
+ var id = JSPLUMB_GRADIENT + uiComponent._jsPlumb.instance.idstamp();
+ // first clear out any existing gradient
+ _clearGradient(parent);
+ // this checks for an 'offset' property in the gradient, and in the absence of it, assumes
+ // we want a linear gradient. if it's there, we create a radial gradient.
+ // it is possible that a more explicit means of defining the gradient type would be
+ // better. relying on 'offset' means that we can never have a radial gradient that uses
+ // some default offset, for instance.
+ // issue 244 suggested the 'gradientUnits' attribute; without this, straight/flowchart connectors with gradients would
+ // not show gradients when the line was perfectly horizontal or vertical.
+ var g;
+ if (!style.gradient.offset) {
+ g = _node(LINEAR_GRADIENT, {id: id, gradientUnits: "userSpaceOnUse"});
+ }
+ else {
+ g = _node(RADIAL_GRADIENT, { id: id });
+ }
+
+ var defs = _node(DEFS);
+ parent.appendChild(defs);
+ defs.appendChild(g);
+
+ // the svg radial gradient seems to treat stops in the reverse
+ // order to how canvas does it. so we want to keep all the maths the same, but
+ // iterate the actual style declarations in reverse order, if the x indexes are not in order.
+ for (var i = 0; i < style.gradient.stops.length; i++) {
+ var styleToUse = uiComponent.segment === 1 || uiComponent.segment === 2 ? i : style.gradient.stops.length - 1 - i,
+ stopColor = style.gradient.stops[styleToUse][1],
+ s = _node(STOP, {"offset": Math.floor(style.gradient.stops[i][0] * 100) + "%", "stop-color": stopColor});
+
+ g.appendChild(s);
+ }
+ var applyGradientTo = style.stroke ? STROKE : FILL;
+ node.setAttribute(applyGradientTo, "url(#" + id + ")");
+ },
+ _applyStyles = function (parent, node, style, dimensions, uiComponent) {
+
+ node.setAttribute(FILL, style.fill ? style.fill : NONE);
+ node.setAttribute(STROKE, style.stroke ? style.stroke : NONE);
+
+ if (style.gradient) {
+ _updateGradient(parent, node, style, dimensions, uiComponent);
+ }
+ else {
+ // make sure we clear any existing gradient
+ _clearGradient(parent);
+ node.setAttribute(STYLE, "");
+ }
+
+ if (style.strokeWidth) {
+ node.setAttribute(STROKE_WIDTH, style.strokeWidth);
+ }
+
+ // in SVG there is a stroke-dasharray attribute we can set, and its syntax looks like
+ // the syntax in VML but is actually kind of nasty: values are given in the pixel
+ // coordinate space, whereas in VML they are multiples of the width of the stroked
+ // line, which makes a lot more sense. for that reason, jsPlumb is supporting both
+ // the native svg 'stroke-dasharray' attribute, and also the 'dashstyle' concept from
+ // VML, which will be the preferred method. the code below this converts a dashstyle
+ // attribute given in terms of stroke width into a pixel representation, by using the
+ // stroke's lineWidth.
+ if (style[DASHSTYLE] && style[LINE_WIDTH] && !style[STROKE_DASHARRAY]) {
+ var sep = style[DASHSTYLE].indexOf(",") === -1 ? " " : ",",
+ parts = style[DASHSTYLE].split(sep),
+ styleToUse = "";
+ parts.forEach(function (p) {
+ styleToUse += (Math.floor(p * style.strokeWidth) + sep);
+ });
+ node.setAttribute(STROKE_DASHARRAY, styleToUse);
+ }
+ else if (style[STROKE_DASHARRAY]) {
+ node.setAttribute(STROKE_DASHARRAY, style[STROKE_DASHARRAY]);
+ }
+
+ // extra attributes such as join type, dash offset.
+ for (var i in svgAttributeMap) {
+ if (style[i]) {
+ node.setAttribute(svgAttributeMap[i], style[i]);
+ }
+ }
+ },
+ _appendAtIndex = function (svg, path, idx) {
+ if (svg.childNodes.length > idx) {
+ svg.insertBefore(path, svg.childNodes[idx]);
+ }
+ else {
+ svg.appendChild(path);
+ }
+ };
+
+ /**
+ utility methods for other objects to use.
+ */
+ _ju.svg = {
+ node: _node,
+ attr: _attr,
+ pos: _pos
+ };
+
+ // ************************** / SVG utility methods ********************************************
+
+ /*
+ * Base class for SVG components.
+ */
+ var SvgComponent = function (params) {
+ var pointerEventsSpec = params.pointerEventsSpec || "all", renderer = {};
+
+ _jp.jsPlumbUIComponent.apply(this, params.originalArgs);
+ this.canvas = null;
+ this.path = null;
+ this.svg = null;
+ this.bgCanvas = null;
+
+ var clazz = params.cssClass + " " + (params.originalArgs[0].cssClass || ""),
+ svgParams = {
+ "style": "",
+ "width": 0,
+ "height": 0,
+ "pointer-events": pointerEventsSpec,
+ "position": "absolute"
+ };
+
+ this.svg = _node("svg", svgParams);
+
+ if (params.useDivWrapper) {
+ this.canvas = _jp.createElement("div", { position : "absolute" });
+ _ju.sizeElement(this.canvas, 0, 0, 1, 1);
+ this.canvas.className = clazz;
+ }
+ else {
+ _attr(this.svg, { "class": clazz });
+ this.canvas = this.svg;
+ }
+
+ params._jsPlumb.appendElement(this.canvas, params.originalArgs[0].parent);
+ if (params.useDivWrapper) {
+ this.canvas.appendChild(this.svg);
+ }
+
+ var displayElements = [ this.canvas ];
+ this.getDisplayElements = function () {
+ return displayElements;
+ };
+
+ this.appendDisplayElement = function (el) {
+ displayElements.push(el);
+ };
+
+ this.paint = function (style, anchor, extents) {
+ if (style != null) {
+
+ var xy = [ this.x, this.y ], wh = [ this.w, this.h ], p;
+ if (extents != null) {
+ if (extents.xmin < 0) {
+ xy[0] += extents.xmin;
+ }
+ if (extents.ymin < 0) {
+ xy[1] += extents.ymin;
+ }
+ wh[0] = extents.xmax + ((extents.xmin < 0) ? -extents.xmin : 0);
+ wh[1] = extents.ymax + ((extents.ymin < 0) ? -extents.ymin : 0);
+ }
+
+ if (params.useDivWrapper) {
+ _ju.sizeElement(this.canvas, xy[0], xy[1], wh[0], wh[1]);
+ xy[0] = 0;
+ xy[1] = 0;
+ p = _pos([ 0, 0 ]);
+ }
+ else {
+ p = _pos([ xy[0], xy[1] ]);
+ }
+
+ renderer.paint.apply(this, arguments);
+
+ _attr(this.svg, {
+ "style": p,
+ "width": wh[0] || 0,
+ "height": wh[1] || 0
+ });
+ }
+ };
+
+ return {
+ renderer: renderer
+ };
+ };
+
+ _ju.extend(SvgComponent, _jp.jsPlumbUIComponent, {
+ cleanup: function (force) {
+ if (force || this.typeId == null) {
+ if (this.canvas) {
+ this.canvas._jsPlumb = null;
+ }
+ if (this.svg) {
+ this.svg._jsPlumb = null;
+ }
+ if (this.bgCanvas) {
+ this.bgCanvas._jsPlumb = null;
+ }
+
+ if (this.canvas && this.canvas.parentNode) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ }
+ if (this.bgCanvas && this.bgCanvas.parentNode) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ }
+
+ this.svg = null;
+ this.canvas = null;
+ this.path = null;
+ this.group = null;
+ }
+ else {
+ // if not a forced cleanup, just detach from DOM for now.
+ if (this.canvas && this.canvas.parentNode) {
+ this.canvas.parentNode.removeChild(this.canvas);
+ }
+ if (this.bgCanvas && this.bgCanvas.parentNode) {
+ this.bgCanvas.parentNode.removeChild(this.bgCanvas);
+ }
+ }
+ },
+ reattach:function(instance) {
+ var c = instance.getContainer();
+ if (this.canvas && this.canvas.parentNode == null) {
+ c.appendChild(this.canvas);
+ }
+ if (this.bgCanvas && this.bgCanvas.parentNode == null) {
+ c.appendChild(this.bgCanvas);
+ }
+ },
+ setVisible: function (v) {
+ if (this.canvas) {
+ this.canvas.style.display = v ? "block" : "none";
+ }
+ }
+ });
+
+ /*
+ * Base class for SVG connectors.
+ */
+ _jp.ConnectorRenderers.svg = function (params) {
+ var self = this,
+ _super = SvgComponent.apply(this, [
+ {
+ cssClass: params._jsPlumb.connectorClass,
+ originalArgs: arguments,
+ pointerEventsSpec: "none",
+ _jsPlumb: params._jsPlumb
+ }
+ ]);
+
+ _super.renderer.paint = function (style, anchor, extents) {
+
+ var segments = self.getSegments(), p = "", offset = [0, 0];
+ if (extents.xmin < 0) {
+ offset[0] = -extents.xmin;
+ }
+ if (extents.ymin < 0) {
+ offset[1] = -extents.ymin;
+ }
+
+ if (segments.length > 0) {
+
+ p = self.getPathData();
+
+ var a = {
+ d: p,
+ transform: "translate(" + offset[0] + "," + offset[1] + ")",
+ "pointer-events": params["pointer-events"] || "visibleStroke"
+ },
+ outlineStyle = null,
+ d = [self.x, self.y, self.w, self.h];
+
+ // outline style. actually means drawing an svg object underneath the main one.
+ if (style.outlineStroke) {
+ var outlineWidth = style.outlineWidth || 1,
+ outlineStrokeWidth = style.strokeWidth + (2 * outlineWidth);
+ outlineStyle = _jp.extend({}, style);
+ delete outlineStyle.gradient;
+ outlineStyle.stroke = style.outlineStroke;
+ outlineStyle.strokeWidth = outlineStrokeWidth;
+
+ if (self.bgPath == null) {
+ self.bgPath = _node("path", a);
+ _jp.addClass(self.bgPath, _jp.connectorOutlineClass);
+ _appendAtIndex(self.svg, self.bgPath, 0);
+ }
+ else {
+ _attr(self.bgPath, a);
+ }
+
+ _applyStyles(self.svg, self.bgPath, outlineStyle, d, self);
+ }
+
+ if (self.path == null) {
+ self.path = _node("path", a);
+ _appendAtIndex(self.svg, self.path, style.outlineStroke ? 1 : 0);
+ }
+ else {
+ _attr(self.path, a);
+ }
+
+ _applyStyles(self.svg, self.path, style, d, self);
+ }
+ };
+ };
+ _ju.extend(_jp.ConnectorRenderers.svg, SvgComponent);
+
+// ******************************* svg segment renderer *****************************************************
+
+
+// ******************************* /svg segments *****************************************************
+
+ /*
+ * Base class for SVG endpoints.
+ */
+ var SvgEndpoint = _jp.SvgEndpoint = function (params) {
+ var _super = SvgComponent.apply(this, [
+ {
+ cssClass: params._jsPlumb.endpointClass,
+ originalArgs: arguments,
+ pointerEventsSpec: "all",
+ useDivWrapper: true,
+ _jsPlumb: params._jsPlumb
+ }
+ ]);
+
+ _super.renderer.paint = function (style) {
+ var s = _jp.extend({}, style);
+ if (s.outlineStroke) {
+ s.stroke = s.outlineStroke;
+ }
+
+ if (this.node == null) {
+ this.node = this.makeNode(s);
+ this.svg.appendChild(this.node);
+ }
+ else if (this.updateNode != null) {
+ this.updateNode(this.node);
+ }
+ _applyStyles(this.svg, this.node, s, [ this.x, this.y, this.w, this.h ], this);
+ _pos(this.node, [ this.x, this.y ]);
+ }.bind(this);
+
+ };
+ _ju.extend(SvgEndpoint, SvgComponent);
+
+ /*
+ * SVG Dot Endpoint
+ */
+ _jp.Endpoints.svg.Dot = function () {
+ _jp.Endpoints.Dot.apply(this, arguments);
+ SvgEndpoint.apply(this, arguments);
+ this.makeNode = function (style) {
+ return _node("circle", {
+ "cx": this.w / 2,
+ "cy": this.h / 2,
+ "r": this.radius
+ });
+ };
+ this.updateNode = function (node) {
+ _attr(node, {
+ "cx": this.w / 2,
+ "cy": this.h / 2,
+ "r": this.radius
+ });
+ };
+ };
+ _ju.extend(_jp.Endpoints.svg.Dot, [_jp.Endpoints.Dot, SvgEndpoint]);
+
+ /*
+ * SVG Rectangle Endpoint
+ */
+ _jp.Endpoints.svg.Rectangle = function () {
+ _jp.Endpoints.Rectangle.apply(this, arguments);
+ SvgEndpoint.apply(this, arguments);
+ this.makeNode = function (style) {
+ return _node("rect", {
+ "width": this.w,
+ "height": this.h
+ });
+ };
+ this.updateNode = function (node) {
+ _attr(node, {
+ "width": this.w,
+ "height": this.h
+ });
+ };
+ };
+ _ju.extend(_jp.Endpoints.svg.Rectangle, [_jp.Endpoints.Rectangle, SvgEndpoint]);
+
+ /*
+ * SVG Image Endpoint is the default image endpoint.
+ */
+ _jp.Endpoints.svg.Image = _jp.Endpoints.Image;
+ /*
+ * Blank endpoint in svg renderer is the default Blank endpoint.
+ */
+ _jp.Endpoints.svg.Blank = _jp.Endpoints.Blank;
+ /*
+ * Label overlay in svg renderer is the default Label overlay.
+ */
+ _jp.Overlays.svg.Label = _jp.Overlays.Label;
+ /*
+ * Custom overlay in svg renderer is the default Custom overlay.
+ */
+ _jp.Overlays.svg.Custom = _jp.Overlays.Custom;
+
+ var AbstractSvgArrowOverlay = function (superclass, originalArgs) {
+ superclass.apply(this, originalArgs);
+ _jp.jsPlumbUIComponent.apply(this, originalArgs);
+ this.isAppendedAtTopLevel = false;
+ var self = this;
+ this.path = null;
+ this.paint = function (params, containerExtents) {
+ // only draws on connections, not endpoints.
+ if (params.component.svg && containerExtents) {
+ if (this.path == null) {
+ this.path = _node("path", {
+ "pointer-events": "all"
+ });
+ params.component.svg.appendChild(this.path);
+ if (this.elementCreated) {
+ this.elementCreated(this.path, params.component);
+ }
+
+ this.canvas = params.component.svg; // for the sake of completeness; this behaves the same as other overlays
+ }
+ var clazz = originalArgs && (originalArgs.length === 1) ? (originalArgs[0].cssClass || "") : "",
+ offset = [0, 0];
+
+ if (containerExtents.xmin < 0) {
+ offset[0] = -containerExtents.xmin;
+ }
+ if (containerExtents.ymin < 0) {
+ offset[1] = -containerExtents.ymin;
+ }
+
+ _attr(this.path, {
+ "d": makePath(params.d),
+ "class": clazz,
+ stroke: params.stroke ? params.stroke : null,
+ fill: params.fill ? params.fill : null,
+ transform: "translate(" + offset[0] + "," + offset[1] + ")"
+ });
+ }
+ };
+ var makePath = function (d) {
+ return (isNaN(d.cxy.x) || isNaN(d.cxy.y)) ? "" : "M" + d.hxy.x + "," + d.hxy.y +
+ " L" + d.tail[0].x + "," + d.tail[0].y +
+ " L" + d.cxy.x + "," + d.cxy.y +
+ " L" + d.tail[1].x + "," + d.tail[1].y +
+ " L" + d.hxy.x + "," + d.hxy.y;
+ };
+ this.transfer = function(target) {
+ if (target.canvas && this.path && this.path.parentNode) {
+ this.path.parentNode.removeChild(this.path);
+ target.canvas.appendChild(this.path);
+ }
+ };
+ };
+ _ju.extend(AbstractSvgArrowOverlay, [_jp.jsPlumbUIComponent, _jp.Overlays.AbstractOverlay], {
+ cleanup: function (force) {
+ if (this.path != null) {
+ if (force) {
+ this._jsPlumb.instance.removeElement(this.path);
+ }
+ else {
+ if (this.path.parentNode) {
+ this.path.parentNode.removeChild(this.path);
+ }
+ }
+ }
+ },
+ reattach:function(instance, component) {
+ if (this.path && component.canvas) {
+ component.canvas.appendChild(this.path);
+ }
+ },
+ setVisible: function (v) {
+ if (this.path != null) {
+ (this.path.style.display = (v ? "block" : "none"));
+ }
+ }
+ });
+
+ _jp.Overlays.svg.Arrow = function () {
+ AbstractSvgArrowOverlay.apply(this, [_jp.Overlays.Arrow, arguments]);
+ };
+ _ju.extend(_jp.Overlays.svg.Arrow, [ _jp.Overlays.Arrow, AbstractSvgArrowOverlay ]);
+
+ _jp.Overlays.svg.PlainArrow = function () {
+ AbstractSvgArrowOverlay.apply(this, [_jp.Overlays.PlainArrow, arguments]);
+ };
+ _ju.extend(_jp.Overlays.svg.PlainArrow, [ _jp.Overlays.PlainArrow, AbstractSvgArrowOverlay ]);
+
+ _jp.Overlays.svg.Diamond = function () {
+ AbstractSvgArrowOverlay.apply(this, [_jp.Overlays.Diamond, arguments]);
+ };
+ _ju.extend(_jp.Overlays.svg.Diamond, [ _jp.Overlays.Diamond, AbstractSvgArrowOverlay ]);
+
+ // a test
+ _jp.Overlays.svg.GuideLines = function () {
+ var path = null, self = this, p1_1, p1_2;
+ _jp.Overlays.GuideLines.apply(this, arguments);
+ this.paint = function (params, containerExtents) {
+ if (path == null) {
+ path = _node("path");
+ params.connector.svg.appendChild(path);
+ self.attachListeners(path, params.connector);
+ self.attachListeners(path, self);
+
+ p1_1 = _node("path");
+ params.connector.svg.appendChild(p1_1);
+ self.attachListeners(p1_1, params.connector);
+ self.attachListeners(p1_1, self);
+
+ p1_2 = _node("path");
+ params.connector.svg.appendChild(p1_2);
+ self.attachListeners(p1_2, params.connector);
+ self.attachListeners(p1_2, self);
+ }
+
+ var offset = [0, 0];
+ if (containerExtents.xmin < 0) {
+ offset[0] = -containerExtents.xmin;
+ }
+ if (containerExtents.ymin < 0) {
+ offset[1] = -containerExtents.ymin;
+ }
+
+ _attr(path, {
+ "d": makePath(params.head, params.tail),
+ stroke: "red",
+ fill: null,
+ transform: "translate(" + offset[0] + "," + offset[1] + ")"
+ });
+
+ _attr(p1_1, {
+ "d": makePath(params.tailLine[0], params.tailLine[1]),
+ stroke: "blue",
+ fill: null,
+ transform: "translate(" + offset[0] + "," + offset[1] + ")"
+ });
+
+ _attr(p1_2, {
+ "d": makePath(params.headLine[0], params.headLine[1]),
+ stroke: "green",
+ fill: null,
+ transform: "translate(" + offset[0] + "," + offset[1] + ")"
+ });
+ };
+
+ var makePath = function (d1, d2) {
+ return "M " + d1.x + "," + d1.y +
+ " L" + d2.x + "," + d2.y;
+ };
+ };
+ _ju.extend(_jp.Overlays.svg.GuideLines, _jp.Overlays.GuideLines);
+}).call(typeof window !== 'undefined' ? window : this);
+
+/*
+ * This file contains code used when jsPlumb is being rendered in a DOM.
+ *
+ * Copyright (c) 2010 - 2019 jsPlumb (hello@jsplumbtoolkit.com)
+ *
+ * https://jsplumbtoolkit.com
+ * https://github.com/jsplumb/jsplumb
+ *
+ * Dual licensed under the MIT and GPL2 licenses.
+ */
+;
+(function () {
+
+ "use strict";
+
+ var root = this, _jp = root.jsPlumb, _ju = root.jsPlumbUtil,
+ _jk = root.Katavorio, _jg = root.Biltong;
+
+ var _getEventManager = function(instance) {
+ var e = instance._mottle;
+ if (!e) {
+ e = instance._mottle = new root.Mottle();
+ }
+ return e;
+ };
+
+ var _getDragManager = function (instance, category) {
+
+ category = category || "main";
+ var key = "_katavorio_" + category;
+ var k = instance[key],
+ e = instance.getEventManager();
+
+ if (!k) {
+ k = new _jk({
+ bind: e.on,
+ unbind: e.off,
+ getSize: _jp.getSize,
+ getConstrainingRectangle:function(el) {
+ return [ el.parentNode.scrollWidth, el.parentNode.scrollHeight ];
+ },
+ getPosition: function (el, relativeToRoot) {
+ // if this is a nested draggable then compute the offset against its own offsetParent, otherwise
+ // compute against the Container's origin. see also the getUIPosition method below.
+ var o = instance.getOffset(el, relativeToRoot, el._katavorioDrag ? el.offsetParent : null);
+ return [o.left, o.top];
+ },
+ setPosition: function (el, xy) {
+ el.style.left = xy[0] + "px";
+ el.style.top = xy[1] + "px";
+ },
+ addClass: _jp.addClass,
+ removeClass: _jp.removeClass,
+ intersects: _jg.intersects,
+ indexOf: function(l, i) { return l.indexOf(i); },
+ scope:instance.getDefaultScope(),
+ css: {
+ noSelect: instance.dragSelectClass,
+ droppable: "jtk-droppable",
+ draggable: "jtk-draggable",
+ drag: "jtk-drag",
+ selected: "jtk-drag-selected",
+ active: "jtk-drag-active",
+ hover: "jtk-drag-hover",
+ ghostProxy:"jtk-ghost-proxy"
+ }
+ });
+ k.setZoom(instance.getZoom());
+ instance[key] = k;
+ instance.bind("zoom", k.setZoom);
+ }
+ return k;
+ };
+
+ var _dragStart=function(params) {
+ var options = params.el._jsPlumbDragOptions;
+ var cont = true;
+ if (options.canDrag) {
+ cont = options.canDrag();
+ }
+ if (cont) {
+ this.setHoverSuspended(true);
+ this.select({source: params.el}).addClass(this.elementDraggingClass + " " + this.sourceElementDraggingClass, true);
+ this.select({target: params.el}).addClass(this.elementDraggingClass + " " + this.targetElementDraggingClass, true);
+ this.setConnectionBeingDragged(true);
+ }
+ return cont;
+ };
+ var _dragMove=function(params) {
+ var ui = this.getUIPosition(arguments, this.getZoom());
+ if (ui != null) {
+ var o = params.el._jsPlumbDragOptions;
+ this.draw(params.el, ui, null, true);
+ if (o._dragging) {
+ this.addClass(params.el, "jtk-dragged");
+ }
+ o._dragging = true;
+ }
+ };
+ var _dragStop=function(params) {
+ var elements = params.selection, uip;
+
+ var _one = function (_e) {
+ if (_e[1] != null) {
+ // run the reported offset through the code that takes parent containers
+ // into account, to adjust if necessary (issue 554)
+ uip = this.getUIPosition([{
+ el:_e[2].el,
+ pos:[_e[1].left, _e[1].top]
+ }]);
+ this.draw(_e[2].el, uip);
+ }
+
+ if (_e[0]._jsPlumbDragOptions != null) {
+ delete _e[0]._jsPlumbDragOptions._dragging;
+ }
+
+ this.removeClass(_e[0], "jtk-dragged");
+ this.select({source: _e[2].el}).removeClass(this.elementDraggingClass + " " + this.sourceElementDraggingClass, true);
+ this.select({target: _e[2].el}).removeClass(this.elementDraggingClass + " " + this.targetElementDraggingClass, true);
+ this.getDragManager().dragEnded(_e[2].el);
+ }.bind(this);
+
+ for (var i = 0; i < elements.length; i++) {
+ _one(elements[i]);
+ }
+
+ this.setHoverSuspended(false);
+ this.setConnectionBeingDragged(false);
+ };
+
+ var _animProps = function (o, p) {
+ var _one = function (pName) {
+ if (p[pName] != null) {
+ if (_ju.isString(p[pName])) {
+ var m = p[pName].match(/-=/) ? -1 : 1,
+ v = p[pName].substring(2);
+ return o[pName] + (m * v);
+ }
+ else {
+ return p[pName];
+ }
+ }
+ else {
+ return o[pName];
+ }
+ };
+ return [ _one("left"), _one("top") ];
+ };
+
+ var _genLoc = function (prefix, e) {
+ if (e == null) {
+ return [ 0, 0 ];
+ }
+ var ts = _touches(e), t = _getTouch(ts, 0);
+ return [t[prefix + "X"], t[prefix + "Y"]];
+ },
+ _pageLocation = _genLoc.bind(this, "page"),
+ _screenLocation = _genLoc.bind(this, "screen"),
+ _clientLocation = _genLoc.bind(this, "client"),
+ _getTouch = function (touches, idx) {
+ return touches.item ? touches.item(idx) : touches[idx];
+ },
+ _touches = function (e) {
+ return e.touches && e.touches.length > 0 ? e.touches :
+ e.changedTouches && e.changedTouches.length > 0 ? e.changedTouches :
+ e.targetTouches && e.targetTouches.length > 0 ? e.targetTouches :
+ [ e ];
+ };
+
+ /**
+ Manages dragging for some instance of jsPlumb.
+
+ TODO instead of this being accessed directly, it should subscribe to events on the jsPlumb instance: every method
+ in here is called directly by jsPlumb. But what should happen is that we have unpublished events that this listens
+ to. The only trick is getting one of these instantiated with every jsPlumb instance: it needs to have a hook somehow.
+ Basically the general idea is to pull ALL the drag code out (prototype method registrations plus this) into a
+ dedicated drag script), that does not necessarily need to be included.
+
+
+ */
+ var DragManager = function (_currentInstance) {
+ var _draggables = {}, _dlist = [], _delements = {}, _elementsWithEndpoints = {},
+ // elementids mapped to the draggable to which they belong.
+ _draggablesForElements = {};
+
+ /**
+ register some element as draggable. right now the drag init stuff is done elsewhere, and it is
+ possible that will continue to be the case.
+ */
+ this.register = function (el) {
+ var id = _currentInstance.getId(el),
+ parentOffset;
+
+ if (!_draggables[id]) {
+ _draggables[id] = el;
+ _dlist.push(el);
+ _delements[id] = {};
+ }
+
+ // look for child elements that have endpoints and register them against this draggable.
+ var _oneLevel = function (p) {
+ if (p) {
+ for (var i = 0; i < p.childNodes.length; i++) {
+ if (p.childNodes[i].nodeType !== 3 && p.childNodes[i].nodeType !== 8) {
+ var cEl = jsPlumb.getElement(p.childNodes[i]),
+ cid = _currentInstance.getId(p.childNodes[i], null, true);
+ if (cid && _elementsWithEndpoints[cid] && _elementsWithEndpoints[cid] > 0) {
+ if (!parentOffset) {
+ parentOffset = _currentInstance.getOffset(el);
+ }
+ var cOff = _currentInstance.getOffset(cEl);
+ _delements[id][cid] = {
+ id: cid,
+ offset: {
+ left: cOff.left - parentOffset.left,
+ top: cOff.top - parentOffset.top
+ }
+ };
+ _draggablesForElements[cid] = id;
+ }
+ _oneLevel(p.childNodes[i]);
+ }
+ }
+ }
+ };
+
+ _oneLevel(el);
+ };
+
+ // refresh the offsets for child elements of this element.
+ this.updateOffsets = function (elId, childOffsetOverrides) {
+ if (elId != null) {
+ childOffsetOverrides = childOffsetOverrides || {};
+ var domEl = jsPlumb.getElement(elId),
+ id = _currentInstance.getId(domEl),
+ children = _delements[id],
+ parentOffset;
+
+ if (children) {
+ for (var i in children) {
+ if (children.hasOwnProperty(i)) {
+ var cel = jsPlumb.getElement(i),
+ cOff = childOffsetOverrides[i] || _currentInstance.getOffset(cel);
+
+ // do not update if we have a value already and we'd just be writing 0,0
+ if (cel.offsetParent == null && _delements[id][i] != null) {
+ continue;
+ }
+
+ if (!parentOffset) {
+ parentOffset = _currentInstance.getOffset(domEl);
+ }
+
+ _delements[id][i] = {
+ id: i,
+ offset: {
+ left: cOff.left - parentOffset.left,
+ top: cOff.top - parentOffset.top
+ }
+ };
+ _draggablesForElements[i] = id;
+ }
+ }
+ }
+ }
+ };
+
+ /**
+ notification that an endpoint was added to the given el. we go up from that el's parent
+ node, looking for a parent that has been registered as a draggable. if we find one, we add this
+ el to that parent's list of elements to update on drag (if it is not there already)
+ */
+ this.endpointAdded = function (el, id) {
+
+ id = id || _currentInstance.getId(el);
+
+ var b = document.body,
+ p = el.parentNode;
+
+ _elementsWithEndpoints[id] = _elementsWithEndpoints[id] ? _elementsWithEndpoints[id] + 1 : 1;
+
+ while (p != null && p !== b) {
+ var pid = _currentInstance.getId(p, null, true);
+ if (pid && _draggables[pid]) {
+ var pLoc = _currentInstance.getOffset(p);
+
+ if (_delements[pid][id] == null) {
+ var cLoc = _currentInstance.getOffset(el);
+ _delements[pid][id] = {
+ id: id,
+ offset: {
+ left: cLoc.left - pLoc.left,
+ top: cLoc.top - pLoc.top
+ }
+ };
+ _draggablesForElements[id] = pid;
+ }
+ break;
+ }
+ p = p.parentNode;
+ }
+ };
+
+ this.endpointDeleted = function (endpoint) {
+ if (_elementsWithEndpoints[endpoint.elementId]) {
+ _elementsWithEndpoints[endpoint.elementId]--;
+ if (_elementsWithEndpoints[endpoint.elementId] <= 0) {
+ for (var i in _delements) {
+ if (_delements.hasOwnProperty(i) && _delements[i]) {
+ delete _delements[i][endpoint.elementId];
+ delete _draggablesForElements[endpoint.elementId];
+ }
+ }
+ }
+ }
+ };
+
+ this.changeId = function (oldId, newId) {
+ _delements[newId] = _delements[oldId];
+ _delements[oldId] = {};
+ _draggablesForElements[newId] = _draggablesForElements[oldId];
+ _draggablesForElements[oldId] = null;
+ };
+
+ this.getElementsForDraggable = function (id) {
+ return _delements[id];
+ };
+
+ this.elementRemoved = function (elementId) {
+ var elId = _draggablesForElements[elementId];
+ if (elId) {
+ delete _delements[elId][elementId];
+ delete _draggablesForElements[elementId];
+ }
+ };
+
+ this.reset = function () {
+ _draggables = {};
+ _dlist = [];
+ _delements = {};
+ _elementsWithEndpoints = {};
+ };
+
+ //
+ // notification drag ended. We check automatically if need to update some
+ // ancestor's offsets.
+ //
+ this.dragEnded = function (el) {
+ if (el.offsetParent != null) {
+ var id = _currentInstance.getId(el),
+ ancestor = _draggablesForElements[id];
+
+ if (ancestor) {
+ this.updateOffsets(ancestor);
+ }
+ }
+ };
+
+ this.setParent = function (el, elId, p, pId, currentChildLocation) {
+ var current = _draggablesForElements[elId];
+ if (!_delements[pId]) {
+ _delements[pId] = {};
+ }
+ var pLoc = _currentInstance.getOffset(p),
+ cLoc = currentChildLocation || _currentInstance.getOffset(el);
+
+ if (current && _delements[current]) {
+ delete _delements[current][elId];
+ }
+
+ _delements[pId][elId] = {
+ id:elId,
+ offset : {
+ left: cLoc.left - pLoc.left,
+ top: cLoc.top - pLoc.top
+ }
+ };
+ _draggablesForElements[elId] = pId;
+ };
+
+ this.clearParent = function(el, elId) {
+ var current = _draggablesForElements[elId];
+ if (current) {
+ delete _delements[current][elId];
+ delete _draggablesForElements[elId];
+ }
+ };
+
+ this.revalidateParent = function(el, elId, childOffset) {
+ var current = _draggablesForElements[elId];
+ if (current) {
+ var co = {};
+ co[elId] = childOffset;
+ this.updateOffsets(current, co);
+ _currentInstance.revalidate(current);
+ }
+ };
+
+ this.getDragAncestor = function (el) {
+ var de = jsPlumb.getElement(el),
+ id = _currentInstance.getId(de),
+ aid = _draggablesForElements[id];
+
+ if (aid) {
+ return jsPlumb.getElement(aid);
+ }
+ else {
+ return null;
+ }
+ };
+
+ };
+
+ var _setClassName = function (el, cn, classList) {
+ cn = _ju.fastTrim(cn);
+ if (typeof el.className.baseVal !== "undefined") {
+ el.className.baseVal = cn;
+ }
+ else {
+ el.className = cn;
+ }
+
+ // recent (i currently have 61.0.3163.100) version of chrome do not update classList when you set the base val
+ // of an svg element's className. in the long run we'd like to move to just using classList anyway
+ try {
+ var cl = el.classList;
+ if (cl != null) {
+ while (cl.length > 0) {
+ cl.remove(cl.item(0));
+ }
+ for (var i = 0; i < classList.length; i++) {
+ if (classList[i]) {
+ cl.add(classList[i]);
+ }
+ }
+ }
+ }
+ catch(e) {
+ // not fatal
+ _ju.log("JSPLUMB: cannot set class list", e);
+ }
+ },
+ _getClassName = function (el) {
+ return (typeof el.className.baseVal === "undefined") ? el.className : el.className.baseVal;
+ },
+ _classManip = function (el, classesToAdd, classesToRemove) {
+ classesToAdd = classesToAdd == null ? [] : _ju.isArray(classesToAdd) ? classesToAdd : classesToAdd.split(/\s+/);
+ classesToRemove = classesToRemove == null ? [] : _ju.isArray(classesToRemove) ? classesToRemove : classesToRemove.split(/\s+/);
+
+ var className = _getClassName(el),
+ curClasses = className.split(/\s+/);
+
+ var _oneSet = function (add, classes) {
+ for (var i = 0; i < classes.length; i++) {
+ if (add) {
+ if (curClasses.indexOf(classes[i]) === -1) {
+ curClasses.push(classes[i]);
+ }
+ }
+ else {
+ var idx = curClasses.indexOf(classes[i]);
+ if (idx !== -1) {
+ curClasses.splice(idx, 1);
+ }
+ }
+ }
+ };
+
+ _oneSet(true, classesToAdd);
+ _oneSet(false, classesToRemove);
+
+ _setClassName(el, curClasses.join(" "), curClasses);
+ };
+
+ root.jsPlumb.extend(root.jsPlumbInstance.prototype, {
+
+ headless: false,
+
+ pageLocation: _pageLocation,
+ screenLocation: _screenLocation,
+ clientLocation: _clientLocation,
+
+ getDragManager:function() {
+ if (this.dragManager == null) {
+ this.dragManager = new DragManager(this);
+ }
+
+ return this.dragManager;
+ },
+
+ recalculateOffsets:function(elId) {
+ this.getDragManager().updateOffsets(elId);
+ },
+
+ createElement:function(tag, style, clazz, atts) {
+ return this.createElementNS(null, tag, style, clazz, atts);
+ },
+
+ createElementNS:function(ns, tag, style, clazz, atts) {
+ var e = ns == null ? document.createElement(tag) : document.createElementNS(ns, tag);
+ var i;
+ style = style || {};
+ for (i in style) {
+ e.style[i] = style[i];
+ }
+
+ if (clazz) {
+ e.className = clazz;
+ }
+
+ atts = atts || {};
+ for (i in atts) {
+ e.setAttribute(i, "" + atts[i]);
+ }
+
+ return e;
+ },
+
+ getAttribute: function (el, attName) {
+ return el.getAttribute != null ? el.getAttribute(attName) : null;
+ },
+
+ setAttribute: function (el, a, v) {
+ if (el.setAttribute != null) {
+ el.setAttribute(a, v);
+ }
+ },
+
+ setAttributes: function (el, atts) {
+ for (var i in atts) {
+ if (atts.hasOwnProperty(i)) {
+ el.setAttribute(i, atts[i]);
+ }
+ }
+ },
+ appendToRoot: function (node) {
+ document.body.appendChild(node);
+ },
+ getRenderModes: function () {
+ return [ "svg" ];
+ },
+ getClass:_getClassName,
+ addClass: function (el, clazz) {
+ jsPlumb.each(el, function (e) {
+ _classManip(e, clazz);
+ });
+ },
+ hasClass: function (el, clazz) {
+ el = jsPlumb.getElement(el);
+ if (el.classList) {
+ return el.classList.contains(clazz);
+ }
+ else {
+ return _getClassName(el).indexOf(clazz) !== -1;
+ }
+ },
+ removeClass: function (el, clazz) {
+ jsPlumb.each(el, function (e) {
+ _classManip(e, null, clazz);
+ });
+ },
+ toggleClass:function(el, clazz) {
+ if (jsPlumb.hasClass(el, clazz)) {
+ jsPlumb.removeClass(el, clazz);
+ } else {
+ jsPlumb.addClass(el, clazz);
+ }
+ },
+ updateClasses: function (el, toAdd, toRemove) {
+ jsPlumb.each(el, function (e) {
+ _classManip(e, toAdd, toRemove);
+ });
+ },
+ setClass: function (el, clazz) {
+ if (clazz != null) {
+ jsPlumb.each(el, function (e) {
+ _setClassName(e, clazz, clazz.split(/\s+/));
+ });
+ }
+ },
+ setPosition: function (el, p) {
+ el.style.left = p.left + "px";
+ el.style.top = p.top + "px";
+ },
+ getPosition: function (el) {
+ var _one = function (prop) {
+ var v = el.style[prop];
+ return v ? v.substring(0, v.length - 2) : 0;
+ };
+ return {
+ left: _one("left"),
+ top: _one("top")
+ };
+ },
+ getStyle:function(el, prop) {
+ if (typeof window.getComputedStyle !== 'undefined') {
+ return getComputedStyle(el, null).getPropertyValue(prop);
+ } else {
+ return el.currentStyle[prop];
+ }
+ },
+ getSelector: function (ctx, spec) {
+ var sel = null;
+ if (arguments.length === 1) {
+ sel = ctx.nodeType != null ? ctx : document.querySelectorAll(ctx);
+ }
+ else {
+ sel = ctx.querySelectorAll(spec);
+ }
+
+ return sel;
+ },
+ getOffset:function(el, relativeToRoot, container) {
+ el = jsPlumb.getElement(el);
+ container = container || this.getContainer();
+ var out = {
+ left: el.offsetLeft,
+ top: el.offsetTop
+ },
+ op = (relativeToRoot || (container != null && (el !== container && el.offsetParent !== container))) ? el.offsetParent : null,
+ _maybeAdjustScroll = function(offsetParent) {
+ if (offsetParent != null && offsetParent !== document.body && (offsetParent.scrollTop > 0 || offsetParent.scrollLeft > 0)) {
+ out.left -= offsetParent.scrollLeft;
+ out.top -= offsetParent.scrollTop;
+ }
+ }.bind(this);
+
+ while (op != null) {
+ out.left += op.offsetLeft;
+ out.top += op.offsetTop;
+ _maybeAdjustScroll(op);
+ op = relativeToRoot ? op.offsetParent :
+ op.offsetParent === container ? null : op.offsetParent;
+ }
+
+ // if container is scrolled and the element (or its offset parent) is not absolute or fixed, adjust accordingly.
+ if (container != null && !relativeToRoot && (container.scrollTop > 0 || container.scrollLeft > 0)) {
+ var pp = el.offsetParent != null ? this.getStyle(el.offsetParent, "position") : "static",
+ p = this.getStyle(el, "position");
+ if (p !== "absolute" && p !== "fixed" && pp !== "absolute" && pp !== "fixed") {
+ out.left -= container.scrollLeft;
+ out.top -= container.scrollTop;
+ }
+ }
+ return out;
+ },
+ //
+ // return x+y proportion of the given element's size corresponding to the location of the given event.
+ //
+ getPositionOnElement: function (evt, el, zoom) {
+ var box = typeof el.getBoundingClientRect !== "undefined" ? el.getBoundingClientRect() : { left: 0, top: 0, width: 0, height: 0 },
+ body = document.body,
+ docElem = document.documentElement,
+ scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop,
+ scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft,
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ pst = 0,
+ psl = 0,
+ top = box.top + scrollTop - clientTop + (pst * zoom),
+ left = box.left + scrollLeft - clientLeft + (psl * zoom),
+ cl = jsPlumb.pageLocation(evt),
+ w = box.width || (el.offsetWidth * zoom),
+ h = box.height || (el.offsetHeight * zoom),
+ x = (cl[0] - left) / w,
+ y = (cl[1] - top) / h;
+
+ return [ x, y ];
+ },
+
+ /**
+ * Gets the absolute position of some element as read from the left/top properties in its style.
+ * @method getAbsolutePosition
+ * @param {Element} el The element to retrieve the absolute coordinates from. **Note** this is a DOM element, not a selector from the underlying library.
+ * @return {Number[]} [left, top] pixel values.
+ */
+ getAbsolutePosition: function (el) {
+ var _one = function (s) {
+ var ss = el.style[s];
+ if (ss) {
+ return parseFloat(ss.substring(0, ss.length - 2));
+ }
+ };
+ return [ _one("left"), _one("top") ];
+ },
+
+ /**
+ * Sets the absolute position of some element by setting the left/top properties in its style.
+ * @method setAbsolutePosition
+ * @param {Element} el The element to set the absolute coordinates on. **Note** this is a DOM element, not a selector from the underlying library.
+ * @param {Number[]} xy x and y coordinates
+ * @param {Number[]} [animateFrom] Optional previous xy to animate from.
+ * @param {Object} [animateOptions] Options for the animation.
+ */
+ setAbsolutePosition: function (el, xy, animateFrom, animateOptions) {
+ if (animateFrom) {
+ this.animate(el, {
+ left: "+=" + (xy[0] - animateFrom[0]),
+ top: "+=" + (xy[1] - animateFrom[1])
+ }, animateOptions);
+ }
+ else {
+ el.style.left = xy[0] + "px";
+ el.style.top = xy[1] + "px";
+ }
+ },
+ /**
+ * gets the size for the element, in an array : [ width, height ].
+ */
+ getSize: function (el) {
+ return [ el.offsetWidth, el.offsetHeight ];
+ },
+ getWidth: function (el) {
+ return el.offsetWidth;
+ },
+ getHeight: function (el) {
+ return el.offsetHeight;
+ },
+ getRenderMode : function() { return "svg"; },
+ draggable : function (el, options) {
+ var info;
+ el = _ju.isArray(el) || (el.length != null && !_ju.isString(el)) ? el: [ el ];
+ Array.prototype.slice.call(el).forEach(function(_el) {
+ info = this.info(_el);
+ if (info.el) {
+ this._initDraggableIfNecessary(info.el, true, options, info.id, true);
+ }
+ }.bind(this));
+ return this;
+ },
+ snapToGrid : function(el, x, y) {
+ var out = [];
+ var _oneEl = function(_el) {
+ var info = this.info(_el);
+ if (info.el != null && info.el._katavorioDrag) {
+ var snapped = info.el._katavorioDrag.snap(x, y);
+ this.revalidate(info.el);
+ out.push([info.el, snapped]);
+ }
+ }.bind(this);
+
+ // if you call this method with 0 arguments or 2 arguments it is assumed you want to snap all managed elements to
+ // a grid. if you supply one argument or 3, then you are assumed to be specifying one element.
+ if(arguments.length === 1 || arguments.length === 3) {
+ _oneEl(el, x, y);
+ } else {
+ var _me = this.getManagedElements();
+ for (var mel in _me) {
+ _oneEl(mel, arguments[0], arguments[1]);
+ }
+ }
+
+ return out;
+ },
+ initDraggable: function (el, options, category) {
+ _getDragManager(this, category).draggable(el, options);
+ el._jsPlumbDragOptions = options;
+ },
+ destroyDraggable: function (el, category) {
+ _getDragManager(this, category).destroyDraggable(el);
+ delete el._jsPlumbDragOptions;
+ },
+ unbindDraggable: function (el, evt, fn, category) {
+ _getDragManager(this, category).destroyDraggable(el, evt, fn);
+ },
+ setDraggable : function (element, draggable) {
+ return jsPlumb.each(element, function (el) {
+ if (this.isDragSupported(el)) {
+ this._draggableStates[this.getAttribute(el, "id")] = draggable;
+ this.setElementDraggable(el, draggable);
+ }
+ }.bind(this));
+ },
+ _draggableStates : {},
+ /*
+ * toggles the draggable state of the given element(s).
+ * el is either an id, or an element object, or a list of ids/element objects.
+ */
+ toggleDraggable : function (el) {
+ var state;
+ jsPlumb.each(el, function (el) {
+ var elId = this.getAttribute(el, "id");
+ state = this._draggableStates[elId] == null ? false : this._draggableStates[elId];
+ state = !state;
+ this._draggableStates[elId] = state;
+ this.setDraggable(el, state);
+ return state;
+ }.bind(this));
+ return state;
+ },
+ _initDraggableIfNecessary : function (element, isDraggable, dragOptions, id, fireEvent) {
+ // TODO FIRST: move to DragManager. including as much of the decision to init dragging as possible.
+ if (!jsPlumb.headless) {
+ var _draggable = isDraggable == null ? false : isDraggable;
+ if (_draggable) {
+ if (jsPlumb.isDragSupported(element, this)) {
+ var options = dragOptions || this.Defaults.DragOptions;
+ options = jsPlumb.extend({}, options); // make a copy.
+ if (!jsPlumb.isAlreadyDraggable(element, this)) {
+ var dragEvent = jsPlumb.dragEvents.drag,
+ stopEvent = jsPlumb.dragEvents.stop,
+ startEvent = jsPlumb.dragEvents.start;
+
+ this.manage(id, element);
+
+ options[startEvent] = _ju.wrap(options[startEvent], _dragStart.bind(this));
+
+ options[dragEvent] = _ju.wrap(options[dragEvent], _dragMove.bind(this));
+
+ options[stopEvent] = _ju.wrap(options[stopEvent], _dragStop.bind(this));
+
+ var elId = this.getId(element); // need ID
+
+ this._draggableStates[elId] = true;
+ var draggable = this._draggableStates[elId];
+
+ options.disabled = draggable == null ? false : !draggable;
+ this.initDraggable(element, options);
+ this.getDragManager().register(element);
+ if (fireEvent) {
+ this.fire("elementDraggable", {el:element, options:options});
+ }
+ }
+ else {
+ // already draggable. attach any start, drag or stop listeners to the current Drag.
+ if (dragOptions.force) {
+ this.initDraggable(element, options);
+ }
+ }
+ }
+ }
+ }
+ },
+ animationSupported:true,
+ getElement: function (el) {
+ if (el == null) {
+ return null;
+ }
+ // here we pluck the first entry if el was a list of entries.
+ // this is not my favourite thing to do, but previous versions of
+ // jsplumb supported jquery selectors, and it is possible a selector
+ // will be passed in here.
+ el = typeof el === "string" ? el : el.length != null && el.enctype == null ? el[0] : el;
+ return typeof el === "string" ? document.getElementById(el) : el;
+ },
+ removeElement: function (element) {
+ _getDragManager(this).elementRemoved(element);
+ this.getEventManager().remove(element);
+ },
+ //
+ // this adapter supports a rudimentary animation function. no easing is supported. only
+ // left/top properties are supported. property delta args are expected to be in the form
+ //
+ // +=x.xxxx
+ //
+ // or
+ //
+ // -=x.xxxx
+ //
+ doAnimate: function (el, properties, options) {
+ options = options || {};
+ var o = this.getOffset(el),
+ ap = _animProps(o, properties),
+ ldist = ap[0] - o.left,
+ tdist = ap[1] - o.top,
+ d = options.duration || 250,
+ step = 15, steps = d / step,
+ linc = (step / d) * ldist,
+ tinc = (step / d) * tdist,
+ idx = 0,
+ _int = setInterval(function () {
+ _jp.setPosition(el, {
+ left: o.left + (linc * (idx + 1)),
+ top: o.top + (tinc * (idx + 1))
+ });
+ if (options.step != null) {
+ options.step(idx, Math.ceil(steps));
+ }
+ idx++;
+ if (idx >= steps) {
+ window.clearInterval(_int);
+ if (options.complete != null) {
+ options.complete();
+ }
+ }
+ }, step);
+ },
+ // DRAG/DROP
+
+
+ destroyDroppable: function (el, category) {
+ _getDragManager(this, category).destroyDroppable(el);
+ },
+ unbindDroppable: function (el, evt, fn, category) {
+ _getDragManager(this, category).destroyDroppable(el, evt, fn);
+ },
+
+ droppable :function(el, options) {
+ el = _ju.isArray(el) || (el.length != null && !_ju.isString(el)) ? el: [ el ];
+ var info;
+ options = options || {};
+ options.allowLoopback = false;
+ Array.prototype.slice.call(el).forEach(function(_el) {
+ info = this.info(_el);
+ if (info.el) {
+ this.initDroppable(info.el, options);
+ }
+ }.bind(this));
+ return this;
+ },
+
+ initDroppable: function (el, options, category) {
+ _getDragManager(this, category).droppable(el, options);
+ },
+ isAlreadyDraggable: function (el) {
+ return el._katavorioDrag != null;
+ },
+ isDragSupported: function (el, options) {
+ return true;
+ },
+ isDropSupported: function (el, options) {
+ return true;
+ },
+ isElementDraggable: function (el) {
+ el = _jp.getElement(el);
+ return el._katavorioDrag && el._katavorioDrag.isEnabled();
+ },
+ getDragObject: function (eventArgs) {
+ return eventArgs[0].drag.getDragElement();
+ },
+ getDragScope: function (el) {
+ return el._katavorioDrag && el._katavorioDrag.scopes.join(" ") || "";
+ },
+ getDropEvent: function (args) {
+ return args[0].e;
+ },
+ getUIPosition: function (eventArgs, zoom) {
+ // here the position reported to us by Katavorio is relative to the element's offsetParent. For top
+ // level nodes that is fine, but if we have a nested draggable then its offsetParent is actually
+ // not going to be the jsplumb container; it's going to be some child of that element. In that case
+ // we want to adjust the UI position to account for the offsetParent's position relative to the Container
+ // origin.
+ var el = eventArgs[0].el;
+ if (el.offsetParent == null) {
+ return null;
+ }
+ var finalPos = eventArgs[0].finalPos || eventArgs[0].pos;
+ var p = { left:finalPos[0], top:finalPos[1] };
+ if (el._katavorioDrag && el.offsetParent !== this.getContainer()) {
+ var oc = this.getOffset(el.offsetParent);
+ p.left += oc.left;
+ p.top += oc.top;
+ }
+ return p;
+ },
+ setDragFilter: function (el, filter, _exclude) {
+ if (el._katavorioDrag) {
+ el._katavorioDrag.setFilter(filter, _exclude);
+ }
+ },
+ setElementDraggable: function (el, draggable) {
+ el = _jp.getElement(el);
+ if (el._katavorioDrag) {
+ el._katavorioDrag.setEnabled(draggable);
+ }
+ },
+ setDragScope: function (el, scope) {
+ if (el._katavorioDrag) {
+ el._katavorioDrag.k.setDragScope(el, scope);
+ }
+ },
+ setDropScope:function(el, scope) {
+ if (el._katavorioDrop && el._katavorioDrop.length > 0) {
+ el._katavorioDrop[0].k.setDropScope(el, scope);
+ }
+ },
+ addToPosse:function(el, spec) {
+ var specs = Array.prototype.slice.call(arguments, 1);
+ var dm = _getDragManager(this);
+ _jp.each(el, function(_el) {
+ _el = [ _jp.getElement(_el) ];
+ _el.push.apply(_el, specs );
+ dm.addToPosse.apply(dm, _el);
+ });
+ },
+ setPosse:function(el, spec) {
+ var specs = Array.prototype.slice.call(arguments, 1);
+ var dm = _getDragManager(this);
+ _jp.each(el, function(_el) {
+ _el = [ _jp.getElement(_el) ];
+ _el.push.apply(_el, specs );
+ dm.setPosse.apply(dm, _el);
+ });
+ },
+ removeFromPosse:function(el, posseId) {
+ var specs = Array.prototype.slice.call(arguments, 1);
+ var dm = _getDragManager(this);
+ _jp.each(el, function(_el) {
+ _el = [ _jp.getElement(_el) ];
+ _el.push.apply(_el, specs );
+ dm.removeFromPosse.apply(dm, _el);
+ });
+ },
+ removeFromAllPosses:function(el) {
+ var dm = _getDragManager(this);
+ _jp.each(el, function(_el) { dm.removeFromAllPosses(_jp.getElement(_el)); });
+ },
+ setPosseState:function(el, posseId, state) {
+ var dm = _getDragManager(this);
+ _jp.each(el, function(_el) { dm.setPosseState(_jp.getElement(_el), posseId, state); });
+ },
+ dragEvents: {
+ 'start': 'start', 'stop': 'stop', 'drag': 'drag', 'step': 'step',
+ 'over': 'over', 'out': 'out', 'drop': 'drop', 'complete': 'complete',
+ 'beforeStart':'beforeStart'
+ },
+ animEvents: {
+ 'step': "step", 'complete': 'complete'
+ },
+ stopDrag: function (el) {
+ if (el._katavorioDrag) {
+ el._katavorioDrag.abort();
+ }
+ },
+ addToDragSelection: function (spec) {
+ _getDragManager(this).select(spec);
+ },
+ removeFromDragSelection: function (spec) {
+ _getDragManager(this).deselect(spec);
+ },
+ clearDragSelection: function () {
+ _getDragManager(this).deselectAll();
+ },
+ trigger: function (el, event, originalEvent, payload) {
+ this.getEventManager().trigger(el, event, originalEvent, payload);
+ },
+ doReset:function() {
+ // look for katavorio instances and reset each one if found.
+ for (var key in this) {
+ if (key.indexOf("_katavorio_") === 0) {
+ this[key].reset();
+ }
+ }
+ },
+ getEventManager:function() {
+ return _getEventManager(this);
+ },
+ on : function(el, event, callback) {
+ // TODO: here we would like to map the tap event if we know its
+ // an internal bind to a click. we have to know its internal because only
+ // then can we be sure that the UP event wont be consumed (tap is a synthesized
+ // event from a mousedown followed by a mouseup).
+ //event = { "click":"tap", "dblclick":"dbltap"}[event] || event;
+ this.getEventManager().on.apply(this, arguments);
+ return this;
+ },
+ off : function(el, event, callback) {
+ this.getEventManager().off.apply(this, arguments);
+ return this;
+ }
+
+ });
+
+ var ready = function (f) {
+ var _do = function () {
+ if (/complete|loaded|interactive/.test(document.readyState) && typeof(document.body) !== "undefined" && document.body != null) {
+ f();
+ }
+ else {
+ setTimeout(_do, 9);
+ }
+ };
+
+ _do();
+ };
+ ready(_jp.init);
+
+}).call(typeof window !== 'undefined' ? window : this);
diff --git a/src/components/workflow/mixins.js b/src/components/workflow/mixins.js
new file mode 100644
index 0000000..37b0d58
--- /dev/null
+++ b/src/components/workflow/mixins.js
@@ -0,0 +1,157 @@
+export const easyFlowMixin = {
+ data() {
+ return {
+ jsplumbSetting: {
+ // 动态锚点、位置自适应
+ Anchors: ['Top', 'TopCenter', 'TopRight', 'TopLeft', 'Right', 'RightMiddle', 'Bottom', 'BottomCenter', 'BottomRight', 'BottomLeft', 'Left', 'LeftMiddle'],
+ // 容器ID
+ Container: 'efContainer',
+ // 连线的样式,直线或者曲线等,可选值: StateMachine、Flowchart,Bezier、Straight
+ Connector: ['Bezier', {curviness: 100}],
+ // Connector: ['Straight', {stub: 20, gap: 1}],
+ // Connector: ['Flowchart', {stub: 30, gap: 1, alwaysRespectStubs: false, midpoint: 0.5, cornerRadius: 10}],
+ // Connector: ['StateMachine', {margin: 5, curviness: 10, proximityLimit: 80}],
+ // 鼠标不能拖动删除线
+ ConnectionsDetachable: false,
+ // 删除线的时候节点不删除
+ DeleteEndpointsOnDetach: false,
+ /**
+ * 连线的两端端点类型:圆形
+ * radius: 圆的半径,越大圆越大
+ */
+ // Endpoint: ['Dot', {radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover'}],
+ /**
+ * 连线的两端端点类型:矩形
+ * height: 矩形的高
+ * width: 矩形的宽
+ */
+ // Endpoint: ['Rectangle', {height: 20, width: 20, cssClass: 'ef-rectangle', hoverClass: 'ef-rectangle-hover'}],
+ /**
+ * 图像端点
+ */
+ // Endpoint: ['Image', {src: 'https://www.easyicon.net/api/resizeApi.php?id=1181776&size=32', cssClass: 'ef-img', hoverClass: 'ef-img-hover'}],
+ /**
+ * 空白端点
+ */
+ Endpoint: ['Blank', {Overlays: ''}],
+ // Endpoints: [['Dot', {radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover'}], ['Rectangle', {height: 20, width: 20, cssClass: 'ef-rectangle', hoverClass: 'ef-rectangle-hover'}]],
+ /**
+ * 连线的两端端点样式
+ * fill: 颜色值,如:#12aabb,为空不显示
+ * outlineWidth: 外边线宽度
+ */
+ EndpointStyle: {fill: '#1879ffa1', outlineWidth: 1},
+ // 是否打开jsPlumb的内部日志记录
+ LogEnabled: true,
+ /**
+ * 连线的样式
+ */
+ PaintStyle: {
+ // 线的颜色
+ stroke: '#E0E3E7',
+ // 线的粗细,值越大线越粗
+ strokeWidth: 1,
+ // 设置外边线的颜色,默认设置透明,这样别人就看不见了,点击线的时候可以不用精确点击,参考 https://blog.csdn.net/roymno2/article/details/72717101
+ outlineStroke: 'transparent',
+ // 线外边的宽,值越大,线的点击范围越大
+ outlineWidth: 10
+ },
+ DragOptions: {cursor: 'pointer', zIndex: 2000},
+ /**
+ * 叠加 参考: https://www.jianshu.com/p/d9e9918fd928
+ */
+ Overlays: [
+ // 箭头叠加
+ ['Arrow', {
+ width: 10, // 箭头尾部的宽度
+ length: 8, // 从箭头的尾部到头部的距离
+ location: 1, // 位置,建议使用0~1之间
+ direction: 1, // 方向,默认值为1(表示向前),可选-1(表示向后)
+ foldback: 0.623 // 折回,也就是尾翼的角度,默认0.623,当为1时,为正三角
+ }],
+ // ['Diamond', {
+ // events: {
+ // dblclick: function (diamondOverlay, originalEvent) {
+ // console.log('double click on diamond overlay for : ' + diamondOverlay.component)
+ // }
+ // }
+ // }],
+ ['Label', {
+ label: '',
+ location: 0.1,
+ cssClass: 'aLabel'
+ }]
+ ],
+ // 绘制图的模式 svg、canvas
+ RenderMode: 'svg',
+ // 鼠标滑过线的样式
+ HoverPaintStyle: {stroke: '#b0b2b5', strokeWidth: 1},
+ // 滑过锚点效果
+ // EndpointHoverStyle: {fill: 'red'}
+ Scope: 'jsPlumb_DefaultScope' // 范围,具有相同scope的点才可连接
+ },
+ /**
+ * 连线参数
+ */
+ jsplumbConnectOptions: {
+ isSource: true,
+ isTarget: true,
+ // 动态锚点、提供了4个方向 Continuous、AutoDefault
+ anchor: 'Continuous',
+ // 设置连线上面的label样式
+ labelStyle: {
+ cssClass: 'flowLabel'
+ },
+ // 修改了jsplumb 源码,支持label 为空传入自定义style
+ emptyLabelStyle: {
+ cssClass: 'emptyFlowLabel'
+ }
+ },
+ /**
+ * 源点配置参数
+ */
+ jsplumbSourceOptions: {
+ // 设置可以拖拽的类名,只要鼠标移动到该类名上的DOM,就可以拖拽连线
+ filter: '.flow-node-drag',
+ filterExclude: false,
+ anchor: 'Continuous',
+ // 是否允许自己连接自己
+ allowLoopback: true,
+ maxConnections: -1,
+ onMaxConnections: function (info, e) {
+ console.log(`超过了最大值连线: ${info.maxConnections}`)
+ }
+ },
+ // 参考 https://www.cnblogs.com/mq0036/p/7942139.html
+ jsplumbSourceOptions2: {
+ // 设置可以拖拽的类名,只要鼠标移动到该类名上的DOM,就可以拖拽连线
+ filter: '.flow-node-drag',
+ filterExclude: false,
+ // anchor: 'Continuous',
+ // 是否允许自己连接自己
+ allowLoopback: true,
+ connector: ['Flowchart', {curviness: 50}],
+ connectorStyle: {
+ // 线的颜色
+ stroke: 'red',
+ // 线的粗细,值越大线越粗
+ strokeWidth: 1,
+ // 设置外边线的颜色,默认设置透明,这样别人就看不见了,点击线的时候可以不用精确点击,参考 https://blog.csdn.net/roymno2/article/details/72717101
+ outlineStroke: 'transparent',
+ // 线外边的宽,值越大,线的点击范围越大
+ outlineWidth: 10
+ },
+ connectorHoverStyle: {stroke: 'red', strokeWidth: 2}
+ },
+ jsplumbTargetOptions: {
+ // 设置可以拖拽的类名,只要鼠标移动到该类名上的DOM,就可以拖拽连线
+ filter: '.flow-node-drag',
+ filterExclude: false,
+ // 是否允许自己连接自己
+ anchor: 'Continuous',
+ allowLoopback: true,
+ dropOptions: {hoverClass: 'ef-drop-hover'}
+ }
+ }
+ }
+}
diff --git a/src/components/workflow/node.vue b/src/components/workflow/node.vue
new file mode 100644
index 0000000..d5a417a
--- /dev/null
+++ b/src/components/workflow/node.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+ {{ node.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/workflow/node_filter.vue b/src/components/workflow/node_filter.vue
new file mode 100644
index 0000000..9f4f965
--- /dev/null
+++ b/src/components/workflow/node_filter.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+
+
+
+ 字段
+ 条件
+ 值
+ 操作
+
+
+
+ { fieldChange(field, index) }" size="small" v-model="item.field"
+ placeholder="请选择">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/workflow/node_form.vue b/src/components/workflow/node_form.vue
new file mode 100644
index 0000000..7544418
--- /dev/null
+++ b/src/components/workflow/node_form.vue
@@ -0,0 +1,340 @@
+
+
+
+
+
+
+
diff --git a/src/components/workflow/node_menu.vue b/src/components/workflow/node_menu.vue
new file mode 100644
index 0000000..b76fa81
--- /dev/null
+++ b/src/components/workflow/node_menu.vue
@@ -0,0 +1,126 @@
+
+
+
+
diff --git a/src/components/workflow/panel.vue b/src/components/workflow/panel.vue
new file mode 100644
index 0000000..415b144
--- /dev/null
+++ b/src/components/workflow/panel.vue
@@ -0,0 +1,594 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/workflow/utils.js b/src/components/workflow/utils.js
new file mode 100644
index 0000000..2874a41
--- /dev/null
+++ b/src/components/workflow/utils.js
@@ -0,0 +1,29 @@
+// 是否具有该线
+export function hasLine(data, from, to) {
+ for (let i = 0; i < data.lineList.length; i++) {
+ let line = data.lineList[i]
+ if (line.from === from && line.to === to) {
+ return true
+ }
+ }
+ return false
+}
+
+// 是否含有相反的线
+export function hashOppositeLine(data, from, to) {
+ return hasLine(data, to, from)
+}
+
+// 获取连线
+export function getConnector(jsp, from, to) {
+ let connection = jsp.getConnections({
+ source: from,
+ target: to
+ })[0]
+ return connection
+}
+
+// 获取唯一标识
+export function uuid() {
+ return Math.random().toString(36).substr(3, 10)
+}
diff --git a/src/extension/bi/bimanage/Bi_db_dim.js b/src/extension/bi/bimanage/Bi_db_dim.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/bi/bimanage/Bi_db_dim.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/bi/bimanage/Bi_db_set.js b/src/extension/bi/bimanage/Bi_db_set.js
new file mode 100644
index 0000000..27217a2
--- /dev/null
+++ b/src/extension/bi/bimanage/Bi_db_set.js
@@ -0,0 +1,88 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '设计', //按钮名称
+ icon: 'el-icon-s-data', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要设计的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行设计!');
+ }
+ window.open(this.http.ipAddress + 'BiManage/AppPage/DATABI/DSETEDIT.html?ID=' + selectRow[0].ID + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/bi/bimanage/Bi_db_source.js b/src/extension/bi/bimanage/Bi_db_source.js
new file mode 100644
index 0000000..3db1f98
--- /dev/null
+++ b/src/extension/bi/bimanage/Bi_db_source.js
@@ -0,0 +1,123 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: {
+ view: [], box:
+ [
+ {
+ name: "连接测试",
+ icon: 'el-icon-question',
+ value: 'Edit',
+ class: '',
+ type: 'success',
+ index: 1,//显示的位置
+ onClick: function () {
+ //this.editFormFields.ID = 0;
+ var param = {
+ P1: JSON.stringify(this.editFormFields),
+ Action: "DATABI_TESTBIDBSOURCE"
+ };
+ this.http.post("/api/Bll/ExeAction", param, "正在执行....").then((resultData) => {
+ if (resultData.ErrorMsg == "" && resultData.Result == '1') {
+ this.$Message.success('连接成功');
+ }
+ else {
+ this.$Message.error(resultData.ErrorMsg);
+ }
+ });
+ }
+ }], detail: []
+ }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ var dbType = this.getFormOption('DBType');
+ this.boxOptions.labelWidth = 120;
+ dbType.onChange = (val, item) => {
+ if (val == "MYSQL") {
+ this.editFormFields["Port"] = 3306;
+ }
+ else {
+ this.editFormFields["Port"] = 1433;
+ }
+ };
+
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.boxOptions.height = 500;
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/bi/bimanage/Bi_db_ybp.js b/src/extension/bi/bimanage/Bi_db_ybp.js
new file mode 100644
index 0000000..c7d9c72
--- /dev/null
+++ b/src/extension/bi/bimanage/Bi_db_ybp.js
@@ -0,0 +1,103 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '设计', //按钮名称
+ icon: 'el-icon-s-data', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'success', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要设计的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行设计!');
+ }
+ window.open(this.http.ipAddress + 'BiManage/AppPage/DATABI/YBPBuild.html?id=' + selectRow[0].ID + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ this.buttons.splice(4,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '预览', //按钮名称
+ icon: 'el-icon-s-data', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要预览的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行预览!');
+ }
+ window.open(this.http.ipAddress + 'BiManage/AppPage/DATABI/YBPVIEW.html?ID=' + selectRow[0].ID + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/bi/bimanage/Bi_desktop.js b/src/extension/bi/bimanage/Bi_desktop.js
new file mode 100644
index 0000000..e3e24b5
--- /dev/null
+++ b/src/extension/bi/bimanage/Bi_desktop.js
@@ -0,0 +1,88 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ let column = this.columns.find((x) => {
+ return x.field == 'IsDefault';
+ });
+ column.edit = {
+ type: 'switch',
+ keep: true
+ };
+ //是否可用字段设置切换事件并保存到数据库
+ column.onChange = (value, row, tableData) => {
+ let url = `api/Bi_desktop/updateStatus?desktopId=${row.DesktopId}&statusFlag=${row.IsDefault}`;
+ this.http.get(url, {}, true).then((result) => {
+ this.search();
+ this.$Message.success(result);
+ });
+ };
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/Cal_Plan.js b/src/extension/calendar/calendar/Cal_Plan.js
new file mode 100644
index 0000000..5c78ef3
--- /dev/null
+++ b/src/extension/calendar/calendar/Cal_Plan.js
@@ -0,0 +1,174 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent, defineAsyncComponent } from 'vue';
+import modelBody from "./calendar/Cal_PlanModelBody.vue"
+import modelHeader from "./calendar/Cal_PlanModelHeader.vue"
+import modelFooter from "./calendar/Cal_PlanModelFooter.vue"
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: modelBody,
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 450;
+ this.height = this.height - 100;
+ //自定义弹出框的高与宽
+ this.boxOptions.height = document.body.clientHeight * 0.9;
+ this.boxOptions.width = document.body.clientWidth * 0.8;
+ var shiftType = this.getFormOption('ShiftType');
+ shiftType.onChange = (value, option) => {
+ if(value=="BB")
+ {
+ this.$refs.modelBody.$refs.table1.rowData = [
+ {PlanShiftName: "白班",StartTime: "08:00", EndTime: "18:00"}
+ ]
+ }
+ else if(value=="LBD")
+ {
+ this.$refs.modelBody.$refs.table1.rowData = [
+ {PlanShiftName: "白班",StartTime: "08:00", EndTime: "20:00"},
+ {PlanShiftName: "夜班",StartTime: "20:00", EndTime: "08:00"}
+ ]
+ }
+ else
+ {
+ this.$refs.modelBody.$refs.table1.rowData = [
+ {PlanShiftName: "白班",StartTime: "08:00", EndTime: "16:00"},
+ {PlanShiftName: "中班",StartTime: "16:00", EndTime: "24:00"},
+ {PlanShiftName: "夜班",StartTime: "00:00", EndTime: "08:00"}
+ ]
+ }
+
+ };
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ this.setFormData(formData);
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台Equip_SpotMaintPlanService的新建方法
+ //后台从对象里直接取extra的值
+ let extra = {
+ table1List: this.$refs.modelBody.$refs.table1.rowData,//获取从表1的行数据
+ table2List: this.$refs.modelBody.$refs.table2.rowData//获取从表2的行数据
+ }
+ formData.extra = JSON.stringify(extra);
+ },
+ resetUpdateFormAfter() { //编辑弹出框时,点重置时,可自定义重置
+ console.log('resetUpdateFormAfter')
+ return true;
+ },
+ resetAddFormAfter() { //新建弹出框时,点重置时,可自定义重置
+ console.log('resetAddFormAfter')
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ if (this.currentAction == 'Add') {
+ this.editFormFields.Status = "1"
+ }
+ this.editFormFields.ChangeShiftType = "DAY"
+ var _button = this.boxButtons.find((x) => {
+ return x.value == 'save';
+ });
+ if(this.currentAction =="update" && row.Status == "2")
+ {
+ _button.disabled= true;
+ }
+ else
+ {
+ _button.disabled= false;
+ };
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "PlanCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ if (this.currentAction =="update" && row.Status == "2" && (x.field == 'PlanName' || x.field == 'PlanCode' ||x.field == 'TeamType' ||x.field == 'Status' ||x.field == 'StartDate' ||x.field == 'EndDate' ||x.field == 'ShiftType' ||x.field == 'ChangeShiftType' ||x.field == 'Remark') ) {
+ x.readonly = true;
+ }
+ else
+ {
+ x.readonly = false;
+ }
+ if (x.field == "ChangeShiftType") {
+ x.readonly = true;
+ }
+ })
+ })
+ this.$nextTick(() => {
+ //这里没有给弹出框中的表格传参,如果需要参数可以通过 this.$emit("parentCall", 获取页面的参数
+ //具体见自定义页面Equip_SpotMaintPlanModelBody.vue中的modelOpen方法的使用 this.$emit("parentCall", ($this) => {
+ this.$refs.modelBody.modelOpen();
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/Cal_PlanShift.js b/src/extension/calendar/calendar/Cal_PlanShift.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/calendar/calendar/Cal_PlanShift.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/Cal_PlanTeam.js b/src/extension/calendar/calendar/Cal_PlanTeam.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/calendar/calendar/Cal_PlanTeam.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/Cal_Team.js b/src/extension/calendar/calendar/Cal_Team.js
new file mode 100644
index 0000000..eeef4e8
--- /dev/null
+++ b/src/extension/calendar/calendar/Cal_Team.js
@@ -0,0 +1,102 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import modelHeader from "./calendar/UserModelBody.vue"
+import gridFooter from './calendar/UserGridFooter.vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ //明细表选择数据源操作
+ //获取明细表备注列,给备注列添加选择数据操作
+ this.detailOptions.buttons.unshift({
+ name: '选择用户', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0], "wareHouse");
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "TeamCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/Cal_TeamMember.js b/src/extension/calendar/calendar/Cal_TeamMember.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/calendar/calendar/Cal_TeamMember.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/Cal_TeamShift.js b/src/extension/calendar/calendar/Cal_TeamShift.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/calendar/calendar/Cal_TeamShift.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/calendar/calendar/calendar/Cal_PlanModelBody.vue b/src/extension/calendar/calendar/calendar/Cal_PlanModelBody.vue
new file mode 100644
index 0000000..bc06b43
--- /dev/null
+++ b/src/extension/calendar/calendar/calendar/Cal_PlanModelBody.vue
@@ -0,0 +1,278 @@
+
+
+
+
+
+ 班次
+
+
+
+
+ 删除行
+
+
+
+
+
+
+
+
+
+
+
+ 班组
+
+
+
+ 添加行
+ 删除行
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/extension/calendar/calendar/calendar/Cal_PlanModelFooter.vue b/src/extension/calendar/calendar/calendar/Cal_PlanModelFooter.vue
new file mode 100644
index 0000000..1c0252b
--- /dev/null
+++ b/src/extension/calendar/calendar/calendar/Cal_PlanModelFooter.vue
@@ -0,0 +1,148 @@
+
+
+
+
+ 班组编码:
+
+ 班组名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/calendar/calendar/calendar/Cal_PlanModelHeader.vue b/src/extension/calendar/calendar/calendar/Cal_PlanModelHeader.vue
new file mode 100644
index 0000000..e4eb95e
--- /dev/null
+++ b/src/extension/calendar/calendar/calendar/Cal_PlanModelHeader.vue
@@ -0,0 +1,180 @@
+
+
+
+
+ 设备编码:
+
+ 设备名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/calendar/calendar/calendar/UserGridFooter.vue b/src/extension/calendar/calendar/calendar/UserGridFooter.vue
new file mode 100644
index 0000000..a7c03d7
--- /dev/null
+++ b/src/extension/calendar/calendar/calendar/UserGridFooter.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/calendar/calendar/calendar/UserModelBody.vue b/src/extension/calendar/calendar/calendar/UserModelBody.vue
new file mode 100644
index 0000000..96c02f2
--- /dev/null
+++ b/src/extension/calendar/calendar/calendar/UserModelBody.vue
@@ -0,0 +1,113 @@
+
+
+
+
+ 帐号:
+
+ 真实姓名:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/Base_DefectItem.js b/src/extension/custom/custom/Base_DefectItem.js
new file mode 100644
index 0000000..5e468c3
--- /dev/null
+++ b/src/extension/custom/custom/Base_DefectItem.js
@@ -0,0 +1,259 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.boxOptions.labelWidth = 120;
+ //设置查询表单的标签文字宽度
+ this.labelWidth = 120;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.editFormOptions.splice(this.editFormOptions.length, 0, [{
+ colSize: 12,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+
+ }
+ }])
+ //增加扩展字段 start
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_DefectItem", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let data = [];
+ let isRequired = item.fieldAttr == null ? false : item.fieldAttr.includes("required");
+ let isReadyonly = item.fieldAttr == null ? false : item.fieldAttr.includes("readonly");
+ this.editFormFields[fieldCode] = "";
+ if (fieldType == "select" || fieldType == "switch" || fieldType == "checkbox" || fieldType == "selectList") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ dataKey: dataDic,
+ data: [],
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ })
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: 'string',
+ bind: { key: dataDic, data: [] },
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "img") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "textarea" || fieldType == "text" || fieldType == "number" || fieldType == "decimal" || fieldType == "phone") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "date" || fieldType == "datetime") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: "text"
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ if ((index + 1) % 2 == 0 || (index + 1) == result.length) {
+ this.editFormOptions.push(editFormObj);
+ editFormObj = [];
+ }
+ }))
+ //刷新字典数据源
+ this.initDicKeys();
+ });
+ //增加扩展字段 end
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ var that = this;
+
+ that.http.ajax({
+ url: "api/Base_DefectItem_ExtendData/getExtendDataByDefectItemID",
+ json: true,
+ success: function (data) {
+ if (data.length > 0) {
+ result.forEach(function (ele, index) {
+ var dataDefect = data.filter(item => item.DefectItem_Id == ele.DefectItem_Id);
+ dataDefect.forEach(function (dataEle, dataIndex) {
+ result[index][dataEle.FieldCode] = dataEle.FieldValue
+ })
+ })
+ }
+ },
+ type: "get",
+ async: false,
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ this.setFormData(formData);
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台App_ReportPriceService的新建方法
+ //后台从对象里直接取extra的值
+ formData.extra = JSON.stringify(formData.mainData);
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "DefectItemCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_DefectItem", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let fieldAttr = item.fieldAttr;
+ let guideWords = item.guideWords;
+ let defaultValue = item.defaultValue;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == fieldCode && guideWords != "") {
+ x.placeholder = guideWords;
+ }
+ if (this.currentAction == 'Add' && x.field == fieldCode && defaultValue != "") {
+ this.editFormFields[fieldCode] = defaultValue;
+ }
+ })
+ })
+ }))
+ // //刷新字典数据源
+ // this.initDicKeys();
+ });
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_DefectItem_ExtendData.js b/src/extension/custom/custom/Base_DefectItem_ExtendData.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_DefectItem_ExtendData.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_DesktopMenu.js b/src/extension/custom/custom/Base_DesktopMenu.js
new file mode 100644
index 0000000..59ced34
--- /dev/null
+++ b/src/extension/custom/custom/Base_DesktopMenu.js
@@ -0,0 +1,112 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import Base_DesktopMenuModelBody from './custom_extend/Base_DesktopMenuModelBody'
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: Base_DesktopMenuModelBody,
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 450;
+ var menuId = this.getFormOption('MenuId');
+ menuId.onChange = (val, item) => {
+ this.http.get('api/menu/getTreeItemById?menuId=' + val, {}, true).then((result) => {
+ console.log("8888", result);
+ this.editFormFields["MenuName"] = result.MenuName;
+ this.editFormFields["MenuUrl"] = result.Url;
+ });
+ };
+ //选择背景颜色
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'Color') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.open();
+ }
+ }
+ }
+ })
+ })
+ },
+ getRow(color) {
+ this.editFormFields["Color"] = color;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_ExcelTemplate.js b/src/extension/custom/custom/Base_ExcelTemplate.js
new file mode 100644
index 0000000..f756af0
--- /dev/null
+++ b/src/extension/custom/custom/Base_ExcelTemplate.js
@@ -0,0 +1,142 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import gridHeader from './custom_extend/Base_ExcelTemplateGridHeader.vue'
+
+//声明vue对象
+let $this;
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: gridHeader,
+ gridBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'warning',
+ closable: false, title: '先编辑导出Excel模版,之后切换默认的模版,然后在具体业务表单进行模版导出'
+ }, ''),
+ ]
+ }
+ },
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 450;
+ $this = this;
+ let column = this.columns.find((x) => {
+ return x.field == 'StatusFlag';
+ });
+ column.edit = {
+ type: 'switch',
+ keep: true
+ };
+ //是否可用字段设置切换事件并保存到数据库
+ column.onChange = (value, row, tableData) => {
+ let url = `api/Base_ExcelTemplate/updateStatus?templateId=${row.ExcelTemplateId}&statusFlag=${row.StatusFlag}`;
+ this.http.get(url, {}, true).then((result) => {
+ this.search();
+ this.$Message.success(result);
+ });
+ };
+ this.buttons.splice(2, 0, ...[{
+ name: "模版编辑说明",
+ icon: 'el-icon-printer',
+ type: 'warning',
+ onClick: function () {
+ this.$refs.gridHeader.open()
+ }
+ }])
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ if (this.catalogIds) {
+ param.wheres.push({
+ name: 'CatalogId',
+ value: this.catalogIds,
+ displayType: 'selectList'
+ });
+ }
+ return true;
+ },
+ nodeClick(catalogIds, nodes, nodesList) { //左边树节点点击事件
+ //左边树节点的甩有子节点,用于查询数据
+ this.nodesList = nodesList;
+ this.catalogIds = catalogIds.join(',');
+ //左侧树选中节点的所有父节点,用于新建时设置级联的默认值
+ this.nodes = nodes;
+ if (this.nodes.length == 1) {
+ this.$Message.error("请选择最下级节点");
+ return false;
+ }
+ this.search();
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ if (this.currentAction == 'Add') {
+ //新建时设置左边树选中的节点
+ this.editFormFields.CatalogId = this.nodes;
+ }
+ if (row.isDefault == "1") {
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == "Remark") {
+ item.readonly = true;
+ }
+ })
+ })
+ }
+ else
+ {
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == "Remark") {
+ item.readonly = false;
+ }
+ })
+ })
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_Language.js b/src/extension/custom/custom/Base_Language.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_Language.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_MaterialDetailTree.js b/src/extension/custom/custom/Base_MaterialDetailTree.js
new file mode 100644
index 0000000..86a7b15
--- /dev/null
+++ b/src/extension/custom/custom/Base_MaterialDetailTree.js
@@ -0,0 +1,135 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import Base_MaterialDetailTreeModelBody from './custom_extend/ProductModelBody'
+import extendHeader from "./custom_extend/doc_viewGirdHeader.vue"
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: extendHeader,//自定义扩展查询界面header部份
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: Base_MaterialDetailTreeModelBody,
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { //扩展的按钮
+ //查询界面的按钮
+ view: [{
+ name: "BOM批量出库",
+ icon: 'el-icon-upload2',
+ value: 'Edit',
+ class: '',
+ type: 'warning',
+ index: 1,//显示的位置
+ onClick: function () {
+ this.$refs.gridHeader.model = true;
+ // this.$message.error("扩展的明细Box按钮,可设置index值指定显示位置,可使用this.$refs拿到包括自定义扩展的所有组件");
+ }
+ }],
+ //弹出框的按钮,配置同上
+ box: [],
+ //弹出框的明细table按钮,配置同上
+ detail: []
+ },
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ //设置主键字段
+ this.rowKey = 'MaterialDetailTree_Id';
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ProductName') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "高级选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.open();
+ }
+ }
+ }
+ })
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ loadTreeChildren(tree, treeNode, resolve) {
+ //加载子节点
+ let url = `api/Base_MaterialDetailTree/getChildrenData?materialDetailTreeId=${tree.MaterialDetailTree_Id}`;
+ this.http.post(url, {}).then((result) => {
+ resolve(result.rows);
+ });
+ },
+ searchBefore(params) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ if (params.wheres.length == 0) {
+ params.value = 1;
+ }
+ return true;
+ },
+ getRow(rows) {
+ //将选择的数据合并到表单中(注意框架生成的代码都是大写,后台自己写的接口是小写的)
+ this.editFormFields.ProductName = rows[0].ProductName;
+ this.editFormFields.ProductCode = rows[0].ProductCode;
+ this.editFormFields.ProductStandard = rows[0].ProductStandard;
+ this.editFormFields.Unit_Id = rows[0].Unit_Id;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == 'ProductName' || x.field == 'ProductCode'|| x.field == 'ProductStandard'||x.field == 'Unit_Id') {
+ x.readonly = true;
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_MaterialDetail_ExtendData.js b/src/extension/custom/custom/Base_MaterialDetail_ExtendData.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_MaterialDetail_ExtendData.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_MeritPay.js b/src/extension/custom/custom/Base_MeritPay.js
new file mode 100644
index 0000000..e05b783
--- /dev/null
+++ b/src/extension/custom/custom/Base_MeritPay.js
@@ -0,0 +1,295 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.boxOptions.labelWidth = 120;
+ this.boxOptions.height = 470;
+ var standardNumber = this.getFormOption('StandardNumber');
+ var standardHour = this.getFormOption('StandardHour');
+ var standardMin = this.getFormOption('StandardMin');
+ var standardSec = this.getFormOption('StandardSec');
+ standardNumber.extra = {
+ text: "/",//显示文本
+ style: "margin-right:10px;",//指定样式
+ }
+ standardHour.extra = {
+ text: "小时",//显示文本
+ style: "margin-right:10px;",//指定样式
+ }
+ standardMin.extra = {
+ text: "分钟",//显示文本
+ style: "margin-right:10px;",//指定样式
+ }
+ standardSec.extra = {
+ text: "秒",//显示文本
+ style: "margin-right:10px;",//指定样式
+ }
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.columns.forEach(x => {
+ if (x.field == 'StandardHour') {
+ x.title = "标准工时(小时)"
+ }
+ if (x.field == 'StandardMin') {
+ x.title = "标准工时(分钟)"
+ }
+ if (x.field == 'StandardSec') {
+ x.title = "标准工时(秒)"
+ }
+ if (x.field == "StandardNumber") {
+ x.title = "标准产出"
+ }
+ });
+ this.editFormOptions.splice(this.editFormOptions.length, 0, [{
+ colSize: 12,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+
+ }
+ }])
+ //增加扩展字段 start
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_MeritPay", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let data = [];
+ let isRequired = item.fieldAttr == null ? false : item.fieldAttr.includes("required");
+ let isReadyonly = item.fieldAttr == null ? false : item.fieldAttr.includes("readonly");
+ this.editFormFields[fieldCode] = "";
+ if (fieldType == "select" || fieldType == "switch" || fieldType == "checkbox" || fieldType == "selectList") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ dataKey: dataDic,
+ data: [],
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ })
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: 'string',
+ bind: { key: dataDic, data: [] },
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "img") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "textarea" || fieldType == "text" || fieldType == "number" || fieldType == "decimal" || fieldType == "phone") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "date" || fieldType == "datetime") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: "text"
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ if ((index + 1) % 2 == 0 || (index + 1) == result.length) {
+ this.editFormOptions.push(editFormObj);
+ editFormObj = [];
+ }
+ }))
+ //刷新字典数据源
+ this.initDicKeys();
+ });
+ //增加扩展字段 end
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ var that = this;
+ that.http.ajax({
+ url: "api/Base_MeritPay_ExtendData/getExtendDataByMeritPayID",
+ json: true,
+ success: function (data) {
+ if (data.length > 0) {
+ result.forEach(function (ele, index) {
+ var dataDefect = data.filter(item => item.MeritPay_Id == ele.MeritPay_Id);
+ dataDefect.forEach(function (dataEle, dataIndex) {
+ result[index][dataEle.FieldCode] = dataEle.FieldValue
+ })
+ })
+ }
+ },
+ type: "get",
+ async: false,
+ });
+ return true;
+ },
+ addBefore(formData) {
+ this.setFormData(formData);
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ this.setFormData(formData);
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台App_ReportPriceService的新建方法
+ //后台从对象里直接取extra的值
+ formData.extra = JSON.stringify(formData.mainData);
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_MeritPay", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let fieldAttr = item.fieldAttr;
+ let guideWords = item.guideWords;
+ let defaultValue = item.defaultValue;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == fieldCode && guideWords != "") {
+ x.placeholder = guideWords;
+ }
+ if (this.currentAction == 'Add' && x.field == fieldCode && defaultValue != "") {
+ this.editFormFields[fieldCode] = defaultValue;
+ }
+ })
+ })
+ }))
+ // //刷新字典数据源
+ // this.initDicKeys();
+ });
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_MeritPay_ExtendData.js b/src/extension/custom/custom/Base_MeritPay_ExtendData.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_MeritPay_ExtendData.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_Notice.js b/src/extension/custom/custom/Base_Notice.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_Notice.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_NumberRule.js b/src/extension/custom/custom/Base_NumberRule.js
new file mode 100644
index 0000000..b1de0f8
--- /dev/null
+++ b/src/extension/custom/custom/Base_NumberRule.js
@@ -0,0 +1,243 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import * as dateUtil from "../../../uitils/dateFormatUtil.js";
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ data() {
+ return {
+ prefixVal: "",
+ submitTimeVal: "",
+ submitTimeText: "",
+ serialNumberVal: "",
+ serialNumberNine: "",
+ };
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() {
+ this.columnIndex = true;
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.boxOptions.labelWidth = 120;
+ this.editFormOptions[this.editFormOptions.length - 1].push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: "编号预览",
+ required: false,
+ field: "NumberPreview",
+ disabled: true,
+ type: "label",
+ inputStyle: { 'color': 'blue', 'font-size': '26px' }
+ });
+ //当订单类型select改变值时,如果选中的是发货(对应字典编号为2),emark,SellNo隐藏,否则显示出来
+ var numReg = /^[0-9]*$/
+ var numRe = new RegExp(numReg);
+ var prefix = this.getFormOption('Prefix');
+ var submitTime = this.getFormOption('SubmitTime');
+ var serialNumber = this.getFormOption('SerialNumber');
+ this.prefixVal = "";
+ this.submitTimeVal = "";
+ this.submitTimeText = "";
+ this.serialNumberVal = "";
+ this.serialNumberNine = "";
+ prefix.onKeyPress = (val) => {
+ if (val.toString() != '[object KeyboardEvent]') {
+ this.prefixVal = val;
+ if (this.currentAction == "update") {
+ this.submitTimeVal = dateUtil.formatTimeStamp(Date.now(), this.editFormFields.SubmitTime);
+ submitTime.data.forEach((kv) => {
+ //根据字典的值判断
+ if (kv.key == this.editFormFields.SubmitTime) {
+ this.submitTimeText = kv.value
+ }
+ });
+ this.serialNumberVal = "";
+ this.serialNumberNine = ""
+ for (var i = 0; i < this.editFormFields.SerialNumber; i++) {
+ if ((i + 1) == this.editFormFields.SerialNumber) {
+ this.serialNumberVal += "1"
+ }
+ else {
+ this.serialNumberVal += "0"
+ }
+ this.serialNumberNine += "9"
+ }
+ serialNumber.extra = {
+ text: "例:" + this.serialNumberNine,//显示文本
+ style: "color:blue;",//指定样式
+ }
+ }
+ this.editFormFields.NumberPreview = this.prefixVal + this.submitTimeVal + this.serialNumberVal;
+ this.editFormFields.GenerativeRule = this.prefixVal + this.submitTimeText + this.serialNumberVal + "~" + this.serialNumberNine;
+ }
+ };
+ submitTime.onChange = (val, item) => {
+ this.submitTimeVal = dateUtil.formatTimeStamp(Date.now(), val);
+ submitTime.data.forEach((kv) => {
+ //根据字典的值判断
+ if (kv.key == val) {
+ this.submitTimeText = kv.value
+ }
+ });
+ if (this.currentAction == "update") {
+ this.prefixVal = this.editFormFields.Prefix;
+ this.serialNumberVal = "";
+ this.serialNumberNine = ""
+ for (var i = 0; i < this.editFormFields.SerialNumber; i++) {
+ if ((i + 1) == this.editFormFields.SerialNumber) {
+ this.serialNumberVal += "1"
+ }
+ else {
+ this.serialNumberVal += "0"
+ }
+ this.serialNumberNine += "9"
+ }
+ serialNumber.extra = {
+ text: "例:" + this.serialNumberNine,//显示文本
+ style: "color:blue;",//指定样式
+ }
+ };
+ this.editFormFields.NumberPreview = this.prefixVal + this.submitTimeVal + this.serialNumberVal;
+ this.editFormFields.GenerativeRule = this.prefixVal + this.submitTimeText + this.serialNumberVal + "~" + this.serialNumberNine;
+ };
+
+ serialNumber.onKeyPress = (val) => {
+ this.serialNumberVal = "";
+ this.serialNumberNine = "";
+ if (val.toString() != '[object KeyboardEvent]') {
+ if (numRe.test(val)) {
+ if (val > 10) {
+ this.$Message.info('流水号不能大于10');
+ return;
+ }
+ for (var i = 0; i < val; i++) {
+ if ((i + 1) == val) {
+ this.serialNumberVal += "1"
+ }
+ else {
+ this.serialNumberVal += "0"
+ }
+ this.serialNumberNine += "9"
+ }
+ }
+ else {
+ this.$Message.error('请输入数字');
+ }
+ }
+ serialNumber.extra = {
+ text: "例:" + this.serialNumberNine,//显示文本
+ style: "color:blue;",//指定样式
+ }
+ if (this.currentAction == "update") {
+ this.prefixVal = this.editFormFields.Prefix;
+ this.submitTimeVal = dateUtil.formatTimeStamp(Date.now(), this.editFormFields.SubmitTime);
+ submitTime.data.forEach((kv) => {
+ //根据字典的值判断
+ if (kv.key == this.editFormFields.SubmitTime) {
+ this.submitTimeText = kv.value
+ }
+ });
+ }
+ this.editFormFields.NumberPreview = this.prefixVal + this.submitTimeVal + this.serialNumberVal;
+ this.editFormFields.GenerativeRule = this.prefixVal + this.submitTimeText + this.serialNumberVal + "~" + this.serialNumberNine;
+ };
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenBefore(row) {
+ this.prefixVal = "";
+ this.submitTimeVal = "";
+ this.submitTimeText = "";
+ this.serialNumberVal = "";
+ this.serialNumberNine = "";
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ // formData.prefix.onChange();
+ if (this.currentAction == 'update') {
+ var prefixVal = "";
+ var submitTimeVal = "";
+ var submitTimeText = "";
+ var serialNumberVal = "";
+ var serialNumberNine = "";
+ var submitTime = this.getFormOption('SubmitTime');
+ var serialNumber = this.getFormOption('SerialNumber');
+ prefixVal = row.Prefix;
+ submitTimeVal = dateUtil.formatTimeStamp(Date.now(), row.SubmitTime);
+ submitTime.data.forEach((kv) => {
+ //根据字典的值判断
+ if (kv.key == row.submitTime) {
+ submitTimeText = kv.value
+ }
+ });
+ for (var i = 0; i < row.SerialNumber; i++) {
+ if ((i + 1) == row.SerialNumber) {
+ serialNumberVal += "1"
+ }
+ else {
+ serialNumberVal += "0"
+ }
+ serialNumberNine += "9"
+ }
+ serialNumber.extra = {
+ text: "例:" + serialNumberNine,//显示文本
+ style: "color:blue;",//指定样式
+ }
+ prefixVal = prefixVal == null ? "" : prefixVal;
+ this.editFormFields.NumberPreview = prefixVal + submitTimeVal + serialNumberVal;
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_PrintCatalog.js b/src/extension/custom/custom/Base_PrintCatalog.js
new file mode 100644
index 0000000..a9c8af6
--- /dev/null
+++ b/src/extension/custom/custom/Base_PrintCatalog.js
@@ -0,0 +1,85 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ //设置主键字段
+ this.rowKey = 'CatalogId';
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ loadTreeChildren(tree, treeNode, resolve) {
+ //加载子节点
+ let url = `api/Base_PrintCatalog/getChildrenData?catalogId=${tree.CatalogId}`;
+ this.http.post(url, {}).then((result) => {
+ resolve(result.rows);
+ });
+ },
+ searchBefore(params) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ if (params.wheres.length == 0) {
+ params.value = 1;
+ }
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_PrintTemplate.js b/src/extension/custom/custom/Base_PrintTemplate.js
new file mode 100644
index 0000000..3868130
--- /dev/null
+++ b/src/extension/custom/custom/Base_PrintTemplate.js
@@ -0,0 +1,150 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'warning',
+ closable: false, title: '先编辑打印模版,之后切换默认的模版,然后在具体业务表单进行打印'
+ }, ''),
+ ]
+ }
+ },
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ this.buttons.splice(3, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '编辑打印模版', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ this.result = this.nodesList.find(item => item.parentId != null)
+ window.open(this.http.ipAddress + 'Print-Designer/index.html?id=' + selectRow[0].PrintTemplateId + '&cat=' + this.result.catalogCode + "&token=" + this.$store.getters.getToken(), '_blank')
+ }
+ });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ let column = this.columns.find((x) => {
+ return x.field == 'StatusFlag';
+ });
+ column.edit = {
+ type: 'switch',
+ keep: true
+ };
+ //是否可用字段设置切换事件并保存到数据库
+ column.onChange = (value, row, tableData) => {
+ let url = `api/Base_PrintTemplate/updateStatus?templateId=${row.PrintTemplateId}&statusFlag=${row.StatusFlag}`;
+ this.http.get(url, {}, true).then((result) => {
+ this.search();
+ this.$Message.success(result);
+ });
+ };
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ nodeClick(catalogIds, nodes, nodesList) { //左边树节点点击事件
+ //左边树节点的甩有子节点,用于查询数据
+ this.nodesList = nodesList;
+ this.catalogIds = catalogIds.join(',');
+ //左侧树选中节点的所有父节点,用于新建时设置级联的默认值
+ this.nodes = nodes;
+ if (this.nodes.length == 1) {
+ this.$Message.error("请选择最下级节点");
+ return false;
+ }
+ this.search();
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ //查询前方法,如果是左边树选择了分类,直接查询分类
+ if (this.catalogIds) {
+ param.wheres.push({
+ name: 'CatalogId',
+ value: this.catalogIds,
+ displayType: 'selectList'
+ });
+ }
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ //点击编辑/新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ if (this.currentAction == 'Add') {
+ //新建时设置左边树选中的节点
+ this.editFormFields.CatalogId = this.nodes;
+ }
+ if (row.isDefault == "1") {
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == "Remark") {
+ item.readonly = true;
+ }
+ })
+ })
+ }
+ else
+ {
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == "Remark") {
+ item.readonly = false;
+ }
+ })
+ })
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_Process.js b/src/extension/custom/custom/Base_Process.js
new file mode 100644
index 0000000..ecd7adb
--- /dev/null
+++ b/src/extension/custom/custom/Base_Process.js
@@ -0,0 +1,261 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import gridFooter from './custom_extend/Base_ProcessGridFooter';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //设置查询表单的标签文字宽度
+ //设置界面上为单选
+ this.single = true;
+ this.labelWidth = 120;
+ //this.tableHeight = (document.body.clientHeight-260)/2;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ this.editFormOptions.splice(this.editFormOptions.length, 0, [{
+ colSize: 12,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+
+ }
+ }])
+ //增加扩展字段 start
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_Process", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let data = [];
+ let isRequired = item.fieldAttr == null ? false : item.fieldAttr.includes("required");
+ let isReadyonly = item.fieldAttr == null ? false : item.fieldAttr.includes("readonly");
+ this.editFormFields[fieldCode] = "";
+ if (fieldType == "select" || fieldType == "switch" || fieldType == "checkbox" || fieldType == "selectList") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ dataKey: dataDic,
+ data: [],
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ })
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: 'string',
+ bind: { key: dataDic, data: [] },
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "img") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "textarea" || fieldType == "text" || fieldType == "number" || fieldType == "decimal" || fieldType == "phone") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "date" || fieldType == "datetime") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: "text"
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ if ((index + 1) % 2 == 0 || (index + 1) == result.length) {
+ this.editFormOptions.push(editFormObj);
+ editFormObj = [];
+ }
+ }))
+ //刷新字典数据源
+ this.initDicKeys();
+ });
+ //增加扩展字段 end
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.boxOptions.labelWidth = 120;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(rows) {
+ //页面查询返回数据时,加载第一条数据的明细
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(rows[0]);
+ });
+ var that = this;
+ that.http.ajax({
+ url: "api/Base_Process_ExtendData/getExtendDataByProcessID",
+ json: true,
+ success: function (data) {
+ if (data.length > 0) {
+ rows.forEach(function (ele, index) {
+ var dataDefect = data.filter(item => item.Process_Id == ele.Process_Id);
+ dataDefect.forEach(function (dataEle, dataIndex) {
+ rows[index][dataEle.FieldCode] = dataEle.FieldValue
+ })
+ })
+ }
+ },
+ type: "get",
+ async: false,
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) {
+ this.setFormData(formData);
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台App_ReportPriceService的新建方法
+ //后台从对象里直接取extra的值
+ formData.extra = JSON.stringify(formData.mainData);
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ProcessCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ };
+ if (x.field == "SubmitWorkLimit" && this.currentAction == "Add") {
+ this.editFormFields.SubmitWorkLimit = [x.data[0].key];
+ }
+ })
+ });
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_Process", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let fieldAttr = item.fieldAttr;
+ let guideWords = item.guideWords;
+ let defaultValue = item.defaultValue;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == fieldCode && guideWords != "") {
+ x.placeholder = guideWords;
+ }
+ if (this.currentAction == 'Add' && x.field == fieldCode && defaultValue != "") {
+ this.editFormFields[fieldCode] = defaultValue;
+ }
+ })
+ })
+ }))
+ // //刷新字典数据源
+ // this.initDicKeys();
+ });
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_ProcessLine.js b/src/extension/custom/custom/Base_ProcessLine.js
new file mode 100644
index 0000000..51beb79
--- /dev/null
+++ b/src/extension/custom/custom/Base_ProcessLine.js
@@ -0,0 +1,140 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import gridFooter from './custom_extend/Base_ProcessLineGridFooter';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'success',
+ closable: false, title: '上下拖动行顺序可以调整工序顺序。【工艺路线-工序列表】类型选择【工序】,则必输后面【工序】列,选择【工艺路线】,则必输后面【工艺路线】列'
+ }, ''),
+ ]
+ }
+ },
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.labelWidth = 120;
+ //this.tableHeight = (document.body.clientHeight-260)/2;
+ this.tableMaxHeight = (document.body.clientHeight - 260)/2;
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.boxOptions.labelWidth = 120;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.draggable=true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ //注意:明细表操作需要写在onInited方法中
+ //给明细表ProductName下拉框添加onChange事件
+ this.detailOptions.columns.forEach(x => {
+ if (x.field == 'Process_Id') {
+ x.onChange = (column, row, tableData) => {
+ var param = {
+ order: "desc",
+ page: 1,
+ rows: 30,
+ sort: "CreateDate",
+ wheres: "[{\"name\":\"Process_Id\",\"value\":\"" + column.Process_Id + "\",\"displayType\":\"number\"}]"
+ };
+ if (column.ProcessLineType == "process") {
+ this.http.post('/api/Base_Process/getPageData', param, true).then((result) => {
+ column.SubmitWorkMatch = result.rows[0].SubmitWorkMatch
+ });
+ }
+ }
+ }
+ if (x.field == 'ProcessLineType') {
+ x.onChange = (column, row, tableData) => {
+ if (column.ProcessLineType == "processLine") {
+ column.SubmitWorkMatch = "";
+ }
+ }
+ }
+ })
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0]);
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ formData.detailData.map((item, index) => {
+ Object.assign(item, { "Sequence": index + 1 })
+ });
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ formData.detailData.map((item, index) => {
+ Object.assign(item, { "Sequence": index + 1 })
+ });
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ProcessLineCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_ProcessLineList.js b/src/extension/custom/custom/Base_ProcessLineList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_ProcessLineList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_ProcessList.js b/src/extension/custom/custom/Base_ProcessList.js
new file mode 100644
index 0000000..b527990
--- /dev/null
+++ b/src/extension/custom/custom/Base_ProcessList.js
@@ -0,0 +1,71 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_Process_ExtendData.js b/src/extension/custom/custom/Base_Process_ExtendData.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_Process_ExtendData.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_Product.js b/src/extension/custom/custom/Base_Product.js
new file mode 100644
index 0000000..32b3738
--- /dev/null
+++ b/src/extension/custom/custom/Base_Product.js
@@ -0,0 +1,268 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ //在表单配置的第二行后,将MyComponent组件添加到表单中
+ this.editFormOptions.splice(this.editFormOptions.length, 0, [{
+ colSize: 12,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+
+ }
+ }])
+ //增加扩展字段 start
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_Product", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let data = [];
+ let isRequired = item.fieldAttr == null ? false : item.fieldAttr.includes("required");
+ let isReadyonly = item.fieldAttr == null ? false : item.fieldAttr.includes("readonly");
+ this.editFormFields[fieldCode] = "";
+ if (fieldType == "select" || fieldType == "switch" || fieldType == "checkbox" || fieldType == "selectList") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ dataKey: dataDic,
+ data: [],
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ })
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: 'string',
+ bind: { key: dataDic, data: [] },
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "img") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ field: fieldCode,
+ readonly: isReadyonly,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ readonly: isReadyonly,
+ width: 150,
+ require: isRequired,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "textarea" || fieldType == "text" || fieldType == "number" || fieldType == "decimal" || fieldType == "phone") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ field: fieldCode,
+ readonly: isReadyonly,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "date" || fieldType == "datetime") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: "text"
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ if ((index + 1) % 2 == 0 || (index + 1) == result.length) {
+ this.editFormOptions.push(editFormObj);
+ editFormObj = [];
+ }
+ }))
+ //刷新字典数据源
+ this.initDicKeys();
+ });
+ //增加扩展字段 end
+ this.boxOptions.height = 490;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'InventoryQty') {
+ item.readonly = true;
+ }
+ })
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ var that = this;
+ that.http.ajax({
+ url: "api/Base_Product_ExtendData/getExtendDataByProductID",
+ json: true,
+ success: function (data) {
+ if (data.length > 0) {
+ result.forEach(function (ele, index) {
+ var dataDefect = data.filter(item => item.Product_Id == ele.Product_Id);
+ dataDefect.forEach(function (dataEle, dataIndex) {
+ result[index][dataEle.FieldCode] = dataEle.FieldValue
+ })
+ })
+ }
+ },
+ type: "get",
+ async: false,
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ formData.mainData.InventoryQty = 0;
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) {
+ this.setFormData(formData);
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台App_ReportPriceService的新建方法
+ //后台从对象里直接取extra的值
+ formData.extra = JSON.stringify(formData.mainData);
+ },
+ addAfter(result) {
+ this.refresh();
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ProductCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Base_Product", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let fieldAttr = item.fieldAttr;
+ let guideWords = item.guideWords;
+ let defaultValue = item.defaultValue;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == fieldCode && guideWords != "") {
+ x.placeholder = guideWords;
+ }
+ if (this.currentAction == 'Add' && x.field == fieldCode && defaultValue != "") {
+ this.editFormFields[fieldCode] = defaultValue;
+ }
+ })
+ })
+ }))
+ // //刷新字典数据源
+ // this.initDicKeys();
+ });
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_Product_ExtendData.js b/src/extension/custom/custom/Base_Product_ExtendData.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Base_Product_ExtendData.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Base_WorkShop.js b/src/extension/custom/custom/Base_WorkShop.js
new file mode 100644
index 0000000..200b160
--- /dev/null
+++ b/src/extension/custom/custom/Base_WorkShop.js
@@ -0,0 +1,82 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 450;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "WorkShopCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Sys_Table_Extend.js b/src/extension/custom/custom/Sys_Table_Extend.js
new file mode 100644
index 0000000..f6024a2
--- /dev/null
+++ b/src/extension/custom/custom/Sys_Table_Extend.js
@@ -0,0 +1,163 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ if(this.$route.path == '/Sys_User_Extend')
+ {
+ this.table.cnName = "用户字段扩展"
+ this.table.url = "/Sys_User_Extend/";
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'TableName') {
+ this.editFormFields.TableName = "Sys_User"
+ item.readonly = true;
+ }
+ })
+ })
+ };
+ if(this.$route.path == '/Base_Product_Extend')
+ {
+ this.table.cnName = "产品定义字段扩展"
+ this.table.url = "/Base_Product_Extend/";
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'TableName') {
+ this.editFormFields.TableName = "Base_Product"
+ item.readonly = true;
+ }
+ })
+ })
+ };
+ if(this.$route.path == '/Base_Process_Extend')
+ {
+ this.table.cnName = "工序字段扩展"
+ this.table.url = "/Base_Process_Extend/";
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'TableName') {
+ this.editFormFields.TableName = "Base_Process"
+ item.readonly = true;
+ }
+ })
+ })
+ };
+ if(this.$route.path == '/Base_MeritPay_Extend')
+ {
+ this.table.cnName = "绩效工资配比字段扩展"
+ this.table.url = "/Base_MeritPay_Extend/";
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'TableName') {
+ this.editFormFields.TableName = "Base_MeritPay"
+ item.readonly = true;
+ }
+ })
+ })
+ };
+ if(this.$route.path == '/Base_DefectItem_Extend')
+ {
+ this.table.cnName = "不良品项字段扩展"
+ this.table.url = "/Base_DefectItem_Extend/";
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'TableName') {
+ this.editFormFields.TableName = "Base_DefectItem"
+ item.readonly = true;
+ }
+ })
+ })
+ };
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 500;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+
+ //获取当前弹出框是新建还是编辑状态
+ let isEDIT = this.currentAction == this.const.EDIT;
+ //点击弹出框后,如果是编辑状态,禁止编辑帐号,如果新建状态,将帐号字段设置为可编辑
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "TableName" || x.field == "FieldName" || x.field == "FieldType") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.disabled = isEDIT;
+ }
+ })
+ });
+ if(this.$route.path == '/Sys_User_Extend')
+ {
+ this.editFormFields.TableName = "Sys_User"
+ }
+ if(this.$route.path == '/Base_Product_Extend')
+ {
+ this.editFormFields.TableName = "Base_Product"
+ }
+ if(this.$route.path == '/Base_Process_Extend')
+ {
+ this.editFormFields.TableName = "Base_Process"
+ }
+ if(this.$route.path == '/Base_MeritPay_Extend')
+ {
+ this.editFormFields.TableName = "Base_MeritPay"
+ }
+ if(this.$route.path == '/Base_DefectItem_Extend')
+ {
+ this.editFormFields.TableName = "Base_DefectItem"
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Sys_Unit.js b/src/extension/custom/custom/Sys_Unit.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/custom/custom/Sys_Unit.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/Sys_User_ExtendData.js b/src/extension/custom/custom/Sys_User_ExtendData.js
new file mode 100644
index 0000000..2b12e78
--- /dev/null
+++ b/src/extension/custom/custom/Sys_User_ExtendData.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/View_Base_MaterialDetail.js b/src/extension/custom/custom/View_Base_MaterialDetail.js
new file mode 100644
index 0000000..7e531dd
--- /dev/null
+++ b/src/extension/custom/custom/View_Base_MaterialDetail.js
@@ -0,0 +1,230 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+//自定义选择数据源页面
+import Base_MaterialDetailModelBody from './custom_extend/Base_MaterialDetailModelBody'
+let extension = {
+ data() {
+ return {
+ dicData: []
+ };
+ },
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: Base_MaterialDetailModelBody,
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getDicDate() {
+ var keys = ["productAttr", "unitList", "processLineList"];
+ this.http.post('/api/Sys_Dictionary/GetVueDictionary', keys)
+ .then((dic) => {
+ this.dicData = dic
+ });
+ },
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.boxOptions.labelWidth = 120;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.labelWidth = 120;
+ var parentProduct = this.getFormOption('ParentProduct_Id');
+ var childProduct = this.getFormOption('ChildProduct_Id');
+ var that = this;
+ this.getDicDate();
+ parentProduct.onChange = (val, item) => {
+ that.http.ajax({
+ url: "api/Base_Product/getProductInfoByProductID?productId=" + val,
+ json: true,
+ success: function (data) {
+ that.setProductAreaValue(data, "Parent");
+ },
+ type: "get",
+ async: false,
+ });
+ };
+ childProduct.onChange = (val, item) => {
+ that.http.ajax({
+ url: "api/Base_Product/getProductInfoByProductID?productId=" + val,
+ json: true,
+ success: function (data) {
+ that.setProductAreaValue(data, "Childen");
+ },
+ type: "get",
+ async: false,
+ });
+ };
+
+ //选择数据源功能
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ParentProduct_Id') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "高级选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.openDemo("ParentProduct_Id");
+ }
+ }
+ }
+ if (item.field == 'ChildProduct_Id') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "高级选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.openDemo("ChildProduct_Id");
+ }
+ }
+ }
+ })
+ })
+ this.editFormOptions.splice(1, 0, [{ //往新数组对象中添加新的属性 属性名对应属性值
+ title: "父项产品属性",
+ field: "Parent",
+ readonly: true,
+ type: "textarea",
+ minRows: 5
+ }])
+ this.editFormOptions.splice(3, 0, [{ //往新数组对象中添加新的属性 属性名对应属性值
+ title: "子项产品属性",
+ field: "Childen",
+ readonly: true,
+ type: "textarea",
+ minRows: 5
+ }])
+ },
+ getRow(rows, modelType) {
+ if (modelType == "ParentProduct_Id") {
+ //将选择的数据合并到表单中(注意框架生成的代码都是大写,后台自己写的接口是小写的)
+ this.editFormFields.ParentProduct_Id = rows[0].Product_Id;
+ this.setProductAreaValue(rows, "Parent")
+ }
+ if (modelType == "ChildProduct_Id") {
+ //将选择的数据合并到表单中(注意框架生成的代码都是大写,后台自己写的接口是小写的)
+ this.editFormFields.ChildProduct_Id = rows[0].Product_Id;
+ this.setProductAreaValue(rows, "Childen")
+ }
+ },
+ setProductAreaValue(rows, type) {
+ var productAttributeDic = this.dicData.find(val => val.dicNo == "productAttr")
+ var productAttributeResult = "";
+ var unitResult = "";
+ var unitDic = this.dicData.find(val => val.dicNo == "unitList")
+ var processResult = "";
+ var processDic = this.dicData.find(val => val.dicNo == "processLineList")
+ this.$refs.modelBody.columns.forEach(item => {
+ if (item.field == "ProductAttribute") {
+ if (rows[0].ProductAttribute) {
+ var result = productAttributeDic.data.find(val => val.key == rows[0].ProductAttribute)
+ productAttributeResult = result.value;
+ }
+ }
+ if (item.field == "Unit_Id") {
+ if (rows[0].Unit_Id) {
+ var result = unitDic.data.find(val => val.key == rows[0].Unit_Id)
+ unitResult = result.value;
+ }
+ }
+ if (item.field == "Process_Id") {
+ if (rows[0].Process_Id) {
+ var result = processDic.data.find(val => val.key == rows[0].Process_Id)
+ processResult = result.value;
+ }
+ }
+ })
+ this.editFormFields[type] = "产品编码:" + rows[0].ProductCode + "\r产品名称:" + rows[0].ProductName + "\r产品规格:" + (rows[0].ProductStandard == null ? "" : rows[0].ProductStandard) + "\r产品属性:" + productAttributeResult + "\r库存单位:" + unitResult + "\r工艺路线:" + processResult;
+ },
+
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ var that = this;
+ if(this.currentAction == "update")
+ {
+ that.http.ajax({
+ url: "api/Base_Product/getProductInfoByProductID?productId=" + row.ParentProduct_Id,
+ json: true,
+ success: function (data) {
+ that.setProductAreaValue(data, "Parent");
+ },
+ type: "get",
+ async: false,
+ });
+ that.http.ajax({
+ url: "api/Base_Product/getProductInfoByProductID?productId=" + row.ChildProduct_Id,
+ json: true,
+ success: function (data) {
+ that.setProductAreaValue(data, "Childen");
+ },
+ type: "get",
+ async: false,
+ });
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/custom/custom/custom_extend/Base_DesktopMenuModelBody.vue b/src/extension/custom/custom/custom_extend/Base_DesktopMenuModelBody.vue
new file mode 100644
index 0000000..570f2b1
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/Base_DesktopMenuModelBody.vue
@@ -0,0 +1,43 @@
+
+
+
+ 有默认值
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/custom_extend/Base_ExcelTemplateGridHeader.vue b/src/extension/custom/custom/custom_extend/Base_ExcelTemplateGridHeader.vue
new file mode 100644
index 0000000..8c2bf38
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/Base_ExcelTemplateGridHeader.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+ 销售订单
+
+ 单据头:
+ 单据编号:{{SalesOrderCode}}
+ 创建时间:{{CreateDate}}
+ 明细合计:{{Total}}
+
+ 备 注:{{Remark}}
+
+ 单据体:
+ 产品名称:{{detail.ProductName}}
+ 产品编号:{{detail.ProductCode}}
+ 产品规格:{{detail.ProductStandard}}
+
+ 数 量:{{detail.Qty}}
+ 工单编号:{{detail.WorkOrderCode}}
+ 完成数量:{{detail.FinishQty}}
+
+
+
+ 单据头:
+ 单据编号:{{ProductPlanCode}}
+ 创建时间:{{CreateDate}}
+ 明细合计:{{Total}}
+
+ 备 注:{{Remark}}
+
+ 单据体:
+ 产品名称:{{detail.ProductName}}
+ 产品编号:{{detail.ProductCode}}
+ 产品规格:{{detail.ProductStandard}}
+
+ 数 量:{{detail.Qty}}
+ 工单编号:{{detail.WorkOrderCode}}
+ 完成数量:{{detail.FinishQty}}
+
+
+
+ 单据头:
+ 单据编号:{{AssembleWorkOrderCode}}
+ 工单数量:{{WorkOrderQty}}
+ 创建时间:{{CreateDate}}
+ 明细合计:{{Total}}
+
+ 备 注:{{Remark}}
+
+ 单据体:
+ 产品名称:{{detail.ProductName}}
+ 产品编号:{{detail.ProductCode}}
+ 产品规格:{{detail.ProductStandard}}
+
+ 数 量:{{detail.Qty}}
+ 工单编号:{{detail.WorkOrderCode}}
+ 完成数量:{{detail.FinishQty}}
+ 单位数量:{{detail.UnitQty}}
+ 缺陷数量:{{detail.BadQty}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/custom_extend/Base_MaterialDetailModelBody.vue b/src/extension/custom/custom/custom_extend/Base_MaterialDetailModelBody.vue
new file mode 100644
index 0000000..7c45c90
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/Base_MaterialDetailModelBody.vue
@@ -0,0 +1,138 @@
+
+
+
+
+ 产品编码
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/custom_extend/Base_ProcessGridFooter.vue b/src/extension/custom/custom/custom_extend/Base_ProcessGridFooter.vue
new file mode 100644
index 0000000..5bb6cf1
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/Base_ProcessGridFooter.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/custom_extend/Base_ProcessLineGridFooter.vue b/src/extension/custom/custom/custom_extend/Base_ProcessLineGridFooter.vue
new file mode 100644
index 0000000..d7e6253
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/Base_ProcessLineGridFooter.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/custom_extend/ProductModelBody.vue b/src/extension/custom/custom/custom_extend/ProductModelBody.vue
new file mode 100644
index 0000000..0ed1bc4
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/ProductModelBody.vue
@@ -0,0 +1,148 @@
+
+
+
+
+ 产品编码:
+
+ 产品名称:
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/custom/custom/custom_extend/doc_viewGirdHeader.vue b/src/extension/custom/custom/custom_extend/doc_viewGirdHeader.vue
new file mode 100644
index 0000000..687cc3b
--- /dev/null
+++ b/src/extension/custom/custom/custom_extend/doc_viewGirdHeader.vue
@@ -0,0 +1,76 @@
+
+
+
+
+ 数量:
+
+ 备注:
+
+
+
+ 出库
+ {model=false}"
+ > 关闭
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/equip/equip/Equip_DevCatalog.js b/src/extension/equip/equip/Equip_DevCatalog.js
new file mode 100644
index 0000000..c5d910a
--- /dev/null
+++ b/src/extension/equip/equip/Equip_DevCatalog.js
@@ -0,0 +1,94 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.labelWidth = 120;
+ this.boxOptions.height = 400;
+ this.rowKey = 'DevCatalogId';
+ },
+ loadTreeChildren(tree, treeNode, resolve) {
+ //加载子节点
+ let url = `api/Equip_DevCatalog/getChildrenData?devCatalogId=${tree.DevCatalogId}`;
+ this.http.post(url, {}).then((result) => {
+ resolve(result.rows);
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(params) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ if (params.wheres.length == 0) {
+ params.value = 1;
+ }
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "DevCatalogCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_Device.js b/src/extension/equip/equip/Equip_Device.js
new file mode 100644
index 0000000..2e0ed5d
--- /dev/null
+++ b/src/extension/equip/equip/Equip_Device.js
@@ -0,0 +1,140 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import FileSaver from 'file-saver';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getNowTime() {
+ let dt = new Date()
+ var y = dt.getFullYear()
+ var mt = (dt.getMonth() + 1).toString().padStart(2,'0')
+ var day = dt.getDate().toString().padStart(2,'0')
+ var h = dt.getHours().toString().padStart(2,'0')
+ var m = dt.getMinutes().toString().padStart(2,'0')
+ return y + mt + day + h + m
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 450;
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '打印', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要打印的行!');
+ }
+ // if (selectRow.length != 1) {
+ // return this.$error('只能选择一行数据进行打印!');
+ // }
+ var ids = "";
+ for (var i = 0; i < selectRow.length; i++) {
+ ids += ("'" + selectRow[i].DeviceId + "',");
+ }
+ ids = ids.slice(0,ids.length-1);
+ let html = document.getElementById("collect");
+ window.open(this.http.ipAddress + 'Print-Designer/print.html?cat=Equip_Device&id=' + ids + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ this.buttons.splice(4,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '导出PDF', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let url="/api/Equip_Device/ExportPDF";
+ this.http.get(url,{}, '正在导出数据....').then(content=>{
+ var URL = this.http.webAddress + "/PDF/Device/" + content // URL 为URL地址
+ FileSaver.saveAs(URL, content);
+ })
+ }
+ });
+ },
+ nodeClick(catalogIds, nodes, nodesList) { //左边树节点点击事件
+ //左边树节点的甩有子节点,用于查询数据
+ this.nodesList = nodesList;
+ this.catalogIds = catalogIds.join(',');
+ //左侧树选中节点的所有父节点,用于新建时设置级联的默认值
+ this.nodes = nodes;
+ this.search();
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ //查询前方法,如果是左边树选择了分类,直接查询分类
+ if (this.catalogIds) {
+ param.wheres.push({
+ name: 'ParentId',
+ value: this.catalogIds,
+ displayType: 'selectList'
+ });
+ }
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "DeviceCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_MaintainPaper.js b/src/extension/equip/equip/Equip_MaintainPaper.js
new file mode 100644
index 0000000..2d7d010
--- /dev/null
+++ b/src/extension/equip/equip/Equip_MaintainPaper.js
@@ -0,0 +1,105 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import DeviceModelBody from './equip_extend/Equip_SpotMaintPlanModelHeader'
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: DeviceModelBody,
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 500;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'DeviceName') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "高级选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.openPaper("MaintainPaperId");
+ }
+ }
+ }
+ })
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ setTable1Rows(modelType,_rows){
+ if (modelType == "MaintainPaperId") {
+ //将选择的数据合并到表单中(注意框架生成的代码都是大写,后台自己写的接口是小写的)
+ this.editFormFields.DeviceName = _rows[0].DeviceName
+ this.editFormFields.DeviceCode = _rows[0].DeviceCode
+ this.editFormFields.DeviceBrand = _rows[0].DeviceBrand
+ }
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "MaintainPaperCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_SpotMaintPlan.js b/src/extension/equip/equip/Equip_SpotMaintPlan.js
new file mode 100644
index 0000000..9b932d8
--- /dev/null
+++ b/src/extension/equip/equip/Equip_SpotMaintPlan.js
@@ -0,0 +1,117 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent, defineAsyncComponent } from 'vue';
+import modelBody from "./equip_extend/Equip_SpotMaintPlanModelBody.vue"
+import modelHeader from "./equip_extend/Equip_SpotMaintPlanModelHeader.vue"
+import modelFooter from "./equip_extend/Equip_SpotMaintPlanModelFooter.vue"
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: modelBody,
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.height = this.height - 100;
+ //自定义弹出框的高与宽
+ this.boxOptions.height = document.body.clientHeight * 0.9;
+ this.boxOptions.width = document.body.clientWidth * 0.8;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ this.setFormData(formData);
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台Equip_SpotMaintPlanService的新建方法
+ //后台从对象里直接取extra的值
+ let extra = {
+ table1List: this.$refs.modelBody.$refs.table1.rowData,//获取从表1的行数据
+ table2List: this.$refs.modelBody.$refs.table2.rowData//获取从表2的行数据
+ }
+ formData.extra = JSON.stringify(extra);
+ },
+ resetUpdateFormAfter() { //编辑弹出框时,点重置时,可自定义重置
+ console.log('resetUpdateFormAfter')
+ return true;
+ },
+ resetAddFormAfter() { //新建弹出框时,点重置时,可自定义重置
+ console.log('resetAddFormAfter')
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ if (this.currentAction == 'Add') {
+ this.editFormFields.Status = "1"
+ }
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "SpotMaintPlanCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ //是否子组件渲染完成
+ //新建功时,清空 清空,从表1,从表2的数据
+ this.$nextTick(() => {
+ //这里没有给弹出框中的表格传参,如果需要参数可以通过 this.$emit("parentCall", 获取页面的参数
+ //具体见自定义页面Equip_SpotMaintPlanModelBody.vue中的modelOpen方法的使用 this.$emit("parentCall", ($this) => {
+ this.$refs.modelBody.modelOpen();
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_SpotMaintPlanDevice.js b/src/extension/equip/equip/Equip_SpotMaintPlanDevice.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/equip/equip/Equip_SpotMaintPlanDevice.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_SpotMaintPlanProject.js b/src/extension/equip/equip/Equip_SpotMaintPlanProject.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/equip/equip/Equip_SpotMaintPlanProject.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_SpotMaintWorkOrder.js b/src/extension/equip/equip/Equip_SpotMaintWorkOrder.js
new file mode 100644
index 0000000..cfc81e1
--- /dev/null
+++ b/src/extension/equip/equip/Equip_SpotMaintWorkOrder.js
@@ -0,0 +1,127 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import PlanModelBody from './equip_extend/Equip_SpotMaintWorkOrderModelBody'
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: PlanModelBody,
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 550;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'SpotMaintPlanName') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "高级选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.openPaper();
+ }
+ }
+ }
+ })
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ setSelectRows(_rows){
+ this.editFormFields.SpotMaintPlanId = _rows[0].SpotMaintPlanId;
+ this.editFormFields.SpotMaintPlanName = _rows[0].SpotMaintPlanName;
+ this.editFormFields.SpotMaintPlanCode = _rows[0].SpotMaintPlanCode;
+ this.editFormFields.PlanItemType = _rows[0].PlanItemType.toString();
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ var spotMaintPlanId = this.getFormOption('SpotMaintPlanId');
+ spotMaintPlanId.hidden = true;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "SpotMaintWorkOrderCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ let status = this.getFormOption("Status");
+ if (this.currentAction == 'Add') {
+ this.editFormFields.Status = "1"
+ status.readonly = true;
+ }
+ else
+ {
+ status.readonly = false;
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/Equip_SpotMaintenance.js b/src/extension/equip/equip/Equip_SpotMaintenance.js
new file mode 100644
index 0000000..631a3c7
--- /dev/null
+++ b/src/extension/equip/equip/Equip_SpotMaintenance.js
@@ -0,0 +1,82 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 450;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "SpotMaintenanceCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelBody.vue b/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelBody.vue
new file mode 100644
index 0000000..1d0f13a
--- /dev/null
+++ b/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelBody.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+ 设备清单
+
+
+
+ 添加行
+ 删除行
+
+
+
+
+
+
+
+
+
+
+
+ 点检项目
+
+
+
+ 添加行
+ 删除行
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelFooter.vue b/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelFooter.vue
new file mode 100644
index 0000000..d2eb6ca
--- /dev/null
+++ b/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelFooter.vue
@@ -0,0 +1,151 @@
+
+
+
+
+ 项目编码:
+
+ 项目名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelHeader.vue b/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelHeader.vue
new file mode 100644
index 0000000..e4eb95e
--- /dev/null
+++ b/src/extension/equip/equip/equip_extend/Equip_SpotMaintPlanModelHeader.vue
@@ -0,0 +1,180 @@
+
+
+
+
+ 设备编码:
+
+ 设备名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/equip/equip/equip_extend/Equip_SpotMaintWorkOrderModelBody.vue b/src/extension/equip/equip/equip_extend/Equip_SpotMaintWorkOrderModelBody.vue
new file mode 100644
index 0000000..6cb773b
--- /dev/null
+++ b/src/extension/equip/equip/equip_extend/Equip_SpotMaintWorkOrderModelBody.vue
@@ -0,0 +1,124 @@
+
+
+
+
+ 计划编码:
+
+ 计划名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/production/production/Production_AssembleWorkOrder.js b/src/extension/production/production/Production_AssembleWorkOrder.js
new file mode 100644
index 0000000..684d001
--- /dev/null
+++ b/src/extension/production/production/Production_AssembleWorkOrder.js
@@ -0,0 +1,247 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import modelHeader from "./production_extend/AssembleWorkOrderModelBody.vue"
+import gridFooter from './production_extend/AssembleWorkOrderGridFooter.vue';
+import modelFooter from "./production_extend/AssembleWorkOrderModelFooter.vue"
+import FileSaver from 'file-saver';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'warning',
+ closable: false, title: '点击【数量】【单位数量】可以对数量直接进行修改'
+ }, ''),
+ ]
+ }
+ },
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ onActivated() {
+ let assembleWorkOrderCode = this.$route.query.AssembleWorkOrderCode;
+
+ if (assembleWorkOrderCode) {
+ var param = {
+ order: "desc",
+ page: 1,
+ rows: 30,
+ sort: "CreateDate",
+ wheres: "[{\"name\":\"AssembleWorkOrderCode\",\"value\":\"" + assembleWorkOrderCode + "\",\"displayType\":\"like\"}]"
+ };
+ this.http.post('/api/Production_AssembleWorkOrder/getPageData', param, true).then((result) => {
+ this.$refs.table.rowData = result.rows;
+ });
+ }
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ //显示所有查询条件
+ this.setFiexdSearchForm(true);
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ this.columns.forEach(x => {
+ if (x.field == "FormProcess") {
+ x.render = (h, scope) => {
+ console.log(scope);
+ return [
+ h(resolveComponent('el-progress'), {
+ percentage: scope.row.FormProcess
+ }, null),
+ ]
+ }
+ }
+ });
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '打印', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要打印的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行打印!');
+ }
+ let html = document.getElementById("collect");
+ window.open(this.http.ipAddress + 'Print-Designer/print.html?cat=Production_AssembleWorkOrder&id=' + selectRow[0].AssembleWorkOrder_Id + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ this.buttons.splice(4,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '模版Excel导出', //按钮名称
+ icon: 'el-icon-s-unfold', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行导出!');
+ }
+ let urlSales = 'api/Production_AssembleWorkOrder/exportExcelTemplate?cat=Production_AssembleWorkOrder&AssembleWorkOrder_Id=' + selectRow[0].AssembleWorkOrder_Id;
+ this.http.get(urlSales, {}, true).then((content) => {
+ if(content=="")
+ {
+ this.$error('请先维护模版信息!');
+ }
+ else
+ {
+ var URL = this.http.webAddress + "/Excel/" + content // URL 为URL地址
+ FileSaver.saveAs(URL, content);
+ }
+ });
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择产品', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ //onInited方法设置从表编辑时实时计算值
+ this.detailOptions.columns.forEach(x => {
+ if (x.field == 'ProductionSchedule') {
+ x.render = (h, scope) => {
+ if (scope.row.ProductionSchedule != '-' && scope.row.ProductionSchedule != undefined) {
+ let arr = JSON.parse(scope.row.ProductionSchedule);
+ arr = arr.sort(function (a, b) { //重点在这里,下面有说明
+ return a.Sequence - b.Sequence; //inNum是要根据某个字段进行排序的字段名,
+ })
+ let activeSeq = arr.find(x => x.PercentNum != '100.00%');
+ activeSeq = activeSeq == undefined ? arr.length + 1 : activeSeq.Sequence;
+ return [
+ h(resolveComponent('el-steps'), {
+ active: activeSeq, 'align-center': true
+ }, [
+ arr.map(item => {
+ return h(resolveComponent('el-step'), { title: item.ProcessName, description: item.PercentNum },)
+ })
+ ]),
+ ]
+ }
+ }
+ }
+
+ })
+
+ //在数量后面加一个上传按钮
+ let _index = this.detailOptions.columns.findIndex(x => { return x.field == 'Qty' });
+
+ //这里只是演示,实际操作在代码生成器table显示类型设置为图片后这里就不用操作了
+ //代码生成器中编辑行号设置为0,不要设置为大于0的数据
+
+ //从表动态添加一列(上传图片列),生成上传图片、与删除图片操作
+ this.detailOptions.columns.splice(_index, 0, {
+ field: "operation",
+ title: "操作",
+ width: 150,
+ align: "center",
+ render: (h, { row, column, index }) => {
+ //下面所有需要显示的信息都从row里面取出来
+ return h(
+ "div", { style: { color: '#0c83ff', 'font-size': '13px', cursor: 'pointer' } },
+ [
+ h(
+ "i", {
+ style: { 'margin-right': '10px' },
+ class: ['el-icon-plus'],
+ onClick: (e) => {
+ e.stopPropagation();
+ //记住当前操作的明细表行数据
+ this.$refs.modelFooter.open(index, row.LevelPath);
+ }
+ }, [], '添加下级'
+ )
+ ])
+ },
+ })
+
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0], "生产计划");
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row, "生产计划");
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "AssembleWorkOrderCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_AssembleWorkOrderList.js b/src/extension/production/production/Production_AssembleWorkOrderList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/production/production/Production_AssembleWorkOrderList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_OverWorkOrder.js b/src/extension/production/production/Production_OverWorkOrder.js
new file mode 100644
index 0000000..96f6bb5
--- /dev/null
+++ b/src/extension/production/production/Production_OverWorkOrder.js
@@ -0,0 +1,121 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import i18n from '../../../language'
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ updatestatus(overWorkOrder_Id, status) {
+ let url = 'api/Production_OverWorkOrder/changeUpdate?overWorkOrder_Id=' + overWorkOrder_Id + '&status=' + status;
+ //给工序名称重新绑定数据源
+ this.http.get(url, {}, true).then((result) => {
+ this.$Message.success(result);
+ this.search();
+ });
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.buttons.splice(3, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '审批通过', //按钮名称
+ icon: 'el-icon-video-play', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要审批的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行审批!');
+ }
+ if(selectRow[0].Status != 0)
+ {
+ const approver = i18n.global.t('已经审批的工单{workOrderCode}不允许重复审批!', { workOrderCode: selectRow[0].WorkOrderCode });
+ return this.$error(approver);
+ }
+ this.updatestatus(selectRow[0].OverWorkOrder_Id, 1)
+ }
+ });
+ this.buttons.splice(3, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '审批不通过', //按钮名称
+ icon: 'el-icon-video-play', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要审批的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行审批!');
+ }
+ if(selectRow[0].Status != 0)
+ {
+ const approver = i18n.global.t('已经审批的工单{workOrderCode}不允许重复审批!', { workOrderCode: selectRow[0].WorkOrderCode });
+ return this.$error(approver);
+ }
+ this.updatestatus(selectRow[0].OverWorkOrder_Id, 2)
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_ProductPlan.js b/src/extension/production/production/Production_ProductPlan.js
new file mode 100644
index 0000000..85de16d
--- /dev/null
+++ b/src/extension/production/production/Production_ProductPlan.js
@@ -0,0 +1,174 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import modelHeader from "./production_extend/ProductModelBody.vue"
+import gridFooter from './production_extend/SalesOrderGridFooter.vue';
+import FileSaver from 'file-saver';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'warning',
+ closable: false, title: '点击【数量】可以对订单数量直接进行修改'
+ }, ''),
+ ]
+ }
+ },
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ onActivated() {
+ let productPlanCode = this.$route.query.ProductPlanCode;
+
+ if (productPlanCode) {
+ var param = {
+ order: "desc",
+ page: 1,
+ rows: 30,
+ sort: "CreateDate",
+ wheres: "[{\"name\":\"ProductPlanCode\",\"value\":\"" + productPlanCode + "\",\"displayType\":\"like\"}]"
+ };
+ this.http.post('/api/Production_ProductPlan/getPageData', param, true).then((result) => {
+ this.$refs.table.rowData = result.rows;
+ });
+ }
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '打印', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ let html = document.getElementById("collect");
+ window.open(this.http.ipAddress + 'Print-Designer/print.html?cat=Production_ProductPlan&id=' + selectRow[0].ProductPlan_Id + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ this.buttons.splice(4,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '模版Excel导出', //按钮名称
+ icon: 'el-icon-s-unfold', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行导出!');
+ }
+ let urlSales = 'api/Production_ProductPlan/exportExcelTemplate?cat=Production_ProductPlan&ProductPlan_Id=' + selectRow[0].ProductPlan_Id;
+ this.http.get(urlSales, {}, true).then((content) => {
+ if(content=="")
+ {
+ this.$error('请先维护模版信息!');
+ }
+ else
+ {
+ var URL = this.http.webAddress + "/Excel/" + content // URL 为URL地址
+ FileSaver.saveAs(URL, content);
+ }
+ });
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择产品', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0], "生产计划");
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row,"生产计划");
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ProductPlanCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_ProductPlanList.js b/src/extension/production/production/Production_ProductPlanList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/production/production/Production_ProductPlanList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_ReportWorkOrder.js b/src/extension/production/production/Production_ReportWorkOrder.js
new file mode 100644
index 0000000..e75dec1
--- /dev/null
+++ b/src/extension/production/production/Production_ReportWorkOrder.js
@@ -0,0 +1,236 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import * as dateUtil from "../../../uitils/dateFormatUtil.js";
+import store from '../../../store/index';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ differenceDateTime (beginTime, endTime) {
+ var dateBegin = new Date(beginTime);
+ var dateEnd = new Date(endTime);
+ var dateDiff = dateEnd.getTime() - dateBegin.getTime(); //时间差的毫秒数
+ var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
+ var leave1 = dateDiff % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
+ var hours = Math.floor(leave1 / (3600 * 1000)); //计算出小时数
+ //计算相差分钟数
+ var leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
+ var minutes = Math.floor(leave2 / (60 * 1000)); //计算相差分钟数
+ this.editFormFields["ReoportDurationHour"] = dayDiff * 24 + hours;
+ this.editFormFields["ReoportDurationMinute"] = minutes;
+ if(this.editFormFields["GoodQty"] && beginTime != endTime)
+ {
+ this.editFormFields["ActualProgress"] = (this.editFormFields["GoodQty"] / (dayDiff * 24 + hours + minutes/60)).toFixed(2) + '/1:00:00';
+ }
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ //this.boxOptions.height = document.documentElement.clientHeight * 0.7;
+ this.columnIndex = true;
+ //在表单配置的第二行后,将MyComponent组件添加到表单中
+ this.editFormOptions.splice(this.editFormOptions.length - 2, 0, [{
+ colSize: 12,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+
+ }
+ }]);
+ var that = this;
+ var workOrder_Id = this.getFormOption('WorkOrder_Id');
+ var process_Id = this.getFormOption('Process_Id');
+ var reoportDurationHour = this.getFormOption('ReoportDurationHour');
+ var reoportDurationMinute = this.getFormOption('ReoportDurationMinute');
+ var startDate = this.getFormOption('StartDate');
+ var endDate = this.getFormOption('EndDate');
+ var goodQty = this.getFormOption('GoodQty');
+ var noGoodQty = this.getFormOption('NoGoodQty');
+
+ startDate.onChange = (value, option) => {
+ this.differenceDateTime(value,this.editFormFields["EndDate"]);
+
+ };
+ var numReg = /^[0-9]*$/
+ var numRe = new RegExp(numReg);
+ goodQty.onKeyPress = (val) => {
+ if (val.toString() != '[object KeyboardEvent]') {
+ if (numRe.test(val)) {
+ this.differenceDateTime(this.editFormFields["StartDate"],this.editFormFields["EndDate"]);
+ this.editFormFields["GuessPrice"] = this.editFormFields["UnitPrice"] * this.editFormFields["GoodQty"];
+ }
+ else {
+ this.$Message.error('请输入数字');
+ }
+ }
+ };
+ reoportDurationHour.extra = {
+ text: "小时",//显示文本
+ style: "margin-right:10px;",//指定样式
+ }
+ reoportDurationMinute.extra = {
+ text: "分钟",//显示文本
+ style: "margin-right:10px;",//指定样式
+ }
+ startDate.onChange = (value, option) => {
+ this.differenceDateTime(value,this.editFormFields["EndDate"]);
+
+ };
+ endDate.onChange = (value, option) => {
+ this.differenceDateTime(this.editFormFields["StartDate"],value);
+ };
+ process_Id.onChange = (value, option) => {
+ var json = this.resultList.find(x => x.key === value);
+ let urlProgress = 'api/Production_ReportWorkOrder/getProgress?workOrder_Id=' + json.workOrderId + '&processId=' + json.key + '&productId=' + json.productId + '&planQty=' + json.planQty;
+ this.http.get(urlProgress, {}, true).then((res) => {
+ this.editFormFields["ProcessProgress"] = res.processProgress;
+ this.editFormFields["StandardProgress"] = res.standardProgress;
+ this.editFormFields["UnitPrice"] = res.unitPrice;
+ this.editFormFields["GuessPrice"] = res.unitPrice * this.editFormFields["GoodQty"];
+ });
+ };
+
+ workOrder_Id.onChange = (value, option) => {
+ let url = 'api/Production_WorkOrderList/getList?workOrderId=' + value;
+ //给工序名称重新绑定数据源
+ this.http.get(url, {}, true).then((result) => {
+ process_Id.data = result;
+ this.resultList = result;
+ this.editFormFields["Process_Id"] = result[0].key;
+ let urlProgress = 'api/Production_ReportWorkOrder/getProgress?workOrder_Id=' + result[0].workOrderId + '&processId=' + result[0].key + '&productId=' + result[0].productId + '&planQty=' + result[0].planQty;
+ this.http.get(urlProgress, {}, true).then((res) => {
+ this.editFormFields["ProcessProgress"] = res.processProgress;
+ this.editFormFields["StandardProgress"] = res.standardProgress;
+ this.editFormFields["UnitPrice"] = res.unitPrice;
+ this.editFormFields["GuessPrice"] = res.unitPrice * this.editFormFields["GoodQty"];
+ });
+ });
+ let urlWo = 'api/Production_WorkOrder/getList?workOrderId=' + value;
+ //给工序名称重新绑定数据源
+ this.http.get(urlWo, {}, true).then((result) => {
+ this.editFormFields["Product_Id"] = result[0].product_Id;
+ this.editFormFields["ProductCode"] = result[0].productCode;
+ this.editFormFields["ProductName"] = result[0].productName;
+ this.editFormFields["ProductStandard"] = result[0].productStandard;
+ });
+ };
+ noGoodQty.onKeyPress = (val) => {
+ if (val.toString() != '[object KeyboardEvent]') {
+ if (numRe.test(val)) {
+ this.editFormFields["RateStandard"] = ((this.editFormFields["GoodQty"] / (val+this.editFormFields["GoodQty"])) * 10000).toFixed(2).toString() + "%";
+ }
+ else {
+ this.$Message.error('请输入数字');
+ }
+ }
+ };
+ this.columns.forEach(x => {
+ if (x.field == 'ReoportDurationHour') {
+ x.title = "报工时长(小时)"
+ }
+ if (x.field == 'ReoportDurationMinute') {
+ x.title = "报工时长(分钟)"
+ }
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ showTime() {
+ let date = new Date();
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+ let hour = date.getHours()
+ return (
+ year +
+ '-' +
+ (month < 10 ? '0' + month : month) +
+ '-' +
+ (day < 10 ? '0' + day : day) +
+ " " +
+ (hour < 10 ? '0' + hour : hour)
+ );
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ if (this.currentAction == 'Add') {
+ this.editFormFields.StartDate = this.showTime() + ":00:00"
+ this.editFormFields.EndDate = this.showTime() + ":00:00"
+ this.editFormFields.ProcessStatus = "2"
+ this.editFormFields.ApproveStatus = "2"
+ this.editFormFields.ReportTime = dateUtil.formatTimeStamp(Date.now(), 'yyyy-MM-dd hh:mm:ss');
+ let _userInfo = store.getters.getUserInfo();
+ if (_userInfo) {
+ this.editFormFields.ApproveUser = _userInfo.userName;
+ }
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_ReportWorkOrderList.js b/src/extension/production/production/Production_ReportWorkOrderList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/production/production/Production_ReportWorkOrderList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_SalesOrder.js b/src/extension/production/production/Production_SalesOrder.js
new file mode 100644
index 0000000..8cbed98
--- /dev/null
+++ b/src/extension/production/production/Production_SalesOrder.js
@@ -0,0 +1,201 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import modelHeader from "./production_extend/ProductModelBody.vue"
+import gridFooter from './production_extend/SalesOrderGridFooter.vue';
+import FileSaver from 'file-saver';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'warning',
+ closable: false, title: '点击【数量】可以对订单数量直接进行修改'
+ }, ''),
+ ]
+ }
+ },
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ mounted(){
+
+ },
+ methods: {
+ onActivated() {
+ let salesOrderCode = this.$route.query.SalesOrderCode;
+
+ if (salesOrderCode) {
+ var param = {
+ order: "desc",
+ page: 1,
+ rows: 30,
+ sort: "CreateDate",
+ wheres: "[{\"name\":\"SalesOrderCode\",\"value\":\"" + salesOrderCode + "\",\"displayType\":\"like\"}]"
+ };
+ this.http.post('/api/Production_SalesOrder/getPageData', param, true).then((result) => {
+ this.$refs.table.rowData = result.rows;
+ });
+ }
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '打印', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ let html = document.getElementById("collect");
+ window.open(this.http.ipAddress + 'Print-Designer/print.html?cat=Production_SalesOrder&id=' + selectRow[0].SalesOrder_Id + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+
+ // this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ // name: '直接打印', //按钮名称
+ // icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // let selectRow = this.$refs.table.getSelected();
+ // if (selectRow.length == 0) {
+ // return this.$error('请选择要编辑的行!');
+ // }
+ // if (selectRow.length != 1) {
+ // return this.$error('只能选择一行数据进行编辑!');
+ // }
+ // let html = document.getElementById("collect");
+ // let form = new FormData();
+ // // form对象以键值对方式存储数据,key对应属性,value对应属性值
+ // form.append("Url", this.http.ipAddress + 'Print-Designer/print.html?cat=Production_SalesOrder&id=' + selectRow[0].SalesOrder_Id + "&token=" + this.$store.getters.getToken());
+ // let printUrl = 'api/Base_PrintTemplate/Print';
+ // this.http.get(printUrl, form, true).then((content) => {
+ // this.$info(content.message);
+ // });
+ // }
+ // });
+ this.buttons.splice(4,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '模版Excel导出', //按钮名称
+ icon: 'el-icon-s-unfold', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行导出!');
+ }
+ let urlSales = 'api/Production_SalesOrder/exportExcelTemplate?cat=Production_SalesOrder&SalesOrder_Id=' + selectRow[0].SalesOrder_Id;
+ this.http.get(urlSales, {}, true).then((content) => {
+ if(content=="")
+ {
+ this.$error('请先维护模版信息!');
+ }
+ else
+ {
+ var URL = this.http.webAddress + "/Excel/" + content // URL 为URL地址
+ FileSaver.saveAs(URL, content);
+ }
+ });
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择产品', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0], "销售订单");
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row, "销售订单");
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "SalesOrderCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_SalesOrderList.js b/src/extension/production/production/Production_SalesOrderList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/production/production/Production_SalesOrderList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_WorkOrder.js b/src/extension/production/production/Production_WorkOrder.js
new file mode 100644
index 0000000..8a05ba7
--- /dev/null
+++ b/src/extension/production/production/Production_WorkOrder.js
@@ -0,0 +1,532 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { ConsoleLogger } from '@microsoft/signalr/dist/esm/Utils';
+import ProductModelBody from '../../custom/custom/custom_extend/Base_MaterialDetailModelBody'
+import modelFooter from "./production_extend/ProcessModelFooter.vue"
+import QRCode from 'qrcodejs2'
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: ProductModelBody,
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ createQrcode(text) {
+ // 生成二维码
+ const qrcodeImgEl = document.getElementById('qrcodeImg')
+ qrcodeImgEl.innerHTML = ''
+ let qrcode = new QRCode(qrcodeImgEl, {
+ width: 100,
+ height: 100,
+ colorDark: '#000000',
+ colorLight: '#ffffff',
+ correctLevel: QRCode.CorrectLevel.H
+ })
+ qrcode.makeCode(text)
+ },
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ updatestatus(workOrder_Id, status) {
+ let url = 'api/Production_WorkOrder/changeUpdate?workOrderId=' + workOrder_Id + '&status=' + status;
+ //给工序名称重新绑定数据源
+ this.http.get(url, {}, true).then((result) => {
+ this.$Message.success(result);
+ this.search();
+ });
+ },
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+ this.maxBtnLength = 10;
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ this.buttons.splice(3, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '开始', //按钮名称
+ icon: 'el-icon-video-play', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ if(selectRow[0].Status == 2)
+ {
+ return this.$error('已经开始的工单不允许重复开始!');
+ }
+ this.updatestatus(selectRow[0].WorkOrder_Id, 2)
+ }
+ });
+ this.buttons.splice(4, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '撤回', //按钮名称
+ icon: 'el-icon-d-arrow-left', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ if(selectRow[0].Status == 4)
+ {
+ return this.$error('已经撤回的工单不允许重复开始!');
+ }
+ this.updatestatus(selectRow[0].WorkOrder_Id, 4)
+ }
+ });
+ this.buttons.splice(4, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '结束', //按钮名称
+ icon: 'el-icon-finished', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ if(selectRow[0].Status == 4)
+ {
+ return this.$error('已经结束的工单不允许重复开始!');
+ }
+ this.updatestatus(selectRow[0].WorkOrder_Id, 3)
+ }
+ });
+ this.buttons.splice(4, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '取消', //按钮名称
+ icon: 'el-icon-scissors', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ if(selectRow[0].Status == 5)
+ {
+ return this.$error('已经取消的工单不允许重复开始!');
+ }
+ this.updatestatus(selectRow[0].WorkOrder_Id, 5)
+ }
+ });
+ //显示序号(默认隐藏)
+ this.boxOptions.labelWidth = 120;
+ this.labelWidth = 120;
+ this.columnIndex = true;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'Product_Id') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "高级选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.openDemo("WorkOrderProduct_Id");
+ }
+ }
+ }
+ })
+ });
+ var planQty = this.getFormOption('PlanQty');
+ var numReg = /^[0-9]*$/
+ var numRe = new RegExp(numReg);
+ planQty.onKeyPress = (val) => {
+ if (val.toString() != '[object KeyboardEvent]') {
+ if (numRe.test(val)) {
+ this.$refs.detail.rowData.forEach(item => {
+ item.PlanQty = val;
+ })
+ }
+ else {
+ this.$Message.error('请输入数字');
+ }
+ }
+ };
+ // this.editFormOptions[3][1].push({ //往新数组对象中添加新的属性 属性名对应属性值
+ // title: "父项产品属性",
+ // field: "Parent",
+ // readonly: true,
+ // type: "textarea",
+ // minRows: 5
+ // })
+ this.editFormOptions[this.editFormOptions.length - 1].push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: "二维码",
+ required: false,
+ field: "QrCode",
+ disabled: true,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+ }
+ });
+ this.columns.forEach(x => {
+ if (x.field == "AssociatedForm") {
+ x.formatter = (row, column, event) => {
+ return row.AssociatedForm ? '' + row.AssociatedForm + '(点击跳转) ' : "";
+ };
+ //绑定点击事件
+ x.click = (row, column, event) => {
+ let path = ""
+ if (row.FromType == "SalesOrder") {
+ path = "/Production_SalesOrder";
+ this.$tabs.open({
+ text: "销售订单",
+ path: path,
+ query: {
+ SalesOrderCode: row.AssociatedForm
+ }
+ });
+ }
+ if (row.FromType == "ProductPlan") {
+ path = "/Production_ProductPlan";
+ this.$tabs.open({
+ text: "生产计划",
+ path: path,
+ query: {
+ ProductPlanCode: row.AssociatedForm
+ }
+ });
+ }
+ if (row.FromType == "AssembleWorkOrder") {
+ path = "/Production_AssembleWorkOrder";
+ this.$tabs.open({
+ text: "装配工单",
+ path: path,
+ query: {
+ AssembleWorkOrderCode: row.AssociatedForm
+ }
+ });
+ }
+ };
+ }
+ });
+ },
+ getRow(rows, modelType) {
+ if (modelType == "WorkOrderProduct_Id") {
+ //将选择的数据合并到表单中(注意框架生成的代码都是大写,后台自己写的接口是小写的)
+ this.editFormFields.Product_Id = rows[0].Product_Id
+ this.editFormFields.ProductCode = rows[0].ProductCode
+ this.editFormFields.ProductName = rows[0].ProductName
+ this.editFormFields.ProductStandard = rows[0].ProductStandard
+ this.editFormFields.Unit_Id = rows[0].Unit_Id
+ }
+ },
+ getProcessRow(rows) {
+ let json = rows.map(item => ({
+ Process_Id: item.Process_Id,
+ ProcessCode: item.ProcessCode,
+ ProcessName: item.ProcessName,
+ SubmitWorkLimit: item.SubmitWorkLimit,
+ SubmitWorkMatch: item.SubmitWorkMatch,
+ DefectItem: item.DefectItem,
+ PlanStartDate: this.editFormFields.PlanStartDate,
+ PlanEndDate: this.editFormFields.PlanEndDate,
+ PlanQty: this.editFormFields.PlanQty,
+ GoodQty: 0,
+ NoGoodQty: 0,
+ SubmitWorkLimitLabel: item.SubmitWorkLimitLabel,
+ DefectItemLabel: item.DefectItemLabel
+ }))
+ this.$refs.detail.rowData.unshift(...json);
+ },
+ getFieldDicValue(fieldName, fieldValue) {
+ this.detailOptions.columns.forEach(item => {
+ if (item.field == fieldName) {
+ var result = item.bind.data.find(val => val.key == fieldValue)
+ return result.value;
+ }
+ })
+ },
+ getProcessListById(processLineId) {
+ let url = "api/Base_Process/getProcessListByLineID?ProcessLine_Id=" + processLineId;
+ this.http.get(url, {}, true).then(rows => {
+ let json = rows.map(item => ({
+ Process_Id: item.Process_Id,
+ ProcessCode: item.ProcessCode,
+ ProcessName: item.ProcessName,
+ SubmitWorkLimit: item.SubmitWorkLimit,
+ SubmitWorkMatch: item.SubmitWorkMatch,
+ DefectItem: item.DefectItem,
+ PlanStartDate: this.editFormFields.PlanStartDate,
+ PlanEndDate: this.editFormFields.PlanEndDate,
+ PlanQty: this.editFormFields.PlanQty,
+ GoodQty: 0,
+ NoGoodQty: 0,
+ SubmitWorkLimitLabel: '',
+ DefectItemLabel: ''
+ }))
+ json.forEach(x => {
+ if (x.SubmitWorkLimit) {
+ let workLimitLabel = "";
+ var arr = x.SubmitWorkLimit.split(',');
+ arr.forEach(itemKey => {
+ this.detailOptions.columns.forEach(item => {
+ if (item.field == "SubmitWorkLimit") {
+ var result = item.bind.data.find(val => val.key == itemKey)
+ workLimitLabel += (result.value + ',');
+ }
+ })
+ })
+ x.SubmitWorkLimitLabel = workLimitLabel.substring(0, workLimitLabel.length - 1);
+ }
+ if (x.DefectItem) {
+ let defectLabel = "";
+ var arr = x.DefectItem.split(',');
+ arr.forEach(itemKey => {
+ this.detailOptions.columns.forEach(item => {
+ if (item.field == "DefectItem") {
+ var result = item.bind.data.find(val => val.key == itemKey)
+ defectLabel += (result.value + ',');
+ }
+ })
+ })
+ x.DefectItemLabel = defectLabel.substring(0, defectLabel.length - 1);
+ }
+
+ })
+ this.$refs.detail.rowData = [];
+ this.$refs.detail.rowData.unshift(...json);
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ var that = this;
+ var productCode = this.getFormOption('Product_Id');
+ var startDate = this.getFormOption('PlanStartDate');
+ var endDate = this.getFormOption('PlanEndDate');
+
+ productCode.onChange = (val, item) => {
+ that.http.ajax({
+ url: "api/Base_Product/getProductInfoByProductID?productId=" + val,
+ json: true,
+ success: function (data) {
+ that.editFormFields.ProductCode = data[0].ProductCode
+ that.editFormFields.ProductName = data[0].ProductName
+ that.editFormFields.ProductStandard = data[0].ProductStandard
+ that.editFormFields.Unit_Id = data[0].Unit_Id
+
+ if (data[0].Process_Id) {
+ that.getProcessListById(data[0].Process_Id);
+ }
+ else {
+ that.$refs.detail.rowData = [];
+ }
+ },
+ type: "get",
+ async: false,
+ });
+ };
+ startDate.onChange = (val, item) => {
+ this.$refs.detail.rowData.forEach(item => {
+ item.PlanStartDate = val;
+ })
+ };
+ endDate.onChange = (val, item) => {
+ this.$refs.detail.rowData.forEach(item => {
+ item.PlanEndDate = val;
+ })
+ };
+ let _index = this.detailOptions.columns.findIndex(x => { return x.field == 'SubmitWorkLimit' });
+ this.detailOptions.columns.splice(_index, 0, {
+ field: "SubmitWorkLimitLabel",
+ title: "报工权限",
+ type: 'string',
+ width: 250,
+ align: "left"
+ })
+ this.detailOptions.columns.splice(_index, 0, {
+ field: "DefectItemLabel",
+ title: "不良品项列表",
+ type: 'string',
+ width: 250,
+ align: "left"
+ })
+ //隐藏明细表中列
+ this.detailOptions.columns.forEach(x => {
+ if (x.field == 'SubmitWorkLimit') {
+ x.hidden = true;
+ }
+ if (x.field == 'DefectItem') {
+ x.hidden = true;
+ }
+ if (x.field == 'DistributionList') {
+ x.hidden = true;
+ }
+ if (x.field == 'WorkOrder_Id') {
+ x.hidden = true;
+ }
+ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '从工序中添加', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelFooter.open();
+ }
+ });
+ this.columns.forEach(x => {
+ if (x.field == 'ProductionSchedule') {
+ x.render = (h, scope) => {
+ if (scope.row.ProductionSchedule != '-' && scope.row.ProductionSchedule != undefined && scope.row.ProductionSchedule != "") {
+ let arr = JSON.parse(scope.row.ProductionSchedule);
+ arr = arr.sort(function (a, b) { //重点在这里,下面有说明
+ return a.Sequence - b.Sequence; //inNum是要根据某个字段进行排序的字段名,
+ })
+ let activeSeq = arr.find(x => x.PercentNum != '100.00%');
+ activeSeq = activeSeq == undefined ? arr.length + 1 : activeSeq.Sequence;
+ return [
+ h(resolveComponent('el-steps'), {
+ active: activeSeq, 'align-center': true
+ }, [
+ arr.map(item => {
+ return h(resolveComponent('el-step'), { title: item.ProcessName, description: item.PercentNum },)
+ })
+ ]),
+ ]
+ }
+ }
+ }
+
+ })
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ showTime() {
+ let date = new Date();
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+ return (
+ year +
+ '-' +
+ (month < 10 ? '0' + month : month) +
+ '-' +
+ (day < 10 ? '0' + day : day)
+ );
+ },
+ searchDetailAfter(data) {//查询从表后param查询参数,result回返查询的结果
+ if (this.currentAction == 'update') {
+ data.forEach(x => {
+ if (x.SubmitWorkLimit) {
+ let workLimitLabel = "";
+ var arr = x.SubmitWorkLimit.split(',');
+ arr.forEach(itemKey => {
+ this.detailOptions.columns.forEach(item => {
+ if (item.field == "SubmitWorkLimit") {
+ var result = item.bind.data.find(val => val.key == itemKey)
+ workLimitLabel += (result.value + ',');
+ }
+ })
+ })
+ x.SubmitWorkLimitLabel = workLimitLabel.substring(0, workLimitLabel.length - 1);
+ }
+ if (x.DefectItem) {
+ let defectLabel = "";
+ var arr = x.DefectItem.split(',');
+ arr.forEach(itemKey => {
+ this.detailOptions.columns.forEach(item => {
+ if (item.field == "DefectItem") {
+ var result = item.bind.data.find(val => val.key == itemKey)
+ defectLabel += (result.value + ',');
+ }
+ })
+ })
+ x.DefectItemLabel = defectLabel.substring(0, defectLabel.length - 1);
+ }
+ })
+ }
+ return true;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ let qrCode = this.getFormOption("QrCode");
+ let remark = this.getFormOption("Remark");
+ if (this.currentAction == 'Add') {
+ this.editFormFields.PlanStartDate = this.showTime() + " 00:00:00"
+ this.editFormFields.PlanEndDate = this.showTime() + " 23:59:59"
+ this.editFormFields.Status = "1"
+ remark.colSize = 8;
+ qrCode.hidden = true;
+ }
+ if (this.currentAction == 'update') {
+ remark.colSize = 4;
+ qrCode.hidden = false;
+ this.createQrcode("WorkOrderId=" + row.WorkOrder_Id);
+ }
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "WorkOrderCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/Production_WorkOrderList.js b/src/extension/production/production/Production_WorkOrderList.js
new file mode 100644
index 0000000..7cb11f0
--- /dev/null
+++ b/src/extension/production/production/Production_WorkOrderList.js
@@ -0,0 +1,76 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.boxOptions.height = document.documentElement.clientHeight * 0.5;
+ this.boxOptions.labelWidth = 120;
+ this.labelWidth = 120;
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/production/production/production_extend/AssembleWorkOrderGridFooter.vue b/src/extension/production/production/production_extend/AssembleWorkOrderGridFooter.vue
new file mode 100644
index 0000000..4989851
--- /dev/null
+++ b/src/extension/production/production/production_extend/AssembleWorkOrderGridFooter.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/production/production/production_extend/AssembleWorkOrderModelBody.vue b/src/extension/production/production/production_extend/AssembleWorkOrderModelBody.vue
new file mode 100644
index 0000000..e3c39bb
--- /dev/null
+++ b/src/extension/production/production/production_extend/AssembleWorkOrderModelBody.vue
@@ -0,0 +1,164 @@
+
+
+
+
+ 产品编码:
+
+ 产品名称:
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/production/production/production_extend/AssembleWorkOrderModelFooter.vue b/src/extension/production/production/production_extend/AssembleWorkOrderModelFooter.vue
new file mode 100644
index 0000000..5e6b7b3
--- /dev/null
+++ b/src/extension/production/production/production_extend/AssembleWorkOrderModelFooter.vue
@@ -0,0 +1,192 @@
+
+
+
+
+ 产品编码:
+
+ 产品名称:
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/production/production/production_extend/ProcessModelFooter.vue b/src/extension/production/production/production_extend/ProcessModelFooter.vue
new file mode 100644
index 0000000..459cae6
--- /dev/null
+++ b/src/extension/production/production/production_extend/ProcessModelFooter.vue
@@ -0,0 +1,174 @@
+
+
+
+
+ 工序编码:
+
+ 工序名称:
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/production/production/production_extend/ProductModelBody.vue b/src/extension/production/production/production_extend/ProductModelBody.vue
new file mode 100644
index 0000000..81f10e9
--- /dev/null
+++ b/src/extension/production/production/production_extend/ProductModelBody.vue
@@ -0,0 +1,151 @@
+
+
+
+
+ 产品编码:
+
+ 产品名称:
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/production/production/production_extend/SalesOrderGridFooter.vue b/src/extension/production/production/production_extend/SalesOrderGridFooter.vue
new file mode 100644
index 0000000..ae41557
--- /dev/null
+++ b/src/extension/production/production/production_extend/SalesOrderGridFooter.vue
@@ -0,0 +1,86 @@
+
+
+
+
+ {{type}}-产品明细
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/quality/quality/Quality_Defect.js b/src/extension/quality/quality/Quality_Defect.js
new file mode 100644
index 0000000..5c67330
--- /dev/null
+++ b/src/extension/quality/quality/Quality_Defect.js
@@ -0,0 +1,74 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 350;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_InComingCheck.js b/src/extension/quality/quality/Quality_InComingCheck.js
new file mode 100644
index 0000000..d66f094
--- /dev/null
+++ b/src/extension/quality/quality/Quality_InComingCheck.js
@@ -0,0 +1,141 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import modelFooter from "./quality_extend/Base_MaterialDetailModelBody.vue"
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.labelWidth = 120;
+ //选择数据源功能
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ProductName') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelFooter.open();
+ }
+ }
+ }
+ })
+ })
+ },
+ getRow(_rows) {
+ this.editFormFields["Product_Id"] = _rows[0].Product_Id;
+ this.editFormFields["ProductName"] = _rows[0].ProductName;
+ this.editFormFields["ProductCode"] = _rows[0].ProductCode;
+ this.editFormFields["ProductStandard"] = _rows[0].ProductStandard;
+ let url = "api/Quality_TemplateTestItem/getTestItemRows?ProductId=" + _rows[0].Product_Id
+ this.http.get(url, {}, true).then(rows => {
+ if (rows == "[]") {
+ this.$refs.detail.rowData = [];
+ } else {
+ let newArr = rows.map(val => {
+ let json = {};
+ json.CheckMethod = val.CheckMethod;
+ json.TestItemCode = val.TestItemCode;
+ json.QCTool = val.QCTool;
+ json.StanderValue = val.StanderValue;
+ json.TemplateId = val.TemplateId;
+ json.TemplateTestItemId = val.TemplateTestItemId;
+ json.TestItemId = val.TestItemId;
+ json.TestItemName = val.TestItemName;
+ json.TestItemType = val.TestItemType;
+ json.ThresholdMax = val.ThresholdMax;
+ json.ThresholdMin = val.ThresholdMin;
+ return json;
+ });
+ this.$refs.detail.rowData = newArr;
+ }
+ })
+ },
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons = [];
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ let product_Id = this.getFormOption("Product_Id");
+ product_Id.hidden = true;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "InComingCheckCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_InComingCheckTestItem.js b/src/extension/quality/quality/Quality_InComingCheckTestItem.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/quality/quality/Quality_InComingCheckTestItem.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_OutCheck.js b/src/extension/quality/quality/Quality_OutCheck.js
new file mode 100644
index 0000000..4463a31
--- /dev/null
+++ b/src/extension/quality/quality/Quality_OutCheck.js
@@ -0,0 +1,141 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import modelFooter from "./quality_extend/Base_MaterialDetailModelBody.vue"
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.labelWidth = 120;
+ //选择数据源功能
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ProductName') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelFooter.open();
+ }
+ }
+ }
+ })
+ })
+ },
+ getRow(_rows) {
+ this.editFormFields["Product_Id"] = _rows[0].Product_Id;
+ this.editFormFields["ProductName"] = _rows[0].ProductName;
+ this.editFormFields["ProductCode"] = _rows[0].ProductCode;
+ this.editFormFields["ProductStandard"] = _rows[0].ProductStandard;
+ let url = "api/Quality_TemplateTestItem/getOutCheckTestItemRows?ProductId=" + _rows[0].Product_Id
+ this.http.get(url, {}, true).then(rows => {
+ if (rows == "[]") {
+ this.$refs.detail.rowData = [];
+ } else {
+ let newArr = rows.map(val => {
+ let json = {};
+ json.CheckMethod = val.CheckMethod;
+ json.TestItemCode = val.TestItemCode;
+ json.QCTool = val.QCTool;
+ json.StanderValue = val.StanderValue;
+ json.TemplateId = val.TemplateId;
+ json.TemplateTestItemId = val.TemplateTestItemId;
+ json.TestItemId = val.TestItemId;
+ json.TestItemName = val.TestItemName;
+ json.TestItemType = val.TestItemType;
+ json.ThresholdMax = val.ThresholdMax;
+ json.ThresholdMin = val.ThresholdMin;
+ return json;
+ });
+ this.$refs.detail.rowData = newArr;
+ }
+ })
+ },
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons = [];
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ let product_Id = this.getFormOption("Product_Id");
+ product_Id.hidden = true;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "OutCheckCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_OutCheckTestItem.js b/src/extension/quality/quality/Quality_OutCheckTestItem.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/quality/quality/Quality_OutCheckTestItem.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_ProcessCheck.js b/src/extension/quality/quality/Quality_ProcessCheck.js
new file mode 100644
index 0000000..9063676
--- /dev/null
+++ b/src/extension/quality/quality/Quality_ProcessCheck.js
@@ -0,0 +1,178 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import modelFooter from "./quality_extend/Base_MaterialDetailModelBody.vue"
+import modelBody from "./quality_extend/WorkOrderModelBody.vue"
+import modelHeader from "./quality_extend/ProcessModelBody.vue"
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: modelBody,
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.labelWidth = 120;
+ //选择数据源功能
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'WorkOrderCode') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.open();
+ }
+ }
+ }
+ if (item.field == 'ProductCode') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelFooter.open();
+ }
+ }
+ }
+ if (item.field == 'ProcessCode') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ icon: "el-icon-zoom-out",
+ text: "选择",
+ style: "color:blue;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelHeader.open();
+ }
+ }
+ }
+ })
+ })
+ },
+ getRow(_rows) {
+ this.editFormFields["Product_Id"] = _rows[0].Product_Id;
+ this.editFormFields["ProductName"] = _rows[0].ProductName;
+ this.editFormFields["ProductCode"] = _rows[0].ProductCode;
+ this.editFormFields["ProductStandard"] = _rows[0].ProductStandard;
+ let url = "api/Quality_TemplateTestItem/getProcessTestItemRows?ProductId=" + _rows[0].Product_Id
+ this.http.get(url, {}, true).then(rows => {
+ if (rows == "[]") {
+ this.$refs.detail.rowData = [];
+ } else {
+ let newArr = rows.map(val => {
+ let json = {};
+ json.CheckMethod = val.CheckMethod;
+ json.TestItemCode = val.TestItemCode;
+ json.QCTool = val.QCTool;
+ json.StanderValue = val.StanderValue;
+ json.TemplateId = val.TemplateId;
+ json.TemplateTestItemId = val.TemplateTestItemId;
+ json.TestItemId = val.TestItemId;
+ json.TestItemName = val.TestItemName;
+ json.TestItemType = val.TestItemType;
+ json.ThresholdMax = val.ThresholdMax;
+ json.ThresholdMin = val.ThresholdMin;
+ return json;
+ });
+ this.$refs.detail.rowData = newArr;
+ }
+ })
+ },
+ getRowWorkOrder(_rows) {
+ this.editFormFields["WorkOrderCode"] = _rows[0].WorkOrderCode;
+ this.editFormFields["WorkOrder_Id"] = _rows[0].WorkOrder_Id;
+ },
+ getRowProcess(_rows) {
+ this.editFormFields["Process_Id"] = _rows[0].Process_Id;
+ this.editFormFields["ProcessCode"] = _rows[0].ProcessCode;
+ this.editFormFields["ProcessName"] = _rows[0].ProcessName;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons = [];
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ getFormOption(field) {
+ let option;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == field) {
+ option = item;
+ }
+ })
+ })
+ return option;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ let process_Id = this.getFormOption("Process_Id");
+ process_Id.hidden = true;
+ let WorkOrder_Id = this.getFormOption("WorkOrder_Id");
+ WorkOrder_Id.hidden = true;
+ let Product_Id = this.getFormOption("Product_Id");
+ Product_Id.hidden = true;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ProcessCheckCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_ProcessCheckTestItem.js b/src/extension/quality/quality/Quality_ProcessCheckTestItem.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/quality/quality/Quality_ProcessCheckTestItem.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_Template.js b/src/extension/quality/quality/Quality_Template.js
new file mode 100644
index 0000000..50c492b
--- /dev/null
+++ b/src/extension/quality/quality/Quality_Template.js
@@ -0,0 +1,103 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent, defineAsyncComponent } from 'vue';
+import modelBody from "./quality_extend/Quality_TemplateModelBody.vue"
+import modelHeader from "./quality_extend/Quality_TemplateModelHeader.vue"
+import modelFooter from "./quality_extend/Quality_TemplateModelFooter.vue"
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: modelBody,
+ modelFooter: modelFooter
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.height = this.height - 100;
+ //自定义弹出框的高与宽
+ this.boxOptions.height = document.body.clientHeight * 0.9;
+ this.boxOptions.width = document.body.clientWidth * 0.8;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ this.setFormData(formData);
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台Equip_SpotMaintPlanService的新建方法
+ //后台从对象里直接取extra的值
+ let extra = {
+ table1List: this.$refs.modelBody.$refs.table1.rowData,//获取从表1的行数据
+ table2List: this.$refs.modelBody.$refs.table2.rowData//获取从表2的行数据
+ }
+ formData.extra = JSON.stringify(extra);
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "TemplateCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ this.$nextTick(() => {
+ //这里没有给弹出框中的表格传参,如果需要参数可以通过 this.$emit("parentCall", 获取页面的参数
+ //具体见自定义页面Equip_SpotMaintPlanModelBody.vue中的modelOpen方法的使用 this.$emit("parentCall", ($this) => {
+ this.$refs.modelBody.modelOpen();
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_TemplateProduct.js b/src/extension/quality/quality/Quality_TemplateProduct.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/quality/quality/Quality_TemplateProduct.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_TemplateTestItem.js b/src/extension/quality/quality/Quality_TemplateTestItem.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/quality/quality/Quality_TemplateTestItem.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/Quality_TestItem.js b/src/extension/quality/quality/Quality_TestItem.js
new file mode 100644
index 0000000..4ff0eeb
--- /dev/null
+++ b/src/extension/quality/quality/Quality_TestItem.js
@@ -0,0 +1,82 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.height = 380;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "TestItemCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/quality/quality/quality_extend/Base_MaterialDetailModelBody.vue b/src/extension/quality/quality/quality_extend/Base_MaterialDetailModelBody.vue
new file mode 100644
index 0000000..3838758
--- /dev/null
+++ b/src/extension/quality/quality/quality_extend/Base_MaterialDetailModelBody.vue
@@ -0,0 +1,138 @@
+
+
+
+
+ 产品编码
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/quality/quality/quality_extend/ProcessModelBody.vue b/src/extension/quality/quality/quality_extend/ProcessModelBody.vue
new file mode 100644
index 0000000..475bb65
--- /dev/null
+++ b/src/extension/quality/quality/quality_extend/ProcessModelBody.vue
@@ -0,0 +1,136 @@
+
+
+
+
+ 工序编码
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/quality/quality/quality_extend/Quality_TemplateModelBody.vue b/src/extension/quality/quality/quality_extend/Quality_TemplateModelBody.vue
new file mode 100644
index 0000000..e5ba8cc
--- /dev/null
+++ b/src/extension/quality/quality/quality_extend/Quality_TemplateModelBody.vue
@@ -0,0 +1,393 @@
+
+
+
+
+
+ 检测项
+
+
+
+ 添加行
+ 删除行
+
+
+
+
+
+
+
+
+
+
+
+ 产品信息
+
+
+
+ 添加行
+ 删除行
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/extension/quality/quality/quality_extend/Quality_TemplateModelFooter.vue b/src/extension/quality/quality/quality_extend/Quality_TemplateModelFooter.vue
new file mode 100644
index 0000000..618aedd
--- /dev/null
+++ b/src/extension/quality/quality/quality_extend/Quality_TemplateModelFooter.vue
@@ -0,0 +1,156 @@
+
+
+
+
+ 产品编码:
+
+ 产品名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/quality/quality/quality_extend/Quality_TemplateModelHeader.vue b/src/extension/quality/quality/quality_extend/Quality_TemplateModelHeader.vue
new file mode 100644
index 0000000..e071f81
--- /dev/null
+++ b/src/extension/quality/quality/quality_extend/Quality_TemplateModelHeader.vue
@@ -0,0 +1,172 @@
+
+
+
+
+ 检测项编码:
+
+ 检测项名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/quality/quality/quality_extend/WorkOrderModelBody.vue b/src/extension/quality/quality/quality_extend/WorkOrderModelBody.vue
new file mode 100644
index 0000000..bc32705
--- /dev/null
+++ b/src/extension/quality/quality/quality_extend/WorkOrderModelBody.vue
@@ -0,0 +1,147 @@
+
+
+
+
+ 工单编码
+
+ 搜索
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/report/report/View_DefectItemDistribute.js b/src/extension/report/report/View_DefectItemDistribute.js
new file mode 100644
index 0000000..1451243
--- /dev/null
+++ b/src/extension/report/report/View_DefectItemDistribute.js
@@ -0,0 +1,90 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import * as dateUtil from "../../../uitils/dateFormatUtil.js";
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.setFiexdSearchForm(true);
+ //设置主表合计
+ this.summary = true;
+ this.columns.forEach(item => {
+ if (item.field == "CreateDate") {
+ item.formatter = (row, column, event) => {
+ return dateUtil.formatTimeStamp(row.CreateDate, 'yyyy-MM-dd')
+ };
+ }
+ });
+ this.labelWidth = 120;
+ this.tableMaxHeight = (document.body.clientHeight - 260);
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.columns.forEach(x => {
+ if (x.field == 'Qty') {
+ x.summary = true;
+ }
+ })
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/report/report/View_DefectItemSummary.js b/src/extension/report/report/View_DefectItemSummary.js
new file mode 100644
index 0000000..5ba7aa1
--- /dev/null
+++ b/src/extension/report/report/View_DefectItemSummary.js
@@ -0,0 +1,74 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.labelWidth = 120;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/report/report/View_EmployeePerformance.js b/src/extension/report/report/View_EmployeePerformance.js
new file mode 100644
index 0000000..4616a4f
--- /dev/null
+++ b/src/extension/report/report/View_EmployeePerformance.js
@@ -0,0 +1,75 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.setFiexdSearchForm(true);
+ this.tableMaxHeight = (document.body.clientHeight - 260);
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/report/report/View_OutputStatistics.js b/src/extension/report/report/View_OutputStatistics.js
new file mode 100644
index 0000000..111ceb4
--- /dev/null
+++ b/src/extension/report/report/View_OutputStatistics.js
@@ -0,0 +1,93 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import * as dateUtil from "../../../uitils/dateFormatUtil.js";
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.setFiexdSearchForm(true);
+ this.columns.forEach(item => {
+ if (item.field == "CreateDate") {
+ item.formatter = (row, column, event) => {
+ return dateUtil.formatTimeStamp(row.CreateDate, 'yyyy-MM-dd')
+ };
+ }
+ });
+ this.tableMaxHeight = (document.body.clientHeight - 260);
+ //设置主表合计
+ this.summary = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ //设置主表求字段,后台需要实现SummaryExpress方法
+ this.columns.forEach(x => {
+ if (x.field == 'GoodQty') {
+ x.summary = true;
+ }
+ if (x.field == 'PlanQty') {
+ x.summary = true;
+ }
+ })
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/report/report/View_ProductionReport.js b/src/extension/report/report/View_ProductionReport.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/report/report/View_ProductionReport.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/report/report/View_SalaryReport.js b/src/extension/report/report/View_SalaryReport.js
new file mode 100644
index 0000000..f15853a
--- /dev/null
+++ b/src/extension/report/report/View_SalaryReport.js
@@ -0,0 +1,95 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import * as dateUtil from "../../../uitils/dateFormatUtil.js";
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.setFiexdSearchForm(true);
+ //设置主表合计
+ this.summary = true;
+ this.columns.forEach(item => {
+ if (item.field == "ReportDate") {
+ item.formatter = (row, column, event) => {
+ return dateUtil.formatTimeStamp(row.ReportDate, 'yyyy-MM-dd')
+ };
+ }
+ });
+ this.tableMaxHeight = (document.body.clientHeight - 260);
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.columns.forEach(x => {
+ if (x.field == 'ReportAll') {
+ x.summary = true;
+ }
+ if (x.field == 'Salary') {
+ x.summary = true;
+ }
+ if (x.field == 'AlreadyAppNumber') {
+ x.summary = true;
+ }
+ })
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/report/report/View_SalaryReportCover.js b/src/extension/report/report/View_SalaryReportCover.js
new file mode 100644
index 0000000..9cd49d9
--- /dev/null
+++ b/src/extension/report/report/View_SalaryReportCover.js
@@ -0,0 +1,92 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import * as dateUtil from "../../../uitils/dateFormatUtil.js";
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.setFiexdSearchForm(true);
+ //设置主表合计
+ this.summary = true;
+ this.columns.forEach(item => {
+ if (item.field == "ReportDate") {
+ item.formatter = (row, column, event) => {
+ return dateUtil.formatTimeStamp(row.ReportDate, 'yyyy-MM-dd')
+ };
+ }
+ });
+ this.tableMaxHeight = (document.body.clientHeight - 260);
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.columns.forEach(x => {
+ if (x.field == 'Award') {
+ x.summary = true;
+ }
+ if (x.field == 'Penalty') {
+ x.summary = true;
+ }
+ })
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/student/student/Base_Student.js b/src/extension/student/student/Base_Student.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/student/student/Base_Student.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/Sys_Dept.js b/src/extension/system/Sys_Dept.js
new file mode 100644
index 0000000..b527990
--- /dev/null
+++ b/src/extension/system/Sys_Dept.js
@@ -0,0 +1,71 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/Sys_Dictionary.js b/src/extension/system/Sys_Dictionary.js
new file mode 100644
index 0000000..6df9cf3
--- /dev/null
+++ b/src/extension/system/Sys_Dictionary.js
@@ -0,0 +1,75 @@
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: { //动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ //扩展组件引入方式
+ gridHeader: '',
+ gridBody: {
+ render () {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': true, type: 'error',
+ closable: false, title: '界面下拉框、多选、checkbox等数据源都在此处维护'
+ }, ''),
+ ]
+ }
+ },
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [], //扩展的按钮
+ methods: { //事件扩展
+ onInit () {
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ParentId') {
+ item.min = 0;
+ }
+ if (item.field == "DbSql") {
+ item.placeholder = "如果从数据库加载数据源,请按此格式配置sql语句:select orderType as key,orderName as value from order 如果需要根据用户信息加载数据源,请配置好此sql,再修改后台DictionaryHandler.GetCustomDBSql方法";
+ }
+ })
+ })
+ this.detailOptions.columns.forEach(x => {
+ if (x.field == 'OrderNo') {
+ x.summary = true;
+ }
+ })
+ //保存后不关闭编辑框
+ this.boxOptions.saveClose = false;
+ },
+ onInited () {
+ this.boxOptions.height = document.body.clientHeight * 0.87
+ this.height = this.height - 45;
+ },
+ addBefore (formData) {
+ return this.saveBefore(formData);
+ },
+ updateBefore (formData) {
+ return this.saveBefore(formData);
+ },
+ saveBefore (formData) {
+ if (this.editFormFields.DbSql &&
+ (this.editFormFields.DbSql.indexOf('value') == -1 ||
+ this.editFormFields.DbSql.indexOf('key') == -1)
+ ) {
+ this.$message.error("sql语句必须包括key/value字段,如:select orderType as key,orderName as value from order");
+ return false;
+ }
+ return true;
+ },
+ searchBefore (param) {
+ return true;
+ },
+ searchAfter (result) {
+ return true;
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git a/src/extension/system/Sys_DictionaryList.js b/src/extension/system/Sys_DictionaryList.js
new file mode 100644
index 0000000..da94487
--- /dev/null
+++ b/src/extension/system/Sys_DictionaryList.js
@@ -0,0 +1,22 @@
+
+
+let extension = {
+ components: {//动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader:'',
+ gridbody:'',
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [],//扩展的按钮
+ methods: {//事件扩展
+ onInit() {
+ },
+ onInited() {
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git a/src/extension/system/Sys_Log.js b/src/extension/system/Sys_Log.js
new file mode 100644
index 0000000..5b05c40
--- /dev/null
+++ b/src/extension/system/Sys_Log.js
@@ -0,0 +1,26 @@
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {
+ //动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader: "", //{ template: "扩展组xx件
" },
+ gridBody: '',
+ gridFooter: "",
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: "",
+ modelBody: "",
+ modelFooter: ""
+ },
+ buttons: [], //扩展的按钮
+ methods: {
+ //事件扩展
+ onInit() {
+ console.log("sys_log")
+ this.setFiexdSearchForm(true);
+ },
+ onInited() {
+ this.height = this.height - 170;
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/Sys_Role.js b/src/extension/system/Sys_Role.js
new file mode 100644
index 0000000..c404da6
--- /dev/null
+++ b/src/extension/system/Sys_Role.js
@@ -0,0 +1,61 @@
+
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {//动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader: '',
+ gridBody: {
+ render () {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': false, type: 'success',
+ closable: false, title: '关于TreeTable使用'
+ }, ' treetable同样全部代码自动生成,页面生成后设置this.rowKe="xxx" tree主键字段,即可完成树形table配置,具体说明见Sys_Role1.js'),
+ ]
+ }
+ },
+
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [],//扩展的按钮
+ tableAction:"Sys_Role",
+ methods: {//事件扩展
+ onInited () {
+ this.height = this.height - 80;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ParentId') {
+ item.title = "上级角色";
+ //设置任意节点都能选中(默认只能选中最后一个节点)
+ item.changeOnSelect = true;
+ }
+ })
+ })
+ },
+ onInit() {
+ //设置treetable的唯一值字段(这个字段的值在表里面必须是唯一的)
+ this.rowKey="Role_Id";
+ },
+ /***加载后台数据见Sys_RoleController.cs文件***/
+ loadTreeChildren(tree, treeNode, resolve) { //加载子节点
+ let url=`api/role/getTreeTableChildrenData?roleId=${tree.Role_Id}`;
+ this.http.post(url,{}).then(result=>{
+ resolve(result.rows)
+ })
+ },
+ /***加载后台数据见Sys_RoleController.cs文件***/
+ searchBefore(params){//判断加载根节点或子节点
+ //没有查询条件,默认查询返回所有根节点数据
+ if (!params.wheres.length) {
+ params.value=1;
+ }
+ return true;
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/Sys_Role1.js b/src/extension/system/Sys_Role1.js
new file mode 100644
index 0000000..7d71ecd
--- /dev/null
+++ b/src/extension/system/Sys_Role1.js
@@ -0,0 +1,50 @@
+
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {//动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: [],//扩展的按钮
+ tableAction:"Sys_Role",
+ methods: {//事件扩展
+ onInited () {
+ this.height = this.height - 80;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'ParentId') {
+ item.title = "上级角色";
+ //设置任意节点都能选中(默认只能选中最后一个节点)
+ item.changeOnSelect = true;
+ }
+ })
+ })
+ },
+ onInit() {
+ //设置treetable的唯一值字段(这个字段的值在表里面必须是唯一的)
+ this.rowKey="Role_Id";
+ },
+ /***加载后台数据见Sys_RoleController.cs文件***/
+ loadTreeChildren(tree, treeNode, resolve) { //加载子节点
+ let url=`api/role/getTreeTableChildrenData?roleId=${tree.Role_Id}`;
+ this.http.post(url,{}).then(result=>{
+ resolve(result.rows)
+ })
+ },
+ /***加载后台数据见Sys_RoleController.cs文件***/
+ searchBefore(params){//判断加载根节点或子节点
+ //没有查询条件,默认查询返回所有根节点数据
+ if (!params.wheres.length) {
+ params.value=1;
+ }
+ return true;
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/Sys_User.js b/src/extension/system/Sys_User.js
new file mode 100644
index 0000000..ed59df4
--- /dev/null
+++ b/src/extension/system/Sys_User.js
@@ -0,0 +1,323 @@
+import { ConsoleLogger } from "@microsoft/signalr/dist/esm/Utils";
+import { stringifyStyle } from "@vue/shared";
+import { defineAsyncComponent } from "vue";
+import FileSaver from 'file-saver';
+let extension = {
+ components: { //动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader: defineAsyncComponent(() =>
+ import("./Sys_User/Sys_UserGridHeader.vue")),
+ gridBody: '',
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ text: "只能看到当前角色下的所有帐号",
+ buttons: [], //扩展的按钮
+ methods: { //事件扩展
+ getNowTime() {
+ let dt = new Date()
+ var y = dt.getFullYear()
+ var mt = (dt.getMonth() + 1).toString().padStart(2, '0')
+ var day = dt.getDate().toString().padStart(2, '0')
+ var h = dt.getHours().toString().padStart(2, '0')
+ var m = dt.getMinutes().toString().padStart(2, '0')
+ return y + mt + day + h + m
+ },
+ onInit() {
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ //在表单配置的第二行后,将MyComponent组件添加到表单中
+ this.editFormOptions.splice(this.editFormOptions.length, 0, [{
+ colSize: 12,
+ render: (h) => {
+ let elem = ;
+ return (elem)
+
+ }
+ }])
+ this.buttons.splice(5, 0, { //也可以用push或者splice方法来修改buttons数组
+ name: '导出PDF', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let url = "/api/User/ExportPDF";
+ this.http.get(url, {}, '正在导出数据....').then(content => {
+ //window.location.href = "https://wechat.625sc.com:8891/PDF/User/" + content
+ var URL = this.http.webAddress + "/PDF/User/" + content // URL 为URL地址
+ FileSaver.saveAs(URL, content);
+ })
+
+ }
+ });
+ //增加扩展字段 start
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Sys_User", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let data = [];
+ let isRequired = item.fieldAttr == null ? false : item.fieldAttr.includes("required");
+ let isReadyonly = item.fieldAttr == null ? false : item.fieldAttr.includes("readonly");
+ this.editFormFields[fieldCode] = "";
+ if (fieldType == "select" || fieldType == "switch" || fieldType == "checkbox" || fieldType == "selectList") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ dataKey: dataDic,
+ data: [],
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ })
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: 'string',
+ bind: { key: dataDic, data: [] },
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "img") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "textarea" || fieldType == "text" || fieldType == "number" || fieldType == "decimal" || fieldType == "phone") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else if (fieldType == "date" || fieldType == "datetime") {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: fieldType
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: fieldType,
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ else {
+ editFormObj.push({ //往新数组对象中添加新的属性 属性名对应属性值
+ title: fieldName,
+ required: isRequired,
+ readonly: isReadyonly,
+ field: fieldCode,
+ type: "text"
+ });
+ this.columns.push({
+ field: fieldCode,
+ title: fieldName,
+ type: "string",
+ width: 150,
+ require: isRequired,
+ readonly: isReadyonly,
+ align: 'left'
+ })
+ }
+ if ((index + 1) % 2 == 0 || (index + 1) == result.length) {
+ this.editFormOptions.push(editFormObj);
+ editFormObj = [];
+ }
+ }))
+ //刷新字典数据源
+ this.initDicKeys();
+ });
+ //增加扩展字段 end
+ this.boxOptions.height = 530;
+ this.columns.push({
+ title: '操作',
+ hidden: false,
+ align: "center",
+ fixed: 'right',
+ width: 120,
+ render: (h, { row, column, index }) => {
+ return h(
+ "div", { style: { 'font-size': '13px', 'cursor': 'pointer', 'color': '#409eff' } }, [
+ h(
+ "a", {
+ style: { 'margin-right': '15px' },
+ onClick: (e) => {
+ e.stopPropagation()
+ this.$refs.gridHeader.open(row);
+ }
+ }, "修改密码"
+ ),
+ h(
+ "a", {
+ style: {},
+ onClick: (e) => {
+ e.stopPropagation()
+ this.edit(row);
+ }
+ },
+ "编辑"
+ ),
+ ])
+ }
+ })
+
+
+ //点击弹窗后,增加扩展字段
+
+ },
+ searchAfter(result) { //查询ViewGird表数据后param查询参数,result回返查询的结果
+ var that = this;
+ that.http.ajax({
+ url: "api/Sys_User_ExtendData/getExtendDataByUserID",
+ json: true,
+ success: function (data) {
+ if (data.length > 0) {
+ result.forEach(function (ele, index) {
+ var dataDefect = data.filter(item => item.User_Id == ele.User_Id);
+ dataDefect.forEach(function (dataEle, dataIndex) {
+ result[index][dataEle.FieldCode] = dataEle.FieldValue
+ })
+ })
+ }
+ },
+ type: "get",
+ async: false,
+ });
+ return true;
+ },
+ nodeClick(catalogIds, nodes, nodesList) { //左边树节点点击事件
+ //左边树节点的甩有子节点,用于查询数据
+ this.nodesList = nodesList;
+ this.catalogIds = catalogIds.join(',');
+ //左侧树选中节点的所有父节点,用于新建时设置级联的默认值
+ this.nodes = nodes;
+ this.search();
+ },
+ onInited() { },
+ addAfter(result) { //用户新建后,显示随机生成的密码
+ if (!result.status) {
+ return true;
+ }
+ //显示新建用户的密码
+ //2020.08.28优化新建成后提示方式
+ this.$confirm(result.message, '新建用户成功', {
+ confirmButtonText: '确定',
+ type: 'success',
+ center: true
+ }).then(() => { })
+
+ this.boxModel = false;
+ this.refresh();
+ return false;
+ },
+ modelOpenAfter() {
+ //点击弹出框后,如果是编辑状态,禁止编辑用户名,如果新建状态,将用户名字段设置为可编辑
+ let isEDIT = this.currentAction == this.const.EDIT;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ if (x.field == "UserName") {
+ x.disabled = isEDIT;
+ }
+ })
+ //不是新建,性别默认值设置为男
+ if (!isEDIT) {
+ this.editFormFields.Gender = "0";
+ }
+ })
+ this.http.get("/api/Sys_Table_Extend/getTableExtendField?tableName=" + "Sys_User", {}, true).then((result) => {
+ let editFormObj = [];
+ result.map(((item, index) => {
+ let fieldName = item.fieldName;
+ let fieldCode = item.fieldCode;
+ let tableEx_Id = item.tableEx_Id;
+ let fieldType = item.fieldType;
+ let dataDic = item.dataDic;
+ let fieldAttr = item.fieldAttr;
+ let guideWords = item.guideWords;
+ let defaultValue = item.defaultValue;
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == fieldCode && guideWords != "") {
+ x.placeholder = guideWords;
+ }
+ if (this.currentAction == 'Add' && x.field == fieldCode && defaultValue != "") {
+ this.editFormFields[fieldCode] = defaultValue;
+ }
+ })
+ })
+ }))
+ // //刷新字典数据源
+ // this.initDicKeys();
+ });
+ },
+ addBefore(formData) { //弹出框新建或编辑功能点保存时可以将从表1,从表2的数据提到后台
+ this.setFormData(formData);
+ return true;
+ },
+ updateBefore(formData) { //编辑时功能点保存时可以将从表1,从表2的数据提到后台
+ this.setFormData(formData);
+ return true;
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ //查询前方法,如果是左边树选择了商品分类,直接查询商品分类
+ if (this.catalogIds) {
+ param.wheres.push({
+ name: 'Dept_Id',
+ value: this.catalogIds,
+ 'displayType':'selectList'
+ });
+ }
+ return true;
+ },
+ setFormData(formData) { //新建或编辑时,将从表1、2的数据提交到后台,见后台App_ReportPriceService的新建方法
+ //后台从对象里直接取extra的值
+ formData.extra = JSON.stringify(formData.mainData);
+ },
+
+ }
+};
+export default extension;
\ No newline at end of file
diff --git a/src/extension/system/Sys_User/Sys_UserGridHeader.vue b/src/extension/system/Sys_User/Sys_UserGridHeader.vue
new file mode 100644
index 0000000..0d3f327
--- /dev/null
+++ b/src/extension/system/Sys_User/Sys_UserGridHeader.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+ 帐号:{{ row.UserName }}
+ 用户:{{ row.UserTrueName }}
+
+
+
+
+
+
+ 修改密码
+ 关闭
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/system/flow/Sys_WorkFlow.js b/src/extension/system/flow/Sys_WorkFlow.js
new file mode 100644
index 0000000..9584a4d
--- /dev/null
+++ b/src/extension/system/flow/Sys_WorkFlow.js
@@ -0,0 +1,86 @@
+/*****************************************************************************************
+ ** Author:COCO
+ *****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import gridHader from './Sys_WorkFlow/WorkFlowGridHeader.vue';
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: gridHader,
+ gridBody: {
+ render() {
+ return [
+ h(
+ resolveComponent('el-alert'),
+ {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': true,
+ type: 'success',
+ closable: false,
+ title: '流程设计器根据easy-flow修改,表必须包括审批字段AuditStatus,具体见示例表入库单;后台startup需要注入审批流程'
+ },
+ ''
+ )
+ ];
+ }
+ },
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() {
+ //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ this.height = this.height - 50;
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ async modelOpenBeforeAsync(row) {
+ //点击编辑/新建按钮弹出框前,可以在此处写逻辑,如,从后台获取数据
+ this.$refs.gridHeader.open(row);
+ return false;
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/flow/Sys_WorkFlow/WorkFlowGridHeader.vue b/src/extension/system/flow/Sys_WorkFlow/WorkFlowGridHeader.vue
new file mode 100644
index 0000000..51f0149
--- /dev/null
+++ b/src/extension/system/flow/Sys_WorkFlow/WorkFlowGridHeader.vue
@@ -0,0 +1,251 @@
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/system/flow/Sys_WorkFlowTable.js b/src/extension/system/flow/Sys_WorkFlowTable.js
new file mode 100644
index 0000000..bd01659
--- /dev/null
+++ b/src/extension/system/flow/Sys_WorkFlowTable.js
@@ -0,0 +1,87 @@
+/*****************************************************************************************
+ ** Author:COCO
+ *****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() {
+
+ //表格上添加自定义按钮
+ this.columns.push({
+ title: '操作',
+ field: '操作',
+ width: 60,
+ align: 'center',
+ render: (h, { row, column, index }) => {
+ return (
+
+ {
+ this.$tabs.open({
+ text: row.WorkTableName||row.WorkName,
+ path: '/' + row.WorkTable,
+ query: { id: row.WorkTableKey, viewflow: 1 }
+ });
+ }}
+ type="primary"
+ plain
+ size="small"
+ style="height:26px; padding: 10px !important;"
+ >
+ 查看
+
+ )
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/form/FormCollectionObject.js b/src/extension/system/form/FormCollectionObject.js
new file mode 100644
index 0000000..2000fc5
--- /dev/null
+++ b/src/extension/system/form/FormCollectionObject.js
@@ -0,0 +1,74 @@
+//author:COCO
+//此处是对表单的方法,组件,权限操作按钮等进行任意扩展(方法扩展可参照SellOrder.js)
+let extension = {
+ components: {//动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader: '',//{ template: "扩展组xx件
" },
+ gridBody: '',
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ text: "点击左侧表单名名字即可加载收集的数据",
+ tableAction: "formCollectionResultTree",
+ buttons: { view: [], box: [], detail: [] },//扩展的按钮
+ methods: {//事件扩展
+ onInit() {
+ this.textInline = false;
+ // this.ck = false;
+ this.load = false;
+ this.setFiexdSearchForm(true);
+
+ },
+ onInited() {
+ this.height = this.height - 74;
+ },
+ loadById(item) {
+ let columns = [
+ {
+ title: "提交人",
+ field: "Creator"
+ },
+ {
+ title: "提交时间",
+ field: "CreateDate"
+ }];
+ JSON.parse(item.formOptions).formOptions.forEach(x => {
+ columns.push(...x.map(m => {
+ return {
+ title: m.title,
+ field: m.field,
+ type: m.type
+ }
+ }))
+ })
+ this.formId = item.formId;
+ this.columns.splice(0);
+ this.columns.push(...columns);
+ this.search();
+ },
+ exportBefore(formData) {
+ formData.Value = this.formId;
+ return true;
+ },
+ searchBefore(formData) {
+ // formData.Value = this.formId;
+ formData.wheres.push({name:'FormId',value:this.formId})
+ return true;
+ },
+ searchAfter(rows) {
+ rows.forEach(row => {
+ if (row.FormData) {
+ let data = JSON.parse(row.FormData);
+ for (const key in data) {
+ row[key] = Array.isArray(data[key]) ? data[key].filter(x => { return x != null && x != undefined }).join(',') : data[key];
+ }
+ }
+ })
+ return true;
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git a/src/extension/system/form/FormCollectionOptionsGridHeader.vue b/src/extension/system/form/FormCollectionOptionsGridHeader.vue
new file mode 100644
index 0000000..caf16b8
--- /dev/null
+++ b/src/extension/system/form/FormCollectionOptionsGridHeader.vue
@@ -0,0 +1,85 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/system/form/FormDesignOptions.js b/src/extension/system/form/FormDesignOptions.js
new file mode 100644
index 0000000..2c6ca8b
--- /dev/null
+++ b/src/extension/system/form/FormDesignOptions.js
@@ -0,0 +1,68 @@
+//author:COCO
+//此处是对表单的方法,组件,权限操作按钮等进行任意扩展(方法扩展可参照SellOrder.js)
+import gridHeader from './FormCollectionOptionsGridHeader.vue'
+import { h, resolveComponent } from 'vue';
+let extension = {
+ components: {//动态扩充组件或组件路径
+ //表单header、content、footer对应位置扩充的组件
+ gridHeader:gridHeader,//{ template: "扩展组xx件
" },
+ gridBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '12px' },
+ 'show-icon': true, type: 'success',
+ closable: false, title: '1、点击新建随便输入,2、点击表格[表单设计]然后保存,3、点击预览(页面打开后提交数据),4、数据采集页面看查结果'
+ }, ''),
+ ]
+ }
+ },
+ gridFooter: '',
+ //弹出框(修改、编辑、查看)header、content、footer对应位置扩充的组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ buttons: {view: [], box:[], detail:[]},//扩展的按钮
+ methods: {//事件扩展
+ onInit() {
+ this.boxOptions.height=200;
+ this.initFormButton();
+ },
+ onInited(){
+ this.height= this.height-40;
+ },
+ initFormButton() {
+ this.columns.splice(this.columns.findIndex(x => { return x.field == 'FormFields' }), 1, ...[{
+ title: "操作",
+ field: "表单设计",
+ with: 80,
+ sort: false,
+ formatter: () => {
+ return '表单设计 '
+ },
+ click: (row) => {
+ this.$refs.gridHeader.open(row);
+ }
+ },
+ {
+ title: "预览",
+ field: "预览",
+ with: 85,
+ sort: false,
+ formatter: () => {
+ return '预览 '
+ },
+ click: (row) => {
+ this.$tabs.open({
+ path: "/formSubmit", text: row.Title, query: {
+ id: row.FormId
+ }
+ })
+ // this.$refs.gridHeader.open(row);
+ }
+ }])
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git a/src/extension/system/quartz/Sys_QuartzLog.js b/src/extension/system/quartz/Sys_QuartzLog.js
new file mode 100644
index 0000000..b854f14
--- /dev/null
+++ b/src/extension/system/quartz/Sys_QuartzLog.js
@@ -0,0 +1,81 @@
+/*****************************************************************************************
+ ** Author:ZMRid 2022
+ ** QQ:514224717
+ *****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: 'Sys_QuartzLog', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() {
+ //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+ if (this.$route.path != '/Sys_QuartzLog') {
+ this.tableHeight = 345;
+ }
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ if (this.$route.path != '/Sys_QuartzLog') {
+ param.wheres.push({
+ name: 'Id',
+ value: this.$store.getters.data().quartzId
+ });
+ }
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/quartz/Sys_QuartzOptions.js b/src/extension/system/quartz/Sys_QuartzOptions.js
new file mode 100644
index 0000000..b969930
--- /dev/null
+++ b/src/extension/system/quartz/Sys_QuartzOptions.js
@@ -0,0 +1,154 @@
+/*****************************************************************************************
+ ** Author:ZMRid 2022
+ ** QQ:514224717
+ *****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import gridBody from './Sys_QuartzOptionsGridBody';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: gridBody,
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() {
+ this.textInline = false;
+ this.boxOptions.height = 470;
+ this.columns.push({
+ field: '操作',
+ title: '操作',
+ width: 150,
+ fixed: 'right',
+ align: 'center',
+ render: (h, { row, column, index }) => {
+ return h('div', { style: { color: '#0e84ff' } }, [
+ h(
+ 'span',
+ {
+ style: {
+ cursor: 'pointer',
+ 'margin-right': '8px',
+ 'border-bottom': '1px solid'
+ },
+ onClick: (e) => {
+ this.request('start', row);
+ }
+ },
+ '执行'
+ ),
+ h(
+ 'span',
+ {
+ style: {
+ cursor: 'pointer',
+ 'margin-right': '8px',
+ 'border-bottom': '1px solid'
+ },
+ onClick: (e) => {
+ this.request('pause', row);
+ }
+ },
+ '暂停'
+ ),
+ h(
+ 'span',
+ {
+ style: {
+ cursor: 'pointer',
+ 'border-bottom': '1px solid'
+ },
+ onClick: (e) => {
+ this.$store.getters.data().quartzId = row.Id;
+ this.$refs.gridBody.open();
+ }
+ },
+ '日志'
+ )
+ ]);
+ }
+ });
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ request(action, row) {
+ let url = `api/Sys_QuartzOptions/${action}`;
+ this.http.post(url, row, true).then((result) => {
+ this.$message.success('执行成功');
+ this.search();
+ });
+ },
+ onInited() {
+ this.height= this.height-50;
+ this.columns.forEach((col) => {
+ if (col.field == 'Status') {
+ col.align = 'center';
+ col.formatter = (row) => {
+ // return row.Status;
+ if (row.Status == 1) {
+ return ' 暂停 ';
+ }
+ return ' 正常 ';
+ };
+ }
+ });
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.editFormOptions.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'CronExpression') {
+ option.extra = {
+ style: 'color: #0e84ff;cursor: pointer;',
+ text: '查看',
+ click: () => {
+ window.open('https://cron.qqe2.com/', '_blank');
+ }
+ };
+ }
+ });
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ if (this.currentAction == 'Add' || !this.editFormFields.TimeOut) {
+ this.editFormFields.TimeOut = 180;
+ }
+ this.editFormOptions.forEach((options) => {
+ options.forEach((option) => {
+ if (option.field == 'GroupName') {
+ option.readonly = this.currentAction != 'Add';
+ }
+ });
+ });
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/quartz/Sys_QuartzOptionsGridBody.vue b/src/extension/system/quartz/Sys_QuartzOptionsGridBody.vue
new file mode 100644
index 0000000..7a2b5fe
--- /dev/null
+++ b/src/extension/system/quartz/Sys_QuartzOptionsGridBody.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+ 关闭
+
+
+
+
diff --git a/src/extension/system/system/Sys_Department.js b/src/extension/system/system/Sys_Department.js
new file mode 100644
index 0000000..1bbc9ce
--- /dev/null
+++ b/src/extension/system/system/Sys_Department.js
@@ -0,0 +1,148 @@
+/*****************************************************************************************
+** Author:COCO
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ this.rowKey = "DepartmentId";
+ },
+ loadTreeChildren(tree, treeNode, resolve) { //加载子节点
+ let url = `api/Sys_Department/getTreeTableChildrenData?departmentId=${tree.DepartmentId}`;
+ this.http.post(url, {}).then(result => {
+ resolve(result.rows)
+ })
+ },
+ /***加载后台数据见Sys_RoleController.cs文件***/
+ searchBefore(params) {//判断加载根节点或子节点
+ //没有查询条件,默认查询返回所有根节点数据
+ if (!params.wheres.length) {
+ params.value = 1;
+ }
+ return true;
+ },
+ onInited() {
+ let hasUpdate, hasDel, hasAdd;
+ this.buttons.forEach((x) => {
+ if (x.value == 'Update') {
+ x.hidden = true;
+ hasUpdate = true;
+ } else if (x.value == 'Delete') {
+ hasDel = true;
+ x.hidden = true;//隐藏按钮
+ }
+ else if (x.value == 'Add') {
+ x.type="primary";
+ hasAdd = true;
+ }
+ });
+ if (!(hasUpdate || hasDel || hasAdd)) {
+ return;
+ }
+ this.columns.push({
+ title: '操作',
+ field: '操作',
+ width: 80,
+ fixed: 'right',
+ align: 'center',
+ render: (h, { row, column, index }) => {
+ return (
+
+ {
+ this.addBtnClick(row)
+ }}
+ type="primary"
+ link
+ v-show={hasAdd}
+ icon="Plus"
+ >
+
+ {
+ this.edit(row);
+ }}
+ type="success"
+ link
+ v-show={hasUpdate}
+ icon="Edit"
+ >
+
+
+ {
+ this.del(row);
+ }}
+ v-show={hasDel}
+ type="danger"
+ icon="Delete"
+ >
+
+
+
+ );
+ }
+ });
+ },
+ addBtnClick(row) {
+ //这里是动态addCurrnetRow属性记录当前点击的行数据,下面modelOpenAfter设置默认值
+ this.addCurrnetRow = row;
+ this.add();
+ },
+ addAfter() {//添加后刷新字典
+ this.initDicKeys();
+ return true;
+ },
+ updateAfter() {
+ this.initDicKeys();
+ return true;
+ },
+ delAfter(result) {//查询界面的表删除后
+ this.initDicKeys();
+ return true;
+ },
+ modelOpenAfter(row) {
+ //点击行上的添加按钮事件
+ if (this.addCurrnetRow) {
+
+ //获取当前组织构架的所有父级id,用于设置新建时父级id的默认值
+
+ //获取数据数据源
+ let data = [];
+ this.editFormOptions.forEach(options => {
+ options.forEach(option => {
+ if (option.field == 'ParentId') {
+ data = option.orginData;
+ }
+ })
+ })
+ let parentIds = this.base.getTreeAllParent(this.addCurrnetRow.DepartmentId, data).map(x => { return x.id });
+ //设置编辑表单上级组织的默认值
+ this.editFormFields.ParentId = parentIds;
+ this.addCurrnetRow = null;
+
+ }
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/system/Sys_DeptTree.js b/src/extension/system/system/Sys_DeptTree.js
new file mode 100644
index 0000000..6c81bd3
--- /dev/null
+++ b/src/extension/system/system/Sys_DeptTree.js
@@ -0,0 +1,84 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.rowKey = 'DeptTreeId';
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(params) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ if (params.wheres.length == 0) {
+ params.value = 1;
+ }
+ return true;
+ },
+ loadTreeChildren(tree, treeNode, resolve) {
+ //加载子节点
+ let url = `api/Sys_DeptTree/getChildrenData?deptTreeId=${tree.DeptTreeId}`;
+ this.http.post(url, {}).then((result) => {
+ resolve(result.rows);
+ });
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/system/system/Sys_VersionInfo.js b/src/extension/system/system/Sys_VersionInfo.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/system/system/Sys_VersionInfo.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/Tools_Tool.js b/src/extension/tools/tools/Tools_Tool.js
new file mode 100644
index 0000000..e5e9a0d
--- /dev/null
+++ b/src/extension/tools/tools/Tools_Tool.js
@@ -0,0 +1,90 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.labelWidth = 120;
+ this.labelWidth = 120;
+ this.boxOptions.height = 450;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ if (this.currentAction == 'Add') {
+ this.editFormFields.Status = "STORE"
+ }
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ToolCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ if (x.field == 'Status') {
+ x.readonly = true;
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/Tools_ToolType.js b/src/extension/tools/tools/Tools_ToolType.js
new file mode 100644
index 0000000..956e6ac
--- /dev/null
+++ b/src/extension/tools/tools/Tools_ToolType.js
@@ -0,0 +1,98 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.boxOptions.labelWidth = 120;
+ this.labelWidth = 120;
+ this.boxOptions.height = 400;
+ this.editFormOptions.forEach(x => {
+ x.forEach(item => {
+ if (item.field == 'MaintenPeriod') {
+ //给编辑表单设置[选择数据]操作,extra具体配置见mesform组件api
+ item.extra = {
+ text: "天/次",
+ style: "color:black;font-size: 14px;cursor: pointer;",
+ click: item => {
+ this.$refs.modelBody.openDemo("ParentProduct_Id");
+ }
+ }
+ }
+ })
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ToolTypeCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/Tools_ToolsReceive.js b/src/extension/tools/tools/Tools_ToolsReceive.js
new file mode 100644
index 0000000..4927fa1
--- /dev/null
+++ b/src/extension/tools/tools/Tools_ToolsReceive.js
@@ -0,0 +1,111 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import modelHeader from "./tools/ToolsModelBody.vue"
+import gridFooter from './tools/ToolsGridFooter.vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择工装夹具', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0]);
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ToolsReceiveCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ var _button = this.boxButtons.find((x) => {
+ return x.value == 'save';
+ });
+ if(this.currentAction =="update")
+ {
+ _button.disabled= true;
+ }
+ else
+ {
+ _button.disabled= false;
+ };
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/Tools_ToolsReceiveList.js b/src/extension/tools/tools/Tools_ToolsReceiveList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/tools/tools/Tools_ToolsReceiveList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/Tools_ToolsReturn.js b/src/extension/tools/tools/Tools_ToolsReturn.js
new file mode 100644
index 0000000..70ddf4d
--- /dev/null
+++ b/src/extension/tools/tools/Tools_ToolsReturn.js
@@ -0,0 +1,111 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import modelHeader from "./tools/ToolsModelBody.vue"
+import gridFooter from './tools/ToolsReturnGridFooter.vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择工装夹具', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0]);
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "ToolsReturnCode") {
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ var _button = this.boxButtons.find((x) => {
+ return x.value == 'save';
+ });
+ if(this.currentAction =="update")
+ {
+ _button.disabled= true;
+ }
+ else
+ {
+ _button.disabled= false;
+ };
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/Tools_ToolsReturnList.js b/src/extension/tools/tools/Tools_ToolsReturnList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/tools/tools/Tools_ToolsReturnList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/tools/tools/tools/ToolsGridFooter.vue b/src/extension/tools/tools/tools/ToolsGridFooter.vue
new file mode 100644
index 0000000..692a086
--- /dev/null
+++ b/src/extension/tools/tools/tools/ToolsGridFooter.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/tools/tools/tools/ToolsModelBody.vue b/src/extension/tools/tools/tools/ToolsModelBody.vue
new file mode 100644
index 0000000..adb949a
--- /dev/null
+++ b/src/extension/tools/tools/tools/ToolsModelBody.vue
@@ -0,0 +1,119 @@
+
+
+
+
+ 工装夹具编码:
+
+ 工装夹具名称:
+
+ 搜索
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/tools/tools/tools/ToolsReturnGridFooter.vue b/src/extension/tools/tools/tools/ToolsReturnGridFooter.vue
new file mode 100644
index 0000000..14bf926
--- /dev/null
+++ b/src/extension/tools/tools/tools/ToolsReturnGridFooter.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/warehouse/warehouse/View_StockBalance.js b/src/extension/warehouse/warehouse/View_StockBalance.js
new file mode 100644
index 0000000..ec7114f
--- /dev/null
+++ b/src/extension/warehouse/warehouse/View_StockBalance.js
@@ -0,0 +1,78 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.columns.forEach(item=>{
+ if(item.field=="ProductCode" || item.field == "ProductName"){
+ item.fixed = true;
+ }
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/warehouse/warehouse/View_WareInOutDetail.js b/src/extension/warehouse/warehouse/View_WareInOutDetail.js
new file mode 100644
index 0000000..7679adc
--- /dev/null
+++ b/src/extension/warehouse/warehouse/View_WareInOutDetail.js
@@ -0,0 +1,79 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ this.labelWidth = 120;
+ this.columns.forEach(item=>{
+ if(item.field=="ProductCode" || item.field == "ProductName"){
+ item.fixed = true;
+ }
+ })
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/warehouse/warehouse/Ware_OutWareHouseBill.js b/src/extension/warehouse/warehouse/Ware_OutWareHouseBill.js
new file mode 100644
index 0000000..6ff9d10
--- /dev/null
+++ b/src/extension/warehouse/warehouse/Ware_OutWareHouseBill.js
@@ -0,0 +1,128 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import modelHeader from "./warehouse/ProductModelBody.vue"
+import gridFooter from './warehouse/Ware_OutWareHouseGridFooter';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'success',
+ closable: false, title: '直接点击【出库数量】可以直接进行修改'
+ }, ''),
+ ]
+ }
+ },
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ this.single = true;
+ this.columnIndex = true;
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260)/2;
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '打印', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ let html = document.getElementById("collect");
+ window.open(this.http.ipAddress + 'Print-Designer/print.html?cat=Ware_OutWareHouseBill&id=' + selectRow[0].OutWareHouseBill_Id + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择产品', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0],"wareHouse");
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "OutWareHouseBillCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/warehouse/warehouse/Ware_OutWareHouseBillList.js b/src/extension/warehouse/warehouse/Ware_OutWareHouseBillList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/warehouse/warehouse/Ware_OutWareHouseBillList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/warehouse/warehouse/Ware_WareHouseBill.js b/src/extension/warehouse/warehouse/Ware_WareHouseBill.js
new file mode 100644
index 0000000..371555d
--- /dev/null
+++ b/src/extension/warehouse/warehouse/Ware_WareHouseBill.js
@@ -0,0 +1,133 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+import { h, resolveComponent } from 'vue';
+import { ConsoleLogger } from "@microsoft/signalr/dist/esm/Utils";
+import modelHeader from "./warehouse/ProductModelBody.vue"
+import gridFooter from './warehouse/Ware_WareHouseGridFooter.vue';
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: gridFooter,
+ //新建、编辑弹出框扩展组件
+ modelHeader: modelHeader,
+ modelBody: {
+ render() {
+ return [
+ h(resolveComponent('el-alert'), {
+ style: { 'margin-bottom': '5px' },
+ 'show-icon': true, type: 'warning',
+ closable: false, title: '直接点击【入库数量】可以直接进行修改'
+ }, ''),
+ ]
+ }
+ },
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.single = true;
+ this.columnIndex = true;
+ //点击单元格编辑与结束编辑(默认是点击单元格编辑,鼠标离开结束编辑)
+ this.detailOptions.clickEdit = true;
+ this.tableMaxHeight = (document.body.clientHeight - 260) / 2;
+ this.buttons.splice(3,0,{ //也可以用push或者splice方法来修改buttons数组
+ name: '打印', //按钮名称
+ icon: 'el-icon-printer', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ type: 'warning', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ onClick: function () {
+ let selectRow = this.$refs.table.getSelected();
+ if (selectRow.length == 0) {
+ return this.$error('请选择要编辑的行!');
+ }
+ if (selectRow.length != 1) {
+ return this.$error('只能选择一行数据进行编辑!');
+ }
+ let html = document.getElementById("collect");
+ window.open(this.http.ipAddress + 'Print-Designer/print.html?cat=Ware_WareHouseBill&id=' + selectRow[0].WareHouseBill_Id + "&token=" + this.$store.getters.getToken(),'_blank')
+ }
+ });
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ //明细表选择数据源操作
+ //获取明细表备注列,给备注列添加选择数据操作
+ this.detailOptions.buttons.shift();
+ this.detailOptions.buttons.unshift({
+ name: '选择产品', //按钮名称
+ icon: 'el-icon-plus', //按钮图标,参照iview图标
+ hidden: false, //是否隐藏按钮(如果想要隐藏按钮,在onInited方法中遍历buttons,设置hidden=true)
+ onClick: function () {
+ //触发事件
+ this.$refs.modelHeader.open();
+ }
+ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ this.$nextTick(() => {
+ this.$refs.gridFooter.rowClick(result[0], "wareHouse");
+ });
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ //调用Doc_Order1GridFooter.vue文件中(订单明细)的查询
+ this.$refs.gridFooter.rowClick(row);
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ this.editFormOptions.forEach(item => {
+ item.forEach(x => {
+ //如果是编辑设置为只读
+ if (x.field == "WareHouseBillCode") {
+ //disabled是editFormOptions的动态属性,这里只能通过this.$set修改值
+ //vue3版本改为设置:x.disabled=isEDIT
+ x.placeholder = "请输入,忽略将自动生成";
+ }
+ })
+ })
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/warehouse/warehouse/Ware_WareHouseBillList.js b/src/extension/warehouse/warehouse/Ware_WareHouseBillList.js
new file mode 100644
index 0000000..e5f0c3f
--- /dev/null
+++ b/src/extension/warehouse/warehouse/Ware_WareHouseBillList.js
@@ -0,0 +1,73 @@
+/*****************************************************************************************
+** Author:COCO 2022
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ //显示序号(默认隐藏)
+ this.columnIndex = true;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/src/extension/warehouse/warehouse/warehouse/ProductModelBody.vue b/src/extension/warehouse/warehouse/warehouse/ProductModelBody.vue
new file mode 100644
index 0000000..154d976
--- /dev/null
+++ b/src/extension/warehouse/warehouse/warehouse/ProductModelBody.vue
@@ -0,0 +1,151 @@
+
+
+
+
+ 产品编码:
+
+
+ 搜索
+
+ 入库数量:
+ 出库数量:
+
+
+
+
+
+
+
+
+ 添加选择的数据
+ 关闭
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/warehouse/warehouse/warehouse/Ware_OutWareHouseGridFooter.vue b/src/extension/warehouse/warehouse/warehouse/Ware_OutWareHouseGridFooter.vue
new file mode 100644
index 0000000..2f091bc
--- /dev/null
+++ b/src/extension/warehouse/warehouse/warehouse/Ware_OutWareHouseGridFooter.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/extension/warehouse/warehouse/warehouse/Ware_WareHouseGridFooter.vue b/src/extension/warehouse/warehouse/warehouse/Ware_WareHouseGridFooter.vue
new file mode 100644
index 0000000..340a0d0
--- /dev/null
+++ b/src/extension/warehouse/warehouse/warehouse/Ware_WareHouseGridFooter.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/language/index.js b/src/language/index.js
new file mode 100644
index 0000000..2fb74f3
--- /dev/null
+++ b/src/language/index.js
@@ -0,0 +1,32 @@
+import { createI18n } from "vue-i18n";
+import zhCN from "./locales/zh-CN";
+import enUS from "./locales/en-US";
+import http from "@/../src/api/http.js";
+
+let language = localStorage.getItem("language") || navigator.language; // 获取本地存储 || 根据浏览器语言设置
+var zh = {};
+var en = {};
+http.post('/api/Base_Language/getPageData', {}, true).then((result) => {
+ console.log("6666",result)
+ result.rows.forEach(lan => {
+ var chineseArr = lan.Chinese;
+ var englishArr = lan.English;
+ zh[chineseArr]=chineseArr;
+ en[chineseArr]=englishArr;
+ });
+
+ });
+
+const i18n = createI18n({
+ legacy: false, // 使用Composition API,这里必须设置为false
+ locale: language, // 默认显示语言
+ globalInjection: true, // 全局注册$t方法
+ messages: {
+ // "zh-CN": zhCN,
+ // "en-US": enUS,
+ "zh-CN": zh,
+ "en-US": en,
+ },
+});
+
+export default i18n;
diff --git a/src/language/locales/en-US.js b/src/language/locales/en-US.js
new file mode 100644
index 0000000..70d0bf7
--- /dev/null
+++ b/src/language/locales/en-US.js
@@ -0,0 +1,13 @@
+export default {
+ languageTxt: "简体中文", // 当前语言模式下 可切换的语言模式
+
+
+ // 头部信息
+ headTxt: {
+ saleinfo:"Full source code for sale, interested in contact QQ/ wechat: 514224717",
+ },
+ "姓名":"Name",
+ "关闭菜单":"Close Menu",
+ // 菜单
+ "用户管理": "UserManage",
+ };
\ No newline at end of file
diff --git a/src/language/locales/zh-CN.js b/src/language/locales/zh-CN.js
new file mode 100644
index 0000000..cd8c8c0
--- /dev/null
+++ b/src/language/locales/zh-CN.js
@@ -0,0 +1,12 @@
+export default {
+ languageTxt: "en-US", // 当前语言模式下 可切换的语言模式
+
+ // 头部信息
+ headTxt: {
+ saleinfo:"【商业版】全套源码出售,有意联系QQ/微信:514224717",
+ },
+ "姓名":"姓名",
+ "关闭菜单":"关闭菜单",
+ // 菜单
+ "用户管理": "用户管理",
+ };
\ No newline at end of file
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..f4b4116
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,64 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+import router from './router'
+import store from './store'
+import ElementPlus from 'element-plus';
+// import 'element-plus/lib/theme-chalk/index.css';
+import 'element-plus/dist/index.css'
+import './assets/element-icon/icon.css'
+import base from './uitils/common'
+import http from './api/http'
+// import 'dayjs/locale/zh-cn'
+// import locale from 'element-plus/lib/locale/lang/zh-cn'
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
+
+
+import i18n from './language'
+
+import permission from './api/permission'
+import viewgird from './components/basic/ViewGrid';
+const app = createApp(App);
+for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
+ app.component(key, component)
+}
+app.config.globalProperties.base = base;
+app.config.globalProperties.http = http;
+app.config.globalProperties.$tabs = {};
+app.config.globalProperties.permission = permission;
+app.config.globalProperties.$global = {
+ signalR: false, //是否开启signalR
+ table: {
+ //mes-table带数据源的单元格是否启用tag标签(下拉框等单元格以tag标签显示)
+ useTag: true
+ },
+ audit: { //审核选项
+ data: [
+ { text: '通过', value: 1 },
+ { text: '拒绝', value: 3 },
+ { text: '驳回', value: 4 }
+ ],
+ status:[0,2] //审核中的数据
+ // 待审核 = 0,
+ // 审核通过 = 1,
+ // 审核中 = 2,
+ // 审核未通过 = 3,
+ // 驳回 = 4
+ }
+}
+//2023.03.13,
+//修改见:volupload.vue,后台AliOSSController.cs,阿里云OSS配置.doc
+window.oss = {
+ ali: { //阿里云
+ use: false,//使用阿里云上传文件
+ //阿里缩略图压缩大小
+ //.aliyuncs.com
+ small: "?x-oss-process=image/resize,m_lfit,w_200"
+ }
+}
+app.use(store)
+ .use(i18n)
+ .use(ElementPlus, { size: 'default' })
+ .use(router)
+ .use(viewgird)
+ .mount('#app');
+app.config.globalProperties.$Message = app.config.globalProperties.$message;
diff --git a/src/router/charts.js b/src/router/charts.js
new file mode 100644
index 0000000..084f80a
--- /dev/null
+++ b/src/router/charts.js
@@ -0,0 +1,3 @@
+let charts=[
+ ]
+export default charts
diff --git a/src/router/form.js b/src/router/form.js
new file mode 100644
index 0000000..4a468cc
--- /dev/null
+++ b/src/router/form.js
@@ -0,0 +1,5 @@
+
+let form = [
+
+]
+export default form
diff --git a/src/router/formsMulti.js b/src/router/formsMulti.js
new file mode 100644
index 0000000..b3301a6
--- /dev/null
+++ b/src/router/formsMulti.js
@@ -0,0 +1,4 @@
+
+let formsMulti=[
+ ]
+export default formsMulti
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..108e473
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,115 @@
+import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
+import form from './form'
+import formsMulti from './formsMulti'
+import tables from './tables'
+import viewgird from './viewGird'
+import store from '../store/index'
+import redirect from './redirect'
+import charts from './charts'
+const routes = [
+ {
+ path: '/',
+ name: 'Index',
+ component: () => import('@/views/Index'),
+ redirect: '/home',
+ children: [
+ ...form,//Demo表单路由
+ ...formsMulti,
+ ...tables,//tables
+ ...viewgird,
+ ...redirect,
+ ...charts,
+ {
+ path: '/home',
+ name: 'home',
+ meta: {
+ title: 'home', // home 对应语言文件的route.home
+ icon: 'ep-mic',
+ order: 100
+ },
+ component: () => import('@/views/Home.vue')
+ }, {
+ path: '/UserInfo',
+ name: 'UserInfo',
+ component: () => import('@/views/system/UserInfo.vue')
+ },
+ {
+ path: '/sysMenu',
+ name: 'sysMenu',
+ component: () => import('@/views/system/Sys_Menu.vue')
+ }, {
+ path: '/coder',
+ name: 'coder',
+ component: () => import('@/views/builder/coder.vue')
+ },
+ {
+ path: '/formDraggable', //表单设计
+ name: 'formDraggable',
+ component: () => import('@/views/formDraggable/formDraggable.vue')
+ },
+ {
+ path: '/formSubmit', //表单提交页面
+ name: 'formSubmit',
+ component: () => import('@/views/formDraggable/FormSubmit.vue'),
+ meta:{
+ keepAlive:false
+ }
+ },
+ {
+ path: '/formCollectionResultTree', //显示收集的数据表单
+ name: 'formCollectionResultTree',
+ component: () => import('@/views/formDraggable/FormCollectionResultTree.vue'),
+ meta:{
+ keepAlive:false
+ }
+ },
+ {
+ path: '/signalR',
+ name: 'signalR',
+ component: () => import('@/views/signalR/Index.vue'),
+ meta:{
+ keepAlive:false
+ }
+ }
+ ]
+ },
+ {
+ path: '/login',
+ name: 'login',
+ component: () => import('@/views/Login.vue')
+ }
+]
+
+const router = createRouter({
+ history: createWebHashHistory(), //createWebHistory(process.env.BASE_URL),
+ routes
+})
+
+
+router.beforeEach((to, from, next) => {
+ if (to.matched.length == 0) return next({ path: '/404' });
+ //2020.06.03增加路由切换时加载提示
+ store.dispatch("onLoading", true);
+ if ((to.hasOwnProperty('meta') && to.meta.anonymous) || store.getters.isLogin() || to.path == '/login') {
+ return next();
+ }
+
+ next({ path: '/login', query: { redirect: Math.random() } });
+})
+router.afterEach((to, from) => {
+ store.dispatch("onLoading", false);
+})
+router.onError((error) => {
+ // const targetPath = router.currentRoute.value.matched;
+ try {
+ console.log(error.message);
+ if (process.env.NODE_ENV == 'development') {
+ alert(error.message)
+ }
+ localStorage.setItem("route_error", error.message)
+ } catch (e) {
+
+ }
+ window.location.href = '/'
+});
+export default router
diff --git a/src/router/redirect.js b/src/router/redirect.js
new file mode 100644
index 0000000..144beb8
--- /dev/null
+++ b/src/router/redirect.js
@@ -0,0 +1,22 @@
+
+let redirect = [{
+ path: '/404',
+ name: '404',
+ component: () => import('@/components/redirect/404'),
+ meta:{
+ anonymous:true
+ }
+}, {
+ path: '/401',
+ name: '401',
+ component: () => import('@/components/redirect/401')
+}, {
+ path: '/coding',
+ name: 'coding',
+ component: () => import('@/components/redirect/coding')
+}, {
+ path: '/message',
+ name: 'message',
+ component: () => import('@/components/redirect/Message.vue')
+}]
+export default redirect;
\ No newline at end of file
diff --git a/src/router/tables.js b/src/router/tables.js
new file mode 100644
index 0000000..9edd78f
--- /dev/null
+++ b/src/router/tables.js
@@ -0,0 +1,4 @@
+
+let tables = [
+]
+export default tables;
diff --git a/src/router/viewGird.js b/src/router/viewGird.js
new file mode 100644
index 0000000..9a1cc98
--- /dev/null
+++ b/src/router/viewGird.js
@@ -0,0 +1,481 @@
+
+let viewgird = [
+ {
+ path: '/Sys_Log',
+ name: 'sys_Log',
+ component: () => import('@/views/system/Sys_Log.vue' )
+ },
+ {
+ path: '/Sys_User',
+ name: 'Sys_User',
+ component: () => import('@/views/system/Sys_User.vue' )
+ },
+ {
+ path: '/permission',
+ name: 'permission',
+ component: () => import('@/views/system/Permission.vue' )
+ },
+ {
+ path: '/Sys_Dictionary',
+ name: 'Sys_Dictionary',
+ component: () => import('@/views/system/Sys_Dictionary.vue' )
+ },
+ {
+ path: '/Sys_Role',
+ name: 'Sys_Role',
+ component: () => import('@/views/system/Sys_Role.vue' )
+ }, {
+ path: '/Sys_Role1',
+ name: 'Sys_Role1',
+ component: () => import('@/views/system/Sys_Role1.vue' )
+ }
+ , {
+ path: '/Sys_DictionaryList',
+ name: 'Sys_DictionaryList',
+ component: () => import('@/views/system/Sys_DictionaryList.vue' )
+ } ,{
+ path: '/FormDesignOptions',
+ name: 'FormDesignOptions',
+ component: () => import('@/views/system/form/FormDesignOptions.vue')
+ } ,{
+ path: '/FormCollectionObject',
+ name: 'FormCollectionObject',
+ component: () => import('@/views/system/form/FormCollectionObject.vue')
+ } ,{
+ path: '/Custom/Sys_User_ExtendData',
+ name: 'Sys_User_ExtendData',
+ component: () => import('@/views/custom/custom/Sys_User_ExtendData.vue')
+ } ,{
+ path: '/Sys_Table_Extend',
+ name: 'Sys_Table_Extend',
+ component: () => import('@/views/custom/custom/Sys_Table_Extend.vue')
+ } ,{
+ path: '/Sys_User_Extend',
+ name: 'Sys_User_Extend',
+ component: () => import('@/views/custom/custom/Sys_User_Extend.vue')
+ }
+ ,{
+ path: '/Base_DefectItem_Extend',
+ name: 'Base_DefectItem_Extend',
+ component: () => import('@/views/custom/custom/Base_DefectItem_Extend.vue')
+ }
+ ,{
+ path: '/Base_MeritPay_Extend',
+ name: 'Base_MeritPay_Extend',
+ component: () => import('@/views/custom/custom/Base_MeritPay_Extend.vue')
+ }
+ ,{
+ path: '/Base_Process_Extend',
+ name: 'Base_Process_Extend',
+ component: () => import('@/views/custom/custom/Base_Process_Extend.vue')
+ }
+ ,{
+ path: '/Base_Product_Extend',
+ name: 'Base_Product_Extend',
+ component: () => import('@/views/custom/custom/Base_Product_Extend.vue')
+ } ,{
+ path: '/Sys_User_ExtendData',
+ name: 'Sys_User_ExtendData',
+ component: () => import('@/views/custom/custom/Sys_User_ExtendData.vue')
+ } ,{
+ path: '/Sys_Dept',
+ name: 'Sys_Dept',
+ component: () => import('@/views/system/Sys_Dept.vue')
+ } ,{
+ path: '/Sys_Unit',
+ name: 'Sys_Unit',
+ component: () => import('@/views/custom/custom/Sys_Unit.vue')
+ } ,{
+ path: '/Base_DefectItem',
+ name: 'Base_DefectItem',
+ component: () => import('@/views/custom/custom/Base_DefectItem.vue')
+ } ,{
+ path: '/Base_Process',
+ name: 'Base_Process',
+ component: () => import('@/views/custom/custom/Base_Process.vue')
+ } ,{
+ path: '/Base_ProcessList',
+ name: 'Base_ProcessList',
+ component: () => import('@/views/custom/custom/Base_ProcessList.vue')
+ } ,{
+ path: '/Base_NumberRule',
+ name: 'Base_NumberRule',
+ component: () => import('@/views/custom/custom/Base_NumberRule.vue')
+ } ,{
+ path: '/Base_ProcessLine',
+ name: 'Base_ProcessLine',
+ component: () => import('@/views/custom/custom/Base_ProcessLine.vue'),
+ meta:{
+ keepAlive:false
+ }
+ } ,{
+ path: '/Base_ProcessLineList',
+ name: 'Base_ProcessLineList',
+ component: () => import('@/views/custom/custom/Base_ProcessLineList.vue'),
+ meta:{
+ keepAlive:false
+ }
+ } ,{
+ path: '/Base_MeritPay',
+ name: 'Base_MeritPay',
+ component: () => import('@/views/custom/custom/Base_MeritPay.vue')
+ } ,{
+ path: '/Base_Product',
+ name: 'Base_Product',
+ component: () => import('@/views/custom/custom/Base_Product.vue')
+ } ,{
+ path: '/View_Base_MaterialDetail',
+ name: 'View_Base_MaterialDetail',
+ component: () => import('@/views/custom/custom/View_Base_MaterialDetail.vue')
+ } ,{
+ path: '/Ware_WareHouseBill',
+ name: 'Ware_WareHouseBill',
+ component: () => import('@/views/warehouse/warehouse/Ware_WareHouseBill.vue')
+ } ,{
+ path: '/Ware_WareHouseBillList',
+ name: 'Ware_WareHouseBillList',
+ component: () => import('@/views/warehouse/warehouse/Ware_WareHouseBillList.vue')
+ } ,{
+ path: '/Ware_OutWareHouseBillList',
+ name: 'Ware_OutWareHouseBillList',
+ component: () => import('@/views/warehouse/warehouse/Ware_OutWareHouseBillList.vue')
+ } ,{
+ path: '/Ware_OutWareHouseBill',
+ name: 'Ware_OutWareHouseBill',
+ component: () => import('@/views/warehouse/warehouse/Ware_OutWareHouseBill.vue')
+ } ,{
+ path: '/View_WareInOutDetail',
+ name: 'View_WareInOutDetail',
+ component: () => import('@/views/warehouse/warehouse/View_WareInOutDetail.vue')
+ } ,{
+ path: '/View_StockBalance',
+ name: 'View_StockBalance',
+ component: () => import('@/views/warehouse/warehouse/View_StockBalance.vue')
+ } ,{
+ path: '/Production_SalesOrderList',
+ name: 'Production_SalesOrderList',
+ component: () => import('@/views/production/production/Production_SalesOrderList.vue')
+ } ,{
+ path: '/Production_SalesOrder',
+ name: 'Production_SalesOrder',
+ component: () => import('@/views/production/production/Production_SalesOrder.vue')
+ } ,{
+ path: '/Production_ProductPlanList',
+ name: 'Production_ProductPlanList',
+ component: () => import('@/views/production/production/Production_ProductPlanList.vue')
+ } ,{
+ path: '/Production_ProductPlan',
+ name: 'Production_ProductPlan',
+ component: () => import('@/views/production/production/Production_ProductPlan.vue')
+ } ,{
+ path: '/Production_AssembleWorkOrderList',
+ name: 'Production_AssembleWorkOrderList',
+ component: () => import('@/views/production/production/Production_AssembleWorkOrderList.vue')
+ } ,{
+ path: '/Production_AssembleWorkOrder',
+ name: 'Production_AssembleWorkOrder',
+ component: () => import('@/views/production/production/Production_AssembleWorkOrder.vue')
+ } ,{
+ path: '/Production_WorkOrder',
+ name: 'Production_WorkOrder',
+ component: () => import('@/views/production/production/Production_WorkOrder.vue')
+ } ,{
+ path: '/Production_WorkOrderList',
+ name: 'Production_WorkOrderList',
+ component: () => import('@/views/production/production/Production_WorkOrderList.vue')
+ } ,{
+ path: '/Base_PrintCatalog',
+ name: 'Base_PrintCatalog',
+ component: () => import('@/views/custom/custom/Base_PrintCatalog.vue')
+ } ,{
+ path: '/Base_PrintTemplate',
+ name: 'Base_PrintTemplate',
+ component: () => import('@/views/custom/custom/Base_PrintTemplate.vue')
+ } ,{
+ path: '/Base_PrintTemplateTree',
+ name: 'Base_PrintTemplateTree',
+ component: () => import('@/views/custom/custom/Base_PrintTemplateTree.vue')
+ } ,{
+ path: '/Production_ReportWorkOrder',
+ name: 'Production_ReportWorkOrder',
+ component: () => import('@/views/production/production/Production_ReportWorkOrder.vue')
+ } ,{
+ path: '/Production_ReportWorkOrderList',
+ name: 'Production_ReportWorkOrderList',
+ component: () => import('@/views/production/production/Production_ReportWorkOrderList.vue')
+ } ,{
+ path: '/View_OutputStatistics',
+ name: 'View_OutputStatistics',
+ component: () => import('@/views/report/report/View_OutputStatistics.vue')
+ } ,{
+ path: '/Sys_WorkFlowTable',
+ name: 'Sys_WorkFlowTable',
+ component: () => import('@/views/system/flow/Sys_WorkFlowTable.vue')
+ } ,{
+ path: '/Sys_WorkFlow',
+ name: 'Sys_WorkFlow',
+ component: () => import('@/views/system/flow/Sys_WorkFlow.vue')
+ } ,{
+ path: '/View_EmployeePerformance',
+ name: 'View_EmployeePerformance',
+ component: () => import('@/views/report/report/View_EmployeePerformance.vue')
+ } ,{
+ path: '/View_SalaryReport',
+ name: 'View_SalaryReport',
+ component: () => import('@/views/report/report/View_SalaryReport.vue')
+ } ,{
+ path: '/View_DefectItemDistribute',
+ name: 'View_DefectItemDistribute',
+ component: () => import('@/views/report/report/View_DefectItemDistribute.vue')
+ } ,{
+ path: '/View_DefectItemSummary',
+ name: 'View_DefectItemSummary',
+ component: () => import('@/views/report/report/View_DefectItemSummary.vue')
+ } ,{
+ path: '/View_ProductionReport',
+ name: 'View_ProductionReport',
+ component: () => import('@/views/report/report/View_ProductionReport.vue')
+ } ,{
+ path: '/Base_Notice',
+ name: 'Base_Notice',
+ component: () => import('@/views/custom/custom/Base_Notice.vue')
+ } ,{
+ path: '/Base_Product_ExtendData',
+ name: 'Base_Product_ExtendData',
+ component: () => import('@/views/custom/custom/Base_Product_ExtendData.vue')
+ } ,{
+ path: '/Base_Process_ExtendData',
+ name: 'Base_Process_ExtendData',
+ component: () => import('@/views/custom/custom/Base_Process_ExtendData.vue')
+ } ,{
+ path: '/Base_DefectItem_ExtendData',
+ name: 'Base_DefectItem_ExtendData',
+ component: () => import('@/views/custom/custom/Base_DefectItem_ExtendData.vue')
+ } ,{
+ path: '/Base_MaterialDetail_ExtendData',
+ name: 'Base_MaterialDetail_ExtendData',
+ component: () => import('@/views/custom/custom/Base_MaterialDetail_ExtendData.vue')
+ } ,{
+ path: '/Base_MeritPay_ExtendData',
+ name: 'Base_MeritPay_ExtendData',
+ component: () => import('@/views/custom/custom/Base_MeritPay_ExtendData.vue')
+ } ,{
+ path: '/Sys_QuartzLog',
+ name: 'Sys_QuartzLog',
+ component: () => import('@/views/system/quartz/Sys_QuartzLog.vue')
+ } ,{
+ path: '/Sys_QuartzOptions',
+ name: 'Sys_QuartzOptions',
+ component: () => import('@/views/system/quartz/Sys_QuartzOptions.vue')
+ } ,{
+ path: '/Sys_VersionInfo',
+ name: 'Sys_VersionInfo',
+ component: () => import('@/views/system/system/Sys_VersionInfo.vue')
+ },{
+ path: '/Sys_UserTree',
+ name: 'Sys_UserTree',
+ component: () => import('@/views/system/Sys_UserTree.vue')
+ } ,{
+ path: '/Equip_DevCatalog',
+ name: 'Equip_DevCatalog',
+ component: () => import('@/views/equip/equip/Equip_DevCatalog.vue')
+ } ,{
+ path: '/Base_WorkShop',
+ name: 'Base_WorkShop',
+ component: () => import('@/views/custom/custom/Base_WorkShop.vue')
+ } ,{
+ path: '/Equip_Device',
+ name: 'Equip_Device',
+ component: () => import('@/views/equip/equip/Equip_Device.vue')
+ } ,{
+ path: '/Equip_DeviceTree',
+ name: 'Equip_DeviceTree',
+ component: () => import('@/views/equip/equip/Equip_DeviceTree.vue')
+ },
+ {
+ path: '/DashBoard/WorkShopBoard',
+ name: 'WorkShopBoard',
+ component: () => import('@/views/dashboard/WorkShopBoard.vue'),
+ } ,{
+ path: '/Equip_SpotMaintenance',
+ name: 'Equip_SpotMaintenance',
+ component: () => import('@/views/equip/equip/Equip_SpotMaintenance.vue')
+ } ,{
+ path: '/Equip_SpotMaintPlan',
+ name: 'Equip_SpotMaintPlan',
+ component: () => import('@/views/equip/equip/Equip_SpotMaintPlan.vue')
+ } ,{
+ path: '/Equip_SpotMaintPlanDevice',
+ name: 'Equip_SpotMaintPlanDevice',
+ component: () => import('@/views/equip/equip/Equip_SpotMaintPlanDevice.vue')
+ } ,{
+ path: '/Equip_SpotMaintPlanProject',
+ name: 'Equip_SpotMaintPlanProject',
+ component: () => import('@/views/equip/equip/Equip_SpotMaintPlanProject.vue')
+ } ,{
+ path: '/Equip_MaintainPaper',
+ name: 'Equip_MaintainPaper',
+ component: () => import('@/views/equip/equip/Equip_MaintainPaper.vue')
+ } ,{
+ path: '/Equip_SpotMaintWorkOrder',
+ name: 'Equip_SpotMaintWorkOrder',
+ component: () => import('@/views/equip/equip/Equip_SpotMaintWorkOrder.vue')
+ } ,{
+ path: '/Cal_TeamMember',
+ name: 'Cal_TeamMember',
+ component: () => import('@/views/calendar/calendar/Cal_TeamMember.vue')
+ } ,{
+ path: '/Cal_Team',
+ name: 'Cal_Team',
+ component: () => import('@/views/calendar/calendar/Cal_Team.vue')
+ } ,{
+ path: '/Cal_PlanShift',
+ name: 'Cal_PlanShift',
+ component: () => import('@/views/calendar/calendar/Cal_PlanShift.vue')
+ } ,{
+ path: '/Cal_PlanTeam',
+ name: 'Cal_PlanTeam',
+ component: () => import('@/views/calendar/calendar/Cal_PlanTeam.vue')
+ } ,{
+ path: '/Cal_Plan',
+ name: 'Cal_Plan',
+ component: () => import('@/views/calendar/calendar/Cal_Plan.vue')
+ } ,{
+ path: '/Cal_TeamShift',
+ name: 'Cal_TeamShift',
+ component: () => import('@/views/calendar/calendar/Cal_TeamShift.vue')
+ } ,{
+ path: '/Cal_HolidaySec',
+ name: 'Cal_HolidaySec',
+ component: () => import('@/views/calendar/calendar/Cal_HolidaySec.vue')
+ } ,{
+ path: '/Cal_Calendar',
+ name: 'Cal_Calendar',
+ component: () => import('@/views/calendar/calendar/calendar/index.vue')
+ } ,{
+ path: '/Tools_ToolType',
+ name: 'Tools_ToolType',
+ component: () => import('@/views/tools/tools/Tools_ToolType.vue')
+ } ,{
+ path: '/Tools_Tool',
+ name: 'Tools_Tool',
+ component: () => import('@/views/tools/tools/Tools_Tool.vue')
+ } ,{
+ path: '/Tools_ToolsReceiveList',
+ name: 'Tools_ToolsReceiveList',
+ component: () => import('@/views/tools/tools/Tools_ToolsReceiveList.vue')
+ } ,{
+ path: '/Tools_ToolsReceive',
+ name: 'Tools_ToolsReceive',
+ component: () => import('@/views/tools/tools/Tools_ToolsReceive.vue')
+ } ,{
+ path: '/Tools_ToolsReturnList',
+ name: 'Tools_ToolsReturnList',
+ component: () => import('@/views/tools/tools/Tools_ToolsReturnList.vue')
+ } ,{
+ path: '/Tools_ToolsReturn',
+ name: 'Tools_ToolsReturn',
+ component: () => import('@/views/tools/tools/Tools_ToolsReturn.vue')
+ } ,{
+ path: '/Quality_Defect',
+ name: 'Quality_Defect',
+ component: () => import('@/views/quality/quality/Quality_Defect.vue')
+ } ,{
+ path: '/Quality_TestItem',
+ name: 'Quality_TestItem',
+ component: () => import('@/views/quality/quality/Quality_TestItem.vue')
+ } ,{
+ path: '/Quality_Template',
+ name: 'Quality_Template',
+ component: () => import('@/views/quality/quality/Quality_Template.vue')
+ } ,{
+ path: '/Quality_TemplateTestItem',
+ name: 'Quality_TemplateTestItem',
+ component: () => import('@/views/quality/quality/Quality_TemplateTestItem.vue')
+ } ,{
+ path: '/Quality_TemplateProduct',
+ name: 'Quality_TemplateProduct',
+ component: () => import('@/views/quality/quality/Quality_TemplateProduct.vue')
+ } ,{
+ path: '/Quality_InComingCheckTestItem',
+ name: 'Quality_InComingCheckTestItem',
+ component: () => import('@/views/quality/quality/Quality_InComingCheckTestItem.vue')
+ } ,{
+ path: '/Quality_InComingCheck',
+ name: 'Quality_InComingCheck',
+ component: () => import('@/views/quality/quality/Quality_InComingCheck.vue')
+ } ,{
+ path: '/Quality_ProcessCheckTestItem',
+ name: 'Quality_ProcessCheckTestItem',
+ component: () => import('@/views/quality/quality/Quality_ProcessCheckTestItem.vue')
+ } ,{
+ path: '/Quality_ProcessCheck',
+ name: 'Quality_ProcessCheck',
+ component: () => import('@/views/quality/quality/Quality_ProcessCheck.vue')
+ } ,{
+ path: '/Quality_OutCheckTestItem',
+ name: 'Quality_OutCheckTestItem',
+ component: () => import('@/views/quality/quality/Quality_OutCheckTestItem.vue')
+ } ,{
+ path: '/Quality_OutCheck',
+ name: 'Quality_OutCheck',
+ component: () => import('@/views/quality/quality/Quality_OutCheck.vue')
+ } ,{
+ path: '/Base_ExcelTemplate',
+ name: 'Base_ExcelTemplate',
+ component: () => import('@/views/custom/custom/Base_ExcelTemplate.vue')
+ } ,{
+ path: '/Base_ExcelTemplateTree',
+ name: 'Base_ExcelTemplateTree',
+ component: () => import('@/views/custom/custom/Base_ExcelTemplateTree.vue')
+ } ,{
+ path: '/Bi_db_dim',
+ name: 'Bi_db_dim',
+ component: () => import('@/views/bi/bimanage/Bi_db_dim.vue')
+ } ,{
+ path: '/Bi_db_source',
+ name: 'Bi_db_source',
+ component: () => import('@/views/bi/bimanage/Bi_db_source.vue')
+ } ,{
+ path: '/Bi_db_set',
+ name: 'Bi_db_set',
+ component: () => import('@/views/bi/bimanage/Bi_db_set.vue')
+ } ,{
+ path: '/Bi_db_ybp',
+ name: 'Bi_db_ybp',
+ component: () => import('@/views/bi/bimanage/Bi_db_ybp.vue')
+ } ,{
+ path: '/Bi_desktop',
+ name: 'Bi_desktop',
+ component: () => import('@/views/bi/bimanage/Bi_desktop.vue')
+ } ,{
+ path: '/Base_DesktopMenu',
+ name: 'Base_DesktopMenu',
+ component: () => import('@/views/custom/custom/Base_DesktopMenu.vue')
+ } ,{
+ path: '/Base_MaterialDetailTree',
+ name: 'Base_MaterialDetailTree',
+ component: () => import('@/views/custom/custom/Base_MaterialDetailTree.vue')
+ } ,{
+ path: '/Sys_DeptTree',
+ name: 'Sys_DeptTree',
+ component: () => import('@/views/system/system/Sys_DeptTree.vue')
+ } ,{
+ path: '/Sys_Department',
+ name: 'Sys_Department',
+ component: () => import('@/views/system/system/Sys_Department.vue')
+ } ,{
+ path: '/Base_Language',
+ name: 'Base_Language',
+ component: () => import('@/views/custom/custom/Base_Language.vue')
+ } ,{
+ path: '/View_SalaryReportCover',
+ name: 'View_SalaryReportCover',
+ component: () => import('@/views/report/report/View_SalaryReportCover.vue')
+ } ,{
+ path: '/Production_OverWorkOrder',
+ name: 'Production_OverWorkOrder',
+ component: () => import('@/views/production/production/Production_OverWorkOrder.vue')
+ }]
+
+export default viewgird
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..94d4935
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,89 @@
+import { createStore } from 'vuex'
+const keys = { USER: 'user' }
+function getUserInfo(state) {
+ if (state.userInfo) return state.userInfo;
+ let userInfo = localStorage.getItem(keys.USER);
+ if (userInfo) {
+ state.userInfo = JSON.parse(userInfo);
+ }
+ return state.userInfo;
+}
+export default createStore({
+ state: {
+ data: {},
+ permission: [],
+ isLoading: false,//2020.06.03增加路由切换时加载提示
+ userInfo: null
+ },
+ mutations: {
+ setPermission(state, data) { //调用方式 this.$store.commit('setPermission', data)
+ if (!data || typeof data != 'object') return;
+ if (data instanceof Array) {
+ state.permission.push(...data);
+ } else {
+ state.permission = data;
+ }
+ }, setUserInfo(state, data) {
+ state.userInfo = data;
+ localStorage.setItem(keys.USER, JSON.stringify(data));
+ },
+ clearUserInfo(state) {
+ state.permission = [];
+ state.userInfo = null;
+ localStorage.removeItem(keys.USER);
+ },
+ test(state) {
+ return 113344;
+ },
+ updateLoadingState(state, flag) {
+ state.isLoading = flag
+ }
+ }, getters: {
+ getPermission: (state) => (path) => { //调用方式 store.getters.getPermission('sys_User')
+ if (!path) return state.permission;
+ return state.permission.find(x => x.path == path);
+ },
+ getUserInfo: (state) => () => {
+ getUserInfo(state);
+ return state.userInfo;
+ }, getUserName: (state) => () => {
+ getUserInfo(state);
+ if (state.userInfo) {
+ return state.userInfo.userName;
+ }
+ return '未获取到登陆信息';
+ },
+ getToken: (state) => () => {
+ getUserInfo(state);
+ if (state.userInfo) {
+ return 'Bearer ' + state.userInfo.token;
+ }
+ return '';
+ },
+ isLogin: (state) => () => {
+ if (getUserInfo(state)) {
+ return true;
+ }
+ return false;
+ },
+ isLoading: (state) => () => {
+ return state.isLoading;
+ },
+ data: (state) => () => {
+ return state.data;
+ },
+ getData: (state) => () => {
+ return state.data;
+ },
+ }, actions: {
+ setPermission(context, data) {
+ context.commit('setPermission', data); //调用方式 store.dispatch('push')
+ },
+ toDo(context) {
+ return context.Store.m;
+ },
+ onLoading(context, flag) {
+ context.commit("updateLoadingState", flag);
+ }
+ }
+})
diff --git a/src/uitils/calendar.js b/src/uitils/calendar.js
new file mode 100644
index 0000000..00af448
--- /dev/null
+++ b/src/uitils/calendar.js
@@ -0,0 +1,668 @@
+/**
+ * @1900-2100区间内的公历、农历互转
+ * @charset UTF-8
+ * @Author Jea杨(JJonline@JJonline.Cn)
+ * @Time 2014-7-21
+ * @Time 2016-8-13 Fixed 2033hex、Attribution Annals
+ * @Time 2016-9-25 Fixed lunar LeapMonth Param Bug
+ * @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+ * @Version 1.0.3
+ * @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+ * @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+ */
+const calendar = {
+
+ /**
+ * 农历1900-2100的润大小信息表
+ * @Array Of Property
+ * @return Hex
+ */
+ lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,//1900-1909
+ 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,//1910-1919
+ 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,//1920-1929
+ 0x06566, 0x0d4a0, 0x0ea50, 0x16a95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,//1930-1939
+ 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,//1940-1949
+ 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0,//1950-1959
+ 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,//1960-1969
+ 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6,//1970-1979
+ 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,//1980-1989
+ 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0,//1990-1999
+ 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,//2000-2009
+ 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,//2010-2019
+ 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,//2020-2029
+ 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,//2030-2039
+ 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0,//2040-2049
+ /**Add By JJonline@JJonline.Cn**/
+ 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0,//2050-2059
+ 0x092e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4,//2060-2069
+ 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0,//2070-2079
+ 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160,//2080-2089
+ 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252,//2090-2099
+ 0x0d520],//2100
+
+ /**
+ * 公历每个月份的天数普通表
+ * @Array Of Property
+ * @return Number
+ */
+ solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+ /**
+ * 天干地支之天干速查表
+ * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+ * @return Cn string
+ */
+ Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],
+
+ /**
+ * 天干地支之地支速查表
+ * @Array Of Property
+ * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+ * @return Cn string
+ */
+ Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c", "\u4ea5"],
+
+ /**
+ * 天干地支之地支速查表<=>生肖
+ * @Array Of Property
+ * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+ * @return Cn string
+ */
+ Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21", "\u72d7", "\u732a"],
+
+ /**
+ * 阳历节日
+ */
+ festival: {
+ '1-1': {title: '元旦节'},
+ '2-14': {title: '情人节'},
+ '5-1': {title: '劳动节'},
+ '5-4': {title: '青年节'},
+ '6-1': {title: '儿童节'},
+ '9-10': {title: '教师节'},
+ '10-1': {title: '国庆节'},
+ '12-25': {title: '圣诞节'},
+
+ '3-8': {title: '妇女节'},
+ '3-12': {title: '植树节'},
+ '4-1': {title: '愚人节'},
+ '5-12': {title: '护士节'},
+ '7-1': {title: '建党节'},
+ '8-1': {title: '建军节'},
+ '12-24': {title: '平安夜'},
+ },
+
+ /**
+ * 农历节日
+ */
+ lFestival: {
+ '12-30': {title: '除夕'},
+ '1-1': {title: '春节'},
+ '1-15': {title: '元宵节'},
+ '2-2': {title: '龙抬头'},
+ '5-5': {title: '端午节'},
+ '7-7': {title: '七夕节'},
+ '7-15': {title: '中元节'},
+ '8-15': {title: '中秋节'},
+ '9-9': {title: '重阳节'},
+ '10-1': {title: '寒衣节'},
+ '10-15': {title: '下元节'},
+ '12-8': {title: '腊八节'},
+ '12-23': {title: '北方小年'},
+ '12-24': {title: '南方小年'},
+ },
+
+ /**
+ * 返回默认定义的阳历节日
+ */
+ getFestival() {
+ return this.festival
+ },
+
+ /**
+ * 返回默认定义的内容里节日
+ */
+ getLunarFestival() {
+ return this.lFestival
+ },
+
+ /**
+ *
+ * @param param {Object} 按照festival的格式输入数据,设置阳历节日
+ */
+ setFestival(param = {}) {
+ this.festival = param
+ },
+
+ /**
+ *
+ * @param param {Object} 按照lFestival的格式输入数据,设置农历节日
+ */
+ setLunarFestival(param = {}) {
+ this.lFestival = param
+ },
+
+ /**
+ * 24节气速查表
+ * @Array Of Property
+ * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+ * @return Cn string
+ */
+ solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206", "\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691", "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d", "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"],
+
+ /**
+ * 1900-2100各年的24节气日期速查表
+ * @Array Of Property
+ * @return 0x string For splice
+ */
+ sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+ '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+ 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+ '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+ '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+ '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+ '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+ '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+ '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+ '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+ '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+ '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+ '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+ '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+ '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+ '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+ '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+ '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+ '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+ '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+ '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+ '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+ '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+ '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+ '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+ '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
+
+ /**
+ * 数字转中文速查表
+ * @Array Of Property
+ * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+ * @return Cn string
+ */
+ nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],
+
+ /**
+ * 日期转农历称呼速查表
+ * @Array Of Property
+ * @trans ['初','十','廿','卅']
+ * @return Cn string
+ */
+ nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],
+
+ /**
+ * 月份转农历称呼速查表
+ * @Array Of Property
+ * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+ * @return Cn string
+ */
+ nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac", "\u814a"],
+
+ /**
+ * 返回农历y年一整年的总天数
+ * @param y lunar Year
+ * @return Number
+ * @eg:var count = calendar.lYearDays(1987) ;//count=387
+ */
+ lYearDays: function (y) {
+ let i, sum = 348;
+ for (i = 0x8000; i > 0x8; i >>= 1) {
+ sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0;
+ }
+ return (sum + this.leapDays(y));
+ },
+
+ /**
+ * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+ * @param y lunar Year
+ * @return Number (0-12)
+ * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+ */
+ leapMonth: function (y) { //闰字编码 \u95f0
+ return (this.lunarInfo[y - 1900] & 0xf);
+ },
+
+ /**
+ * 返回农历y年闰月的天数 若该年没有闰月则返回0
+ * @param y lunar Year
+ * @return Number (0、29、30)
+ * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+ */
+ leapDays: function (y) {
+ if (this.leapMonth(y)) {
+ return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
+ }
+ return (0);
+ },
+
+ /**
+ * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+ * @param y lunar Year
+ * @param m lunar Month
+ * @return Number (-1、29、30)
+ * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+ */
+ monthDays: function (y, m) {
+ if (m > 12 || m < 1) {
+ return -1
+ }//月份参数从1至12,参数错误返回-1
+ return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
+ },
+
+ /**
+ * 返回公历(!)y年m月的天数
+ * @param y solar Year
+ * @param m solar Month
+ * @return Number (-1、28、29、30、31)
+ * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+ */
+ solarDays: function (y, m) {
+ if (m > 12 || m < 1) {
+ return -1
+ } //若参数错误 返回-1
+ const ms = m - 1;
+ if (ms === 1) { //2月份的闰平规律测算后确认返回28或29
+ return (((y % 4 === 0) && (y % 100 !== 0) || (y % 400 === 0)) ? 29 : 28);
+ } else {
+ return (this.solarMonth[ms]);
+ }
+ },
+
+ /**
+ * 农历年份转换为干支纪年
+ * @param lYear 农历年的年份数
+ * @return Cn string
+ */
+ toGanZhiYear: function (lYear) {
+ var ganKey = (lYear - 3) % 10;
+ var zhiKey = (lYear - 3) % 12;
+ if (ganKey === 0) ganKey = 10;//如果余数为0则为最后一个天干
+ if (zhiKey === 0) zhiKey = 12;//如果余数为0则为最后一个地支
+ return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];
+
+ },
+
+ /**
+ * 公历月、日判断所属星座
+ * @param cMonth [description]
+ * @param cDay [description]
+ * @return Cn string
+ */
+ toAstro: function (cMonth, cDay) {
+ const s = "\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
+ const arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
+ return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7";//座
+ },
+
+ /**
+ * 传入offset偏移量返回干支
+ * @param offset 相对甲子的偏移量
+ * @return Cn string
+ */
+ toGanZhi: function (offset) {
+ return this.Gan[offset % 10] + this.Zhi[offset % 12];
+ },
+
+ /**
+ * 传入公历(!)y年获得该年第n个节气的公历日期
+ * @param y y公历年(1900-2100)
+ * @param n n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+ * @return day Number
+ * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+ */
+ getTerm: function (y, n) {
+ if( y < 1900 || y > 2100 || n < 1 || n > 24) {
+ return -1;
+ }
+ const _table = this.sTermInfo[y - 1900];
+ const _calcDay = []
+ for (let index = 0; index < _table.length; index += 5) {
+ const chunk = parseInt('0x' + _table.substr(index, 5)).toString()
+ _calcDay.push(
+ chunk[0],
+ chunk.substr(1, 2),
+ chunk[3],
+ chunk.substr(4, 2)
+ )
+ }
+ return parseInt(_calcDay[n - 1]);
+ },
+
+ /**
+ * 传入农历数字月份返回汉语通俗表示法
+ * @param m lunar month
+ * @return Cn string
+ * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+ */
+ toChinaMonth: function (m) { // 月 => \u6708
+ if (m > 12 || m < 1) {
+ return -1
+ } //若参数错误 返回-1
+ let s = this.nStr3[m - 1];
+ s += "\u6708";//加上月字
+ return s;
+ },
+
+ /**
+ * 传入农历日期数字返回汉字表示法
+ * @param d lunar day
+ * @return Cn string
+ * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+ */
+ toChinaDay: function (d) { //日 => \u65e5
+ let s;
+ switch (d) {
+ case 10:
+ s = '\u521d\u5341';
+ break;
+ case 20:
+ s = '\u4e8c\u5341';
+ break;
+ case 30:
+ s = '\u4e09\u5341';
+ break;
+ default :
+ s = this.nStr2[Math.floor(d / 10)];
+ s += this.nStr1[d % 10];
+ }
+ return (s);
+ },
+
+ /**
+ * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+ * @param y year
+ * @return Cn string
+ * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+ */
+ getAnimal: function (y) {
+ return this.Animals[(y - 4) % 12]
+ },
+
+ /**
+ * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+ * !important! 公历参数区间1900.1.31~2100.12.31
+ * @param yPara solar year
+ * @param mPara solar month
+ * @param dPara solar day
+ * @return JSON object
+ * @eg:console.log(calendar.solar2lunar(1987,11,01));
+ */
+ solar2lunar: function (yPara, mPara, dPara) {
+ let y = parseInt(yPara);
+ let m = parseInt(mPara);
+ let d = parseInt(dPara);
+ //年份限定、上限
+ if (y < 1900 || y > 2100) {
+ return -1;// undefined转换为数字变为NaN
+ }
+ //公历传参最下限
+ if (y === 1900 && m === 1 && d < 31) {
+ return -1;
+ }
+
+ //未传参 获得当天
+ let objDate;
+ if (!y) {
+ objDate = new Date();
+ } else {
+ objDate = new Date(y, parseInt(m) - 1, d);
+ }
+ let i, leap = 0, temp = 0;
+ //修正ymd参数
+ y = objDate.getFullYear();
+ m = objDate.getMonth() + 1;
+ d = objDate.getDate();
+ let offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000;
+ for (i = 1900; i < 2101 && offset > 0; i++) {
+ temp = this.lYearDays(i);
+ offset -= temp;
+ }
+ if (offset < 0) {
+ offset += temp;
+ i--;
+ }
+
+ //是否今天
+ let isTodayObj = new Date(),
+ isToday = false;
+ if (isTodayObj.getFullYear() === y && isTodayObj.getMonth() + 1 === m && isTodayObj.getDate() === d) {
+ isToday = true;
+ }
+ //星期几
+ let nWeek = objDate.getDay(),
+ cWeek = this.nStr1[nWeek];
+ //数字表示周几顺应天朝周一开始的惯例
+ if (nWeek === 0) {
+ nWeek = 7;
+ }
+ //农历年
+ const year = i;
+ leap = this.leapMonth(i); //闰哪个月
+ let isLeap = false;
+
+ //效验闰月
+ for (i = 1; i < 13 && offset > 0; i++) {
+ //闰月
+ if (leap > 0 && i === (leap + 1) && isLeap === false) {
+ --i;
+ isLeap = true;
+ temp = this.leapDays(year); //计算农历闰月天数
+ } else {
+ temp = this.monthDays(year, i);//计算农历普通月天数
+ }
+ //解除闰月
+ if (isLeap === true && i === (leap + 1)) {
+ isLeap = false;
+ }
+ offset -= temp;
+ }
+ // 闰月导致数组下标重叠取反
+ if (offset === 0 && leap > 0 && i === leap + 1) {
+ if (isLeap) {
+ isLeap = false;
+ } else {
+ isLeap = true;
+ --i;
+ }
+ }
+ if (offset < 0) {
+ offset += temp;
+ --i;
+ }
+ //农历月
+ const month = i;
+ //农历日
+ const day = offset + 1;
+ //天干地支处理
+ const sm = m - 1;
+ const gzY = this.toGanZhiYear(year);
+
+ // 当月的两个节气
+ // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+ const firstNode = this.getTerm(y, (m * 2 - 1));//返回当月「节」为几日开始
+ const secondNode = this.getTerm(y, (m * 2));//返回当月「节」为几日开始
+
+ // 依据12节气修正干支月
+ let gzM = this.toGanZhi((y - 1900) * 12 + m + 11);
+ if (d >= firstNode) {
+ gzM = this.toGanZhi((y - 1900) * 12 + m + 12);
+ }
+
+ //传入的日期的节气与否
+ let isTerm = false;
+ let Term = null;
+ if (firstNode === d) {
+ isTerm = true;
+ Term = this.solarTerm[m * 2 - 2];
+ }
+ if (secondNode === d) {
+ isTerm = true;
+ Term = this.solarTerm[m * 2 - 1];
+ }
+ //日柱 当月一日与 1900/1/1 相差天数
+ const dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
+ const gzD = this.toGanZhi(dayCyclical + d - 1);
+ //该日期所属的星座
+ const astro = this.toAstro(m, d);
+
+ const solarDate = y + '-' + m + '-' + d;
+ const lunarDate = year + '-' + month + '-' + day;
+
+ const festival = this.festival;
+ const lFestival = this.lFestival;
+
+ const festivalDate = m + '-' + d;
+ let lunarFestivalDate = month + '-' + day;
+
+ // bugfix https://github.com/jjonline/calendar.js/issues/29
+ // 农历节日修正:农历12月小月则29号除夕,大月则30号除夕
+ // 此处取巧修正:当前为农历12月29号时增加一次判断并且把lunarFestivalDate设置为12-30以正确取得除夕
+ // 天朝农历节日遇闰月过前不过后的原则,此处取农历12月天数不考虑闰月
+ // 农历润12月在本工具支持的200年区间内仅1574年出现
+ if (month === 12 && day === 29 && this.monthDays(year, month) === 29) {
+ lunarFestivalDate = '12-30';
+ }
+ return {
+ date: solarDate,
+ lunarDate: lunarDate,
+ festival: festival[festivalDate] ? festival[festivalDate].title : null,
+ lunarFestival: lFestival[lunarFestivalDate] ? lFestival[lunarFestivalDate].title : null,
+ 'lYear': year,
+ 'lMonth': month,
+ 'lDay': day,
+ 'Animal': this.getAnimal(year),
+ 'IMonthCn': (isLeap ? "\u95f0" : '') + this.toChinaMonth(month),
+ 'IDayCn': this.toChinaDay(day),
+ 'cYear': y,
+ 'cMonth': m,
+ 'cDay': d,
+ 'gzYear': gzY,
+ 'gzMonth': gzM,
+ 'gzDay': gzD,
+ 'isToday': isToday,
+ 'isLeap': isLeap,
+ 'nWeek': nWeek,
+ 'ncWeek': "\u661f\u671f" + cWeek,
+ 'isTerm': isTerm,
+ 'Term': Term,
+ 'astro': astro
+ };
+ },
+
+ /**
+ * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+ * !important! 参数区间1900.1.31~2100.12.1
+ * @param y lunar year
+ * @param m lunar month
+ * @param d lunar day
+ * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+ * @return JSON object
+ * @eg:console.log(calendar.lunar2solar(1987,9,10));
+ */
+ lunar2solar: function (y, m, d, isLeapMonth) {
+ y = parseInt(y)
+ m = parseInt(m)
+ d = parseInt(d)
+ isLeapMonth = !!isLeapMonth;
+ const leapOffset = 0;
+ const leapMonth = this.leapMonth(y);
+ const leapDay = this.leapDays(y);
+ if (isLeapMonth && (leapMonth !== m)) {
+ return -1;
+ }//传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+ if (y === 2100 && m === 12 && d > 1 || y === 1900 && m === 1 && d < 31) {
+ return -1;
+ }//超出了最大极限值
+ const day = this.monthDays(y, m);
+ let _day = day;
+ //bugFix 2016-9-25
+ //if month is leap, _day use leapDays method
+ if (isLeapMonth) {
+ _day = this.leapDays(y, m);
+ }
+ if (y < 1900 || y > 2100 || d > _day) {
+ return -1;
+ }//参数合法性效验
+
+ //计算农历的时间差
+ let offset = 0;
+ let i;
+ for (i = 1900; i < y; i++) {
+ offset += this.lYearDays(i);
+ }
+ let leap = 0, isAdd = false;
+ for (i = 1; i < m; i++) {
+ leap = this.leapMonth(y);
+ if (!isAdd) {//处理闰月
+ if (leap <= i && leap > 0) {
+ offset += this.leapDays(y);
+ isAdd = true;
+ }
+ }
+ offset += this.monthDays(y, i);
+ }
+ //转换闰月农历 需补充该年闰月的前一个月的时差
+ if (isLeapMonth) {
+ offset += day;
+ }
+ //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+ const strap = Date.UTC(1900, 1, 30, 0, 0, 0);
+ const calObj = new Date((offset + d - 31) * 86400000 + strap);
+ const cY = calObj.getUTCFullYear();
+ const cM = calObj.getUTCMonth() + 1;
+ const cD = calObj.getUTCDate();
+
+ return this.solar2lunar(cY, cM, cD);
+ }
+};
+
+export default calendar;
\ No newline at end of file
diff --git a/src/uitils/common.js b/src/uitils/common.js
new file mode 100644
index 0000000..e1e1a8a
--- /dev/null
+++ b/src/uitils/common.js
@@ -0,0 +1,337 @@
+let base = {
+ addDays(date, days) {
+ //给指定日期增加天数
+ if (!days) {
+ return date;
+ }
+ let dateArr = date.split(' ');
+ date = new Date(new Date(date).setDate(new Date(date).getDate() + days));
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1;
+ if (month < 10) {
+ month = '0' + month;
+ }
+ var day = date.getDate();
+ if (day < 10) {
+ day = '0' + day;
+ }
+ date = year + '-' + month + '-' + day;
+ if (dateArr.length == 1) {
+ return date;
+ }
+ return date + ' ' + dateArr[1];
+ },
+ //获取当前时间,time是否带时分秒
+ getDate(time) {
+ let date = new Date();
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+
+ let datetime =
+ year +
+ '-' +
+ (month < 10 ? '0' + month : month) +
+ '-' +
+ (day < 10 ? '0' + day : day);
+
+ if (!time) {
+ return datetime;
+ }
+
+ let hour = date.getHours();
+ let minutes = date.getMinutes();
+ let second = date.getSeconds();
+
+ return (
+ datetime +
+ '' +
+ ' ' +
+ (hour < 10 ? '0' + hour : hour) +
+ ':' +
+ (minutes < 10 ? '0' + minutes : minutes) +
+ ':' +
+ (second < 10 ? '0' + second : second)
+ );
+ },
+ isPhone(val) {
+ return /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(val);
+ },
+ isDecimal(val) {
+ return /(^[\-0-9][0-9]*(.[0-9]+)?)$/.test(val);
+ },
+ isNumber(val) {
+ return /(^[\-0-9][0-9]*([0-9]+)?)$/.test(val);
+ },
+ isMail(val) {
+ return /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/.test(val);
+ },
+ isUrl(url) {
+ return this.checkUrl(url);
+ },
+ checkUrl(url) {
+ // url= 协议://(ftp的登录信息)[IP|域名](:端口号)(/或?请求参数)
+ var strRegex =
+ '^((https|http|ftp)://)?' + // (https或http或ftp):// 可有可无
+ "(([\\w_!~*'()\\.&=+$%-]+: )?[\\w_!~*'()\\.&=+$%-]+@)?" + // ftp的user@ 可有可无
+ '(([0-9]{1,3}\\.){3}[0-9]{1,3}' + // IP形式的URL- 3位数字.3位数字.3位数字.3位数字
+ '|' + // 允许IP和DOMAIN(域名)
+ '(localhost)|' + // 匹配localhost
+ "([\\w_!~*'()-]+\\.)*" + // 域名- 至少一个[英文或数字_!~*\'()-]加上.
+ '\\w+\\.' + // 一级域名 -英文或数字 加上.
+ '[a-zA-Z]{1,6})' + // 顶级域名- 1-6位英文
+ '(:[0-9]{1,5})?' + // 端口- :80 ,1-5位数字
+ '((/?)|' + // url无参数结尾 - 斜杆或这没有
+ "(/[\\w_!~*'()\\.;?:@&=+$,%#-]+)+/?)$"; // 请求参数结尾- 英文或数字和[]内的各种字符
+ var re = new RegExp(strRegex, 'i'); // i不区分大小写
+ // 将url做uri转码后再匹配,解除请求参数中的中文和空字符影响
+ if (re.test(encodeURI(url))) {
+ return true;
+ }
+ return false;
+ },
+ matchUrlIp(url, ip) {
+ // url使用是否使用的当前ip
+ if (!url || !ip) {
+ return false;
+ }
+ return url.indexOf(ip.replace('https://', '').replace('http://', '')) >= 0;
+ },
+ getImgSrc(src, httpUrl) {
+ if (this.isUrl(src)) {
+ return src;
+ }
+ if (httpUrl) {
+ return httpUrl + src;
+ }
+ return src;
+ },
+ previewImg(src, httpUrl) {
+ // 图片预览,目前只支持单图片预览
+ if (src && !this.isUrl(src) && httpUrl) {
+ if (
+ src.substr(0, 1) == '/' &&
+ httpUrl.substr(httpUrl.length - 1, 1) == '/'
+ ) {
+ src = src.substr(1);
+ }
+ src = httpUrl + src;
+ }
+ let id = 'mes-preview';
+ let $div = document.getElementById(id);
+ if (!$div) {
+ $div = document.createElement('div');
+ $div.setAttribute('id', 'mes-preview');
+ let $mask = document.createElement('div');
+ $mask.style.position = 'absolute';
+ $mask.style.width = '100%';
+ $mask.style.height = '100%';
+ $mask.style.background = 'black';
+ $mask.style.opacity = '0.6';
+ $div.appendChild($mask);
+ $div.style.position = 'fixed';
+ $div.style.width = '100%';
+ $div.style.height = '100%';
+ // $div.style.overflow = "scroll";
+ $div.style.top = 0;
+ $div.style['z-index'] = 9999999;
+ let $img = document.createElement('img');
+ $img.setAttribute('class', 'mes-preview-img');
+ $img.style.position = 'absolute';
+ $img.style.top = '50%';
+ $img.style.left = '50%';
+ $img.style['max-width'] = '90%';
+ $img.style['max-height'] = '90%';
+ $img.style.transform = 'translate(-50%,-50%)';
+ // $img.src = src;
+ $img.setAttribute('src', src);
+ $div.appendChild($img);
+ $div.addEventListener('click', function() {
+ this.style.display = 'none';
+ });
+ document.body.appendChild($div);
+ return;
+ }
+ let $img1 = document.body
+ .appendChild($div)
+ .querySelector('.mes-preview-img');
+ // img.src = src;
+ $img1.setAttribute('src', src);
+ $div.style.display = 'block';
+ },
+ // 下载文件 $element 标签, url完整url, fileName 文件名, header 以key/value传值
+ // backGroundUrl 后台url,如果后台url直接从后台下载,其他全部通过点击a标签下载
+ dowloadFile(url, fileName, header, backGroundUrl) {
+ if (!url) return alert('此文件没有url不能下载');
+ if (!this.isUrl(url)) {
+ url = backGroundUrl + url;
+ }
+ window.open(url);
+ },
+ downloadImg(data) {
+ if (!data.url || !data.callback || typeof data.callback !== 'function') {
+ return;
+ }
+ // url, backGroundUrl, header, callback
+ if (
+ this.isUrl(data.url) &&
+ !this.matchUrlIp(data.url, data.backGroundUrl)
+ ) {
+ return data.url;
+ }
+ // 通过后台api服务器下载
+ if (!this.isUrl(data.url)) {
+ if (!this.isUrl(data.backGroundUrl + data.url)) {
+ return;
+ }
+ data.url = data.backGroundUrl + data.url;
+ }
+ var xmlResquest = new XMLHttpRequest();
+ xmlResquest.open('get', data.url, true);
+ xmlResquest.responseType = 'blob';
+ xmlResquest.setRequestHeader('Content-Type', 'application/json');
+ if (data.header && typeof data.header === 'object') {
+ for (const key in data.header) {
+ xmlResquest.setRequestHeader(key, data.header[key]);
+ }
+ }
+ xmlResquest.onload = function() {
+ if (this.status == 200) {
+ var blob = this.response;
+ callback(window.URL.createObjectURL(blob));
+ }
+ };
+ xmlResquest.send();
+ },
+ // 2020.06.01增加通用方法,将普通对象转换为tree结构
+ // data数据格式[
+ // { name: 'tree1', id: 1, parentId: 0 },
+ // { name: 'tree2', id: 2, parentId: 0 }]
+
+ // 1、id与parentId这两个字段必须有
+ // 2、树形tree需要注意Id与parentId循环依赖的问题
+ // 3、callback每次生成一新的节点的时回调的方法
+
+ convertTree(data, callback) {
+ var treeIds = [];
+ var root_data = [];
+ data.forEach((x) => {
+ // if (!x.children) {
+ // x.children = []
+ // }
+ if (
+ !x.hidden &&
+ x.id !== undefined &&
+ x.id !== x.parentId &&
+ !data.some((s) => {
+ return x.parentId == s.id;
+ })
+ ) {
+ x.isRoot = true;
+ callback && callback(x, data, true, treeIds);
+ root_data.push(x);
+ getTree(x.id, x, data, callback, treeIds);
+ } else {
+ callback && callback(x, data, true, treeIds);
+ }
+ });
+ var exceptionNodes = data.filter((f) => {
+ return treeIds.indexOf(f.id) == -1 && !f.hidden;
+ });
+
+ root_data.push(...exceptionNodes);
+ return root_data;
+ },
+ getTreeAllParent(id, data) {
+ // 获取某个节点的所有父节点信息2020.11.01
+ var nodes = [];
+ if (!(data instanceof Array)) {
+ return nodes;
+ }
+
+ data.forEach((x) => {
+ if (x.id === x.parentId) {
+ x.parentId = 0;
+ } else if (data.some((c) => c.parentId === x.id && c.id === x.parentId)) {
+ x.parentId = 0;
+ }
+ });
+
+ var _child = data.find((x) => {
+ return x.id === id;
+ });
+ if (!_child) {
+ return [];
+ }
+ nodes.push(_child);
+ var _parentIds = [_child.parentId];
+ for (let index = 0; index < _parentIds.length; index++) {
+ var _node = data.find((x) => {
+ return x.id === _parentIds[index] && x.id !== x.parentId;
+ });
+ if (!_node) {
+ return nodes;
+ }
+ _parentIds.push(_node.parentId);
+ nodes.unshift(_node);
+ }
+ return nodes;
+ },
+ //获取所有节点的子节点
+ // data数据格式[
+ // { name: 'tree1', id: 1, parentId: 0 },
+ // { name: 'tree2', id: 2, parentId: 0 }]
+ getTreeAllChildren(id, data) {
+ //递归获取某个节点的所有子节点信息
+ var nodes = [];
+ if (!(data instanceof Array)) {
+ return nodes;
+ }
+
+ var _child = data.find((x) => {
+ return x.id === id;
+ });
+ if (!_child) {
+ return [];
+ }
+ nodes.push(_child);
+ var _parentIds = [_child.id];
+ for (let index = 0; index < _parentIds.length; index++) {
+ data.forEach((_node) => {
+ if (
+ _node.parentId === _parentIds[index] &&
+ _node.parentId !== _node.id
+ ) {
+ _parentIds.push(_node.id);
+ nodes.unshift(_node);
+ }
+ });
+ }
+ return nodes;
+ },
+ //获取所有子节点的id
+ // data数据格式[
+ // { name: 'tree1', id: 1, parentId: 0 },
+ // { name: 'tree2', id: 2, parentId: 0 }]
+ getTreeAllChildrenId(id, data) {
+ return this.getTreeAllChildren(id, data).map((c) => {
+ return c.id;
+ });
+ }
+};
+export default base;
+
+// 增加通用方法,将普通对象转换为tree结构
+function getTree(id, node, data, callback, treeIds) {
+ if (treeIds.indexOf(id) == -1) {
+ treeIds.push(id);
+ }
+ data.forEach((x) => {
+ if (!x.hidden && x.parentId == id) {
+ if (!node.children) node.children = [];
+ callback && callback(x, node, false);
+ node.children.push(x);
+ getTree(x.id, x, data, callback, treeIds);
+ }
+ });
+}
diff --git a/src/uitils/dateFormatUtil.js b/src/uitils/dateFormatUtil.js
new file mode 100644
index 0000000..fa8e8ef
--- /dev/null
+++ b/src/uitils/dateFormatUtil.js
@@ -0,0 +1,127 @@
+ // 当前日期
+ let now = new Date();
+ // 今天本周的第几天
+ let nowDayOfWeek = now.getDay();
+ // 当前日
+ let nowDay = now.getDate();
+ // 当前月
+ let nowMonth = now.getMonth();
+ // 当前年
+ let nowYear = now.getFullYear();
+ nowYear += (nowYear < 2000) ? 1900 : 0;
+ // 上月日期
+ let lastMonthDate = new Date();
+ lastMonthDate.setDate(1);
+ lastMonthDate.setMonth(lastMonthDate.getMonth() - 1);
+ let lastMonth = lastMonthDate.getMonth();
+ // 日期格式化,时间戳 时分秒 hh:mm:ss
+ export function formatTimeStamp(date, fmt = 'yyyy-MM-dd hh:mm:ss') {
+ if(!date) {
+ return '-';
+ }
+ date = new Date(date);
+ if (/(y+)/.test(fmt)) {
+ fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
+ }
+ let o = {
+ 'M+': date.getMonth() + 1,
+ 'd+': date.getDate(),
+ 'h+': date.getHours(),
+ 'm+': date.getMinutes(),
+ 's+': date.getSeconds()
+ };
+ for (let k in o) {
+ if (new RegExp(`(${k})`).test(fmt)) {
+ let str = o[k] + '';
+ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
+ }
+ }
+ return fmt;
+ }
+ function padLeftZero(str) {
+ return ('00' + str).substr(str.length);
+ }
+ // 获取当前时间
+ export function getNowDate() {
+ return formatTimeStamp(new Date());
+ }
+ // 获得某月的天数
+ export function getMonthDays(myMonth) {
+ let monthStartDate = new Date(nowYear, myMonth, 1);
+ let monthEndDate = new Date(nowYear, myMonth + 1, 1);
+ let days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
+ return days;
+ }
+ // 获得本季度的开始月份
+ export function getQuarterStartMonth() {
+ let quarterStartMonth = 0;
+ if (nowMonth < 3) {
+ quarterStartMonth = 0;
+ }
+ if (2 < nowMonth && nowMonth < 6) {
+ quarterStartMonth = 3;
+ }
+ if (5 < nowMonth && nowMonth < 9) {
+ quarterStartMonth = 6;
+ }
+ if (nowMonth > 8) {
+ quarterStartMonth = 9;
+ }
+ return quarterStartMonth;
+ }
+ // 获得本周的开始日期
+ export function getWeekStartDate() {
+ let weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
+ return formatTimeStamp(weekStartDate);
+ }
+ // 获得本周的结束日期
+ export function getWeekEndDate() {
+ let weekEndDate = new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek));
+ return formatTimeStamp(weekEndDate);
+ }
+ // 获得上周的开始日期
+ export function getLastWeekStartDate() {
+ let weekStartDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 6);
+ return formatTimeStamp(weekStartDate);
+ }
+ // 获得上周的结束日期
+ export function getLastWeekEndDate() {
+ let weekEndDate = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
+ return formatTimeStamp(weekEndDate);
+ }
+ // 获得本月的开始日期
+ export function getMonthStartDate() {
+ let monthStartDate = new Date(nowYear, nowMonth, 1);
+ return formatTimeStamp(monthStartDate);
+ }
+ // 获得本月的结束日期
+ export function getMonthEndDate() {
+ let monthEndDate = new Date(nowYear, nowMonth, getMonthDays(nowMonth));
+ return formatTimeStamp(monthEndDate);
+ }
+ // 获得上月开始时间
+ export function getLastMonthStartDate() {
+ let lastMonthStartDate = new Date(nowYear, lastMonth, 1);
+ return formatTimeStamp(lastMonthStartDate);
+ }
+ // 获得上月结束时间
+ export function getLastMonthEndDate() {
+ let lastMonthEndDate = new Date(nowYear, lastMonth, getMonthDays(lastMonth));
+ return formatTimeStamp(lastMonthEndDate);
+ }
+ // 获得本季度的开始日期
+ export function getQuarterStartDate() {
+ let quarterStartDate = new Date(nowYear, getQuarterStartMonth(), 1);
+ return formatTimeStamp(quarterStartDate);
+ }
+ // 或的本季度的结束日期
+ export function getQuarterEndDate() {
+ let quarterEndMonth = getQuarterStartMonth() + 2;
+ let quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth));
+ return formatTimeStamp(quarterStartDate);
+ }
+ // 当时时间减去天数
+ export function getNowDateSubtraction(day) {
+ let nowDateSubtraction = new Date().setDate((new Date().getDate() - day));
+ return formatTimeStamp(nowDateSubtraction);
+ }
\ No newline at end of file
diff --git a/src/views/Home.vue b/src/views/Home.vue
new file mode 100644
index 0000000..605b6c5
--- /dev/null
+++ b/src/views/Home.vue
@@ -0,0 +1,743 @@
+
+
+
+
+
+
+
数量统计
+
+
+
+
+
+
+
+
+
{{ item.ItemName }}
+
{{ item.Qty }}
+
+
+
+
+
+
工序信息
+
+
+
+
+
+ {{item.ProcessName}}
+
+
+
+
+ 计划数:{{item.PlanQty}}
+
+
+ 良品数:{{item.GoodQty}}
+
+
+ 不良品数:{{item.NoGoodQty}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+ 联系作者
+
+
+
+
+ 交流讨论群
+
+
+
+
+ 微信小程序
+
+
+
+
+
+
+
#【iMES工厂管家】版本变更说明
+
+
+ {{ index + 1 }}
+ {{ row.title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Index.vue b/src/views/Index.vue
new file mode 100644
index 0000000..e2e0e71
--- /dev/null
+++ b/src/views/Index.vue
@@ -0,0 +1,961 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Login.vue b/src/views/Login.vue
new file mode 100644
index 0000000..57e76b2
--- /dev/null
+++ b/src/views/Login.vue
@@ -0,0 +1,538 @@
+
+
+
+
+
+
+ iMES工厂管家
+
+
最值得信赖的新一代工厂管家
+
计划管理,工单,订单,生产管理,库存管理
+
工序,报工,基础数据,大屏,报表
+
手机APP移动端管理,无需电脑
+
演示账号:admin 密码:123456
+
Java版:https://java.625sc.com:8443/imes
+
Java版本演示账号:admin 密码:admin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/bi/bimanage/Bi_db_dim.vue b/src/views/bi/bimanage/Bi_db_dim.vue
new file mode 100644
index 0000000..9f82d33
--- /dev/null
+++ b/src/views/bi/bimanage/Bi_db_dim.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
diff --git a/src/views/bi/bimanage/Bi_db_set.vue b/src/views/bi/bimanage/Bi_db_set.vue
new file mode 100644
index 0000000..0a42218
--- /dev/null
+++ b/src/views/bi/bimanage/Bi_db_set.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/src/views/bi/bimanage/Bi_db_source.vue b/src/views/bi/bimanage/Bi_db_source.vue
new file mode 100644
index 0000000..36783b9
--- /dev/null
+++ b/src/views/bi/bimanage/Bi_db_source.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/src/views/bi/bimanage/Bi_db_ybp.vue b/src/views/bi/bimanage/Bi_db_ybp.vue
new file mode 100644
index 0000000..1a3c04e
--- /dev/null
+++ b/src/views/bi/bimanage/Bi_db_ybp.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/src/views/bi/bimanage/Bi_desktop.vue b/src/views/bi/bimanage/Bi_desktop.vue
new file mode 100644
index 0000000..5af9b6e
--- /dev/null
+++ b/src/views/bi/bimanage/Bi_desktop.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/builder/builderData.js b/src/views/builder/builderData.js
new file mode 100644
index 0000000..cd6f9f9
--- /dev/null
+++ b/src/views/builder/builderData.js
@@ -0,0 +1,217 @@
+let columnType = [{ "key": 1, "value": "img" },
+{ "key": 2, "value": "excel" },
+{ "key": 3, "value": "file" },
+//2021.07.27增加table列显示类型date(自动格式化)
+{ "key": 4, "value": "date" }
+]
+
+let dataType = [
+ { "key": "text", "value": "input" },
+ { "key": "textarea", "value": "textarea" },
+ { "key": "switch", "value": "switch" },
+ // { "key": "dropList", "value": "dropList" },
+ { "key": "select", "value": "select" },
+ { "key": "selectList", "value": "select多选" },
+ { "key": "date", "value": "date" },
+ { "key": "datetime", "value": "datetime" },
+ { "key": "month", "value": "年月日" },
+ { "key": "rate", "value": "rate评分" },
+ { "key": "time", "value": "time" },
+ { "key": "checkbox", "value": "checkbox" },
+ // 2021.05.16集成iview radio组件
+ { "key": "radio", "value": "radio" },
+ { "key": "cascader", "value": "级联" },//2020.11.01增加级联选择
+ { "key": "treeSelect", "value": "树形级联tree-select" },//2020.11.01增加级联选择
+ { "key": "editor", "value": "富文本编辑器" },
+ { "key": "mail", "value": "mail" },
+ { "key": "number", "value": "number" },
+ { "key": "decimal", "value": "decimal" },
+ { "key": "phone", "value": "phone" },
+ { "key": "img", "value": "img" },
+ { "key": "excel", "value": "excel" },
+ { "key": "file", "value": "file" }
+];
+
+let searchDataType = [
+ { "key": "text", "value": "input" },
+ { "key": "like", "value": "模糊查询" },
+ { "key": "textarea", "value": "textarea" },
+ { "key": "switch", "value": "switch" },
+ { "key": "select", "value": "select" },
+ { "key": "selectList", "value": "select多选" },
+ { "key": "date", "value": "date" },
+ { "key": "datetime", "value": "datetime" },
+ { "key": "month", "value": "year_month" },
+ { "key": "time", "value": "time" },
+ { "key": "cascader", "value": "级联" },//2020.11.01增加级联选择
+ { "key": "checkbox", "value": "checkbox" },
+ // 2021.05.16集成iview radio组件
+ { "key": "radio", "value": "radio" },
+ { "key": "range", "value": "区间查询" },
+ { "key": "mail", "value": "mail" },
+ { "key": "number", "value": "number" },
+ { "key": "decimal", "value": "decimal" },
+ { "key": "phone", "value": "phone" }
+];
+let data = {
+ form: {
+ fields: {
+ table_Id: '',
+ parentId: null,
+ namespace: '',
+ columnCNName: '',
+ tableName: '',
+ tableTrueName: '',
+ folderName: '',
+ detailCnName: '',
+ detailName: '',
+ expressField: '',
+ sortName: '',
+ richtitle: '',
+ uploadField: '',
+ uploadMaxCount: '',
+ enable: 0,
+ vuePath: '',
+ appPath: "",
+ dbServer:"",
+ userPermissionDesc: '开启后当前用户只能操作自己(与下级角色)创建的数据,如:查询、删除、修改等操作'
+ },
+ addOptions: [
+ [{ "title": "父 级 ID", min: 0, "field": "parentId", "required": true, type: 'number', placeholder: '放在【代码生成配置】列表的文件夹ID下,如果填入【0】就是一级目录' }],
+ [{
+ "title": "项目类库",
+ "field": "namespace",
+ "placeholder": "代码生成后的所在类库(可以自己提前在后台项目中创建一个.netcore类库)",
+ "type": "select",
+ "required": true,
+ data: []
+ }],
+ [{ "title": "表中文名", "field": "columnCNName", "required": true, placeholder: "表对应的中文名字,界面上显示会用到" }],
+ [{ "title": "实际表名", "field": "tableName", "required": true, placeholder: "数据库实际表名或者视图名(多表关联请创建视图再生成代码)" }],
+ [{ "title": "文件夹名", placeholder: "生成文件所在类库中的文件夹名(文件夹可以不存在);注意只需要填写文件夹名,不是路径", "field": "folderName", "required": true }],
+ [{
+ "title": "数据库",
+ "field": "dbServer",
+ "type": "select",
+ "required": true,
+ //2020.08.22配置多个数据库的DBContext,数据源data的key必须与后台项目iMES.Core-》EFDbContext下的文件名相同
+ data: [{ key: "SysDbContext", value: "SysDbContext(系统库)" },
+ { key: "ServiceDbContext", value: "ServiceDbContext(业务库)" },
+ { key: "ReportDbContext", value: "ReportDbContext(报表库)" }
+ ]
+ }]
+ ],
+ options: [
+ [
+ { "title": "主 键 ID", "field": "table_Id", "dataSource": [], readonly: true, disabled: true, columnType: 'int' },
+ { "title": "父 级 ID", "field": "parentId", min: 0, "required": true, type: 'number' },
+ {
+ "title": "项目类库",
+ "placeholder": "代码生成存放的位置",
+ "field": "namespace",
+ "type": "select",
+ "required": true,
+ data: []
+ }
+ ],
+ [
+ { "title": "表中文名", "field": "columnCNName", "dataSource": [], "required": true },
+ { "title": "表 别 名", placeholder: "默认与实际表名相同", "field": "tableName", "required": true },
+ { "title": "实际表名", "field": "tableTrueName" },
+
+ ],
+ [
+ { "title": "文件夹名", placeholder: "生成文件所在类库中的文件夹名(文件夹可以不存在)", "field": "folderName", "required": true },
+ { "title": "明细表名", "field": "detailCnName", placeholder: "明细表中文名字" },
+ { "title": "明 细 表", "field": "detailName", placeholder: "数据库的表名" },
+
+ ],
+ [
+ { "title": "快捷编辑", "field": "expressField", placeholder: "快捷编辑字段" },
+ { "title": "排序字段", "field": "sortName", "placeholder": "多个排序字段逗号隔开(默认降序排序),如:Name,Age", colSize: 8 },
+ {
+ "title": "数据库",
+ "field": "dbServer",
+ "type": "select",
+ "required": true,
+ //2022.08.22配置多个数据库的DBContext,数据源data的key必须与后台项目iMES.Core-》EFDbContext下的文件名相同
+ data: [{ key: "SysDbContext", value: "SysDbContext(系统库)" },
+ { key: "ServiceDbContext", value: "ServiceDbContext(业务库)" },
+ { key: "ReportDbContext", value: "ReportDbContext(报表库)" }
+ ]
+ }
+
+ // { "title": "还没想好", "field": "richtitle" }
+ ],
+ [{ "title": "Vue路径", "field": "vuePath", type: "text", placeholder: 'Vue项目所在绝对路径,到views文件夹,如:E:/app/src/views', colSize: 6 },
+ { "title": "app路径", "field": "appPath", type: "text", placeholder: 'uniapp项目所在绝对路径,到pages文件夹,如:E:/uniapp/pages', colSize: 6 }]
+ // [ //待完
+ // { "title": "开启用户权限数据", "field": "enable", bind: { data: [{ key: 1, value: '是', key: 0, value: '否' }] }, type: 'switch', colSize: 2 },
+ // { "title": "提示", "required": true, "field": "userPermissionDesc", colSize: 10, "placeholder": "非自增主键需要输入排序字段",readonly:true }
+ // ],
+ // [
+
+ // ],
+ // [
+ // { "title": "富文本编辑字段", "field": "richtitle", "displayType": "title" },
+ // { "title": "文件上传字段", "field": "uploadField", "displayType": "title" },
+ // { "title": "文件上传数量限制", "field": "uploadMaxCount", "displayType": "title", columnType: 'int' }
+ // ],
+ // [
+ // { "title": "Vue视图绝对路径", "field": "vuePath", "displayType": "title", colSize: 12, placeholder: 'Vue项目所在绝对路径,到views文件夹,如:E:/app/src/views' },
+ // ]
+ ]
+ },
+ //2021.01.09增加代码生成器设置table排序功能
+ columns: [
+ { field: 'columnId', title: 'ColumnId', width: 120, align: 'left', edit: { type: "text" }, hidden: true },
+ { field: 'table_Id', title: 'Table_Id', width: 120, align: 'left', editor: 'text', hidden: true },
+ { field: 'columnCnName', title: '列显示名称', fixed: true, width: 120, align: 'left', edit: { type: "text" } },
+ { field: 'columnName', title: '列名', fixed: true, width: 120, align: 'left', edit: { type: "text" } },
+ { field: 'isKey', title: '主键', width: 90, align: 'left', edit: { type: "switch" } },
+ { field: 'sortable', title: '是否排序', width: 90, align: 'left', edit: { type: "switch", keep: true } },
+ {
+ field: 'enable', title: 'app列', width: 140, align: 'left', edit: { type: "select" },
+ bind: {
+ data: [
+ { key: 1, value: "显示/查询/编辑" },
+ { key: 2, value: "显示/编辑" },
+ { key: 3, value: "显示/查询" },
+ { key: 4, value: "显示" },
+ { key: 5, value: "查询/编辑" },
+ { key: 6, value: "查询" },
+ { key: 7, value: "编辑" },
+ ]
+ }
+ },
+ { field: 'searchRowNo', title: '查询行', width: 90, align: 'left', edit: { type: "text" } },
+ { field: 'searchColNo', title: '查询列', width: 90, align: 'left', edit: { type: "text" } },
+ { field: 'searchType', title: '查询类型', width: 150, align: 'left', edit: { type: "select" }, bind: { data: searchDataType } },
+ { field: 'editRowNo', title: '编辑行', width: 90, align: 'numberbox', edit: { type: "text" } },
+ { field: 'editColNo', title: '编辑列', width: 90, align: 'numberbox', edit: { type: "text" } },
+ { field: 'editType', title: '编辑类型', width: 150, align: 'left', edit: { type: "select" }, bind: { data: dataType } },
+ { field: 'dropNo', title: '数据源', width: 120, align: 'left', bind: { data: [] }, edit: { type: "select", data: [] } },
+ { field: 'isImage', title: 'table列显示类型', hidden: false, width: 130, align: 'left', edit: { type: "select" }, bind: { data: columnType } },
+ { field: 'orderNo', title: '列显示顺序', width: 120, align: 'left', edit: { type: "text" } },
+ { field: 'maxlength', title: '字段最大长度', width: 130, align: 'left', edit: { type: "text" } },
+ { field: 'columnType', title: '数据类型', width: 120, align: 'left', edit: { type: "text" } },
+ { field: 'isNull', title: '可为空', width: 120, align: 'left', edit: { type: "switch", keep: true } },
+ { field: 'isReadDataset', title: '是否只读', width: 120, align: 'left', edit: { type: "switch", keep: true } },
+ { field: 'isColumnData', title: '数据列', width: 120, align: 'left', edit: { type: "switch", keep: true } },
+ { field: 'isDisplay', title: '是否显示', width: 120, align: 'left', edit: { type: "switch", keep: true } },
+ { field: 'columnWidth', title: 'table列宽度', width: 120, align: 'left', edit: { type: "text" } },
+ { field: 'colSize', title: '编辑列标签宽度colSize', width: 180, align: 'left', edit: { type: "text" } },
+ // { field: 'import', title: '导入列', hidden: true, width: 100, align: 'left', edit: { type: "switch" } },
+ // { field: 'apiInPut', title: 'Api输入列(待实现)', width: 100, align: 'left', edit: { type: "switch" } },
+ // { field: 'apiIsNull', title: 'Api输入列可为空(待实现)', width: 130, align: 'left', edit: { type: "switch" } },
+ // { field: 'apiOutPut', title: 'Api输出列(待实现)', width: 100, align: 'left', edit: { type: "switch" } },
+ // { field: 'columnformat', title: '显示格式', width: 120, align: 'left', editor: 'text', editor: 'textarea' },
+ // { field: 'script', title: '脚本', width: 120, align: 'left', editor: 'textarea' },
+ // { field: 'creator', title: '创建人', width: 120, align: 'left' },
+ { field: 'createDate', title: '创建时间', width: 120, align: 'left' },
+ // { field: 'modifier', title: '修改人', width: 120, align: 'left' },
+ // { field: 'modifyDate', title: '修改时间', width: 120, align: 'left' }
+ ]
+}
+
+export default data
\ No newline at end of file
diff --git a/src/views/builder/coder.vue b/src/views/builder/coder.vue
new file mode 100644
index 0000000..92561cd
--- /dev/null
+++ b/src/views/builder/coder.vue
@@ -0,0 +1,658 @@
+
+
+
+
+
+ 1、如果只是创建目录,父级id填0,其他随便填写;
+
+ 2、如果是生成代码,父级id填写【代码生成配置】列表页面的id
+
+
+
+
+
+
+
+
+ 确 定
+
+
+
+
+
+
+
+
+
+
+
+
+ 删除左侧配置菜单:删除行->保存->删除菜单
+
+
+
+ 保存
+
+ 新建
+
+
+ 生成Vue页面
+
+
+ 生成app页面
+
+
+ 生成Model
+
+
+ 生成业务类
+
+
+ 删除菜单
+
+
+
+
+
+
+
+
+ 1、如果需要修改表结构,请在数据库修改,再点同步表结构->生成vue页面->生成model。
+ 2、修改编辑行后需要点击生成model、生成vue页面
+
+
+
+
+
+ 数据库表结构发生变化时请点【同步表结构】
+
+
+
+ 代码生成器参数文档
+ 删除行数据
+ 同步表结构
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/Cal_HolidaySec.vue b/src/views/calendar/calendar/Cal_HolidaySec.vue
new file mode 100644
index 0000000..30c4d9c
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_HolidaySec.vue
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+ {{ data.day.split('-').slice(1).join('-') }}
+
+
+
+ 班
+ 休
+
+
+
+
+ {{ solarDate2lunar(data.day)
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 假
+ 班
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/calendar/calendar/Cal_Plan.vue b/src/views/calendar/calendar/Cal_Plan.vue
new file mode 100644
index 0000000..9ac4a52
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_Plan.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/Cal_PlanShift.vue b/src/views/calendar/calendar/Cal_PlanShift.vue
new file mode 100644
index 0000000..df5ab60
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_PlanShift.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/Cal_PlanTeam.vue b/src/views/calendar/calendar/Cal_PlanTeam.vue
new file mode 100644
index 0000000..431b395
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_PlanTeam.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/Cal_Team.vue b/src/views/calendar/calendar/Cal_Team.vue
new file mode 100644
index 0000000..507fff9
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_Team.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/Cal_TeamMember.vue b/src/views/calendar/calendar/Cal_TeamMember.vue
new file mode 100644
index 0000000..09df96f
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_TeamMember.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/Cal_TeamShift.vue b/src/views/calendar/calendar/Cal_TeamShift.vue
new file mode 100644
index 0000000..b697508
--- /dev/null
+++ b/src/views/calendar/calendar/Cal_TeamShift.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/calendar/calendar/calendar/calendarType.vue b/src/views/calendar/calendar/calendar/calendarType.vue
new file mode 100644
index 0000000..76a45a0
--- /dev/null
+++ b/src/views/calendar/calendar/calendar/calendarType.vue
@@ -0,0 +1,235 @@
+
+
+
+
+
+ {{dict.value}}
+
+
+
+
+
+
+
+
+
+
+ {{ data.day.split('-').slice(1).join('-') }}
+
+
+
+ 班
+
+ 休
+
+
+
+
+
+ {{ solarDate2lunar(data.day)
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/calendar/calendar/calendar/index.vue b/src/views/calendar/calendar/calendar/index.vue
new file mode 100644
index 0000000..baff529
--- /dev/null
+++ b/src/views/calendar/calendar/calendar/index.vue
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/calendar/calendar/calendar/team.vue b/src/views/calendar/calendar/calendar/team.vue
new file mode 100644
index 0000000..ba65e57
--- /dev/null
+++ b/src/views/calendar/calendar/calendar/team.vue
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+ {{item.TeamName}}
+
+
+
+
+
+
+
+
+
+ {{ data.day.split('-').slice(1).join('-') }}
+
+
+
+ 班
+
+ 休
+
+
+
+
+
+ {{ solarDate2lunar(data.day)
+ }}
+
+
+
+
+
+
+ {{teamShift.ShiftName
+ }}-{{ teamShift.TeamName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/custom/custom/Base_DefectItem.vue b/src/views/custom/custom/Base_DefectItem.vue
new file mode 100644
index 0000000..ade01dc
--- /dev/null
+++ b/src/views/custom/custom/Base_DefectItem.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_DefectItem_Extend.vue b/src/views/custom/custom/Base_DefectItem_Extend.vue
new file mode 100644
index 0000000..09e698a
--- /dev/null
+++ b/src/views/custom/custom/Base_DefectItem_Extend.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/custom/custom/Base_DefectItem_ExtendData.vue b/src/views/custom/custom/Base_DefectItem_ExtendData.vue
new file mode 100644
index 0000000..039b8bf
--- /dev/null
+++ b/src/views/custom/custom/Base_DefectItem_ExtendData.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_DesktopMenu.vue b/src/views/custom/custom/Base_DesktopMenu.vue
new file mode 100644
index 0000000..5835f86
--- /dev/null
+++ b/src/views/custom/custom/Base_DesktopMenu.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_ExcelTemplate.vue b/src/views/custom/custom/Base_ExcelTemplate.vue
new file mode 100644
index 0000000..125ebce
--- /dev/null
+++ b/src/views/custom/custom/Base_ExcelTemplate.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_ExcelTemplateTree.vue b/src/views/custom/custom/Base_ExcelTemplateTree.vue
new file mode 100644
index 0000000..53f07ce
--- /dev/null
+++ b/src/views/custom/custom/Base_ExcelTemplateTree.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_Language.vue b/src/views/custom/custom/Base_Language.vue
new file mode 100644
index 0000000..0c5ff85
--- /dev/null
+++ b/src/views/custom/custom/Base_Language.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_MaterialDetailTree.vue b/src/views/custom/custom/Base_MaterialDetailTree.vue
new file mode 100644
index 0000000..7a48ac0
--- /dev/null
+++ b/src/views/custom/custom/Base_MaterialDetailTree.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_MaterialDetail_ExtendData.vue b/src/views/custom/custom/Base_MaterialDetail_ExtendData.vue
new file mode 100644
index 0000000..1d79e42
--- /dev/null
+++ b/src/views/custom/custom/Base_MaterialDetail_ExtendData.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_MeritPay.vue b/src/views/custom/custom/Base_MeritPay.vue
new file mode 100644
index 0000000..087a749
--- /dev/null
+++ b/src/views/custom/custom/Base_MeritPay.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_MeritPay_Extend.vue b/src/views/custom/custom/Base_MeritPay_Extend.vue
new file mode 100644
index 0000000..09e698a
--- /dev/null
+++ b/src/views/custom/custom/Base_MeritPay_Extend.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/custom/custom/Base_MeritPay_ExtendData.vue b/src/views/custom/custom/Base_MeritPay_ExtendData.vue
new file mode 100644
index 0000000..cbbdc84
--- /dev/null
+++ b/src/views/custom/custom/Base_MeritPay_ExtendData.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_Notice.vue b/src/views/custom/custom/Base_Notice.vue
new file mode 100644
index 0000000..bfdd4a2
--- /dev/null
+++ b/src/views/custom/custom/Base_Notice.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_NumberRule.vue b/src/views/custom/custom/Base_NumberRule.vue
new file mode 100644
index 0000000..4b252da
--- /dev/null
+++ b/src/views/custom/custom/Base_NumberRule.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_PrintCatalog.vue b/src/views/custom/custom/Base_PrintCatalog.vue
new file mode 100644
index 0000000..44c804e
--- /dev/null
+++ b/src/views/custom/custom/Base_PrintCatalog.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_PrintTemplate.vue b/src/views/custom/custom/Base_PrintTemplate.vue
new file mode 100644
index 0000000..bc1ec93
--- /dev/null
+++ b/src/views/custom/custom/Base_PrintTemplate.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_PrintTemplateTree.vue b/src/views/custom/custom/Base_PrintTemplateTree.vue
new file mode 100644
index 0000000..cd61d8b
--- /dev/null
+++ b/src/views/custom/custom/Base_PrintTemplateTree.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_Process.vue b/src/views/custom/custom/Base_Process.vue
new file mode 100644
index 0000000..247ff98
--- /dev/null
+++ b/src/views/custom/custom/Base_Process.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_ProcessLine.vue b/src/views/custom/custom/Base_ProcessLine.vue
new file mode 100644
index 0000000..abdd9b4
--- /dev/null
+++ b/src/views/custom/custom/Base_ProcessLine.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_ProcessLineList.vue b/src/views/custom/custom/Base_ProcessLineList.vue
new file mode 100644
index 0000000..5f442fd
--- /dev/null
+++ b/src/views/custom/custom/Base_ProcessLineList.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_ProcessList.vue b/src/views/custom/custom/Base_ProcessList.vue
new file mode 100644
index 0000000..383b1ef
--- /dev/null
+++ b/src/views/custom/custom/Base_ProcessList.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_Process_Extend.vue b/src/views/custom/custom/Base_Process_Extend.vue
new file mode 100644
index 0000000..09e698a
--- /dev/null
+++ b/src/views/custom/custom/Base_Process_Extend.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/custom/custom/Base_Process_ExtendData.vue b/src/views/custom/custom/Base_Process_ExtendData.vue
new file mode 100644
index 0000000..eb58839
--- /dev/null
+++ b/src/views/custom/custom/Base_Process_ExtendData.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_Product.vue b/src/views/custom/custom/Base_Product.vue
new file mode 100644
index 0000000..aaf50f3
--- /dev/null
+++ b/src/views/custom/custom/Base_Product.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_Product_Extend.vue b/src/views/custom/custom/Base_Product_Extend.vue
new file mode 100644
index 0000000..09e698a
--- /dev/null
+++ b/src/views/custom/custom/Base_Product_Extend.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/custom/custom/Base_Product_ExtendData.vue b/src/views/custom/custom/Base_Product_ExtendData.vue
new file mode 100644
index 0000000..3e9000b
--- /dev/null
+++ b/src/views/custom/custom/Base_Product_ExtendData.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Base_WorkShop.vue b/src/views/custom/custom/Base_WorkShop.vue
new file mode 100644
index 0000000..f4c8c2b
--- /dev/null
+++ b/src/views/custom/custom/Base_WorkShop.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Sys_Table_Extend.vue b/src/views/custom/custom/Sys_Table_Extend.vue
new file mode 100644
index 0000000..215f522
--- /dev/null
+++ b/src/views/custom/custom/Sys_Table_Extend.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Sys_Unit.vue b/src/views/custom/custom/Sys_Unit.vue
new file mode 100644
index 0000000..487cdab
--- /dev/null
+++ b/src/views/custom/custom/Sys_Unit.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/Sys_User_Extend.vue b/src/views/custom/custom/Sys_User_Extend.vue
new file mode 100644
index 0000000..09e698a
--- /dev/null
+++ b/src/views/custom/custom/Sys_User_Extend.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/custom/custom/Sys_User_ExtendData.vue b/src/views/custom/custom/Sys_User_ExtendData.vue
new file mode 100644
index 0000000..0f4654a
--- /dev/null
+++ b/src/views/custom/custom/Sys_User_ExtendData.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/custom/custom/View_Base_MaterialDetail.vue b/src/views/custom/custom/View_Base_MaterialDetail.vue
new file mode 100644
index 0000000..d29965e
--- /dev/null
+++ b/src/views/custom/custom/View_Base_MaterialDetail.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
diff --git a/src/views/dashboard/WorkOrderSchedule.vue b/src/views/dashboard/WorkOrderSchedule.vue
new file mode 100644
index 0000000..ba19a0f
--- /dev/null
+++ b/src/views/dashboard/WorkOrderSchedule.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/dashboard/WorkShopBoard.vue b/src/views/dashboard/WorkShopBoard.vue
new file mode 100644
index 0000000..abea32a
--- /dev/null
+++ b/src/views/dashboard/WorkShopBoard.vue
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/equip/equip/Equip_DevCatalog.vue b/src/views/equip/equip/Equip_DevCatalog.vue
new file mode 100644
index 0000000..2478954
--- /dev/null
+++ b/src/views/equip/equip/Equip_DevCatalog.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_Device.vue b/src/views/equip/equip/Equip_Device.vue
new file mode 100644
index 0000000..b76d776
--- /dev/null
+++ b/src/views/equip/equip/Equip_Device.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_DeviceTree.vue b/src/views/equip/equip/Equip_DeviceTree.vue
new file mode 100644
index 0000000..9f40a9d
--- /dev/null
+++ b/src/views/equip/equip/Equip_DeviceTree.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_MaintainPaper.vue b/src/views/equip/equip/Equip_MaintainPaper.vue
new file mode 100644
index 0000000..af9317b
--- /dev/null
+++ b/src/views/equip/equip/Equip_MaintainPaper.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_SpotMaintPlan.vue b/src/views/equip/equip/Equip_SpotMaintPlan.vue
new file mode 100644
index 0000000..fe39b77
--- /dev/null
+++ b/src/views/equip/equip/Equip_SpotMaintPlan.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_SpotMaintPlanDevice.vue b/src/views/equip/equip/Equip_SpotMaintPlanDevice.vue
new file mode 100644
index 0000000..68d1e50
--- /dev/null
+++ b/src/views/equip/equip/Equip_SpotMaintPlanDevice.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_SpotMaintPlanProject.vue b/src/views/equip/equip/Equip_SpotMaintPlanProject.vue
new file mode 100644
index 0000000..ebb1794
--- /dev/null
+++ b/src/views/equip/equip/Equip_SpotMaintPlanProject.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_SpotMaintWorkOrder.vue b/src/views/equip/equip/Equip_SpotMaintWorkOrder.vue
new file mode 100644
index 0000000..a0a8c9b
--- /dev/null
+++ b/src/views/equip/equip/Equip_SpotMaintWorkOrder.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
diff --git a/src/views/equip/equip/Equip_SpotMaintenance.vue b/src/views/equip/equip/Equip_SpotMaintenance.vue
new file mode 100644
index 0000000..f6e2b70
--- /dev/null
+++ b/src/views/equip/equip/Equip_SpotMaintenance.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/src/views/formDraggable/FormCollectionResultTree.vue b/src/views/formDraggable/FormCollectionResultTree.vue
new file mode 100644
index 0000000..05397e8
--- /dev/null
+++ b/src/views/formDraggable/FormCollectionResultTree.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/formDraggable/FormSubmit.vue b/src/views/formDraggable/FormSubmit.vue
new file mode 100644
index 0000000..baa8c67
--- /dev/null
+++ b/src/views/formDraggable/FormSubmit.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/formDraggable/formDraggable.vue b/src/views/formDraggable/formDraggable.vue
new file mode 100644
index 0000000..3c7461f
--- /dev/null
+++ b/src/views/formDraggable/formDraggable.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/home/home-chart-options.js b/src/views/home/home-chart-options.js
new file mode 100644
index 0000000..b94ec09
--- /dev/null
+++ b/src/views/home/home-chart-options.js
@@ -0,0 +1,98 @@
+import { h, resolveComponent } from 'vue';
+import http from '../../api/http';
+var chart2 = {
+ title: {
+ text: '工序计划数Top5'
+ },
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: { // 坐标轴指示器,坐标轴触发有效
+ type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
+ }
+ },
+ legend: {
+ data: ['工序计划数'],
+ padding: [0, 0, 15, 0] //图例距离
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ top: '13%',
+ containLabel: true
+ },
+ xAxis: [
+ {
+ type: 'category',
+ data: []
+ }
+ ],
+ yAxis: [
+ {
+ type: 'value'
+ }
+ ],
+ series: [
+ {
+ name: '工序计划数',
+ type: 'bar',
+ showBackground: true,
+ backgroundStyle: {
+ color: 'rgba(80, 180, 180, 0.2)'
+ },
+ itemStyle: {
+
+ normal: {
+ barBorderRadius: [4, 4, 0, 0]
+ }
+ },
+ data: []
+ }
+ ]
+}
+var chart3 = {
+ title: {
+ text: '不良品项分布',
+ left: 'center'
+ },
+ tooltip: {
+ trigger: 'item'
+ },
+ legend: {
+ top: 'bottom',
+ icon: "circle", // 这个字段控制形状 类型包括 circle,rect ,roundRect,triangle,diamond,pin,arrow,none
+ itemWidth: 10, // 设置宽度
+ itemHeight: 10, // 设置高度
+ itemGap: 7,// 设置间距
+ padding: [0, 0, 10, 0] //图例距离
+ },
+ series: [
+ {
+
+ name: '不良品项分布',
+ type: 'pie',
+ radius: '55%',
+ data: [],
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+}
+// http.get('api/Base_Process/getAppHomeProcessTop5',{},true).then((result) => {
+// let categories = result.map(item => (item.name));
+// let data = result.map(item => (item.data));
+// chart2.xAxis[0].data = categories;
+// chart2.series[0].data = data;
+// });
+
+// http.get('api/Base_DefectItem/getAppHomeDefectValue',{},true).then((item) => {
+// let dataDefect = item.map(key => ({ name: key.name, value: key.data }));
+// chart3.series[0].data = dataDefect
+// });
+
+export { chart2, chart3 }
\ No newline at end of file
diff --git a/src/views/index/Message.vue b/src/views/index/Message.vue
new file mode 100644
index 0000000..498f92a
--- /dev/null
+++ b/src/views/index/Message.vue
@@ -0,0 +1,47 @@
+
+
+
+
{{ item.title }}({{ item.date }})
+
{{ item.message }}
+
+
+
+
+
+
diff --git a/src/views/index/MessageConfig.js b/src/views/index/MessageConfig.js
new file mode 100644
index 0000000..a78f8e8
--- /dev/null
+++ b/src/views/index/MessageConfig.js
@@ -0,0 +1,28 @@
+import * as signalR from '@microsoft/signalr';
+import { ElNotification } from 'element-plus';
+
+export default function (http, receive) {
+ let connection;
+ http.post('api/user/GetCurrentUserInfo').then((result) => {
+ connection = new signalR.HubConnectionBuilder()
+ .withAutomaticReconnect()
+ .withUrl(`${http.ipAddress}message?userName=${result.data.userName}`)
+ //.withUrl(`${http.ipAddress}message`)
+ .build();
+
+ connection.start().catch((err) => console.log(ex.message));
+ //自动重连成功后的处理
+ connection.onreconnected((connectionId) => {
+ console.log(connectionId);
+ });
+ connection.on('ReceiveHomePageMessage', function (data) {
+ console.log(data)
+ ElNotification.success({
+ title:data.title,
+ message: data.message + '',
+ type: 'info'
+ });
+ receive && receive(data);
+ });
+ });
+}
diff --git a/src/views/index/index.less b/src/views/index/index.less
new file mode 100644
index 0000000..c4d30a6
--- /dev/null
+++ b/src/views/index/index.less
@@ -0,0 +1,585 @@
+.mes-aside {
+ height: 100%;
+ position: absolute;
+ float: left;
+ overflow: hidden;
+}
+.mes-menu{
+ border: 0 !important;
+}
+.mes-aside .tac {
+ text-align: left;
+}
+
+.mes-aside .header {
+ text-align: center;
+ position: absolute;
+ height: 60px;
+ position: relative;
+ line-height: 60px;
+}
+.mes-aside .mes-menu {
+ position: absolute;
+ width: 100%;
+ top: 60px;
+ bottom: 0;
+ background: white;
+ border-right: 1px solid #e3e3e3;
+}
+
+.mes-aside .mes-menu ::v-deep(.ivu-menu) {
+ text-align: left;
+ position: unset;
+ width: 100% !important;
+}
+.mes-aside .mes-menu ::v-deep(.is-horizontal) {
+ display: none !important;
+}
+.mes-aside .mes-menu ::v-deep(.is-vertical) {
+ width: 2px;
+ right: -1px;
+}
+
+.mes-container {
+ min-width: 800px;
+ right: 0;
+ display: inline-block;
+ position: absolute;
+ margin: 0;
+ box-sizing: border-box;
+ height: 100%;
+}
+
+.mes-container .mes-path {
+ position: relative;
+ width: 100%;
+ display: inline-block;
+ border-bottom: 1px solid #eee;
+}
+.mes-container .mes-path span {
+ position: relative;
+ margin-right: 10px;
+ color: #969696;
+}
+
+.mes-header {
+ height: 61px;
+ width: 100%;
+ position: relative;
+ display: flex;
+ border-bottom: 1px solid #eee;
+}
+.mes-main {
+ border-left: 1px solid #eee;
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ top: 95px;
+ margin: 0;
+ overflow: auto;
+}
+
+.header {
+ padding: 5px;
+}
+.header img {
+ height: 100%;
+ margin-right: 25px;
+}
+.header-info {
+ padding-right: 20px;
+ display: inline-block;
+ // position: absolute;
+ height: 100%;
+}
+.header-info > div {
+ float: left;
+ height: 100%;
+}
+.user-header {
+ background: white;
+ height: 52px;
+ width: 52px;
+ border-radius: 50%;
+ margin-right: 0px;
+ top: 4px;
+ left: 7px;
+ position: relative;
+ border: 1px solid #dfdfdf;
+}
+.project-name {
+ line-height: 60px;
+ padding: 0 50px 0 20px;
+ color: #fff;
+ font-size: 14px;
+}
+.header-text {
+ vertical-align: middle;
+ height: 100%;
+ // position: absolute;
+ flex: 1;
+ text-align: left;
+ font-size: 15px;
+ left: 21px;
+ line-height: 60px;
+ letter-spacing: 1px;
+}
+.mes-header .user {
+ text-align: left;
+ padding: 12px;
+ position: relative;
+ display: inline-block;
+ height: 100%;
+ span:last-child {
+ font-size: 12px;
+ }
+}
+.mes-header .settings {
+ padding-top: 10px;
+ color: #d4d2d2;
+}
+.mes-header .user span {
+ position: relative;
+}
+.header-info:hover {
+ cursor: pointer;
+}
+.header-navigation {
+ cursor: pointer;
+ box-shadow: none;
+ border-bottom: 1px solid #eee;
+ height: 34px;
+ /* overflow: hidden; */
+ line-height: 35px;
+ display: block;
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ list-style: none;
+ position: relative;
+ z-index: 900;
+ font-weight: initial;
+ margin-top: -1px;
+}
+.el-tabs--border-card {
+ border: none;
+}
+.header-navigation ::v-deep(.el-tabs__item) {
+ height: 34px;
+ font-size: 14px;
+ line-height: 34px;
+ padding-bottom: 6px;
+ color: #525252 !important;
+ position: relative;
+ margin: 0 4px;
+ border: 1px solid #e2e2e2;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ // border-bottom: 0px;
+}
+.header-navigation ::v-deep(.el-tabs__item.is-active) {
+ color: #1a81ea !important;
+}
+.header-navigation ::v-deep(.el-tabs__nav-prev),
+.header-navigation ::v-deep(.el-tabs__nav-next) {
+ line-height: 35px;
+ padding-left: 4px;
+}
+
+.mes-header .user span:first-child {
+ font-size: 15px;
+ font-weight: bolder;
+}
+.h-link {
+ line-height: 59px;
+}
+.h-link a {
+ font-size: 14px;
+ text-decoration: none;
+ padding: 0px 15px;
+ /* height: 60px; */
+ display: inline-block;
+}
+
+img[src=''],
+img:not([src]) {
+ opacity: 0;
+}
+
+//黑色
+.mes-theme-dark {
+ .header {
+ background: #101010;
+ }
+ .header-text {
+ color: white;
+ }
+ .mes-header {
+ background-color: #272929;
+ }
+ .h-link a:hover {
+ background: #0c0202;
+ }
+ a {
+ color: #f2f2f2;
+ }
+ .h-link a:hover {
+ color: #dfdfdf;
+ }
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+ .h-link .actived a {
+ color: white !important;
+ }
+ .mes-header .user {
+ color: #ececec;
+ }
+ .mes-header .settings {
+ color: #d4d2d2;
+ }
+ .mes-aside .mes-menu {
+ background: black;
+ }
+ .topselect {
+ ::v-deep {
+ .el-input__wrapper {
+ background: #000000 !important;
+ }
+ }
+ }
+}
+
+.mes-theme-white .mes-aside ::v-deep(.mes-el-menu-item) {
+ background: #2e333b;
+ color: white;
+}
+.mes-theme-dark .mes-aside ::v-deep(.mes-menu .el-submenu) {
+ background: black;
+}
+.mes-theme-dark .mes-aside ::v-deep(.mes-menu .el-sub-menu__title *) {
+ color: #d6d6d6;
+}
+.mes-theme-dark .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item) {
+ color: #eee;
+ background: #1f1f1f;
+}
+.mes-theme-dark .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item.is-active),
+.mes-theme-dark .mes-aside ::v-deep(.menu-item-lv1) {
+ background: black;
+}
+
+.mes-theme-dark .mes-aside ::v-deep(.menu-item-lv1) {
+ background: black;
+ color: #d6d6d6;
+}
+
+.mes-theme-dark .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item:hover) {
+ background: black;
+}
+.mes-theme-dark .mes-aside ::v-deep(.el-sub-menu__title) {
+ background-color: black;
+}
+.mes-theme-dark .mes-aside ::v-deep(.el-sub-menu__title:hover) {
+ background-color: rgb(25, 25, 25);
+}
+.mes-theme-dark .mes-aside ::v-deep(.el-sub-menu__title:hover *) {
+ color: white;
+}
+
+.mes-theme-red,
+.mes-theme-red2 {
+ .mes-header {
+ background-color: rgb(237, 64, 20);
+ }
+ .header-text {
+ color: #dcdfe6;
+ }
+ .h-link a:hover {
+ background: #d71212;
+ }
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .mes-header .settings,
+ .mes-header .user {
+ color: white;
+ }
+
+ .mes-header .header-text {
+ color: #fbfbfb;
+ }
+}
+
+.mes-theme-red {
+ .header {
+ background-color: rgb(237, 64, 20);
+ }
+}
+.mes-theme-red2 {
+ .header {
+ background-color: #a90000;
+ }
+}
+
+.mes-theme-orange,
+.mes-theme-orange2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+ .mes-header {
+ background-color: rgb(255, 153, 0);
+ }
+
+ .h-link a:hover {
+ background: #c97901;
+ }
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .mes-header .settings,
+ .mes-header .user {
+ color: white;
+ }
+ .mes-header .header-text {
+ color: #fbfbfb;
+ }
+}
+.mes-theme-orange {
+ .header {
+ background: rgb(255, 153, 0);
+ }
+}
+.mes-theme-orange2 {
+ .header {
+ background-color: rgb(232, 141, 5);
+ }
+}
+
+//绿色
+.mes-theme-green,
+.mes-theme-green2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+ .mes-header {
+ background-color: rgb(25, 190, 107);
+ }
+
+ .h-link a:hover {
+ background: #329103;
+ }
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .mes-header .settings,
+ .mes-header .user {
+ color: white;
+ }
+
+ .mes-header .header-text {
+ color: #fbfbfb;
+ }
+}
+.mes-theme-green {
+ .header {
+ background: rgb(25, 190, 107);
+ }
+}
+.mes-theme-green2 {
+ .header {
+ background-color: rgb(1, 158, 79);
+ }
+}
+
+//蓝色
+.mes-theme-blue,
+.mes-theme-blue2 {
+ .header-text {
+ color: #dcdfe6;
+ }
+ .mes-header {
+ background-color: rgb(45, 140, 240);
+ }
+
+ .h-link a:hover {
+ background: #0170e3;
+ }
+ .h-link .actived {
+ border-bottom: 2px solid white;
+ }
+
+ .h-link a,
+ .h-link .actived a,
+ .mes-header .settings,
+ .mes-header .user {
+ color: white;
+ }
+ .mes-header .header-text {
+ color: #fbfbfb;
+ }
+}
+.mes-theme-blue {
+ .header {
+ background-color: rgb(45, 140, 240);
+ }
+}
+.mes-theme-blue2 {
+ .header {
+ background-color: rgb(0, 104, 214);
+ }
+}
+
+//白色
+.mes-theme-white {
+ .header {
+ background-color: #434956;
+ }
+ .h-link a:hover {
+ background: #eeeeee;
+ }
+ .h-link a {
+ color: #211f1f;
+ }
+ .topselect {
+ ::v-deep {
+ .el-input__wrapper {
+ background: #434956 !important;
+ }
+ }
+ }
+ .header-navigation {
+ // box-shadow: -7px 11px 10px -13px #678aa7;
+ border-bottom: 1px solid #eee;
+ height: 32px;
+ overflow: hidden;
+ line-height: 32px;
+ display: block;
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ list-style: none;
+ position: relative;
+ z-index: 900;
+ font-weight: 400;
+ }
+
+}
+.mes-theme-white .project-name{
+ color: #505050;
+}
+.mes-theme-white
+.mes-aside
+::v-deep(.mes-el-menu-item .el-menu-item.is-active),
+.mes-theme-white .mes-aside ::v-deep(.menu-item-lv1) {
+background: #353941;
+}
+
+.mes-theme-white .mes-aside ::v-deep(.menu-item-lv1) {
+background: #353941;
+color: #d6d6d6;
+}
+
+.mes-theme-white .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item:hover) {
+background: #353941;
+}
+.mes-theme-white .mes-aside ::v-deep(.el-sub-menu__title) {
+background-color: #353941;
+}
+.mes-theme-white .mes-aside ::v-deep(.el-sub-menu__title:hover) {
+background-color: rgb(47, 46, 46);
+}
+.mes-theme-white .mes-aside ::v-deep(.el-sub-menu__title),
+.mes-theme-white .mes-aside ::v-deep(.el-menu-item),
+.mes-theme-white .mes-aside ::v-deep(.el-sub-menu__title:hover *) {
+color: #bababa;
+}
+
+// .mes-theme-white .mes-aside ::v-deep(.mes-el-menu-item) {
+// background: #363e4f;
+// color: white;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.mes-menu .el-submenu),
+// .mes-theme-white .mes-aside ::v-deep(.menu-item-lv1) {
+// background: #515a6e;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.mes-menu) {
+// background: #515a6e;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.mes-menu .el-sub-menu__title *),
+// .mes-theme-white .mes-aside ::v-deep(.menu-item-lv1 *) {
+// color: #d6d6d6;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item) {
+// color: #eee;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item.is-active),
+// .mes-theme-white .mes-aside ::v-deep(.menu-item-lv1.is-active) {
+// background: #59647b;
+// color: #fff;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.mes-el-menu-item .el-menu-item:hover) {
+// background: #6a758c;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.el-sub-menu__title:hover) {
+// background-color: #525865;
+// }
+// .mes-theme-white .mes-aside ::v-deep(.el-sub-menu__title:hover *) {
+// color: white;
+// }
+
+// .mes-theme-red ::v-deep(.el-menu-item.is-active),
+// .mes-theme-red2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #d71212;
+// }
+// .mes-theme-blue ::v-deep(.el-menu-item.is-active),
+// .mes-theme-blue2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #2d8cf0;
+// }
+// .mes-theme-orange ::v-deep(.el-menu-item.is-active),
+// .mes-theme-orange2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #ff9900;
+// }
+
+// .mes-theme-green ::v-deep(.el-menu-item.is-active),
+// .mes-theme-green2 ::v-deep(.el-menu-item.is-active)
+// {
+// background-color: #19be6b;
+// }
+
+.theme-selector {
+ height: 100%;
+ padding-left: 16px;
+ .item {
+ cursor: pointer;
+ width: 97%;
+ height: 60px;
+ border-radius: 5px;
+ margin-bottom: 17px;
+ border: 1px solid #d4d2d2;
+ float: left;
+ margin-right: 13px;
+ }
+}
+
+.collapse-menu {
+ font-size: 21px;
+ color: #fff;
+ line-height: 60px;
+ position: absolute;
+ top: 0;
+ right: 5px;
+ cursor: pointer;
+}
diff --git a/src/views/production/production/Production_AssembleWorkOrder.vue b/src/views/production/production/Production_AssembleWorkOrder.vue
new file mode 100644
index 0000000..823427e
--- /dev/null
+++ b/src/views/production/production/Production_AssembleWorkOrder.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_AssembleWorkOrderList.vue b/src/views/production/production/Production_AssembleWorkOrderList.vue
new file mode 100644
index 0000000..3bb6acf
--- /dev/null
+++ b/src/views/production/production/Production_AssembleWorkOrderList.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_OverWorkOrder.vue b/src/views/production/production/Production_OverWorkOrder.vue
new file mode 100644
index 0000000..b43cdd2
--- /dev/null
+++ b/src/views/production/production/Production_OverWorkOrder.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_ProductPlan.vue b/src/views/production/production/Production_ProductPlan.vue
new file mode 100644
index 0000000..8424096
--- /dev/null
+++ b/src/views/production/production/Production_ProductPlan.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_ProductPlanList.vue b/src/views/production/production/Production_ProductPlanList.vue
new file mode 100644
index 0000000..84d4608
--- /dev/null
+++ b/src/views/production/production/Production_ProductPlanList.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_ReportWorkOrder.vue b/src/views/production/production/Production_ReportWorkOrder.vue
new file mode 100644
index 0000000..d3081f9
--- /dev/null
+++ b/src/views/production/production/Production_ReportWorkOrder.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_ReportWorkOrderList.vue b/src/views/production/production/Production_ReportWorkOrderList.vue
new file mode 100644
index 0000000..26cdd91
--- /dev/null
+++ b/src/views/production/production/Production_ReportWorkOrderList.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_SalesOrder.vue b/src/views/production/production/Production_SalesOrder.vue
new file mode 100644
index 0000000..53ea05f
--- /dev/null
+++ b/src/views/production/production/Production_SalesOrder.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_SalesOrderList.vue b/src/views/production/production/Production_SalesOrderList.vue
new file mode 100644
index 0000000..0a512df
--- /dev/null
+++ b/src/views/production/production/Production_SalesOrderList.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_WorkOrder.vue b/src/views/production/production/Production_WorkOrder.vue
new file mode 100644
index 0000000..10cc63b
--- /dev/null
+++ b/src/views/production/production/Production_WorkOrder.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
diff --git a/src/views/production/production/Production_WorkOrderList.vue b/src/views/production/production/Production_WorkOrderList.vue
new file mode 100644
index 0000000..c9f7da9
--- /dev/null
+++ b/src/views/production/production/Production_WorkOrderList.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_Defect.vue b/src/views/quality/quality/Quality_Defect.vue
new file mode 100644
index 0000000..e23fd00
--- /dev/null
+++ b/src/views/quality/quality/Quality_Defect.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_InComingCheck.vue b/src/views/quality/quality/Quality_InComingCheck.vue
new file mode 100644
index 0000000..16e3615
--- /dev/null
+++ b/src/views/quality/quality/Quality_InComingCheck.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_InComingCheckTestItem.vue b/src/views/quality/quality/Quality_InComingCheckTestItem.vue
new file mode 100644
index 0000000..81525cc
--- /dev/null
+++ b/src/views/quality/quality/Quality_InComingCheckTestItem.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_OutCheck.vue b/src/views/quality/quality/Quality_OutCheck.vue
new file mode 100644
index 0000000..5f82912
--- /dev/null
+++ b/src/views/quality/quality/Quality_OutCheck.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_OutCheckTestItem.vue b/src/views/quality/quality/Quality_OutCheckTestItem.vue
new file mode 100644
index 0000000..05e25e7
--- /dev/null
+++ b/src/views/quality/quality/Quality_OutCheckTestItem.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_ProcessCheck.vue b/src/views/quality/quality/Quality_ProcessCheck.vue
new file mode 100644
index 0000000..10cce1f
--- /dev/null
+++ b/src/views/quality/quality/Quality_ProcessCheck.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_ProcessCheckTestItem.vue b/src/views/quality/quality/Quality_ProcessCheckTestItem.vue
new file mode 100644
index 0000000..4a56d48
--- /dev/null
+++ b/src/views/quality/quality/Quality_ProcessCheckTestItem.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_Template.vue b/src/views/quality/quality/Quality_Template.vue
new file mode 100644
index 0000000..6208234
--- /dev/null
+++ b/src/views/quality/quality/Quality_Template.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_TemplateProduct.vue b/src/views/quality/quality/Quality_TemplateProduct.vue
new file mode 100644
index 0000000..69673cf
--- /dev/null
+++ b/src/views/quality/quality/Quality_TemplateProduct.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_TemplateTestItem.vue b/src/views/quality/quality/Quality_TemplateTestItem.vue
new file mode 100644
index 0000000..e4f7cf4
--- /dev/null
+++ b/src/views/quality/quality/Quality_TemplateTestItem.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
diff --git a/src/views/quality/quality/Quality_TestItem.vue b/src/views/quality/quality/Quality_TestItem.vue
new file mode 100644
index 0000000..92ab960
--- /dev/null
+++ b/src/views/quality/quality/Quality_TestItem.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_DefectItemDistribute.vue b/src/views/report/report/View_DefectItemDistribute.vue
new file mode 100644
index 0000000..915de68
--- /dev/null
+++ b/src/views/report/report/View_DefectItemDistribute.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_DefectItemSummary.vue b/src/views/report/report/View_DefectItemSummary.vue
new file mode 100644
index 0000000..04bde9c
--- /dev/null
+++ b/src/views/report/report/View_DefectItemSummary.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_EmployeePerformance.vue b/src/views/report/report/View_EmployeePerformance.vue
new file mode 100644
index 0000000..dba362e
--- /dev/null
+++ b/src/views/report/report/View_EmployeePerformance.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_OutputStatistics.vue b/src/views/report/report/View_OutputStatistics.vue
new file mode 100644
index 0000000..a03bbae
--- /dev/null
+++ b/src/views/report/report/View_OutputStatistics.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_ProductionReport.vue b/src/views/report/report/View_ProductionReport.vue
new file mode 100644
index 0000000..bc02ca4
--- /dev/null
+++ b/src/views/report/report/View_ProductionReport.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_SalaryReport.vue b/src/views/report/report/View_SalaryReport.vue
new file mode 100644
index 0000000..d1f5e21
--- /dev/null
+++ b/src/views/report/report/View_SalaryReport.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/src/views/report/report/View_SalaryReportCover.vue b/src/views/report/report/View_SalaryReportCover.vue
new file mode 100644
index 0000000..81a2132
--- /dev/null
+++ b/src/views/report/report/View_SalaryReportCover.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/src/views/signalR/Index.vue b/src/views/signalR/Index.vue
new file mode 100644
index 0000000..6119849
--- /dev/null
+++ b/src/views/signalR/Index.vue
@@ -0,0 +1,113 @@
+
+
+
+
+ 1、目前只是用来处理首页消息发送
+
+
+ 2、文档见:https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-3.1
+
+
+
+
+
+
+ 发送消息
+
+
+
+
+
+
diff --git a/src/views/system/Permission.vue b/src/views/system/Permission.vue
new file mode 100644
index 0000000..81d077a
--- /dev/null
+++ b/src/views/system/Permission.vue
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.text+(data.isApp?'(app)':'') }}
+
+
+ {}"
+ >{{ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/Permission/RoleTree.vue b/src/views/system/Permission/RoleTree.vue
new file mode 100644
index 0000000..efe1993
--- /dev/null
+++ b/src/views/system/Permission/RoleTree.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
diff --git a/src/views/system/Sys_Dept.vue b/src/views/system/Sys_Dept.vue
new file mode 100644
index 0000000..f9f2011
--- /dev/null
+++ b/src/views/system/Sys_Dept.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/src/views/system/Sys_Dictionary.vue b/src/views/system/Sys_Dictionary.vue
new file mode 100644
index 0000000..8b1e085
--- /dev/null
+++ b/src/views/system/Sys_Dictionary.vue
@@ -0,0 +1,89 @@
+
+
+
+
+
+
diff --git a/src/views/system/Sys_DictionaryList.vue b/src/views/system/Sys_DictionaryList.vue
new file mode 100644
index 0000000..fcb72cb
--- /dev/null
+++ b/src/views/system/Sys_DictionaryList.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/Sys_Log.vue b/src/views/system/Sys_Log.vue
new file mode 100644
index 0000000..f0bfc68
--- /dev/null
+++ b/src/views/system/Sys_Log.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/system/Sys_Menu.vue b/src/views/system/Sys_Menu.vue
new file mode 100644
index 0000000..ad196dd
--- /dev/null
+++ b/src/views/system/Sys_Menu.vue
@@ -0,0 +1,630 @@
+
+
+
+
+
+
+
diff --git a/src/views/system/Sys_Role.vue b/src/views/system/Sys_Role.vue
new file mode 100644
index 0000000..cbbeacd
--- /dev/null
+++ b/src/views/system/Sys_Role.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/system/Sys_Role1.vue b/src/views/system/Sys_Role1.vue
new file mode 100644
index 0000000..545d9b8
--- /dev/null
+++ b/src/views/system/Sys_Role1.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/system/Sys_User.vue b/src/views/system/Sys_User.vue
new file mode 100644
index 0000000..0fc7155
--- /dev/null
+++ b/src/views/system/Sys_User.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
diff --git a/src/views/system/Sys_UserTree.vue b/src/views/system/Sys_UserTree.vue
new file mode 100644
index 0000000..4718c29
--- /dev/null
+++ b/src/views/system/Sys_UserTree.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
diff --git a/src/views/system/UserInfo.vue b/src/views/system/UserInfo.vue
new file mode 100644
index 0000000..99f3a5a
--- /dev/null
+++ b/src/views/system/UserInfo.vue
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+ {{ userInfo.userName }}
+
+
+ 注册日期:{{ userInfo.createDate }}
+
+
+ 修改密码
+ 修改头像
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/flow/FlowDemo.vue b/src/views/system/flow/FlowDemo.vue
new file mode 100644
index 0000000..e2e62a0
--- /dev/null
+++ b/src/views/system/flow/FlowDemo.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
diff --git a/src/views/system/flow/Sys_WorkFlow.vue b/src/views/system/flow/Sys_WorkFlow.vue
new file mode 100644
index 0000000..cdfa2f6
--- /dev/null
+++ b/src/views/system/flow/Sys_WorkFlow.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
diff --git a/src/views/system/flow/Sys_WorkFlowTable.vue b/src/views/system/flow/Sys_WorkFlowTable.vue
new file mode 100644
index 0000000..dab965f
--- /dev/null
+++ b/src/views/system/flow/Sys_WorkFlowTable.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
diff --git a/src/views/system/form/FormCollectionObject.vue b/src/views/system/form/FormCollectionObject.vue
new file mode 100644
index 0000000..1e963c4
--- /dev/null
+++ b/src/views/system/form/FormCollectionObject.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/src/views/system/form/FormDesignOptions.vue b/src/views/system/form/FormDesignOptions.vue
new file mode 100644
index 0000000..3a81862
--- /dev/null
+++ b/src/views/system/form/FormDesignOptions.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/system/quartz/Sys_QuartzLog.vue b/src/views/system/quartz/Sys_QuartzLog.vue
new file mode 100644
index 0000000..eb42132
--- /dev/null
+++ b/src/views/system/quartz/Sys_QuartzLog.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
diff --git a/src/views/system/quartz/Sys_QuartzOptions.vue b/src/views/system/quartz/Sys_QuartzOptions.vue
new file mode 100644
index 0000000..f49238b
--- /dev/null
+++ b/src/views/system/quartz/Sys_QuartzOptions.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
diff --git a/src/views/system/system/Sys_Department.vue b/src/views/system/system/Sys_Department.vue
new file mode 100644
index 0000000..0ee20af
--- /dev/null
+++ b/src/views/system/system/Sys_Department.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/src/views/system/system/Sys_DeptTree.vue b/src/views/system/system/Sys_DeptTree.vue
new file mode 100644
index 0000000..8a6d308
--- /dev/null
+++ b/src/views/system/system/Sys_DeptTree.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/system/system/Sys_VersionInfo.vue b/src/views/system/system/Sys_VersionInfo.vue
new file mode 100644
index 0000000..7751244
--- /dev/null
+++ b/src/views/system/system/Sys_VersionInfo.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
diff --git a/src/views/system/test.vue b/src/views/system/test.vue
new file mode 100644
index 0000000..64786be
--- /dev/null
+++ b/src/views/system/test.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/tools/tools/Tools_Tool.vue b/src/views/tools/tools/Tools_Tool.vue
new file mode 100644
index 0000000..f215179
--- /dev/null
+++ b/src/views/tools/tools/Tools_Tool.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
diff --git a/src/views/tools/tools/Tools_ToolType.vue b/src/views/tools/tools/Tools_ToolType.vue
new file mode 100644
index 0000000..8255996
--- /dev/null
+++ b/src/views/tools/tools/Tools_ToolType.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/tools/tools/Tools_ToolsReceive.vue b/src/views/tools/tools/Tools_ToolsReceive.vue
new file mode 100644
index 0000000..6408adc
--- /dev/null
+++ b/src/views/tools/tools/Tools_ToolsReceive.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
diff --git a/src/views/tools/tools/Tools_ToolsReceiveList.vue b/src/views/tools/tools/Tools_ToolsReceiveList.vue
new file mode 100644
index 0000000..76685a6
--- /dev/null
+++ b/src/views/tools/tools/Tools_ToolsReceiveList.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/tools/tools/Tools_ToolsReturn.vue b/src/views/tools/tools/Tools_ToolsReturn.vue
new file mode 100644
index 0000000..73364eb
--- /dev/null
+++ b/src/views/tools/tools/Tools_ToolsReturn.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
diff --git a/src/views/tools/tools/Tools_ToolsReturnList.vue b/src/views/tools/tools/Tools_ToolsReturnList.vue
new file mode 100644
index 0000000..ddb9753
--- /dev/null
+++ b/src/views/tools/tools/Tools_ToolsReturnList.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/warehouse/warehouse/View_StockBalance.vue b/src/views/warehouse/warehouse/View_StockBalance.vue
new file mode 100644
index 0000000..1adbb1f
--- /dev/null
+++ b/src/views/warehouse/warehouse/View_StockBalance.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/warehouse/warehouse/View_WareInOutDetail.vue b/src/views/warehouse/warehouse/View_WareInOutDetail.vue
new file mode 100644
index 0000000..787d580
--- /dev/null
+++ b/src/views/warehouse/warehouse/View_WareInOutDetail.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
diff --git a/src/views/warehouse/warehouse/Ware_OutWareHouseBill.vue b/src/views/warehouse/warehouse/Ware_OutWareHouseBill.vue
new file mode 100644
index 0000000..3dcab1d
--- /dev/null
+++ b/src/views/warehouse/warehouse/Ware_OutWareHouseBill.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
diff --git a/src/views/warehouse/warehouse/Ware_OutWareHouseBillList.vue b/src/views/warehouse/warehouse/Ware_OutWareHouseBillList.vue
new file mode 100644
index 0000000..501e246
--- /dev/null
+++ b/src/views/warehouse/warehouse/Ware_OutWareHouseBillList.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
diff --git a/src/views/warehouse/warehouse/Ware_WareHouseBill.vue b/src/views/warehouse/warehouse/Ware_WareHouseBill.vue
new file mode 100644
index 0000000..cde622b
--- /dev/null
+++ b/src/views/warehouse/warehouse/Ware_WareHouseBill.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
diff --git a/src/views/warehouse/warehouse/Ware_WareHouseBillList.vue b/src/views/warehouse/warehouse/Ware_WareHouseBillList.vue
new file mode 100644
index 0000000..20fc073
--- /dev/null
+++ b/src/views/warehouse/warehouse/Ware_WareHouseBillList.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
diff --git a/tests/unit/example.spec.js b/tests/unit/example.spec.js
new file mode 100644
index 0000000..bc9939b
--- /dev/null
+++ b/tests/unit/example.spec.js
@@ -0,0 +1,13 @@
+import { expect } from 'chai'
+import { shallowMount } from '@vue/test-utils'
+import HelloWorld from '@/components/HelloWorld.vue'
+
+describe('HelloWorld.vue', () => {
+ it('renders props.msg when passed', () => {
+ const msg = 'new message'
+ const wrapper = shallowMount(HelloWorld, {
+ props: { msg }
+ })
+ expect(wrapper.text()).to.include(msg)
+ })
+})
diff --git a/vue.config.js b/vue.config.js
new file mode 100644
index 0000000..8282bd1
--- /dev/null
+++ b/vue.config.js
@@ -0,0 +1,54 @@
+// const webpack = require("webpack");
+
+module.exports = {
+ productionSourceMap: false,
+ lintOnSave: false,
+ publicPath: './',
+ devServer: {
+ port: 9990,
+ overlay: {
+ warning: false,
+ errors: false
+ }
+ },
+ css: {
+ //查看CSS属于哪个css文件
+ sourceMap: true
+ },
+ configureWebpack: {
+ module: {
+ rules: [
+ {
+ test: /\.mjs$/,
+ include: /node_modules/,
+ type: "javascript/auto"
+ },
+ ]
+ }
+ },
+ //https://cli.vuejs.org/zh/guide/html-and-static-assets.html#html
+ chainWebpack: (config) => {
+ // 移除 prefetch 插件
+ config.plugins.delete('prefetch');
+ //自下定义title
+ config.plugin('html').tap((args) => {
+ args[0].title = 'iMES-您的新一代工厂管家【商业版】';
+ return args;
+ });
+
+ // 或者
+ // 修改它的选项:
+ // config.plugin('prefetch').tap(options => {
+ // options[0].fileBlacklist = options[0].fileBlacklist || []
+ // options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/)
+ // return options
+ // })
+ }
+ // configureWebpack: {
+ // plugins: [
+ // new webpack.optimize.MinChunkSizePlugin({
+ // minChunkSize: 100000 // 通过合并小于 minChunkSize 大小的 chunk,将 chunk 体积保持在指定大小限制以上
+ // })
+ // ]
+ // }
+};
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..cb77f0b
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,10212 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@achrinza/node-ipc@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz"
+ integrity sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==
+ dependencies:
+ "@node-ipc/js-queue" "2.0.3"
+ event-pubsub "4.3.0"
+ js-message "1.0.7"
+
+"@ampproject/remapping@^2.1.0":
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz"
+ integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.1.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.16.7.tgz"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.18.5.tgz"
+ integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg==
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.4.0-0":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/core/-/core-7.18.5.tgz"
+ integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.18.2"
+ "@babel/helper-compilation-targets" "^7.18.2"
+ "@babel/helper-module-transforms" "^7.18.0"
+ "@babel/helpers" "^7.18.2"
+ "@babel/parser" "^7.18.5"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.18.5"
+ "@babel/types" "^7.18.4"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.1"
+ semver "^6.3.0"
+
+"@babel/generator@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.18.2.tgz"
+ integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==
+ dependencies:
+ "@babel/types" "^7.18.2"
+ "@jridgewell/gen-mapping" "^0.3.0"
+ jsesc "^2.5.1"
+
+"@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz"
+ integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2", "@babel/helper-compilation-targets@^7.9.6":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz"
+ integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ==
+ dependencies:
+ "@babel/compat-data" "^7.17.10"
+ "@babel/helper-validator-option" "^7.16.7"
+ browserslist "^4.20.2"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz"
+ integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.17.9"
+ "@babel/helper-member-expression-to-functions" "^7.17.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-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz"
+ integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ regexpu-core "^5.0.1"
+
+"@babel/helper-define-polyfill-provider@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz"
+ integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==
+ dependencies:
+ "@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"
+
+"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz"
+ integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ==
+
+"@babel/helper-explode-assignable-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz"
+ integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9":
+ version "7.17.9"
+ resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz"
+ integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.17.0"
+
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-member-expression-to-functions@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz"
+ integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==
+ dependencies:
+ "@babel/types" "^7.17.0"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.8.3":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-module-transforms@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz"
+ integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.17.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.18.0"
+ "@babel/types" "^7.18.0"
+
+"@babel/helper-optimise-call-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz"
+ integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz"
+ integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==
+
+"@babel/helper-remap-async-to-generator@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz"
+ integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-wrap-function" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz"
+ integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.2"
+ "@babel/helper-member-expression-to-functions" "^7.17.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/traverse" "^7.18.2"
+ "@babel/types" "^7.18.2"
+
+"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz"
+ integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ==
+ dependencies:
+ "@babel/types" "^7.18.2"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
+ version "7.16.0"
+ resolved "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz"
+ integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==
+ dependencies:
+ "@babel/types" "^7.16.0"
+
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
+
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+
+"@babel/helper-wrap-function@^7.16.8":
+ version "7.16.8"
+ resolved "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz"
+ integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==
+ dependencies:
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.8"
+ "@babel/types" "^7.16.8"
+
+"@babel/helpers@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.18.2.tgz"
+ integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.18.2"
+ "@babel/types" "^7.18.2"
+
+"@babel/highlight@^7.16.7":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.17.12.tgz"
+ integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.16.4", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5", "@babel/parser@^7.7.0":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.5.tgz"
+ integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw==
+
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz"
+ integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz"
+ integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.17.12"
+
+"@babel/plugin-proposal-async-generator-functions@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz"
+ integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
+
+"@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.8.3":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz"
+ integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.17.12"
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-proposal-class-static-block@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz"
+ integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.0"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-class-static-block" "^7.14.5"
+
+"@babel/plugin-proposal-decorators@^7.8.3":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.18.2.tgz"
+ integrity sha512-kbDISufFOxeczi0v4NQP3p5kIeW6izn/6klfWBrIIdGZZe4UpHR+QU03FAoWjGGd9SUXAwbw2pup1kaL4OQsJQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.0"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-replace-supers" "^7.18.2"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/plugin-syntax-decorators" "^7.17.12"
+ charcodes "^0.2.0"
+
+"@babel/plugin-proposal-dynamic-import@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz"
+ integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+
+"@babel/plugin-proposal-export-namespace-from@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz"
+ integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+
+"@babel/plugin-proposal-json-strings@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz"
+ integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
+
+"@babel/plugin-proposal-logical-assignment-operators@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz"
+ integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz"
+ integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz"
+ integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-object-rest-spread@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz"
+ integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==
+ dependencies:
+ "@babel/compat-data" "^7.17.10"
+ "@babel/helper-compilation-targets" "^7.17.10"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
+ "@babel/plugin-transform-parameters" "^7.17.12"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz"
+ integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+
+"@babel/plugin-proposal-optional-chaining@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz"
+ integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz"
+ integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.17.12"
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-proposal-private-property-in-object@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz"
+ integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.17.12"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz"
+ integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.17.12"
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-syntax-async-generators@^7.8.4":
+ version "7.8.4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz"
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-class-properties@^7.12.13":
+ version "7.12.13"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz"
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.12.13"
+
+"@babel/plugin-syntax-class-static-block@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz"
+ integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-decorators@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.12.tgz"
+ integrity sha512-D1Hz0qtGTza8K2xGyEdVNCYLdVHukAcbQr4K3/s6r/esadyEriZovpJimQOpu8ju4/jV8dW/1xdaE0UpDroidw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-syntax-dynamic-import@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-export-namespace-from@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz"
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.3"
+
+"@babel/plugin-syntax-import-assertions@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz"
+ integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-syntax-json-strings@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz"
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz"
+ integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz"
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
+ version "7.10.4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz"
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.10.4"
+
+"@babel/plugin-syntax-object-rest-spread@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz"
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-optional-chaining@^7.8.3":
+ version "7.8.3"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz"
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.8.0"
+
+"@babel/plugin-syntax-private-property-in-object@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz"
+ integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-syntax-top-level-await@^7.14.5":
+ version "7.14.5"
+ resolved "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz"
+ integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.14.5"
+
+"@babel/plugin-transform-arrow-functions@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz"
+ integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-async-to-generator@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz"
+ integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-remap-async-to-generator" "^7.16.8"
+
+"@babel/plugin-transform-block-scoped-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz"
+ integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-block-scoping@^7.17.12":
+ version "7.18.4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz"
+ integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-classes@^7.17.12":
+ version "7.18.4"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz"
+ integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.18.2"
+ "@babel/helper-function-name" "^7.17.9"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-replace-supers" "^7.18.2"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz"
+ integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-destructuring@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz"
+ integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz"
+ integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-duplicate-keys@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz"
+ integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-exponentiation-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz"
+ integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-for-of@^7.18.1":
+ version "7.18.1"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz"
+ integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz"
+ integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==
+ dependencies:
+ "@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@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz"
+ integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-member-expression-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz"
+ integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-modules-amd@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz"
+ integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.18.0"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-commonjs@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz"
+ integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.18.0"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-simple-access" "^7.18.2"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-systemjs@^7.18.0":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz"
+ integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.18.0"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ babel-plugin-dynamic-import-node "^2.3.3"
+
+"@babel/plugin-transform-modules-umd@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz"
+ integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.18.0"
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz"
+ integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.17.12"
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-new-target@^7.17.12":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz"
+ integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-object-super@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz"
+ integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+
+"@babel/plugin-transform-parameters@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz"
+ integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-property-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz"
+ integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-regenerator@^7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz"
+ integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ regenerator-transform "^0.15.0"
+
+"@babel/plugin-transform-reserved-words@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz"
+ integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-runtime@^7.11.0":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz"
+ integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ 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"
+
+"@babel/plugin-transform-shorthand-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz"
+ integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-spread@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz"
+ integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
+
+"@babel/plugin-transform-sticky-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz"
+ integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-template-literals@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz"
+ integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-typeof-symbol@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz"
+ integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.17.12"
+
+"@babel/plugin-transform-unicode-escapes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz"
+ integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/plugin-transform-unicode-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz"
+ integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==
+ dependencies:
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+
+"@babel/preset-env@^7.11.0":
+ version "7.18.2"
+ resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.18.2.tgz"
+ integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==
+ dependencies:
+ "@babel/compat-data" "^7.17.10"
+ "@babel/helper-compilation-targets" "^7.18.2"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12"
+ "@babel/plugin-proposal-async-generator-functions" "^7.17.12"
+ "@babel/plugin-proposal-class-properties" "^7.17.12"
+ "@babel/plugin-proposal-class-static-block" "^7.18.0"
+ "@babel/plugin-proposal-dynamic-import" "^7.16.7"
+ "@babel/plugin-proposal-export-namespace-from" "^7.17.12"
+ "@babel/plugin-proposal-json-strings" "^7.17.12"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12"
+ "@babel/plugin-proposal-numeric-separator" "^7.16.7"
+ "@babel/plugin-proposal-object-rest-spread" "^7.18.0"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
+ "@babel/plugin-proposal-optional-chaining" "^7.17.12"
+ "@babel/plugin-proposal-private-methods" "^7.17.12"
+ "@babel/plugin-proposal-private-property-in-object" "^7.17.12"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.17.12"
+ "@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-import-assertions" "^7.17.12"
+ "@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.17.12"
+ "@babel/plugin-transform-async-to-generator" "^7.17.12"
+ "@babel/plugin-transform-block-scoped-functions" "^7.16.7"
+ "@babel/plugin-transform-block-scoping" "^7.17.12"
+ "@babel/plugin-transform-classes" "^7.17.12"
+ "@babel/plugin-transform-computed-properties" "^7.17.12"
+ "@babel/plugin-transform-destructuring" "^7.18.0"
+ "@babel/plugin-transform-dotall-regex" "^7.16.7"
+ "@babel/plugin-transform-duplicate-keys" "^7.17.12"
+ "@babel/plugin-transform-exponentiation-operator" "^7.16.7"
+ "@babel/plugin-transform-for-of" "^7.18.1"
+ "@babel/plugin-transform-function-name" "^7.16.7"
+ "@babel/plugin-transform-literals" "^7.17.12"
+ "@babel/plugin-transform-member-expression-literals" "^7.16.7"
+ "@babel/plugin-transform-modules-amd" "^7.18.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.18.2"
+ "@babel/plugin-transform-modules-systemjs" "^7.18.0"
+ "@babel/plugin-transform-modules-umd" "^7.18.0"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12"
+ "@babel/plugin-transform-new-target" "^7.17.12"
+ "@babel/plugin-transform-object-super" "^7.16.7"
+ "@babel/plugin-transform-parameters" "^7.17.12"
+ "@babel/plugin-transform-property-literals" "^7.16.7"
+ "@babel/plugin-transform-regenerator" "^7.18.0"
+ "@babel/plugin-transform-reserved-words" "^7.17.12"
+ "@babel/plugin-transform-shorthand-properties" "^7.16.7"
+ "@babel/plugin-transform-spread" "^7.17.12"
+ "@babel/plugin-transform-sticky-regex" "^7.16.7"
+ "@babel/plugin-transform-template-literals" "^7.18.2"
+ "@babel/plugin-transform-typeof-symbol" "^7.17.12"
+ "@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.18.2"
+ 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.22.1"
+ semver "^6.3.0"
+
+"@babel/preset-modules@^0.1.5":
+ version "0.1.5"
+ resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz"
+ integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
+ "@babel/types" "^7.4.4"
+ esutils "^2.0.2"
+
+"@babel/runtime-corejs2@^7.0.0":
+ version "7.18.3"
+ resolved "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.18.3.tgz"
+ integrity sha512-r9L5eZChdP1DHSL+YwGEd7Rcs8Yk2KDOwSJ4cdB8ZAMolqiW7Qa9I1ir/05lte/i6N979PKYr5288OqoyZkabA==
+ dependencies:
+ core-js "^2.6.12"
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime-corejs3@^7.11.2":
+ version "7.18.3"
+ resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz"
+ integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q==
+ dependencies:
+ core-js-pure "^3.20.2"
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.11.0", "@babel/runtime@^7.11.2", "@babel/runtime@^7.8.4":
+ version "7.18.3"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.3.tgz"
+ integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/template@^7.0.0", "@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.npmmirror.com/@babel/template/-/template-7.16.7.tgz"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.0":
+ version "7.18.5"
+ resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.18.5.tgz"
+ integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.18.2"
+ "@babel/helper-environment-visitor" "^7.18.2"
+ "@babel/helper-function-name" "^7.17.9"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.18.5"
+ "@babel/types" "^7.18.4"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
+"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+ version "7.18.4"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.18.4.tgz"
+ integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
+"@chenfengyuan/vue-qrcode@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/@chenfengyuan/vue-qrcode/-/vue-qrcode-2.0.0.tgz"
+ integrity sha512-33Cfr0zjbc3Dd8d5b1IgzXRAgXH0c2Gv19VI4snS25V/x9Z41eg769tC+Us1x+vqgQQhgD5YUjLnkpkrQfeMSw==
+
+"@ctrl/tinycolor@^3.4.1":
+ version "3.4.1"
+ resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz"
+ integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
+
+"@element-plus/icons-vue@^2.0.6", "@element-plus/icons-vue@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz"
+ integrity sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==
+
+"@floating-ui/core@^0.7.3":
+ version "0.7.3"
+ resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.3.tgz"
+ integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==
+
+"@floating-ui/dom@^0.5.4":
+ version "0.5.4"
+ resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.4.tgz"
+ integrity sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==
+ dependencies:
+ "@floating-ui/core" "^0.7.3"
+
+"@hapi/address@2.x.x":
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz"
+ integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
+
+"@hapi/bourne@1.x.x":
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz"
+ integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==
+
+"@hapi/hoek@^8.3.0", "@hapi/hoek@8.x.x":
+ version "8.5.1"
+ resolved "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz"
+ integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
+
+"@hapi/joi@^15.0.1":
+ version "15.1.1"
+ resolved "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz"
+ integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==
+ dependencies:
+ "@hapi/address" "2.x.x"
+ "@hapi/bourne" "1.x.x"
+ "@hapi/hoek" "8.x.x"
+ "@hapi/topo" "3.x.x"
+
+"@hapi/topo@3.x.x":
+ version "3.1.6"
+ resolved "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz"
+ integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==
+ dependencies:
+ "@hapi/hoek" "^8.3.0"
+
+"@intervolga/optimize-cssnano-plugin@^1.0.5":
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz"
+ integrity sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==
+ dependencies:
+ cssnano "^4.0.0"
+ cssnano-preset-default "^4.0.0"
+ postcss "^7.0.0"
+
+"@intlify/core-base@9.13.1":
+ version "9.13.1"
+ resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.13.1.tgz"
+ integrity sha512-+bcQRkJO9pcX8d0gel9ZNfrzU22sZFSA0WVhfXrf5jdJOS24a+Bp8pozuS9sBI9Hk/tGz83pgKfmqcn/Ci7/8w==
+ dependencies:
+ "@intlify/message-compiler" "9.13.1"
+ "@intlify/shared" "9.13.1"
+
+"@intlify/message-compiler@9.13.1":
+ version "9.13.1"
+ resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz"
+ integrity sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==
+ dependencies:
+ "@intlify/shared" "9.13.1"
+ source-map-js "^1.0.2"
+
+"@intlify/shared@9.13.1":
+ version "9.13.1"
+ resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz"
+ integrity sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==
+
+"@jridgewell/gen-mapping@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
+ integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/gen-mapping@^0.3.0":
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
+ integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.1"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.8"
+ resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz"
+ integrity sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==
+
+"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz"
+ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.14"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
+ integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+
+"@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.14"
+ resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz"
+ integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@microsoft/signalr@^6.0.4":
+ version "6.0.6"
+ resolved "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.6.tgz"
+ integrity sha512-3dTLtgwEXUeE9R/3NZQslh1B2WbppeHVXdnpvSZc7Yz+tP5Yiw3KCVUHwKUVnYmd9/2v3DaI/pvCdihrss49zA==
+ dependencies:
+ abort-controller "^3.0.0"
+ eventsource "^1.0.7"
+ fetch-cookie "^0.11.0"
+ node-fetch "^2.6.7"
+ ws "^7.4.5"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@node-ipc/js-queue@2.0.3":
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz"
+ integrity sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==
+ dependencies:
+ easy-stack "1.0.1"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@^1.1.2":
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz"
+ integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
+
+"@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
+ version "2.11.7"
+ resolved "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz"
+ integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
+
+"@soda/friendly-errors-webpack-plugin@^1.7.1":
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz"
+ integrity sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==
+ dependencies:
+ chalk "^3.0.0"
+ error-stack-parser "^2.0.6"
+ string-width "^4.2.3"
+ strip-ansi "^6.0.1"
+
+"@soda/get-current-script@^1.0.0":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz"
+ integrity sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==
+
+"@types/body-parser@*":
+ version "1.19.2"
+ resolved "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz"
+ integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/connect-history-api-fallback@*":
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz"
+ integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/node" "*"
+
+"@types/connect@*":
+ version "3.4.35"
+ resolved "https://registry.npmmirror.com/@types/connect/-/connect-3.4.35.tgz"
+ integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
+ version "4.17.29"
+ resolved "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz"
+ integrity sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+
+"@types/express@*":
+ version "4.17.13"
+ resolved "https://registry.npmmirror.com/@types/express/-/express-4.17.13.tgz"
+ integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^4.17.18"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
+"@types/glob@^7.1.1":
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz"
+ integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
+ dependencies:
+ "@types/minimatch" "*"
+ "@types/node" "*"
+
+"@types/http-proxy@^1.17.5":
+ version "1.17.9"
+ resolved "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.9.tgz"
+ integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==
+ dependencies:
+ "@types/node" "*"
+
+"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8":
+ version "7.0.11"
+ resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz"
+ integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
+
+"@types/lodash-es@*", "@types/lodash-es@^4.17.6":
+ version "4.17.6"
+ resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz"
+ integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*", "@types/lodash@^4.14.182":
+ version "4.14.184"
+ resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz"
+ integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==
+
+"@types/mime@^1":
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz"
+ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+
+"@types/minimatch@*":
+ version "3.0.5"
+ resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz"
+ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==
+
+"@types/minimist@^1.2.0":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz"
+ integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
+
+"@types/node@*":
+ version "18.0.0"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-18.0.0.tgz"
+ integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==
+
+"@types/normalize-package-data@^2.4.0":
+ version "2.4.1"
+ resolved "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz"
+ integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
+
+"@types/q@^1.5.1":
+ version "1.5.5"
+ resolved "https://registry.npmmirror.com/@types/q/-/q-1.5.5.tgz"
+ integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
+
+"@types/qs@*":
+ version "6.9.7"
+ resolved "https://registry.npmmirror.com/@types/qs/-/qs-6.9.7.tgz"
+ integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
+
+"@types/range-parser@*":
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz"
+ integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
+
+"@types/serve-static@*":
+ version "1.13.10"
+ resolved "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.13.10.tgz"
+ integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
+ dependencies:
+ "@types/mime" "^1"
+ "@types/node" "*"
+
+"@types/source-list-map@*":
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.2.tgz"
+ integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
+
+"@types/tapable@^1":
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.8.tgz"
+ integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==
+
+"@types/uglify-js@*":
+ version "3.16.0"
+ resolved "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.16.0.tgz"
+ integrity sha512-0yeUr92L3r0GLRnBOvtYK1v2SjqMIqQDHMl7GLb+l2L8+6LSFWEEWEIgVsPdMn5ImLM8qzWT8xFPtQYpp8co0g==
+ dependencies:
+ source-map "^0.6.1"
+
+"@types/web-bluetooth@^0.0.15":
+ version "0.0.15"
+ resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz"
+ integrity sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==
+
+"@types/webpack-dev-server@^3.11.0":
+ version "3.11.6"
+ resolved "https://registry.npmmirror.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz"
+ integrity sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==
+ dependencies:
+ "@types/connect-history-api-fallback" "*"
+ "@types/express" "*"
+ "@types/serve-static" "*"
+ "@types/webpack" "^4"
+ http-proxy-middleware "^1.0.0"
+
+"@types/webpack-sources@*":
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz"
+ integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==
+ dependencies:
+ "@types/node" "*"
+ "@types/source-list-map" "*"
+ source-map "^0.7.3"
+
+"@types/webpack@^4", "@types/webpack@^4.0.0":
+ version "4.41.32"
+ resolved "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.32.tgz"
+ integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==
+ dependencies:
+ "@types/node" "*"
+ "@types/tapable" "^1"
+ "@types/uglify-js" "*"
+ "@types/webpack-sources" "*"
+ anymatch "^3.0.0"
+ source-map "^0.6.0"
+
+"@vue/babel-helper-vue-jsx-merge-props@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.2.1.tgz"
+ integrity sha512-QOi5OW45e2R20VygMSNhyQHvpdUwQZqGPc748JLGCYEy+yp8fNFNdbNIGAgZmi9e+2JHPd6i6idRuqivyicIkA==
+
+"@vue/babel-helper-vue-transform-on@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.0.2.tgz"
+ integrity sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==
+
+"@vue/babel-plugin-jsx@^1.0.3":
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.1.tgz"
+ integrity sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.0.0"
+ "@babel/template" "^7.0.0"
+ "@babel/traverse" "^7.0.0"
+ "@babel/types" "^7.0.0"
+ "@vue/babel-helper-vue-transform-on" "^1.0.2"
+ camelcase "^6.0.0"
+ html-tags "^3.1.0"
+ svg-tags "^1.0.0"
+
+"@vue/babel-plugin-transform-vue-jsx@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.2.1.tgz"
+ integrity sha512-HJuqwACYehQwh1fNT8f4kyzqlNMpBuUK4rSiSES5D4QsYncv5fxFsLyrxFPG2ksO7t5WP+Vgix6tt6yKClwPzA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1"
+ html-tags "^2.0.0"
+ lodash.kebabcase "^4.1.1"
+ svg-tags "^1.0.0"
+
+"@vue/babel-preset-app@^4.5.18":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-4.5.18.tgz"
+ integrity sha512-P7ASKBNuz3IZxvO5VPsPGjRey4KRNMJ9Rav0nJ/v+m0ny6uUuwE03Xoli5G3mvdijUbtVZT7+/uULMCEg4bGew==
+ dependencies:
+ "@babel/core" "^7.11.0"
+ "@babel/helper-compilation-targets" "^7.9.6"
+ "@babel/helper-module-imports" "^7.8.3"
+ "@babel/plugin-proposal-class-properties" "^7.8.3"
+ "@babel/plugin-proposal-decorators" "^7.8.3"
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+ "@babel/plugin-syntax-jsx" "^7.8.3"
+ "@babel/plugin-transform-runtime" "^7.11.0"
+ "@babel/preset-env" "^7.11.0"
+ "@babel/runtime" "^7.11.0"
+ "@vue/babel-plugin-jsx" "^1.0.3"
+ "@vue/babel-preset-jsx" "^1.2.4"
+ babel-plugin-dynamic-import-node "^2.3.3"
+ core-js "^3.6.5"
+ core-js-compat "^3.6.5"
+ semver "^6.1.0"
+
+"@vue/babel-preset-jsx@^1.2.4":
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.2.4.tgz"
+ integrity sha512-oRVnmN2a77bYDJzeGSt92AuHXbkIxbf/XXSE3klINnh9AXBmVS1DGa1f0d+dDYpLfsAKElMnqKTQfKn7obcL4w==
+ dependencies:
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
+ "@vue/babel-sugar-composition-api-inject-h" "^1.2.1"
+ "@vue/babel-sugar-composition-api-render-instance" "^1.2.4"
+ "@vue/babel-sugar-functional-vue" "^1.2.2"
+ "@vue/babel-sugar-inject-h" "^1.2.2"
+ "@vue/babel-sugar-v-model" "^1.2.3"
+ "@vue/babel-sugar-v-on" "^1.2.3"
+
+"@vue/babel-sugar-composition-api-inject-h@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.2.1.tgz"
+ integrity sha512-4B3L5Z2G+7s+9Bwbf+zPIifkFNcKth7fQwekVbnOA3cr3Pq71q71goWr97sk4/yyzH8phfe5ODVzEjX7HU7ItQ==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-composition-api-render-instance@^1.2.4":
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.2.4.tgz"
+ integrity sha512-joha4PZznQMsxQYXtR3MnTgCASC9u3zt9KfBxIeuI5g2gscpTsSKRDzWQt4aqNIpx6cv8On7/m6zmmovlNsG7Q==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-functional-vue@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.2.2.tgz"
+ integrity sha512-JvbgGn1bjCLByIAU1VOoepHQ1vFsroSA/QkzdiSs657V79q6OwEWLCQtQnEXD/rLTA8rRit4rMOhFpbjRFm82w==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-inject-h@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.2.2.tgz"
+ integrity sha512-y8vTo00oRkzQTgufeotjCLPAvlhnpSkcHFEp60+LJUwygGcd5Chrpn5480AQp/thrxVm8m2ifAk0LyFel9oCnw==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-v-model@^1.2.3":
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.2.3.tgz"
+ integrity sha512-A2jxx87mySr/ulAsSSyYE8un6SIH0NWHiLaCWpodPCVOlQVODCaSpiR4+IMsmBr73haG+oeCuSvMOM+ttWUqRQ==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@vue/babel-helper-vue-jsx-merge-props" "^1.2.1"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
+ camelcase "^5.0.0"
+ html-tags "^2.0.0"
+ svg-tags "^1.0.0"
+
+"@vue/babel-sugar-v-on@^1.2.3":
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.2.3.tgz"
+ integrity sha512-kt12VJdz/37D3N3eglBywV8GStKNUhNrsxChXIV+o0MwVXORYuhDTHJRKPgLJRb/EY3vM2aRFQdxJBp9CLikjw==
+ dependencies:
+ "@babel/plugin-syntax-jsx" "^7.2.0"
+ "@vue/babel-plugin-transform-vue-jsx" "^1.2.1"
+ camelcase "^5.0.0"
+
+"@vue/cli-overlay@^4.5.18":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.18.tgz"
+ integrity sha512-PZW6WRbmWx/I+PaP7PdjZGscvtUiIq/pRU38p3GLKMl53InBer12549CEAhPicAF5c38gBzGu/ifoPSvlPSZyg==
+
+"@vue/cli-plugin-babel@~4.5.0":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.18.tgz"
+ integrity sha512-Juiu3EgV228pKcfWu6vrABrrXYoMtanf4PlG6P2drPHf1LgVmaUp1g/K7IxdCc63IY9E+eCWjZ2ZEnQvxMSWOQ==
+ dependencies:
+ "@babel/core" "^7.11.0"
+ "@vue/babel-preset-app" "^4.5.18"
+ "@vue/cli-shared-utils" "^4.5.18"
+ babel-loader "^8.1.0"
+ cache-loader "^4.1.0"
+ thread-loader "^2.1.3"
+ webpack "^4.0.0"
+
+"@vue/cli-plugin-eslint@~4.5.0":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.18.tgz"
+ integrity sha512-UWacV26Ul+W61PwvMBv4Msh2h3Umr5FG0ApXFzLQTgyc/rCmXvhR53pW252zVZ2tf7s2n7xDFnp/mrCUrkb2tw==
+ dependencies:
+ "@vue/cli-shared-utils" "^4.5.18"
+ eslint-loader "^2.2.1"
+ globby "^9.2.0"
+ inquirer "^7.1.0"
+ webpack "^4.0.0"
+ yorkie "^2.0.0"
+
+"@vue/cli-plugin-router@^4.5.18", "@vue/cli-plugin-router@~4.5.0":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.18.tgz"
+ integrity sha512-J2SJpi7OKy6NE5yUz7eubTnzc+k2LHEcI+c0W8i4UoUumIVSkAgvKWZPFqoy/QIqnQpwW/75CUjpLGf6Fht2wQ==
+ dependencies:
+ "@vue/cli-shared-utils" "^4.5.18"
+
+"@vue/cli-plugin-unit-mocha@~4.5.0":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-4.5.18.tgz"
+ integrity sha512-wxV7zzc3Bu3C9imV6P21hY/Bk81iVtRsQ1j5m1eIz28zKYHSOgdET7bKO8ExBkWIDApjPZ1gdfvJMLvm8Wd2/w==
+ dependencies:
+ "@vue/cli-shared-utils" "^4.5.18"
+ jsdom "^15.2.1"
+ jsdom-global "^3.0.2"
+ mocha "^6.2.2"
+ mochapack "^1.1.15"
+
+"@vue/cli-plugin-vuex@^4.5.18", "@vue/cli-plugin-vuex@~4.5.0":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.18.tgz"
+ integrity sha512-8lnxtRJLa6Ki4FFYDtVA6Q4CRSjzWPXRkY7v8779nNq8eVLpGEyOtqDgu/VvNBs7EGKmveXZFNu8dUsfuTt7qA==
+
+"@vue/cli-service@^3.0.0 || ^4.0.0-0", "@vue/cli-service@~4.5.0":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.18.tgz"
+ integrity sha512-ACRfiyzQNT+3Ko8NdkyvKMsAJ7IziQcM+QvRzfHo11v4YllcQBbRxYsmnffvjaZfNBefQvJ1qX9FI+ggIlxYQA==
+ dependencies:
+ "@intervolga/optimize-cssnano-plugin" "^1.0.5"
+ "@soda/friendly-errors-webpack-plugin" "^1.7.1"
+ "@soda/get-current-script" "^1.0.0"
+ "@types/minimist" "^1.2.0"
+ "@types/webpack" "^4.0.0"
+ "@types/webpack-dev-server" "^3.11.0"
+ "@vue/cli-overlay" "^4.5.18"
+ "@vue/cli-plugin-router" "^4.5.18"
+ "@vue/cli-plugin-vuex" "^4.5.18"
+ "@vue/cli-shared-utils" "^4.5.18"
+ "@vue/component-compiler-utils" "^3.1.2"
+ "@vue/preload-webpack-plugin" "^1.1.0"
+ "@vue/web-component-wrapper" "^1.2.0"
+ acorn "^7.4.0"
+ acorn-walk "^7.1.1"
+ address "^1.1.2"
+ autoprefixer "^9.8.6"
+ browserslist "^4.12.0"
+ cache-loader "^4.1.0"
+ case-sensitive-paths-webpack-plugin "^2.3.0"
+ cli-highlight "^2.1.4"
+ clipboardy "^2.3.0"
+ cliui "^6.0.0"
+ copy-webpack-plugin "^5.1.1"
+ css-loader "^3.5.3"
+ cssnano "^4.1.10"
+ debug "^4.1.1"
+ default-gateway "^5.0.5"
+ dotenv "^8.2.0"
+ dotenv-expand "^5.1.0"
+ file-loader "^4.2.0"
+ fs-extra "^7.0.1"
+ globby "^9.2.0"
+ hash-sum "^2.0.0"
+ html-webpack-plugin "^3.2.0"
+ launch-editor-middleware "^2.2.1"
+ lodash.defaultsdeep "^4.6.1"
+ lodash.mapvalues "^4.6.0"
+ lodash.transform "^4.6.0"
+ mini-css-extract-plugin "^0.9.0"
+ minimist "^1.2.5"
+ pnp-webpack-plugin "^1.6.4"
+ portfinder "^1.0.26"
+ postcss-loader "^3.0.0"
+ ssri "^8.0.1"
+ terser-webpack-plugin "^1.4.4"
+ thread-loader "^2.1.3"
+ url-loader "^2.2.0"
+ vue-loader "^15.9.2"
+ vue-style-loader "^4.1.2"
+ webpack "^4.0.0"
+ webpack-bundle-analyzer "^3.8.0"
+ webpack-chain "^6.4.0"
+ webpack-dev-server "^3.11.0"
+ webpack-merge "^4.2.2"
+ optionalDependencies:
+ vue-loader-v16 "npm:vue-loader@^16.1.0"
+
+"@vue/cli-shared-utils@^4.5.18":
+ version "4.5.18"
+ resolved "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.18.tgz"
+ integrity sha512-rYX8watG/+SFmkedXMZ3hJP+26/bz80f9zG9dMUfBMqTAqIDGICDtuP4H4QXZL3PCKI/HWFCMhRWf2wO4eGEPg==
+ dependencies:
+ "@achrinza/node-ipc" "9.2.2"
+ "@hapi/joi" "^15.0.1"
+ chalk "^2.4.2"
+ execa "^1.0.0"
+ launch-editor "^2.2.1"
+ lru-cache "^5.1.1"
+ open "^6.3.0"
+ ora "^3.4.0"
+ read-pkg "^5.1.1"
+ request "^2.88.2"
+ semver "^6.1.0"
+ strip-ansi "^6.0.0"
+
+"@vue/compiler-core@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz"
+ integrity sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.37"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-dom@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz"
+ integrity sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==
+ dependencies:
+ "@vue/compiler-core" "3.2.37"
+ "@vue/shared" "3.2.37"
+
+"@vue/compiler-sfc@^3.0.0", "@vue/compiler-sfc@^3.0.0-beta.14", "@vue/compiler-sfc@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz"
+ integrity sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.37"
+ "@vue/compiler-dom" "3.2.37"
+ "@vue/compiler-ssr" "3.2.37"
+ "@vue/reactivity-transform" "3.2.37"
+ "@vue/shared" "3.2.37"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-ssr@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz"
+ integrity sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==
+ dependencies:
+ "@vue/compiler-dom" "3.2.37"
+ "@vue/shared" "3.2.37"
+
+"@vue/component-compiler-utils@^3.1.0", "@vue/component-compiler-utils@^3.1.2":
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz"
+ integrity sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==
+ dependencies:
+ consolidate "^0.15.1"
+ hash-sum "^1.0.2"
+ lru-cache "^4.1.2"
+ merge-source-map "^1.1.0"
+ postcss "^7.0.36"
+ postcss-selector-parser "^6.0.2"
+ source-map "~0.6.1"
+ vue-template-es2015-compiler "^1.9.0"
+ optionalDependencies:
+ prettier "^1.18.2 || ^2.0.0"
+
+"@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.5.0":
+ version "6.6.1"
+ resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz"
+ integrity sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==
+
+"@vue/preload-webpack-plugin@^1.1.0":
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz"
+ integrity sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==
+
+"@vue/reactivity-transform@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz"
+ integrity sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.37"
+ "@vue/shared" "3.2.37"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz"
+ integrity sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==
+ dependencies:
+ "@vue/shared" "3.2.37"
+
+"@vue/runtime-core@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz"
+ integrity sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==
+ dependencies:
+ "@vue/reactivity" "3.2.37"
+ "@vue/shared" "3.2.37"
+
+"@vue/runtime-dom@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz"
+ integrity sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==
+ dependencies:
+ "@vue/runtime-core" "3.2.37"
+ "@vue/shared" "3.2.37"
+ csstype "^2.6.8"
+
+"@vue/server-renderer@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz"
+ integrity sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.37"
+ "@vue/shared" "3.2.37"
+
+"@vue/shared@3.2.37":
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz"
+ integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==
+
+"@vue/test-utils@^2.0.0-0":
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/@vue/test-utils/-/test-utils-2.0.0.tgz"
+ integrity sha512-zL5kygNq7hONrO1CzaUGprEAklAX+pH8J1MPMCU3Rd2xtSYkZ+PmKU3oEDRg8VAGdL5lNJHzDgrud5amFPtirw==
+
+"@vue/web-component-wrapper@^1.2.0":
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz"
+ integrity sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==
+
+"@vueuse/core@^9.1.0":
+ version "9.1.1"
+ resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.1.1.tgz"
+ integrity sha512-QfuaNWRDMQcCUwXylCyYhPC3ScS9Tiiz4J0chdwr3vOemBwRToSywq8MP+ZegKYFnbETzRY8G/5zC+ca30wrRQ==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.15"
+ "@vueuse/metadata" "9.1.1"
+ "@vueuse/shared" "9.1.1"
+ vue-demi "*"
+
+"@vueuse/metadata@9.1.1":
+ version "9.1.1"
+ resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.1.1.tgz"
+ integrity sha512-XZ2KtSW+85LLHB/IdGILPAtbIVHasPsAW7aqz3BRMzJdAQWRiM/FGa1OKBwLbXtUw/AmjKYFlZJo7eOFIBXRog==
+
+"@vueuse/shared@9.1.1":
+ version "9.1.1"
+ resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.1.1.tgz"
+ integrity sha512-c+IfcOYmHiHqoEa3ED1Tbpue5GHmoUmTp8PtO4YbczthtY155Rt6DmWhjxMLXBF1Bcidagxljmp/7xtAzEHXLw==
+ dependencies:
+ vue-demi "*"
+
+"@webassemblyjs/ast@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz"
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
+ dependencies:
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+
+"@webassemblyjs/floating-point-hex-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz"
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
+
+"@webassemblyjs/helper-api-error@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz"
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
+
+"@webassemblyjs/helper-buffer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz"
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
+
+"@webassemblyjs/helper-code-frame@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz"
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
+ dependencies:
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/helper-fsm@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz"
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
+
+"@webassemblyjs/helper-module-context@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz"
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+
+"@webassemblyjs/helper-wasm-bytecode@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz"
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
+
+"@webassemblyjs/helper-wasm-section@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz"
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+
+"@webassemblyjs/ieee754@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz"
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz"
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz"
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
+
+"@webassemblyjs/wasm-edit@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz"
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-opt" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ "@webassemblyjs/wast-printer" "1.9.0"
+
+"@webassemblyjs/wasm-gen@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz"
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wasm-opt@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz"
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-buffer" "1.9.0"
+ "@webassemblyjs/wasm-gen" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+
+"@webassemblyjs/wasm-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz"
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
+ "@webassemblyjs/ieee754" "1.9.0"
+ "@webassemblyjs/leb128" "1.9.0"
+ "@webassemblyjs/utf8" "1.9.0"
+
+"@webassemblyjs/wast-parser@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz"
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
+ "@webassemblyjs/helper-api-error" "1.9.0"
+ "@webassemblyjs/helper-code-frame" "1.9.0"
+ "@webassemblyjs/helper-fsm" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/wast-printer@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz"
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/wast-parser" "1.9.0"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
+abab@^2.0.0:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/abab/-/abab-2.0.6.tgz"
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
+
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
+ version "1.3.8"
+ resolved "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz"
+ integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
+ dependencies:
+ mime-types "~2.1.34"
+ negotiator "0.6.3"
+
+acorn-globals@^4.3.2:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/acorn-globals/-/acorn-globals-4.3.4.tgz"
+ integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==
+ dependencies:
+ acorn "^6.0.1"
+ acorn-walk "^6.0.1"
+
+acorn-jsx@^5.2.0:
+ version "5.3.2"
+ resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn-walk@^6.0.1:
+ version "6.2.0"
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-6.2.0.tgz"
+ integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==
+
+acorn-walk@^7.1.1:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz"
+ integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
+
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^6.0.1, acorn@^6.4.1:
+ version "6.4.2"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz"
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
+
+acorn@^7.1.0:
+ version "7.4.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^7.1.1:
+ version "7.4.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+acorn@^7.4.0:
+ version "7.4.1"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz"
+ integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
+
+address@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/address/-/address-1.2.0.tgz"
+ integrity sha512-tNEZYz5G/zYunxFm7sfhAxkXEuLj3K6BKwv6ZURlsF6yiUQ65z0Q2wZW9L5cPUl9ocofGvXOdFYbFHp0+6MOig==
+
+ajv-errors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz"
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
+
+ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1, ajv@>=5.0.0:
+ version "6.12.6"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+alphanum-sort@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz"
+ integrity sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==
+
+ansi-colors@^3.0.0, ansi-colors@3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.3.tgz"
+ integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+
+ansi-escapes@^4.2.1:
+ version "4.3.2"
+ resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
+ansi-html-community@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
+ integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz"
+ integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==
+
+ansi-regex@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz"
+ integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==
+
+ansi-regex@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz"
+ integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+anymatch@^3.0.0, anymatch@~3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz"
+ integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+aproba@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+arch@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz"
+ integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz"
+ integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==
+
+arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz"
+ integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
+
+array-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/array-equal/-/array-equal-1.0.0.tgz"
+ integrity sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==
+
+array-flatten@^2.1.0:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz"
+ integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz"
+ integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
+
+array-union@^1.0.1, array-union@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz"
+ integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz"
+ integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz"
+ integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
+
+array.prototype.reduce@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz"
+ integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.2"
+ es-array-method-boxes-properly "^1.0.0"
+ is-string "^1.0.7"
+
+asn1.js@^5.2.0:
+ version "5.4.1"
+ resolved "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz"
+ integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+ safer-buffer "^2.1.0"
+
+asn1@~0.2.3:
+ version "0.2.6"
+ resolved "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz"
+ integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
+ dependencies:
+ safer-buffer "~2.1.0"
+
+assert-plus@^1.0.0, assert-plus@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz"
+ integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
+
+assert@^1.1.1:
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/assert/-/assert-1.5.0.tgz"
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
+ dependencies:
+ object-assign "^4.1.1"
+ util "0.10.3"
+
+assertion-error@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz"
+ integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz"
+ integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
+
+astral-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz"
+ integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
+
+async-each@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/async-each/-/async-each-1.0.3.tgz"
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
+
+async-limiter@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz"
+ integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+
+async-validator@^4.2.5:
+ version "4.2.5"
+ resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz"
+ integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
+
+async@^2.6.2:
+ version "2.6.4"
+ resolved "https://registry.npmmirror.com/async/-/async-2.6.4.tgz"
+ integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
+ dependencies:
+ lodash "^4.17.14"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^9.8.6:
+ version "9.8.8"
+ resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz"
+ integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==
+ dependencies:
+ browserslist "^4.12.0"
+ caniuse-lite "^1.0.30001109"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ picocolors "^0.2.1"
+ postcss "^7.0.32"
+ postcss-value-parser "^4.1.0"
+
+aws-sign2@~0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz"
+ integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
+
+aws4@^1.8.0:
+ version "1.11.0"
+ resolved "https://registry.npmmirror.com/aws4/-/aws4-1.11.0.tgz"
+ integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
+
+axios@^0.21.1:
+ version "0.21.4"
+ resolved "https://registry.npmmirror.com/axios/-/axios-0.21.4.tgz"
+ integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+ dependencies:
+ follow-redirects "^1.14.0"
+
+babel-eslint@^10.1.0:
+ version "10.1.0"
+ resolved "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-10.1.0.tgz"
+ integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.7.0"
+ "@babel/traverse" "^7.7.0"
+ "@babel/types" "^7.7.0"
+ eslint-visitor-keys "^1.0.0"
+ resolve "^1.12.0"
+
+babel-loader@^8.1.0:
+ version "8.2.5"
+ resolved "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.2.5.tgz"
+ integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==
+ dependencies:
+ find-cache-dir "^3.3.1"
+ loader-utils "^2.0.0"
+ make-dir "^3.1.0"
+ schema-utils "^2.6.5"
+
+babel-plugin-dynamic-import-node@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz"
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
+ dependencies:
+ object.assign "^4.1.0"
+
+babel-plugin-polyfill-corejs2@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz"
+ integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==
+ dependencies:
+ "@babel/compat-data" "^7.13.11"
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ semver "^6.1.1"
+
+babel-plugin-polyfill-corejs3@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz"
+ integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+ core-js-compat "^3.21.0"
+
+babel-plugin-polyfill-regenerator@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz"
+ integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==
+ dependencies:
+ "@babel/helper-define-polyfill-provider" "^0.3.1"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ cache-base "^1.0.1"
+ class-utils "^0.3.5"
+ component-emitter "^1.2.1"
+ define-property "^1.0.0"
+ isobject "^3.0.1"
+ mixin-deep "^1.2.0"
+ pascalcase "^0.1.1"
+
+base64-js@^1.0.2:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+batch@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz"
+ integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz"
+ integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
+ dependencies:
+ tweetnacl "^0.14.3"
+
+bfj@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz"
+ integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==
+ dependencies:
+ bluebird "^3.5.5"
+ check-types "^8.0.3"
+ hoopy "^0.1.4"
+ tryer "^1.0.1"
+
+big.js@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz"
+ integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
+
+big.js@^5.2.2:
+ version "5.2.2"
+ resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz"
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
+binary-extensions@^1.0.0:
+ version "1.13.1"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz"
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
+
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
+bluebird@^3.1.1, bluebird@^3.5.5:
+ version "3.7.2"
+ resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
+bn.js@^4.0.0:
+ version "4.12.0"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^4.1.0:
+ version "4.12.0"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^4.11.9:
+ version "4.12.0"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz"
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
+
+bn.js@^5.0.0, bn.js@^5.1.1:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz"
+ integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+
+body-parser@1.20.0:
+ version "1.20.0"
+ resolved "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.0.tgz"
+ integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.10.3"
+ raw-body "2.5.1"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
+bonjour@^3.5.0:
+ version "3.5.0"
+ resolved "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz"
+ integrity sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==
+ dependencies:
+ array-flatten "^2.1.0"
+ deep-equal "^1.0.1"
+ dns-equal "^1.0.0"
+ dns-txt "^2.0.2"
+ multicast-dns "^6.0.1"
+ multicast-dns-service-types "^1.1.0"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^2.3.1, braces@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ arr-flatten "^1.1.0"
+ array-unique "^0.3.2"
+ extend-shallow "^2.0.1"
+ fill-range "^4.0.0"
+ isobject "^3.0.1"
+ repeat-element "^1.1.2"
+ snapdragon "^0.8.1"
+ snapdragon-node "^2.0.1"
+ split-string "^3.0.2"
+ to-regex "^3.0.1"
+
+braces@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+braces@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz"
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
+ dependencies:
+ fill-range "^7.0.1"
+
+brorand@^1.0.1, brorand@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz"
+ integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
+
+browser-process-hrtime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"
+ integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
+browser-stdout@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz"
+ integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ buffer-xor "^1.0.3"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.3"
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz"
+ integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
+ dependencies:
+ bn.js "^5.0.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz"
+ integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
+ dependencies:
+ bn.js "^5.1.1"
+ browserify-rsa "^4.0.1"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.3"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.5"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+browserify-zlib@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.20.2, browserslist@^4.21.0, "browserslist@>= 4.21.0":
+ version "4.21.0"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.0.tgz"
+ integrity sha512-UQxE0DIhRB5z/zDz9iA03BOfxaN2+GQdBYH/2WrSIWEUrnpzTPJbhqt+umq6r3acaPRTW1FNTkrcp0PXgtFkvA==
+ dependencies:
+ caniuse-lite "^1.0.30001358"
+ electron-to-chromium "^1.4.164"
+ node-releases "^2.0.5"
+ update-browserslist-db "^1.0.0"
+
+buffer-from@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz"
+ integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+
+buffer-indexof@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz"
+ integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==
+
+buffer-json@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/buffer-json/-/buffer-json-2.0.0.tgz"
+ integrity sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz"
+ integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
+
+buffer@^4.3.0:
+ version "4.9.2"
+ resolved "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz"
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz"
+ integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
+
+bytes@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz"
+ integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
+
+bytes@3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz"
+ integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+
+cacache@^12.0.2, cacache@^12.0.3:
+ version "12.0.4"
+ resolved "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz"
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
+ dependencies:
+ bluebird "^3.5.5"
+ chownr "^1.1.1"
+ figgy-pudding "^3.5.1"
+ glob "^7.1.4"
+ graceful-fs "^4.1.15"
+ infer-owner "^1.0.3"
+ 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"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ collection-visit "^1.0.0"
+ component-emitter "^1.2.1"
+ get-value "^2.0.6"
+ has-value "^1.0.0"
+ isobject "^3.0.1"
+ set-value "^2.0.0"
+ to-object-path "^0.3.0"
+ union-value "^1.0.0"
+ unset-value "^1.0.0"
+
+cache-loader@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/cache-loader/-/cache-loader-4.1.0.tgz"
+ integrity sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==
+ dependencies:
+ buffer-json "^2.0.0"
+ find-cache-dir "^3.0.0"
+ loader-utils "^1.2.3"
+ mkdirp "^0.5.1"
+ neo-async "^2.6.1"
+ schema-utils "^2.0.0"
+
+call-bind@^1.0.0, call-bind@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz"
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
+ dependencies:
+ function-bind "^1.1.1"
+ get-intrinsic "^1.0.2"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz"
+ integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw==
+
+caller-callsite@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz"
+ integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==
+ dependencies:
+ callsites "^2.0.0"
+
+caller-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz"
+ integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==
+ dependencies:
+ caller-callsite "^2.0.0"
+
+callsites@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz"
+ integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+camel-case@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz"
+ integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+camelcase@^5.0.0:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz"
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
+camelcase@^6.0.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001358:
+ version "1.0.30001359"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001359.tgz"
+ integrity sha512-Xln/BAsPzEuiVLgJ2/45IaqD9jShtk3Y33anKb4+yLwQzws3+v6odKfpgES/cDEaZMLzSChpIGdbOYtH9MyuHw==
+
+case-sensitive-paths-webpack-plugin@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz"
+ integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
+
+caseless@~0.12.0:
+ version "0.12.0"
+ resolved "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz"
+ integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
+
+chai@^4.1.2:
+ version "4.3.6"
+ resolved "https://registry.npmmirror.com/chai/-/chai-4.3.6.tgz"
+ integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==
+ dependencies:
+ assertion-error "^1.1.0"
+ check-error "^1.0.2"
+ deep-eql "^3.0.1"
+ get-func-name "^2.0.0"
+ loupe "^2.3.1"
+ pathval "^1.1.1"
+ type-detect "^4.0.5"
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz"
+ integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+charcodes@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/charcodes/-/charcodes-0.2.0.tgz"
+ integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ==
+
+chardet@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz"
+ integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
+
+check-error@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/check-error/-/check-error-1.0.2.tgz"
+ integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
+
+check-types@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz"
+ integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==
+
+chokidar@^2.0.0:
+ version "2.1.8"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^2.1.8:
+ version "2.1.8"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz"
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.1"
+ braces "^2.3.2"
+ glob-parent "^3.1.0"
+ inherits "^2.0.3"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ normalize-path "^3.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.2.1"
+ upath "^1.1.1"
+ optionalDependencies:
+ fsevents "^1.2.7"
+
+chokidar@^3.4.1:
+ version "3.5.3"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chownr@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
+chrome-trace-event@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz"
+ integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
+
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+clean-css@4.2.x:
+ version "4.2.4"
+ resolved "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz"
+ integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==
+ dependencies:
+ source-map "~0.6.0"
+
+cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz"
+ integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-highlight@^2.1.4:
+ version "2.1.11"
+ resolved "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz"
+ integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==
+ dependencies:
+ chalk "^4.0.0"
+ highlight.js "^10.7.1"
+ mz "^2.4.0"
+ parse5 "^5.1.1"
+ parse5-htmlparser2-tree-adapter "^6.0.0"
+ yargs "^16.0.0"
+
+cli-spinners@^2.0.0:
+ version "2.6.1"
+ resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.6.1.tgz"
+ integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==
+
+cli-width@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz"
+ integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
+clipboardy@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz"
+ integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==
+ dependencies:
+ arch "^2.1.1"
+ execa "^1.0.0"
+ is-wsl "^2.1.1"
+
+cliui@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz"
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+ dependencies:
+ string-width "^3.1.0"
+ strip-ansi "^5.2.0"
+ wrap-ansi "^5.1.0"
+
+cliui@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz"
+ integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^6.2.0"
+
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz"
+ integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz"
+ integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.9.0, color-convert@^1.9.3:
+ version "1.9.3"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@^1.0.0, color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+color-name@~1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^1.6.0:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz"
+ integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^3.0.0:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/color/-/color-3.2.1.tgz"
+ integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+ dependencies:
+ color-convert "^1.9.3"
+ color-string "^1.6.0"
+
+combined-stream@^1.0.6, combined-stream@~1.0.6:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.18.0, commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
+commander@~2.19.0:
+ version "2.19.0"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz"
+ integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+
+commander@2.17.x:
+ version "2.17.1"
+ resolved "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz"
+ integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
+
+commondir@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz"
+ integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
+
+component-emitter@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz"
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+
+compressible@~2.0.16:
+ version "2.0.18"
+ resolved "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz"
+ integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
+ dependencies:
+ mime-db ">= 1.43.0 < 2"
+
+compression@^1.7.4:
+ version "1.7.4"
+ resolved "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz"
+ integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
+ dependencies:
+ accepts "~1.3.5"
+ bytes "3.0.0"
+ compressible "~2.0.16"
+ debug "2.6.9"
+ on-headers "~1.0.2"
+ safe-buffer "5.1.2"
+ vary "~1.1.2"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+concat-stream@^1.5.0:
+ version "1.6.2"
+ resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+connect-history-api-fallback@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz"
+ integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
+
+console-browserify@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz"
+ integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
+
+consolidate@^0.15.1:
+ version "0.15.1"
+ resolved "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz"
+ integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
+ dependencies:
+ bluebird "^3.1.1"
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz"
+ integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==
+
+content-disposition@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz"
+ integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
+ dependencies:
+ safe-buffer "5.2.1"
+
+content-type@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.4.tgz"
+ integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
+
+convert-source-map@^1.7.0:
+ version "1.8.0"
+ resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.8.0.tgz"
+ integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz"
+ integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
+
+cookie@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz"
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+
+copy-anything@^2.0.1:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz"
+ integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
+ dependencies:
+ is-what "^3.14.1"
+
+copy-concurrently@^1.0.0:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz"
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
+ dependencies:
+ aproba "^1.1.1"
+ fs-write-stream-atomic "^1.0.8"
+ iferr "^0.1.5"
+ mkdirp "^0.5.1"
+ rimraf "^2.5.4"
+ run-queue "^1.0.0"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz"
+ integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
+
+copy-webpack-plugin@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz"
+ integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==
+ dependencies:
+ cacache "^12.0.3"
+ find-cache-dir "^2.1.0"
+ glob-parent "^3.1.0"
+ globby "^7.1.1"
+ is-glob "^4.0.1"
+ loader-utils "^1.2.3"
+ minimatch "^3.0.4"
+ normalize-path "^3.0.0"
+ p-limit "^2.2.1"
+ schema-utils "^1.0.0"
+ serialize-javascript "^4.0.0"
+ webpack-log "^2.0.0"
+
+core-js-compat@^3.21.0, core-js-compat@^3.22.1, core-js-compat@^3.6.5:
+ version "3.23.3"
+ resolved "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.23.3.tgz"
+ integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw==
+ dependencies:
+ browserslist "^4.21.0"
+ semver "7.0.0"
+
+core-js-pure@^3.20.2:
+ version "3.23.3"
+ resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.23.3.tgz"
+ integrity sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==
+
+core-js@^2.6.12:
+ version "2.6.12"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz"
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
+
+core-js@^3.6.5:
+ version "3.23.3"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-3.23.3.tgz"
+ integrity sha512-oAKwkj9xcWNBAvGbT//WiCdOMpb9XQG92/Fe3ABFM/R16BsHgePG00mFOgKf7IsCtfj8tA1kHtf/VwErhriz5Q==
+
+core-util-is@~1.0.0, core-util-is@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz"
+ integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
+
+cosmiconfig@^5.0.0:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz"
+ integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
+ dependencies:
+ import-fresh "^2.0.0"
+ is-directory "^0.3.1"
+ js-yaml "^3.13.1"
+ parse-json "^4.0.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz"
+ integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.5.3"
+
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ md5.js "^1.3.4"
+ ripemd160 "^2.0.1"
+ sha.js "^2.4.0"
+
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ cipher-base "^1.0.3"
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+ ripemd160 "^2.0.0"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+cross-spawn@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz"
+ integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.0, cross-spawn@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ nice-try "^1.0.4"
+ path-key "^2.0.1"
+ semver "^5.5.0"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^7.0.0:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+crypto-browserify@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ 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-color-names@^0.0.4, css-color-names@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz"
+ integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==
+
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+ dependencies:
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-loader@*, css-loader@^3.5.3:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/css-loader/-/css-loader-3.6.0.tgz"
+ integrity sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==
+ dependencies:
+ 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"
+
+css-parse@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/css-parse/-/css-parse-2.0.0.tgz"
+ integrity sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==
+ dependencies:
+ css "^2.0.0"
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-select@^4.1.3:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz"
+ integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^6.0.1"
+ domhandler "^4.3.1"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-tree@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-tree@1.0.0-alpha.37:
+ version "1.0.0-alpha.37"
+ resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.6.1"
+
+css-what@^3.2.1:
+ version "3.4.2"
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+css-what@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz"
+ integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
+
+css@^2.0.0:
+ version "2.2.4"
+ resolved "https://registry.npmmirror.com/css/-/css-2.2.4.tgz"
+ integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==
+ dependencies:
+ inherits "^2.0.3"
+ source-map "^0.6.1"
+ source-map-resolve "^0.5.2"
+ urix "^0.1.0"
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz"
+ integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^7.0.1"
+ postcss-colormin "^4.0.3"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.2"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.11"
+ postcss-merge-rules "^4.0.3"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.2"
+ postcss-minify-params "^4.0.2"
+ postcss-minify-selectors "^4.0.2"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.2"
+ postcss-normalize-positions "^4.0.2"
+ postcss-normalize-repeat-style "^4.0.2"
+ postcss-normalize-string "^4.0.2"
+ postcss-normalize-timing-functions "^4.0.2"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.2"
+ postcss-ordered-values "^4.1.2"
+ postcss-reduce-initial "^4.0.3"
+ postcss-reduce-transforms "^4.0.2"
+ postcss-svgo "^4.0.3"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz"
+ integrity sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz"
+ integrity sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+ dependencies:
+ postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^4.0.0, cssnano@^4.1.10:
+ version "4.1.11"
+ resolved "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz"
+ integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.8"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
+
+csso@^4.0.2:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+cssom@^0.4.1:
+ version "0.4.4"
+ resolved "https://registry.npmmirror.com/cssom/-/cssom-0.4.4.tgz"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+cssom@~0.3.6:
+ version "0.3.8"
+ resolved "https://registry.npmmirror.com/cssom/-/cssom-0.3.8.tgz"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/cssstyle/-/cssstyle-2.3.0.tgz"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
+csstype@^2.6.8:
+ version "2.6.20"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz"
+ integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
+
+cyclist@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.1.tgz"
+ integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A==
+
+dashdash@^1.12.0:
+ version "1.14.1"
+ resolved "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz"
+ integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
+ dependencies:
+ assert-plus "^1.0.0"
+
+data-urls@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/data-urls/-/data-urls-1.1.0.tgz"
+ integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
+ dependencies:
+ abab "^2.0.0"
+ whatwg-mimetype "^2.2.0"
+ whatwg-url "^7.0.0"
+
+dayjs@^1.11.3:
+ version "1.11.5"
+ resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz"
+ integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==
+
+debug@^2.2.0:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.1, debug@^3.2.6, debug@^3.2.7:
+ version "3.2.7"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
+debug@^4.0.1:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@^4.1.1:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@~3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@3.2.6:
+ version "3.2.6"
+ resolved "https://registry.npmmirror.com/debug/-/debug-3.2.6.tgz"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz"
+ integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz"
+ integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==
+
+deep-eql@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/deep-eql/-/deep-eql-3.0.1.tgz"
+ integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
+ dependencies:
+ type-detect "^4.0.0"
+
+deep-equal@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz"
+ integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==
+ dependencies:
+ is-arguments "^1.0.4"
+ is-date-object "^1.0.1"
+ is-regex "^1.0.4"
+ object-is "^1.0.1"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.2.0"
+
+deep-is@~0.1.3:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+deepmerge@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz"
+ integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
+
+default-gateway@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz"
+ integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
+ dependencies:
+ execa "^1.0.0"
+ ip-regex "^2.1.0"
+
+default-gateway@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz"
+ integrity sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==
+ dependencies:
+ execa "^3.3.0"
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/defaults/-/defaults-1.0.3.tgz"
+ integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==
+ dependencies:
+ clone "^1.0.2"
+
+define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz"
+ integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+ dependencies:
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz"
+ integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz"
+ integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+del@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/del/-/del-4.1.1.tgz"
+ integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ globby "^6.1.0"
+ is-path-cwd "^2.0.0"
+ is-path-in-cwd "^2.0.0"
+ p-map "^2.0.0"
+ pify "^4.0.1"
+ rimraf "^2.6.3"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz"
+ integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
+
+depd@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
+des.js@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/des.js/-/des.js-1.0.1.tgz"
+ integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
+detect-node@^2.0.4:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz"
+ integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+
+diff@3.5.0:
+ version "3.5.0"
+ resolved "https://registry.npmmirror.com/diff/-/diff-3.5.0.tgz"
+ integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dijkstrajs@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz"
+ integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==
+
+dir-glob@^2.0.0, dir-glob@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz"
+ integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
+ dependencies:
+ path-type "^3.0.0"
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
+dns-equal@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz"
+ integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
+
+dns-packet@^1.3.1:
+ version "1.3.4"
+ resolved "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz"
+ integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==
+ dependencies:
+ ip "^1.1.0"
+ safe-buffer "^5.0.1"
+
+dns-txt@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz"
+ integrity sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==
+ dependencies:
+ buffer-indexof "^1.0.0"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dom-converter@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+ dependencies:
+ utila "~0.4"
+
+dom-serializer@^1.0.1:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+dom-serializer@0:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz"
+ integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
+ dependencies:
+ domelementtype "^2.0.1"
+ entities "^2.0.0"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domelementtype@1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz"
+ integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
+
+domexception@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/domexception/-/domexception-1.0.1.tgz"
+ integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
+ dependencies:
+ webidl-conversions "^4.0.2"
+
+domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domhelpers@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/domhelpers/-/domhelpers-0.1.0.tgz"
+ integrity sha512-VZYqemdYgtxO3oI3L9o3Zdf9GmQAiFV9SP3Sccf7cVbEQtMrYBENyWnrW61Ejnsv4KldzzLs0UjHNbemTff8ZA==
+
+domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+domutils@^2.5.2:
+ version "2.8.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+dot-prop@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz"
+ integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
+ dependencies:
+ is-obj "^2.0.0"
+
+dotenv-expand@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz"
+ integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@^8.2.0:
+ version "8.6.0"
+ resolved "https://registry.npmmirror.com/dotenv/-/dotenv-8.6.0.tgz"
+ integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
+
+duplexer@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
+duplexify@^3.4.2, duplexify@^3.6.0:
+ version "3.7.1"
+ resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz"
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
+ dependencies:
+ end-of-stream "^1.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+ stream-shift "^1.0.0"
+
+easy-stack@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz"
+ integrity sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==
+
+ecc-jsbn@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz"
+ integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
+ dependencies:
+ jsbn "~0.1.0"
+ safer-buffer "^2.1.0"
+
+echarts@^5.0.2:
+ version "5.3.3"
+ resolved "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz"
+ integrity sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==
+ dependencies:
+ tslib "2.3.0"
+ zrender "5.3.2"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz"
+ integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
+
+ejs@^2.6.1:
+ version "2.7.4"
+ resolved "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz"
+ integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
+
+electron-to-chromium@^1.4.164:
+ version "1.4.170"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.170.tgz"
+ integrity sha512-rZ8PZLhK4ORPjFqLp9aqC4/S1j4qWFsPPz13xmWdrbBkU/LlxMcok+f+6f8YnQ57MiZwKtOaW15biZZsY5Igvw==
+
+element-plus@^2.2.15:
+ version "2.2.15"
+ resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.15.tgz"
+ integrity sha512-SMIx8xKB1YawT9JocyFhbs3Av2rXFfxrCVTLMYS0DK0xnW+fKvwjZngLfwF6MyRzXIuzNW17XFtu0iP3tlJHbA==
+ dependencies:
+ "@ctrl/tinycolor" "^3.4.1"
+ "@element-plus/icons-vue" "^2.0.6"
+ "@floating-ui/dom" "^0.5.4"
+ "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
+ "@types/lodash" "^4.14.182"
+ "@types/lodash-es" "^4.17.6"
+ "@vueuse/core" "^9.1.0"
+ async-validator "^4.2.5"
+ dayjs "^1.11.3"
+ escape-html "^1.0.3"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ lodash-unified "^1.0.2"
+ memoize-one "^6.0.0"
+ normalize-wheel-es "^1.2.0"
+
+elliptic@^6.5.3:
+ version "6.5.4"
+ resolved "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz"
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
+ dependencies:
+ bn.js "^4.11.9"
+ brorand "^1.1.0"
+ hash.js "^1.0.0"
+ hmac-drbg "^1.0.1"
+ inherits "^2.0.4"
+ minimalistic-assert "^1.0.1"
+ minimalistic-crypto-utils "^1.0.1"
+
+emoji-regex@^7.0.1:
+ version "7.0.3"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz"
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
+emoji-regex@^8.0.0:
+ version "8.0.0"
+ resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz"
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz"
+ integrity sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==
+
+emojis-list@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz"
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+
+encode-utf8@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz"
+ integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz"
+ integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+
+end-of-stream@^1.0.0, end-of-stream@^1.1.0:
+ version "1.4.4"
+ resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz"
+ integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.5.0"
+ tapable "^1.0.0"
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz"
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
+ dependencies:
+ prr "~1.0.1"
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+error-stack-parser@^2.0.6:
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz"
+ integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
+ dependencies:
+ stackframe "^1.3.4"
+
+es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1:
+ version "1.20.1"
+ resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.20.1.tgz"
+ integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ function.prototype.name "^1.1.5"
+ get-intrinsic "^1.1.1"
+ get-symbol-description "^1.0.0"
+ has "^1.0.3"
+ has-property-descriptors "^1.0.0"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.3"
+ is-callable "^1.2.4"
+ is-negative-zero "^2.0.2"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ is-string "^1.0.7"
+ is-weakref "^1.0.2"
+ object-inspect "^1.12.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ regexp.prototype.flags "^1.4.3"
+ string.prototype.trimend "^1.0.5"
+ string.prototype.trimstart "^1.0.5"
+ unbox-primitive "^1.0.2"
+
+es-array-method-boxes-properly@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz"
+ integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escalade@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz"
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+
+escape-html@^1.0.3, escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+escape-string-regexp@^1.0.5, escape-string-regexp@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escodegen@^1.11.1:
+ version "1.14.3"
+ resolved "https://registry.npmmirror.com/escodegen/-/escodegen-1.14.3.tgz"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+eslint-loader@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz"
+ integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==
+ dependencies:
+ loader-fs-cache "^1.0.0"
+ loader-utils "^1.0.2"
+ object-assign "^4.0.1"
+ object-hash "^1.1.4"
+ rimraf "^2.6.1"
+
+eslint-scope@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz"
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
+ dependencies:
+ esrecurse "^4.1.0"
+ estraverse "^4.1.1"
+
+eslint-scope@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-utils@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz"
+ integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==
+ dependencies:
+ eslint-visitor-keys "^1.1.0"
+
+eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
+"eslint@>= 1.6.0 < 7.0.0", "eslint@>= 4.12.1", "eslint@>=1.6.0 <7.0.0":
+ version "6.8.0"
+ resolved "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz"
+ integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ ajv "^6.10.0"
+ chalk "^2.1.0"
+ cross-spawn "^6.0.5"
+ debug "^4.0.1"
+ doctrine "^3.0.0"
+ eslint-scope "^5.0.0"
+ eslint-utils "^1.4.3"
+ eslint-visitor-keys "^1.1.0"
+ espree "^6.1.2"
+ esquery "^1.0.1"
+ esutils "^2.0.2"
+ file-entry-cache "^5.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^5.0.0"
+ globals "^12.1.0"
+ ignore "^4.0.6"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ inquirer "^7.0.0"
+ is-glob "^4.0.0"
+ js-yaml "^3.13.1"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.3.0"
+ lodash "^4.17.14"
+ minimatch "^3.0.4"
+ mkdirp "^0.5.1"
+ natural-compare "^1.4.0"
+ optionator "^0.8.3"
+ progress "^2.0.0"
+ regexpp "^2.0.1"
+ semver "^6.1.2"
+ strip-ansi "^5.2.0"
+ strip-json-comments "^3.0.1"
+ table "^5.2.3"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^6.1.2:
+ version "6.2.1"
+ resolved "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz"
+ integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-jsx "^5.2.0"
+ eslint-visitor-keys "^1.1.0"
+
+esprima@^4.0.0, esprima@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+esquery@^1.0.1:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.1.0, esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^4.1.1, estraverse@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
+estraverse@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estraverse@^5.2.0:
+ version "5.3.0"
+ resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
+event-pubsub@4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz"
+ integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/events/-/events-3.3.0.tgz"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
+eventsource@^1.0.7:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.2.tgz"
+ integrity sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==
+
+eventsource@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz"
+ integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz"
+ integrity sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==
+ dependencies:
+ cross-spawn "^5.0.1"
+ get-stream "^3.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"
+
+execa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz"
+ integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+ dependencies:
+ 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"
+
+execa@^3.3.0:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz"
+ integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==
+ dependencies:
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ p-finally "^2.0.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz"
+ integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==
+ dependencies:
+ debug "^2.3.3"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ posix-character-classes "^0.1.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+express@^4.16.3, express@^4.17.1:
+ version "4.18.1"
+ resolved "https://registry.npmmirror.com/express/-/express-4.18.1.tgz"
+ integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.20.0"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.5.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "2.0.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.2.0"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.7"
+ qs "6.10.3"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.18.0"
+ serve-static "1.15.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz"
+ integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz"
+ integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extend@~3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+external-editor@^3.0.3:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz"
+ integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
+ dependencies:
+ chardet "^0.7.0"
+ iconv-lite "^0.4.24"
+ tmp "^0.0.33"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ array-unique "^0.3.2"
+ define-property "^1.0.0"
+ expand-brackets "^2.1.4"
+ extend-shallow "^2.0.1"
+ fragment-cache "^0.2.1"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+extsprintf@^1.2.0, extsprintf@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz"
+ integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
+
+fast-deep-equal@^3.1.1:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^2.2.6:
+ version "2.2.7"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz"
+ integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.1.2"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.3"
+ micromatch "^3.1.10"
+
+fast-glob@^3.0.3:
+ version "3.2.11"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.13.0"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz"
+ integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ dependencies:
+ reusify "^1.0.4"
+
+faye-websocket@^0.11.3, faye-websocket@^0.11.4:
+ version "0.11.4"
+ resolved "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+fetch-cookie@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz"
+ integrity sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==
+ dependencies:
+ tough-cookie "^2.3.3 || ^3.0.1 || ^4.0.0"
+
+figgy-pudding@^3.5.1:
+ version "3.5.2"
+ resolved "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz"
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
+
+figures@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
+file-entry-cache@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz"
+ integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==
+ dependencies:
+ flat-cache "^2.0.1"
+
+file-loader@*, file-loader@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/file-loader/-/file-loader-4.3.0.tgz"
+ integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
+ dependencies:
+ loader-utils "^1.2.3"
+ schema-utils "^2.5.0"
+
+file-save@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/file-save/-/file-save-0.2.0.tgz"
+ integrity sha512-teMqpbPLBDAHEDAPYEb8fGfng4S6eGZcsN0CLM1ow0w1vtqTMBwNmd82dEc81O3C1BEs1EY8L18Ma6Q6O++v1A==
+ dependencies:
+ mkdirp "~0.5.0"
+
+file-saver@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz"
+ integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
+
+file-uri-to-path@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz"
+ integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
+
+filesize@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz"
+ integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz"
+ integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+fill-range@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz"
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+finalhandler@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz"
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
+find-cache-dir@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz"
+ integrity sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==
+ dependencies:
+ commondir "^1.0.1"
+ mkdirp "^0.5.1"
+ pkg-dir "^1.0.0"
+
+find-cache-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz"
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^2.0.0"
+ pkg-dir "^3.0.0"
+
+find-cache-dir@^3.0.0, find-cache-dir@^3.3.1:
+ version "3.3.2"
+ resolved "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
+ integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz"
+ integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+find-up@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+find-up@^4.0.0, find-up@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz"
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
+ dependencies:
+ locate-path "^5.0.0"
+ path-exists "^4.0.0"
+
+find-up@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz"
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
+ dependencies:
+ locate-path "^3.0.0"
+
+flat-cache@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz"
+ integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==
+ dependencies:
+ flatted "^2.0.0"
+ rimraf "2.6.3"
+ write "1.0.3"
+
+flat@^4.1.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/flat/-/flat-4.1.1.tgz"
+ integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==
+ dependencies:
+ is-buffer "~2.0.3"
+
+flatted@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz"
+ integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
+
+flush-write-stream@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz"
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
+ dependencies:
+ inherits "^2.0.3"
+ readable-stream "^2.3.6"
+
+follow-redirects@^1.0.0, follow-redirects@^1.14.0:
+ version "1.15.1"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz"
+ integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
+
+for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz"
+ integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz"
+ integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
+
+form-data@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz"
+ integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.6"
+ mime-types "^2.1.12"
+
+forwarded@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz"
+ integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz"
+ integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz"
+ integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
+
+from2@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz"
+ integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==
+ dependencies:
+ inherits "^2.0.1"
+ readable-stream "^2.0.0"
+
+fs-extra@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz"
+ integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-write-stream-atomic@^1.0.8:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz"
+ integrity sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==
+ dependencies:
+ graceful-fs "^4.1.2"
+ iferr "^0.1.5"
+ imurmurhash "^0.1.4"
+ readable-stream "1 || 2"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+function.prototype.name@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz"
+ integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.0"
+ functions-have-names "^1.2.2"
+
+functional-red-black-tree@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz"
+ integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==
+
+functions-have-names@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
+gensync@^1.0.0-beta.2:
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz"
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
+
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz"
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
+get-func-name@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.0.tgz"
+ integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
+
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz"
+ integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.3"
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz"
+ integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==
+
+get-stream@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz"
+ integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
+ dependencies:
+ pump "^3.0.0"
+
+get-stream@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
+get-symbol-description@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
+ integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.1.1"
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz"
+ integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
+
+getpass@^0.1.1:
+ version "0.1.7"
+ resolved "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz"
+ integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
+ dependencies:
+ assert-plus "^1.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz"
+ integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-parent@^5.0.0, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-parent@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.0.tgz"
+ integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
+ dependencies:
+ is-glob "^4.0.1"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz"
+ integrity sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==
+
+glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+ version "7.2.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@7.1.3:
+ version "7.1.3"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.1.3.tgz"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^11.1.0:
+ version "11.12.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz"
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^12.1.0:
+ version "12.4.0"
+ resolved "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz"
+ integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
+ dependencies:
+ type-fest "^0.8.1"
+
+globby@^10.0.1:
+ version "10.0.2"
+ resolved "https://registry.npmmirror.com/globby/-/globby-10.0.2.tgz"
+ integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.0.3"
+ glob "^7.1.3"
+ ignore "^5.1.1"
+ merge2 "^1.2.3"
+ slash "^3.0.0"
+
+globby@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz"
+ integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==
+ dependencies:
+ array-union "^1.0.1"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz"
+ integrity sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==
+ dependencies:
+ array-union "^1.0.1"
+ dir-glob "^2.0.0"
+ glob "^7.1.2"
+ ignore "^3.3.5"
+ pify "^3.0.0"
+ slash "^1.0.0"
+
+globby@^9.2.0:
+ version "9.2.0"
+ resolved "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz"
+ integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==
+ dependencies:
+ "@types/glob" "^7.1.1"
+ array-union "^1.0.2"
+ dir-glob "^2.2.2"
+ fast-glob "^2.2.6"
+ glob "^7.1.3"
+ ignore "^4.0.3"
+ pify "^4.0.1"
+ slash "^2.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+ version "4.2.10"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz"
+ integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
+growl@1.10.5:
+ version "1.10.5"
+ resolved "https://registry.npmmirror.com/growl/-/growl-1.10.5.tgz"
+ integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
+
+gzip-size@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz"
+ integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^4.0.1"
+
+handle-thing@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz"
+ integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
+
+har-schema@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz"
+ integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==
+
+har-validator@~5.1.3:
+ version "5.1.5"
+ resolved "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz"
+ integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
+ dependencies:
+ ajv "^6.12.3"
+ har-schema "^2.0.0"
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-property-descriptors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz"
+ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+ dependencies:
+ get-intrinsic "^1.1.1"
+
+has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz"
+ integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz"
+ integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz"
+ integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz"
+ integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.0, has@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
+ dependencies:
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
+
+hash-sum@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz"
+ integrity sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==
+
+hash-sum@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz"
+ integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.7"
+ resolved "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz"
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+he@1.2.0, he@1.2.x:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+highlight.js@^10.7.1:
+ version "10.7.3"
+ resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz"
+ integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
+
+hmac-drbg@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz"
+ integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
+hosted-git-info@^2.1.4:
+ version "2.8.9"
+ resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
+ integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz"
+ integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz"
+ integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==
+
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz"
+ integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==
+
+html-encoding-sniffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz"
+ integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
+ dependencies:
+ whatwg-encoding "^1.0.1"
+
+html-entities@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz"
+ integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
+
+html-minifier@^3.2.3:
+ version "3.5.21"
+ resolved "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz"
+ integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==
+ dependencies:
+ 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"
+
+html-tags@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz"
+ integrity sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==
+
+html-tags@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/html-tags/-/html-tags-3.2.0.tgz"
+ integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==
+
+html-webpack-plugin@^3.2.0, html-webpack-plugin@>=2.26.0:
+ version "3.2.0"
+ resolved "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz"
+ integrity sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==
+ dependencies:
+ 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"
+
+htmlparser2@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+http-deceiver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz"
+ integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz"
+ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
+http-parser-js@>=0.5.1:
+ version "0.5.8"
+ resolved "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz"
+ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
+http-proxy-middleware@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz"
+ integrity sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==
+ dependencies:
+ "@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"
+
+http-proxy-middleware@0.19.1:
+ version "0.19.1"
+ resolved "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz"
+ integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
+ dependencies:
+ http-proxy "^1.17.0"
+ is-glob "^4.0.0"
+ lodash "^4.17.11"
+ micromatch "^3.1.10"
+
+http-proxy@^1.17.0, http-proxy@^1.18.1:
+ version "1.18.1"
+ resolved "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
+http-signature@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz"
+ integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==
+ dependencies:
+ assert-plus "^1.0.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz"
+ integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==
+
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
+iconv-lite@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+iconv-lite@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
+iconv-lite@0.4.24:
+ version "0.4.24"
+ resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+icss-utils@^4.0.0, icss-utils@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz"
+ integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==
+ dependencies:
+ postcss "^7.0.14"
+
+ieee754@^1.1.4:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+iferr@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz"
+ integrity sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==
+
+ignore@^3.3.5:
+ version "3.3.10"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+ignore@^4.0.3, ignore@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz"
+ integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
+ignore@^5.1.1:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz"
+ integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+
+image-size@~0.5.0:
+ version "0.5.5"
+ resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz"
+ integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
+
+import-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz"
+ integrity sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==
+ dependencies:
+ import-from "^2.1.0"
+
+import-fresh@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz"
+ integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==
+ dependencies:
+ caller-path "^2.0.0"
+ resolve-from "^3.0.0"
+
+import-fresh@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz"
+ integrity sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==
+ dependencies:
+ resolve-from "^3.0.0"
+
+import-local@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz"
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
+ dependencies:
+ pkg-dir "^3.0.0"
+ resolve-cwd "^2.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz"
+ integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==
+
+infer-owner@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz"
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.1.tgz"
+ integrity sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==
+
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz"
+ integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
+
+inquirer@^7.0.0, inquirer@^7.1.0:
+ version "7.3.3"
+ resolved "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz"
+ integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ chalk "^4.1.0"
+ cli-cursor "^3.1.0"
+ cli-width "^3.0.0"
+ external-editor "^3.0.3"
+ figures "^3.0.0"
+ lodash "^4.17.19"
+ mute-stream "0.0.8"
+ run-async "^2.4.0"
+ rxjs "^6.6.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+ through "^2.3.6"
+
+internal-ip@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz"
+ integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
+ dependencies:
+ default-gateway "^4.2.0"
+ ipaddr.js "^1.9.0"
+
+internal-slot@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.3.tgz"
+ integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+ dependencies:
+ get-intrinsic "^1.1.0"
+ has "^1.0.3"
+ side-channel "^1.0.4"
+
+interpret@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+
+ip-regex@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz"
+ integrity sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==
+
+ip@^1.1.0, ip@^1.1.5:
+ version "1.1.8"
+ resolved "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz"
+ integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==
+
+ipaddr.js@^1.9.0, ipaddr.js@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
+ integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz"
+ integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==
+
+is-absolute-url@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz"
+ integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz"
+ integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arguments@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz"
+ integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-buffer@~2.0.3:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz"
+ integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==
+
+is-callable@^1.1.4, is-callable@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.4.tgz"
+ integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==
+
+is-ci@^1.0.10:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz"
+ integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
+is-core-module@^2.9.0:
+ version "2.9.0"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.9.0.tgz"
+ integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==
+ dependencies:
+ has "^1.0.3"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz"
+ integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz"
+ integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==
+
+is-docker@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz"
+ integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz"
+ integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
+ integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==
+
+is-fullwidth-code-point@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz"
+ integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-negative-zero@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
+is-number-object@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz"
+ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz"
+ integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+is-obj@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz"
+ integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
+
+is-path-cwd@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz"
+ integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==
+
+is-path-in-cwd@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz"
+ integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
+ dependencies:
+ is-path-inside "^2.1.0"
+
+is-path-inside@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz"
+ integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
+ dependencies:
+ path-is-inside "^1.0.2"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz"
+ integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
+
+is-plain-obj@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz"
+ integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
+
+is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-regex@^1.0.4, is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-shared-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz"
+ integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz"
+ integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
+
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz"
+ integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-what@^3.14.1:
+ version "3.14.1"
+ resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz"
+ integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz"
+ integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==
+
+is-wsl@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz"
+ integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+ dependencies:
+ is-docker "^2.0.0"
+
+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz"
+ integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz"
+ integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz"
+ integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz"
+ integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
+
+javascript-stringify@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz"
+ integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
+
+js-message@1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz"
+ integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==
+
+js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.13.1, js-yaml@3.13.1:
+ version "3.13.1"
+ resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.13.1.tgz"
+ integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+jsbn@~0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz"
+ integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
+
+jsdom-global@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/jsdom-global/-/jsdom-global-3.0.2.tgz"
+ integrity sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==
+
+jsdom@^15.2.1, jsdom@>=10.0.0:
+ version "15.2.1"
+ resolved "https://registry.npmmirror.com/jsdom/-/jsdom-15.2.1.tgz"
+ integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==
+ dependencies:
+ abab "^2.0.0"
+ acorn "^7.1.0"
+ acorn-globals "^4.3.2"
+ array-equal "^1.0.0"
+ cssom "^0.4.1"
+ cssstyle "^2.0.0"
+ data-urls "^1.1.0"
+ domexception "^1.0.1"
+ escodegen "^1.11.1"
+ html-encoding-sniffer "^1.0.2"
+ nwsapi "^2.2.0"
+ parse5 "5.1.0"
+ pn "^1.1.0"
+ request "^2.88.0"
+ request-promise-native "^1.0.7"
+ saxes "^3.1.9"
+ symbol-tree "^3.2.2"
+ tough-cookie "^3.0.1"
+ w3c-hr-time "^1.0.1"
+ w3c-xmlserializer "^1.1.2"
+ webidl-conversions "^4.0.2"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^7.0.0"
+ ws "^7.0.0"
+ xml-name-validator "^3.0.0"
+
+jsesc@^2.5.1:
+ version "2.5.2"
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz"
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz"
+ integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
+
+json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-schema@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
+ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
+json5@^0.5.0:
+ version "0.5.1"
+ resolved "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz"
+ integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/json5/-/json5-1.0.1.tgz"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+json5@^2.1.2, json5@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/json5/-/json5-2.2.1.tgz"
+ integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz"
+ integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsprim@^1.2.2:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz"
+ integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==
+ dependencies:
+ assert-plus "1.0.0"
+ extsprintf "1.3.0"
+ json-schema "0.4.0"
+ verror "1.10.0"
+
+killable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz"
+ integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
+
+kind-of@^3.0.2:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^3.0.3:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz"
+ integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz"
+ integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.3"
+ resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz"
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
+
+klona@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/klona/-/klona-2.0.5.tgz"
+ integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
+
+launch-editor-middleware@^2.2.1:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.4.0.tgz"
+ integrity sha512-/M7AX/6xktZY60KE7j71XLrj9U6H5TBoP+mJzhYB3fcdAq8rcazit/K0qWiu1jvytUPXP4lJRd1VJFwvdMQ/uw==
+ dependencies:
+ launch-editor "^2.4.0"
+
+launch-editor@^2.2.1, launch-editor@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.4.0.tgz"
+ integrity sha512-mZ0BHeSn/ohL+Ib+b+JnxC59vcNz6v5IR9d0CuM8f0x8ni8oK3IIG6G0vMkpxc0gFsmvINkztGOHiWTaX4BmAg==
+ dependencies:
+ picocolors "^1.0.0"
+ shell-quote "^1.6.1"
+
+less-loader@^7.3.0:
+ version "7.3.0"
+ resolved "https://registry.npmmirror.com/less-loader/-/less-loader-7.3.0.tgz"
+ integrity sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==
+ dependencies:
+ klona "^2.0.4"
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
+"less@^3.5.0 || ^4.0.0", less@^4.1.1:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/less/-/less-4.1.3.tgz"
+ integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==
+ dependencies:
+ copy-anything "^2.0.1"
+ parse-node-version "^1.0.1"
+ tslib "^2.3.0"
+ optionalDependencies:
+ errno "^0.1.1"
+ graceful-fs "^4.1.2"
+ image-size "~0.5.0"
+ make-dir "^2.1.0"
+ mime "^1.4.1"
+ needle "^3.1.0"
+ source-map "~0.6.0"
+
+levn@^0.3.0, levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz"
+ integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+loader-fs-cache@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz"
+ integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==
+ dependencies:
+ find-cache-dir "^0.1.1"
+ mkdirp "^0.5.1"
+
+loader-runner@^2.3.1, loader-runner@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz"
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
+
+loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz"
+ integrity sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+loader-utils@^1.0.2:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^1.2.3:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.0.tgz"
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^1.0.1"
+
+loader-utils@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.2.tgz"
+ integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==
+ dependencies:
+ big.js "^5.2.2"
+ emojis-list "^3.0.0"
+ json5 "^2.1.2"
+
+locate-path@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz"
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
+ dependencies:
+ p-locate "^3.0.0"
+ path-exists "^3.0.0"
+
+locate-path@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz"
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
+ dependencies:
+ p-locate "^4.1.0"
+
+lodash-es@*, lodash-es@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
+lodash-unified@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz"
+ integrity sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==
+
+lodash.clonedeep@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz"
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
+ integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+
+lodash.defaultsdeep@^4.6.1:
+ version "4.6.1"
+ resolved "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz"
+ integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
+
+lodash.kebabcase@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz"
+ integrity sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==
+
+lodash.mapvalues@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz"
+ integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
+
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.npmmirror.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz"
+ integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
+
+lodash.transform@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz"
+ integrity sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
+ integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
+
+lodash@*, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+log-symbols@^2.2.0, log-symbols@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+loglevel@^1.6.8:
+ version "1.8.0"
+ resolved "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.0.tgz"
+ integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==
+
+loupe@^2.3.1:
+ version "2.3.4"
+ resolved "https://registry.npmmirror.com/loupe/-/loupe-2.3.4.tgz"
+ integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==
+ dependencies:
+ get-func-name "^2.0.0"
+
+lower-case@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz"
+ integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==
+
+lru-cache@^4.0.1:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^4.1.2:
+ version "4.1.5"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz"
+ integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+ dependencies:
+ yallist "^3.0.2"
+
+magic-string@^0.25.7:
+ version "0.25.9"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magix@^3.8.16:
+ version "3.8.16"
+ resolved "https://registry.npmmirror.com/magix/-/magix-3.8.16.tgz"
+ integrity sha512-aJPH4upWrJV6eDH4jZuoRo8vw1kUQUmxwhA6ukX4YeCrfaQ0xHA+KPGvSVcHE4NXg5P7tJFG/uDJBcrZpW1huw==
+
+make-dir@^2.0.0, make-dir@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz"
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+ dependencies:
+ pify "^4.0.1"
+ semver "^5.6.0"
+
+make-dir@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+make-dir@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz"
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+ dependencies:
+ semver "^6.0.0"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz"
+ integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz"
+ integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==
+ dependencies:
+ object-visit "^1.0.0"
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.4.tgz"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz"
+ integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+
+memoize-one@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz"
+ integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+
+memory-fs@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz"
+ integrity sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+memory-fs@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz"
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
+ integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+
+merge-source-map@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz"
+ integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+ dependencies:
+ source-map "^0.6.1"
+
+merge-stream@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz"
+ integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+
+merge2@^1.2.3, merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz"
+ integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
+
+micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ 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"
+
+micromatch@^4.0.2:
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34:
+ version "2.1.35"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+mime@^1.4.1, mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
+mime@^2.4.4:
+ version "2.6.0"
+ resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz"
+ integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+mimic-fn@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz"
+ integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mini-css-extract-plugin@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz"
+ integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==
+ dependencies:
+ loader-utils "^1.1.0"
+ normalize-url "1.9.1"
+ schema-utils "^1.0.0"
+ webpack-sources "^1.1.0"
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz"
+ integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
+
+minimatch@^3.0.4, minimatch@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.4.tgz"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
+ version "1.2.6"
+ resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.6.tgz"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+
+minipass@^3.1.1:
+ version "3.3.3"
+ resolved "https://registry.npmmirror.com/minipass/-/minipass-3.3.3.tgz"
+ integrity sha512-N0BOsdFAlNRfmwMhjAsLVWOk7Ljmeb39iqFlsV1At+jqRhSUP9yeof8FyJu4imaJiSUp8vQebWD/guZwGQC8iA==
+ dependencies:
+ yallist "^4.0.0"
+
+mississippi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz"
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
+ dependencies:
+ 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"
+
+mixin-deep@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz"
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
+mkdirp@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
+mkdirp@0.5.4:
+ version "0.5.4"
+ resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.4.tgz"
+ integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==
+ dependencies:
+ minimist "^1.2.5"
+
+mocha@^6.2.2, "mocha@>=4 <=7":
+ version "6.2.3"
+ resolved "https://registry.npmmirror.com/mocha/-/mocha-6.2.3.tgz"
+ integrity sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==
+ dependencies:
+ ansi-colors "3.2.3"
+ browser-stdout "1.3.1"
+ debug "3.2.6"
+ diff "3.5.0"
+ escape-string-regexp "1.0.5"
+ find-up "3.0.0"
+ glob "7.1.3"
+ growl "1.10.5"
+ he "1.2.0"
+ js-yaml "3.13.1"
+ log-symbols "2.2.0"
+ minimatch "3.0.4"
+ mkdirp "0.5.4"
+ ms "2.1.1"
+ node-environment-flags "1.0.5"
+ object.assign "4.1.0"
+ strip-json-comments "2.0.1"
+ supports-color "6.0.0"
+ which "1.3.1"
+ wide-align "1.1.3"
+ yargs "13.3.2"
+ yargs-parser "13.1.2"
+ yargs-unparser "1.6.0"
+
+mochapack@^1.1.15:
+ version "1.1.15"
+ resolved "https://registry.npmmirror.com/mochapack/-/mochapack-1.1.15.tgz"
+ integrity sha512-/gOsgJk3CWlNiOdef7hrNhp37VpatB9IiWzSCxS2p8pG21R7NAKJBBsU5T0eUWT9oz1NQhyubXdQgh51U7oVZA==
+ dependencies:
+ "@babel/runtime-corejs2" "^7.0.0"
+ chalk "^2.4.2"
+ chokidar "^2.0.0"
+ glob-parent "5.1.0"
+ globby "^10.0.1"
+ interpret "^1.2.0"
+ is-glob "^4.0.1"
+ loader-utils "^1.2.3"
+ lodash "^4.17.15"
+ memory-fs "^0.4.1"
+ minimatch "^3.0.4"
+ nodent-runtime "^3.2.1"
+ normalize-path "^3.0.0"
+ progress "^2.0.3"
+ source-map-support "^0.5.13"
+ toposort "^2.0.2"
+ yargs "14.0.0"
+
+mout@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.npmmirror.com/mout/-/mout-0.11.1.tgz"
+ integrity sha512-pK9VNiLE3QgGBrC/3ICAscwOLU7oTNeK2l32uqNAioBYtB2tQAfSsGDNChUlk7CP23126mc5lUt6+na9FlN8JA==
+
+move-concurrently@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz"
+ integrity sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==
+ dependencies:
+ 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"
+
+ms@^2.1.1, ms@2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz"
+ integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
+
+ms@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.1.tgz"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+multicast-dns-service-types@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz"
+ integrity sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==
+
+multicast-dns@^6.0.1:
+ version "6.2.3"
+ resolved "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz"
+ integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==
+ dependencies:
+ dns-packet "^1.3.1"
+ thunky "^1.0.2"
+
+mute-stream@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz"
+ integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
+mz@^2.4.0:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
+nanoid@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz"
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ arr-diff "^4.0.0"
+ array-unique "^0.3.2"
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ fragment-cache "^0.2.1"
+ is-windows "^1.0.2"
+ kind-of "^6.0.2"
+ object.pick "^1.3.0"
+ regex-not "^1.0.0"
+ snapdragon "^0.8.1"
+ to-regex "^3.0.1"
+
+natural-compare@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+needle@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz"
+ integrity sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==
+ dependencies:
+ debug "^3.2.6"
+ iconv-lite "^0.6.3"
+ sax "^1.2.4"
+
+negotiator@0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz"
+ integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
+
+neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz"
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+no-case@^2.2.0:
+ version "2.3.2"
+ resolved "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz"
+ integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
+ dependencies:
+ lower-case "^1.1.1"
+
+node-environment-flags@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz"
+ integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==
+ dependencies:
+ object.getownpropertydescriptors "^2.0.3"
+ semver "^5.7.0"
+
+node-fetch@^2.6.7:
+ version "2.6.7"
+ resolved "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
+node-forge@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz"
+ integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
+
+node-libs-browser@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz"
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
+ dependencies:
+ 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"
+
+node-releases@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.5.tgz"
+ integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==
+
+nodent-runtime@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.npmmirror.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz"
+ integrity sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==
+
+normalize-package-data@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
+ integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ resolve "^1.10.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz"
+ integrity sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==
+
+normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz"
+ integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+normalize-url@1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz"
+ integrity sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+normalize-wheel-es@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz"
+ integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz"
+ integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
+ dependencies:
+ path-key "^2.0.0"
+
+npm-run-path@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz"
+ integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
+ dependencies:
+ path-key "^3.0.0"
+
+nth-check@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz"
+ integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==
+
+nwsapi@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.1.tgz"
+ integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==
+
+oauth-sign@~0.9.0:
+ version "0.9.0"
+ resolved "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz"
+ integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz"
+ integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-hash@^1.1.4:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz"
+ integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
+
+object-inspect@^1.12.0, object-inspect@^1.9.0:
+ version "1.12.2"
+ resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz"
+ integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
+
+object-is@^1.0.1:
+ version "1.1.5"
+ resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
+object-keys@^1.0.11, object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz"
+ integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==
+ dependencies:
+ isobject "^3.0.0"
+
+object.assign@^4.1.0, object.assign@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.2.tgz"
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+ has-symbols "^1.0.1"
+ object-keys "^1.1.1"
+
+object.assign@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.0.tgz"
+ integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==
+ dependencies:
+ define-properties "^1.1.2"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.0"
+ object-keys "^1.0.11"
+
+object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0:
+ version "2.1.4"
+ resolved "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz"
+ integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==
+ dependencies:
+ array.prototype.reduce "^1.0.4"
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz"
+ integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.1.0:
+ version "1.1.5"
+ resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.5.tgz"
+ integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.1"
+
+obuf@^1.0.0, obuf@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz"
+ integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz"
+ integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
+
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz"
+ integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==
+ dependencies:
+ mimic-fn "^1.0.0"
+
+onetime@^5.1.0:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz"
+ integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+ dependencies:
+ mimic-fn "^2.1.0"
+
+open@^6.3.0:
+ version "6.4.0"
+ resolved "https://registry.npmmirror.com/open/-/open-6.4.0.tgz"
+ integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==
+ dependencies:
+ is-wsl "^1.1.0"
+
+opener@^1.5.1:
+ version "1.5.2"
+ resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
+
+opn@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz"
+ integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
+ dependencies:
+ is-wsl "^1.1.0"
+
+optionator@^0.8.1, optionator@^0.8.3:
+ version "0.8.3"
+ resolved "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
+ora@^3.4.0:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz"
+ integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
+ dependencies:
+ chalk "^2.4.2"
+ cli-cursor "^2.1.0"
+ cli-spinners "^2.0.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^5.2.0"
+ wcwidth "^1.0.1"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz"
+ integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==
+
+os-tmpdir@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
+ integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz"
+ integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
+
+p-finally@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz"
+ integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==
+
+p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-locate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz"
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
+ dependencies:
+ p-limit "^2.0.0"
+
+p-locate@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz"
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
+ dependencies:
+ p-limit "^2.2.0"
+
+p-map@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz"
+ integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-retry@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz"
+ integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
+ dependencies:
+ retry "^0.12.0"
+
+p-try@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz"
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
+
+pako@~1.0.5:
+ version "1.0.11"
+ resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
+
+parallel-transform@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz"
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
+ dependencies:
+ cyclist "^1.0.1"
+ inherits "^2.0.3"
+ readable-stream "^2.1.5"
+
+param-case@2.1.x:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz"
+ integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==
+ dependencies:
+ no-case "^2.2.0"
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-asn1@^5.0.0, parse-asn1@^5.1.5:
+ version "5.1.6"
+ resolved "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz"
+ integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
+ dependencies:
+ asn1.js "^5.2.0"
+ browserify-aes "^1.0.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+ safe-buffer "^5.1.1"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz"
+ integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+parse-node-version@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz"
+ integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
+
+parse5-htmlparser2-tree-adapter@^6.0.0:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz"
+ integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==
+ dependencies:
+ parse5 "^6.0.1"
+
+parse5@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz"
+ integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
+parse5@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parse5@5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/parse5/-/parse5-5.1.0.tgz"
+ integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
+
+parseurl@~1.3.2, parseurl@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz"
+ integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz"
+ integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==
+
+path-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz"
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz"
+ integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz"
+ integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz"
+ integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-is-inside@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz"
+ integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz"
+ integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
+
+path-key@^3.0.0, path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
+ integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+pathval@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz"
+ integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+
+pbkdf2@^3.0.3:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz"
+ integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz"
+ integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
+
+pify@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz"
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz"
+ integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz"
+ integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==
+
+pkg-dir@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz"
+ integrity sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==
+ dependencies:
+ find-up "^1.0.0"
+
+pkg-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz"
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
+ dependencies:
+ find-up "^3.0.0"
+
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+pn@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/pn/-/pn-1.1.0.tgz"
+ integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
+
+pngjs@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz"
+ integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==
+
+pnp-webpack-plugin@^1.6.4:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz"
+ integrity sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==
+ dependencies:
+ ts-pnp "^1.1.6"
+
+portfinder@^1.0.26:
+ version "1.0.28"
+ resolved "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.28.tgz"
+ integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==
+ dependencies:
+ async "^2.6.2"
+ debug "^3.1.1"
+ mkdirp "^0.5.5"
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz"
+ integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
+
+postcss-calc@^7.0.1:
+ version "7.0.5"
+ resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz"
+ integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==
+ dependencies:
+ postcss "^7.0.27"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.0.2"
+
+postcss-colormin@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz"
+ integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
+ dependencies:
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-discard-comments@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz"
+ integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-load-config@^2.0.0:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz"
+ integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ import-cwd "^2.0.0"
+
+postcss-loader@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz"
+ integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==
+ dependencies:
+ loader-utils "^1.1.0"
+ postcss "^7.0.0"
+ postcss-load-config "^2.0.0"
+ schema-utils "^1.0.0"
+
+postcss-merge-longhand@^4.0.11:
+ version "4.0.11"
+ resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz"
+ integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
+ dependencies:
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
+
+postcss-merge-rules@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz"
+ integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
+
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz"
+ integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz"
+ integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz"
+ integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz"
+ integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==
+ dependencies:
+ postcss "^7.0.5"
+
+postcss-modules-local-by-default@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz"
+ integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==
+ dependencies:
+ icss-utils "^4.1.1"
+ postcss "^7.0.32"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz"
+ integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==
+ dependencies:
+ postcss "^7.0.6"
+ postcss-selector-parser "^6.0.0"
+
+postcss-modules-values@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz"
+ integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==
+ dependencies:
+ icss-utils "^4.0.0"
+ postcss "^7.0.6"
+
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz"
+ integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz"
+ integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz"
+ integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz"
+ integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
+ dependencies:
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz"
+ integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz"
+ integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-ordered-values@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz"
+ integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-reduce-initial@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz"
+ integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+
+postcss-reduce-transforms@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz"
+ integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-selector-parser@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz"
+ integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==
+ dependencies:
+ dot-prop "^5.2.0"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
+ version "6.0.10"
+ resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz"
+ integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-svgo@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz"
+ integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz"
+ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
+
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+postcss@^7.0.0:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.1:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.14:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.27:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.32:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.36:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.5:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^7.0.6:
+ version "7.0.39"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
+postcss@^8.1.10:
+ version "8.4.14"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.14.tgz"
+ integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
+ dependencies:
+ nanoid "^3.3.4"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz"
+ integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
+
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz"
+ integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==
+
+"prettier@^1.18.2 || ^2.0.0":
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz"
+ integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
+
+pretty-error@^2.0.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz"
+ integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==
+ dependencies:
+ lodash "^4.17.20"
+ renderkid "^2.0.4"
+
+process-nextick-args@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.npmmirror.com/process/-/process-0.11.10.tgz"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
+progress@^2.0.0, progress@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
+promise-inflight@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz"
+ integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==
+
+proxy-addr@~2.0.7:
+ version "2.0.7"
+ resolved "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz"
+ integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
+ dependencies:
+ forwarded "0.2.0"
+ ipaddr.js "1.9.1"
+
+prr@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz"
+ integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz"
+ integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==
+
+psl@^1.1.28, psl@^1.1.33:
+ version "1.8.0"
+ resolved "https://registry.npmmirror.com/psl/-/psl-1.8.0.tgz"
+ integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+ safe-buffer "^5.1.2"
+
+pump@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz"
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
+pumpify@^1.3.3:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz"
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
+ dependencies:
+ duplexify "^3.6.0"
+ inherits "^2.0.3"
+ pump "^2.0.0"
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz"
+ integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
+
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-1.3.2.tgz"
+ integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz"
+ integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
+
+qrcode.vue@^3.3.3:
+ version "3.3.3"
+ resolved "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz"
+ integrity sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==
+
+qrcode@^1.5.0, qrcode@^1.5.1:
+ version "1.5.1"
+ resolved "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.1.tgz"
+ integrity sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==
+ dependencies:
+ dijkstrajs "^1.0.1"
+ encode-utf8 "^1.0.3"
+ pngjs "^5.0.0"
+ yargs "^15.3.1"
+
+qrcodejs2@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.npmmirror.com/qrcodejs2/-/qrcodejs2-0.0.2.tgz"
+ integrity sha512-+Y4HA+cb6qUzdgvI3KML8GYpMFwB24dFwzMkS/yXq6hwtUGNUnZQdUnksrV1XGMc2mid5ROw5SAuY9XhI3ValA==
+
+qs@~6.5.2:
+ version "6.5.3"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz"
+ integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==
+
+qs@6.10.3:
+ version "6.10.3"
+ resolved "https://registry.npmmirror.com/qs/-/qs-6.10.3.tgz"
+ integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
+ dependencies:
+ side-channel "^1.0.4"
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz"
+ integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz"
+ integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/querystring/-/querystring-0.2.0.tgz"
+ integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==
+
+querystringify@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz"
+ integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@^1.2.1, range-parser@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz"
+ integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+raw-body@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz"
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
+read-pkg@^5.1.1:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz"
+ integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==
+ dependencies:
+ "@types/normalize-package-data" "^2.4.0"
+ normalize-package-data "^2.5.0"
+ parse-json "^5.0.0"
+ type-fest "^0.6.0"
+
+readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6, "readable-stream@1 || 2":
+ version "2.3.7"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.7.tgz"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.0.6:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.0.tgz"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readdirp@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+regenerate-unicode-properties@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz"
+ integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==
+ dependencies:
+ regenerate "^1.4.2"
+
+regenerate@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz"
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+
+regenerator-runtime@^0.13.4:
+ version "0.13.9"
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
+ integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
+
+regenerator-transform@^0.15.0:
+ version "0.15.0"
+ resolved "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz"
+ integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==
+ dependencies:
+ "@babel/runtime" "^7.8.4"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
+ integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ functions-have-names "^1.2.2"
+
+regexpp@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz"
+ integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
+
+regexpu-core@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.0.1.tgz"
+ integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==
+ dependencies:
+ regenerate "^1.4.2"
+ regenerate-unicode-properties "^10.0.1"
+ regjsgen "^0.6.0"
+ regjsparser "^0.8.2"
+ unicode-match-property-ecmascript "^2.0.0"
+ unicode-match-property-value-ecmascript "^2.0.0"
+
+regjsgen@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/regjsgen/-/regjsgen-0.6.0.tgz"
+ integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==
+
+regjsparser@^0.8.2:
+ version "0.8.4"
+ resolved "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.8.4.tgz"
+ integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==
+ dependencies:
+ jsesc "~0.5.0"
+
+relateurl@0.2.x:
+ version "0.2.7"
+ resolved "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz"
+ integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
+ integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==
+
+renderkid@^2.0.4:
+ version "2.0.7"
+ resolved "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz"
+ integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==
+ dependencies:
+ css-select "^4.1.3"
+ dom-converter "^0.2.0"
+ htmlparser2 "^6.1.0"
+ lodash "^4.17.21"
+ strip-ansi "^3.0.1"
+
+repeat-element@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz"
+ integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
+
+repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz"
+ integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
+
+request-promise-core@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/request-promise-core/-/request-promise-core-1.1.4.tgz"
+ integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==
+ dependencies:
+ lodash "^4.17.19"
+
+request-promise-native@^1.0.7:
+ version "1.0.9"
+ resolved "https://registry.npmmirror.com/request-promise-native/-/request-promise-native-1.0.9.tgz"
+ integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
+ dependencies:
+ request-promise-core "1.1.4"
+ stealthy-require "^1.1.1"
+ tough-cookie "^2.3.3"
+
+request@^2.34, request@^2.88.0, request@^2.88.2:
+ version "2.88.2"
+ resolved "https://registry.npmmirror.com/request/-/request-2.88.2.tgz"
+ integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz"
+ integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
+
+require-main-filename@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz"
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+requires-port@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz"
+ integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
+
+resolve-cwd@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz"
+ integrity sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==
+ dependencies:
+ resolve-from "^3.0.0"
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz"
+ integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz"
+ integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
+
+resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2:
+ version "1.22.1"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz"
+ integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
+ dependencies:
+ is-core-module "^2.9.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz"
+ integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+retry@^0.12.0:
+ version "0.12.0"
+ resolved "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz"
+ integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz"
+ integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz"
+ integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==
+
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
+ dependencies:
+ glob "^7.1.3"
+
+rimraf@2.6.3:
+ version "2.6.3"
+ resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz"
+ integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
+ dependencies:
+ glob "^7.1.3"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+run-async@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz"
+ integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+run-queue@^1.0.0, run-queue@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz"
+ integrity sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==
+ dependencies:
+ aproba "^1.1.1"
+
+rxjs@^6.6.0:
+ version "6.6.7"
+ resolved "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@>=5.1.0, safe-buffer@~5.1.0, safe-buffer@~5.1.1, safe-buffer@5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-buffer@^5.2.0:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz"
+ integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==
+ dependencies:
+ ret "~0.1.10"
+
+safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+sax@^1.2.4, sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+saxes@^3.1.9:
+ version "3.1.11"
+ resolved "https://registry.npmmirror.com/saxes/-/saxes-3.1.11.tgz"
+ integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==
+ dependencies:
+ xmlchars "^2.1.1"
+
+schema-utils@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz"
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
+ dependencies:
+ ajv "^6.1.0"
+ ajv-errors "^1.0.0"
+ ajv-keywords "^3.1.0"
+
+schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0:
+ version "2.7.1"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz"
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
+ dependencies:
+ "@types/json-schema" "^7.0.5"
+ ajv "^6.12.4"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.1.1.tgz"
+ integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz"
+ integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
+
+selfsigned@^1.10.8:
+ version "1.10.14"
+ resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz"
+ integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==
+ dependencies:
+ node-forge "^0.10.0"
+
+semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, "semver@2 || 3 || 4 || 5":
+ version "5.7.1"
+ resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz"
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+
+semver@^6.0.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^6.1.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^6.1.1:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^6.1.2:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@^6.3.0:
+ version "6.3.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz"
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+
+semver@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.0.0.tgz"
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+
+send@0.18.0:
+ version "0.18.0"
+ resolved "https://registry.npmmirror.com/send/-/send-0.18.0.tgz"
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
+serve-index@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz"
+ integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ dependencies:
+ accepts "~1.3.4"
+ batch "0.6.1"
+ debug "2.6.9"
+ escape-html "~1.0.3"
+ http-errors "~1.6.2"
+ mime-types "~2.1.17"
+ parseurl "~1.3.2"
+
+serve-static@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz"
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.18.0"
+
+set-blocking@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz"
+ integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+
+set-value@^2.0.0, set-value@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz"
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz"
+ integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+setprototypeof@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz"
+ integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz"
+ integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz"
+ integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+shell-quote@^1.6.1:
+ version "1.7.3"
+ resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.7.3.tgz"
+ integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
+
+side-channel@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz"
+ integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ dependencies:
+ call-bind "^1.0.0"
+ get-intrinsic "^1.0.2"
+ object-inspect "^1.9.0"
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.7"
+ resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
+ integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
+ dependencies:
+ is-arrayish "^0.3.1"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz"
+ integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==
+
+slash@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz"
+ integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
+slice-ansi@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz"
+ integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==
+ dependencies:
+ ansi-styles "^3.2.0"
+ astral-regex "^1.0.0"
+ is-fullwidth-code-point "^2.0.0"
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ base "^0.11.1"
+ debug "^2.2.0"
+ define-property "^0.2.5"
+ extend-shallow "^2.0.1"
+ map-cache "^0.2.2"
+ source-map "^0.5.6"
+ source-map-resolve "^0.5.0"
+ use "^3.1.0"
+
+sockjs-client@^1.5.0:
+ version "1.6.1"
+ resolved "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz"
+ integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==
+ dependencies:
+ debug "^3.2.7"
+ eventsource "^2.0.2"
+ faye-websocket "^0.11.4"
+ inherits "^2.0.4"
+ url-parse "^1.5.10"
+
+sockjs@^0.3.21:
+ version "0.3.24"
+ resolved "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz"
+ integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
+ dependencies:
+ faye-websocket "^0.11.3"
+ uuid "^8.3.2"
+ websocket-driver "^0.7.4"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz"
+ integrity sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+sortable.js@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/sortable.js/-/sortable.js-0.3.0.tgz"
+ integrity sha512-sAtcxX/ff9L334IKcFPnssFt7xVwsLVoaTft3iTyARBfNl42yq6JSJLbgpImO9/TRN51f5QP+6lRUsFjmz1reQ==
+ dependencies:
+ domhelpers "^0.1.0"
+ mout "^0.11.0"
+
+sortablejs@^1.14.0, sortablejs@^1.15.0:
+ version "1.15.0"
+ resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz"
+ integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
+
+source-list-map@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-js@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz"
+ integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+
+source-map-resolve@^0.5.0, source-map-resolve@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz"
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+ resolve-url "^0.2.1"
+ source-map-url "^0.4.0"
+ urix "^0.1.0"
+
+source-map-support@^0.5.13, source-map-support@~0.5.12:
+ version "0.5.21"
+ resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz"
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
+
+source-map@^0.5.6:
+ version "0.5.7"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+spdx-correct@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.1.1.tgz"
+ integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz"
+ integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz"
+ integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.11"
+ resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz"
+ integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==
+
+spdy-transport@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz"
+ integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
+ dependencies:
+ debug "^4.1.0"
+ detect-node "^2.0.4"
+ hpack.js "^2.1.6"
+ obuf "^1.1.2"
+ readable-stream "^3.0.6"
+ wbuf "^1.7.3"
+
+spdy@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz"
+ integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
+ dependencies:
+ debug "^4.1.0"
+ handle-thing "^2.0.0"
+ http-deceiver "^1.2.7"
+ select-hose "^2.0.0"
+ spdy-transport "^3.0.0"
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+sshpk@^1.7.0:
+ version "1.17.0"
+ resolved "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz"
+ integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ bcrypt-pbkdf "^1.0.0"
+ dashdash "^1.12.0"
+ ecc-jsbn "~0.1.1"
+ getpass "^0.1.1"
+ jsbn "~0.1.0"
+ safer-buffer "^2.0.2"
+ tweetnacl "~0.14.0"
+
+ssri@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz"
+ integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==
+ dependencies:
+ figgy-pudding "^3.5.1"
+
+ssri@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz"
+ integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==
+ dependencies:
+ minipass "^3.1.1"
+
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+stackframe@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz"
+ integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz"
+ integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+"statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz"
+ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
+stealthy-require@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/stealthy-require/-/stealthy-require-1.1.1.tgz"
+ integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==
+
+stream-browserify@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz"
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-each@^1.1.0:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz"
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
+ dependencies:
+ end-of-stream "^1.1.0"
+ stream-shift "^1.0.0"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.3.tgz"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+stream-shift@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz"
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz"
+ integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
+
+string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+"string-width@^1.0.2 || 2":
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string-width@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz"
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+ dependencies:
+ emoji-regex "^7.0.1"
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^5.1.0"
+
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+ version "4.2.3"
+ resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string.prototype.trimend@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz"
+ integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.19.5"
+
+string.prototype.trimstart@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz"
+ integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.19.5"
+
+strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz"
+ integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz"
+ integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz"
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+ dependencies:
+ ansi-regex "^4.1.0"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz"
+ integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
+
+strip-final-newline@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
+ integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz"
+ integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==
+
+strip-json-comments@^3.0.1:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+strip-json-comments@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
+ integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
+
+stylehacks@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz"
+ integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+stylus-loader@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/stylus-loader/-/stylus-loader-3.0.2.tgz"
+ integrity sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==
+ dependencies:
+ loader-utils "^1.0.2"
+ lodash.clonedeep "^4.5.0"
+ when "~3.6.x"
+
+stylus@^0.54.7, stylus@>=0.52.4:
+ version "0.54.8"
+ resolved "https://registry.npmmirror.com/stylus/-/stylus-0.54.8.tgz"
+ integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==
+ dependencies:
+ css-parse "~2.0.0"
+ debug "~3.1.0"
+ glob "^7.1.6"
+ mkdirp "~1.0.4"
+ safer-buffer "^2.1.2"
+ sax "~1.2.4"
+ semver "^6.3.0"
+ source-map "^0.7.3"
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz"
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-color@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-6.0.0.tgz"
+ integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-tags@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz"
+ integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==
+
+svgo@^1.0.0:
+ version "1.3.2"
+ resolved "https://registry.npmmirror.com/svgo/-/svgo-1.3.2.tgz"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+symbol-tree@^3.2.2:
+ version "3.2.4"
+ resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz"
+ integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
+
+table@^5.2.3:
+ version "5.4.6"
+ resolved "https://registry.npmmirror.com/table/-/table-5.4.6.tgz"
+ integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==
+ dependencies:
+ ajv "^6.10.2"
+ lodash "^4.17.14"
+ slice-ansi "^2.1.0"
+ string-width "^3.0.0"
+
+tapable@^1.0.0, tapable@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+terser-webpack-plugin@^1.4.3, terser-webpack-plugin@^1.4.4:
+ version "1.4.5"
+ resolved "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz"
+ integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
+ dependencies:
+ 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"
+
+terser@^4.1.2:
+ version "4.8.0"
+ resolved "https://registry.npmmirror.com/terser/-/terser-4.8.0.tgz"
+ integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
+ dependencies:
+ commander "^2.20.0"
+ source-map "~0.6.1"
+ source-map-support "~0.5.12"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
+thread-loader@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz"
+ integrity sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==
+ dependencies:
+ loader-runner "^2.3.1"
+ loader-utils "^1.1.0"
+ neo-async "^2.6.0"
+
+through@^2.3.6:
+ version "2.3.8"
+ resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz"
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
+through2@^2.0.0:
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz"
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
+ dependencies:
+ readable-stream "~2.3.6"
+ xtend "~4.0.1"
+
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
+timers-browserify@^2.0.4:
+ version "2.0.12"
+ resolved "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz"
+ integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
+ dependencies:
+ setimmediate "^1.0.4"
+
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz"
+ integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
+
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz"
+ integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz"
+ integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz"
+ integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex-range@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toidentifier@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz"
+ integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+
+toposort@^1.0.0:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz"
+ integrity sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==
+
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/toposort/-/toposort-2.0.2.tgz"
+ integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
+
+"tough-cookie@^2.3.3 || ^3.0.1 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.0.0.tgz"
+ integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
+ dependencies:
+ psl "^1.1.33"
+ punycode "^2.1.1"
+ universalify "^0.1.2"
+
+tough-cookie@^2.3.3:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-3.0.1.tgz"
+ integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
+ dependencies:
+ ip-regex "^2.1.0"
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tough-cookie@~2.5.0:
+ version "2.5.0"
+ resolved "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz"
+ integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
+ dependencies:
+ psl "^1.1.28"
+ punycode "^2.1.1"
+
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-1.0.1.tgz"
+ integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==
+ dependencies:
+ punycode "^2.1.0"
+
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
+ts-pnp@^1.1.6:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/ts-pnp/-/ts-pnp-1.2.0.tgz"
+ integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
+
+tslib@^1.9.0:
+ version "1.14.1"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^2.1.0, tslib@^2.3.0, tslib@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz"
+ integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz"
+ integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==
+
+tunnel-agent@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz"
+ integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
+ dependencies:
+ safe-buffer "^5.0.1"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.5"
+ resolved "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz"
+ integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz"
+ integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@^4.0.0, type-detect@^4.0.5:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz"
+ integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
+
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
+type-fest@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz"
+ integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-is@~1.6.18:
+ version "1.6.18"
+ resolved "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz"
+ integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.24"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz"
+ integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
+
+uglify-js@3.4.x:
+ version "3.4.10"
+ resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz"
+ integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
+ dependencies:
+ commander "~2.19.0"
+ source-map "~0.6.1"
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
+unicode-canonical-property-names-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz"
+ integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+
+unicode-match-property-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz"
+ integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^2.0.0"
+ unicode-property-aliases-ecmascript "^2.0.0"
+
+unicode-match-property-value-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz"
+ integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
+
+unicode-property-aliases-ecmascript@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz"
+ integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
+
+union-value@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz"
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^2.0.1"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz"
+ integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz"
+ integrity sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==
+
+unique-filename@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz"
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
+ dependencies:
+ unique-slug "^2.0.0"
+
+unique-slug@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz"
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
+ dependencies:
+ imurmurhash "^0.1.4"
+
+universalify@^0.1.0, universalify@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unpipe@~1.0.0, unpipe@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz"
+ integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
+
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz"
+ integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz"
+ integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
+update-browserslist-db@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz"
+ integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
+upper-case@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz"
+ integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz"
+ integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
+
+url-loader@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/url-loader/-/url-loader-2.3.0.tgz"
+ integrity sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==
+ dependencies:
+ loader-utils "^1.2.3"
+ mime "^2.4.4"
+ schema-utils "^2.5.0"
+
+url-parse@^1.5.10:
+ version "1.5.10"
+ resolved "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz"
+ integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
+ dependencies:
+ querystringify "^2.1.1"
+ requires-port "^1.0.0"
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.npmmirror.com/url/-/url-0.11.0.tgz"
+ integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+
+util.promisify@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.2"
+ has-symbols "^1.0.1"
+ object.getownpropertydescriptors "^2.1.0"
+
+util.promisify@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
+util@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.npmmirror.com/util/-/util-0.11.1.tgz"
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
+ dependencies:
+ inherits "2.0.3"
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.npmmirror.com/util/-/util-0.10.3.tgz"
+ integrity sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==
+ dependencies:
+ inherits "2.0.1"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz"
+ integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==
+
+utils-merge@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz"
+ integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+
+uuid@^3.3.2:
+ version "3.4.0"
+ resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
+
+uuid@^8.3.2:
+ version "8.3.2"
+ resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz"
+ integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+
+uuidv1@^1.6.14:
+ version "1.6.14"
+ resolved "https://registry.npmmirror.com/uuidv1/-/uuidv1-1.6.14.tgz"
+ integrity sha512-34FVVCDDHzzcOglmrKbZP99+8/6StEzo3VU3MuKw0Mo0B/YBQ1bWNQU8s79ofNnrPlfI+7A9pkAdhmQ6CyLHFg==
+
+v8-compile-cache@^2.0.3:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz"
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vary@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz"
+ integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
+
+vendors@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz"
+ integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==
+
+verror@1.10.0:
+ version "1.10.0"
+ resolved "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz"
+ integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
+ dependencies:
+ assert-plus "^1.0.0"
+ core-util-is "1.0.2"
+ extsprintf "^1.2.0"
+
+vm-browserify@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz"
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+
+vue-demi@*:
+ version "0.13.11"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz"
+ integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
+
+vue-draggable-next@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/vue-draggable-next/-/vue-draggable-next-2.1.1.tgz"
+ integrity sha512-f5lmA7t6LMaL4viR7dU30zzvqJzaKQs0ymL0Jy9UDT9uiZ2tXF3MzPzEvpTH2UODXZJkT+SnjeV1fXHMsgXLYA==
+
+vue-hot-reload-api@^2.3.0:
+ version "2.3.4"
+ resolved "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz"
+ integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
+
+vue-i18n@^9.13.1:
+ version "9.13.1"
+ resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.13.1.tgz"
+ integrity sha512-mh0GIxx0wPtPlcB1q4k277y0iKgo25xmDPWioVVYanjPufDBpvu5ySTjP5wOrSvlYQ2m1xI+CFhGdauv/61uQg==
+ dependencies:
+ "@intlify/core-base" "9.13.1"
+ "@intlify/shared" "9.13.1"
+ "@vue/devtools-api" "^6.5.0"
+
+"vue-loader-v16@npm:vue-loader@^16.1.0":
+ version "16.8.3"
+ resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz"
+ integrity sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==
+ dependencies:
+ chalk "^4.1.0"
+ hash-sum "^2.0.0"
+ loader-utils "^2.0.0"
+
+vue-loader@^15.9.2:
+ version "15.9.8"
+ resolved "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.9.8.tgz"
+ integrity sha512-GwSkxPrihfLR69/dSV3+5CdMQ0D+jXg8Ma1S4nQXKJAznYFX14vHdc/NetQc34Dw+rBbIJyP7JOuVb9Fhprvog==
+ dependencies:
+ "@vue/component-compiler-utils" "^3.1.0"
+ hash-sum "^1.0.2"
+ loader-utils "^1.1.0"
+ vue-hot-reload-api "^2.3.0"
+ vue-style-loader "^4.1.0"
+
+vue-router@^4.0.0-0:
+ version "4.0.16"
+ resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.0.16.tgz"
+ integrity sha512-JcO7cb8QJLBWE+DfxGUL3xUDOae/8nhM1KVdnudadTAORbuxIC/xAydC5Zr/VLHUDQi1ppuTF5/rjBGzgzrJNA==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0"
+
+vue-style-loader@^4.1.0, vue-style-loader@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz"
+ integrity sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==
+ dependencies:
+ hash-sum "^1.0.2"
+ loader-utils "^1.0.2"
+
+vue-template-es2015-compiler@^1.9.0:
+ version "1.9.1"
+ resolved "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz"
+ integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
+
+"vue@^2 || ^3.0.0-0", vue@^3.0.0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.1, vue@^3.0.2, vue@^3.2.0, vue@^3.2.2, vue@^3.2.37, vue@3.2.37:
+ version "3.2.37"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz"
+ integrity sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==
+ dependencies:
+ "@vue/compiler-dom" "3.2.37"
+ "@vue/compiler-sfc" "3.2.37"
+ "@vue/runtime-dom" "3.2.37"
+ "@vue/server-renderer" "3.2.37"
+ "@vue/shared" "3.2.37"
+
+vuex@^4.0.0-0:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz"
+ integrity sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==
+ dependencies:
+ "@vue/devtools-api" "^6.0.0-beta.11"
+
+w3c-hr-time@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz"
+ integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+ dependencies:
+ browser-process-hrtime "^1.0.0"
+
+w3c-xmlserializer@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz"
+ integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==
+ dependencies:
+ domexception "^1.0.1"
+ webidl-conversions "^4.0.2"
+ xml-name-validator "^3.0.0"
+
+wangeditor@^4.7.6:
+ version "4.7.15"
+ resolved "https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz"
+ integrity sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==
+ dependencies:
+ "@babel/runtime" "^7.11.2"
+ "@babel/runtime-corejs3" "^7.11.2"
+ tslib "^2.1.0"
+
+watchpack-chokidar2@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz"
+ integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
+ dependencies:
+ chokidar "^2.1.8"
+
+watchpack@^1.7.4:
+ version "1.7.5"
+ resolved "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz"
+ integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ neo-async "^2.5.0"
+ optionalDependencies:
+ chokidar "^3.4.1"
+ watchpack-chokidar2 "^2.0.1"
+
+wbuf@^1.1.0, wbuf@^1.7.3:
+ version "1.7.3"
+ resolved "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz"
+ integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz"
+ integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+ dependencies:
+ defaults "^1.0.3"
+
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
+webpack-bundle-analyzer@^3.8.0:
+ version "3.9.0"
+ resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz"
+ integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+ bfj "^6.1.1"
+ chalk "^2.4.1"
+ commander "^2.18.0"
+ ejs "^2.6.1"
+ express "^4.16.3"
+ filesize "^3.6.1"
+ gzip-size "^5.0.0"
+ lodash "^4.17.19"
+ mkdirp "^0.5.1"
+ opener "^1.5.1"
+ ws "^6.0.0"
+
+webpack-chain@^6.4.0:
+ version "6.5.1"
+ resolved "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz"
+ integrity sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==
+ dependencies:
+ deepmerge "^1.5.2"
+ javascript-stringify "^2.0.1"
+
+webpack-dev-middleware@^3.7.2:
+ version "3.7.3"
+ resolved "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz"
+ integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==
+ dependencies:
+ memory-fs "^0.4.1"
+ mime "^2.4.4"
+ mkdirp "^0.5.1"
+ range-parser "^1.2.1"
+ webpack-log "^2.0.0"
+
+webpack-dev-server@^3.11.0:
+ version "3.11.3"
+ resolved "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz"
+ integrity sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==
+ dependencies:
+ ansi-html-community "0.0.8"
+ 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.8"
+ semver "^6.3.0"
+ serve-index "^1.9.1"
+ sockjs "^0.3.21"
+ sockjs-client "^1.5.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"
+
+webpack-log@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz"
+ integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==
+ dependencies:
+ ansi-colors "^3.0.0"
+ uuid "^3.3.2"
+
+webpack-merge@^4.2.2:
+ version "4.2.2"
+ resolved "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz"
+ integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==
+ dependencies:
+ lodash "^4.17.15"
+
+webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1:
+ version "1.4.3"
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+"webpack@^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^2.0.0 || ^3.0.0 || ^4.0.0", "webpack@^3.0.0 || ^4.1.0 || ^5.0.0-0", webpack@^4.0.0, "webpack@^4.0.0 || ^5.0.0", webpack@^4.4.0, webpack@>=2, "webpack@>=2.0.0 <5.0.0", webpack@>=4.0.0:
+ version "4.46.0"
+ resolved "https://registry.npmmirror.com/webpack/-/webpack-4.46.0.tgz"
+ integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
+ dependencies:
+ "@webassemblyjs/ast" "1.9.0"
+ "@webassemblyjs/helper-module-context" "1.9.0"
+ "@webassemblyjs/wasm-edit" "1.9.0"
+ "@webassemblyjs/wasm-parser" "1.9.0"
+ acorn "^6.4.1"
+ ajv "^6.10.2"
+ ajv-keywords "^3.4.1"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^4.5.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.3"
+ 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.3"
+ watchpack "^1.7.4"
+ webpack-sources "^1.4.1"
+
+websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
+ version "0.7.4"
+ resolved "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
+whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-7.1.0.tgz"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+when@~3.6.x:
+ version "3.6.4"
+ resolved "https://registry.npmmirror.com/when/-/when-3.6.4.tgz"
+ integrity sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz"
+ integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==
+
+which@^1.2.9, which@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.3.tgz"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+word-wrap@~1.2.3:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz"
+ integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+
+worker-farm@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz"
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
+ dependencies:
+ errno "~0.1.7"
+
+wrap-ansi@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz"
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+ dependencies:
+ ansi-styles "^3.2.0"
+ string-width "^3.0.0"
+ strip-ansi "^5.0.0"
+
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+write@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/write/-/write-1.0.3.tgz"
+ integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==
+ dependencies:
+ mkdirp "^0.5.1"
+
+ws@^6.0.0:
+ version "6.2.2"
+ resolved "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz"
+ integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@^6.2.1:
+ version "6.2.2"
+ resolved "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz"
+ integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
+ dependencies:
+ async-limiter "~1.0.0"
+
+ws@^7.0.0, ws@^7.4.5:
+ version "7.5.8"
+ resolved "https://registry.npmmirror.com/ws/-/ws-7.5.8.tgz"
+ integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw==
+
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
+xmlchars@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz"
+ integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
+y18n@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz"
+ integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
+
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz"
+ integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==
+
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+
+yargs-parser@^13.1.1, yargs-parser@^13.1.2, yargs-parser@13.1.2:
+ version "13.1.2"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz"
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^18.1.2:
+ version "18.1.3"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz"
+ integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
+ dependencies:
+ camelcase "^5.0.0"
+ decamelize "^1.2.0"
+
+yargs-parser@^20.2.2:
+ version "20.2.9"
+ resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
+yargs-unparser@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz"
+ integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==
+ dependencies:
+ flat "^4.1.0"
+ lodash "^4.17.15"
+ yargs "^13.3.0"
+
+yargs@^13.3.0, yargs@^13.3.2, yargs@13.3.2:
+ version "13.3.2"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz"
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
+ dependencies:
+ 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"
+
+yargs@^15.3.1:
+ version "15.4.1"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz"
+ integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
+ dependencies:
+ cliui "^6.0.0"
+ decamelize "^1.2.0"
+ find-up "^4.1.0"
+ get-caller-file "^2.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^2.0.0"
+ set-blocking "^2.0.0"
+ string-width "^4.2.0"
+ which-module "^2.0.0"
+ y18n "^4.0.0"
+ yargs-parser "^18.1.2"
+
+yargs@^16.0.0:
+ version "16.2.0"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
+yargs@14.0.0:
+ version "14.0.0"
+ resolved "https://registry.npmmirror.com/yargs/-/yargs-14.0.0.tgz"
+ integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==
+ dependencies:
+ cliui "^5.0.0"
+ decamelize "^1.2.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.1"
+
+yorkie@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz"
+ integrity sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==
+ dependencies:
+ execa "^0.8.0"
+ is-ci "^1.0.10"
+ normalize-path "^1.0.0"
+ strip-indent "^2.0.0"
+
+zrender@5.3.2:
+ version "5.3.2"
+ resolved "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz"
+ integrity sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==
+ dependencies:
+ tslib "2.3.0"